From fef31ca50f059307d7ce79fee0f4d08acceadbe9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20Gr=C3=BCninger?= <gruenich@dune-project.org>
Date: Sun, 27 Apr 2014 22:43:35 +0200
Subject: [PATCH] [CMake] Apply our modifications to UseLATEX.cmake.

Needed to build the documentation only for make doc.
Avoid name clashes by adding MANGLE_TARGET_NAMES.
With CMake 3.0.0 no more warnings are emitted by
building the documentation.
---
 cmake/modules/DuneDoc.cmake  |  2 +-
 cmake/modules/UseLATEX.cmake | 50 ++++++++++++++++++++++++++----------
 2 files changed, 38 insertions(+), 14 deletions(-)

diff --git a/cmake/modules/DuneDoc.cmake b/cmake/modules/DuneDoc.cmake
index 4b19ccec2..6ec194e5a 100644
--- a/cmake/modules/DuneDoc.cmake
+++ b/cmake/modules/DuneDoc.cmake
@@ -86,7 +86,7 @@ MACRO(dune_add_latex_document tex_file)
   if(filevar)
     if(LATEX_USABLE)
       # add rule to create latex document
-      add_latex_document(${tex_file} ${ARGN})
+      add_latex_document(${tex_file} ${ARGN} MANGLE_TARGET_NAMES)
     else(LATEX_USABLE)
       message(WARNING "Not adding rule to create ${file} as LaTEX is not usable!")
     endif(LATEX_USABLE)
diff --git a/cmake/modules/UseLATEX.cmake b/cmake/modules/UseLATEX.cmake
index 5e2d75abe..afe4fd87a 100644
--- a/cmake/modules/UseLATEX.cmake
+++ b/cmake/modules/UseLATEX.cmake
@@ -13,6 +13,7 @@
 # The following function is defined:
 #
 # ADD_LATEX_DOCUMENT(<tex_file>
+#                    [FATHER_TARGET <father_target>]
 #                    [BIBFILES <bib_files>]
 #                    [INPUTS <input_tex_files>]
 #                    [IMAGE_DIRS] <image_directories>
@@ -54,10 +55,13 @@
 #                       target, it does not delete other input files, such as
 #                       converted images, to save time on the rebuild.
 #
-#       The dvi target is added to the ALL.  That is, it will be the target
-#       built by default.  If the DEFAULT_PDF argument is given, then the
-#       pdf target will be the default instead of dvi.  Likewise,
-#       DEFAULT_SAFEPDF sets the default target to safepdf.  If NO_DEFAULT
+#       If FATHER_TARGET is omitted, the dvi target is added to the ALL.
+#       That is, it will be the target built by default.  If the DEFAULT_PDF
+#       argument is given, then the pdf target will be the default instead of
+#       dvi. Likewise, DEFAULT_SAFEPDF sets the default target to safepdf.
+#       If FATHER_TARGET is set, the files will be a dependency of
+#       FATHER_TARGET. By setting FATHER_TARGET to doc, the files will be build
+#       during make doc.  If NO_DEFAULT
 #       is specified, then no target will be added to ALL, which is
 #       convenient when including LaTeX documentation with something else.
 #
@@ -975,7 +979,7 @@ ENDFUNCTION(LATEX_USAGE command message)
 FUNCTION(PARSE_ADD_LATEX_ARGUMENTS command)
   LATEX_PARSE_ARGUMENTS(
     LATEX
-    "BIBFILES;MULTIBIB_NEWCITES;INPUTS;IMAGE_DIRS;IMAGES;CONFIGURE;DEPENDS"
+    "BIBFILES;FATHER_TARGET;MULTIBIB_NEWCITES;INPUTS;IMAGE_DIRS;IMAGES;CONFIGURE;DEPENDS"
     "USE_INDEX;USE_GLOSSARY;USE_GLOSSARIES;USE_NOMENCL;DEFAULT_PDF;DEFAULT_SAFEPDF;DEFAULT_PS;NO_DEFAULT;MANGLE_TARGET_NAMES"
     ${ARGN}
     )
@@ -1248,8 +1252,14 @@ FUNCTION(ADD_LATEX_TARGETS_INTERNAL)
     ADD_CUSTOM_TARGET(${dvi_target}
       DEPENDS ${output_dir}/${LATEX_TARGET}.dvi)
   ELSE (LATEX_NO_DEFAULT OR LATEX_DEFAULT_PDF OR LATEX_DEFAULT_SAFEPDF OR DEFAULT_PS)
-    ADD_CUSTOM_TARGET(${dvi_target} ALL
-      DEPENDS ${output_dir}/${LATEX_TARGET}.dvi)
+    IF (LATEX_FATHER_TARGET)
+      ADD_CUSTOM_TARGET(${dvi_target}
+        DEPENDS ${output_dir}/${LATEX_TARGET}.dvi)
+      ADD_DEPENDENCIES(${LATEX_FATHER_TARGET} ${dvi_target})
+    ELSE (LATEX_FATHER_TARGET)
+      ADD_CUSTOM_TARGET(${dvi_target} ALL
+        DEPENDS ${output_dir}/${LATEX_TARGET}.dvi)
+    ENDIF (LATEX_FATHER_TARGET)
   ENDIF (LATEX_NO_DEFAULT OR LATEX_DEFAULT_PDF OR LATEX_DEFAULT_SAFEPDF OR DEFAULT_PS)
 
   # Add commands and targets for building pdf outputs (with pdflatex).
@@ -1259,8 +1269,14 @@ FUNCTION(ADD_LATEX_TARGETS_INTERNAL)
       DEPENDS ${make_pdf_depends}
       )
     IF (LATEX_DEFAULT_PDF)
-      ADD_CUSTOM_TARGET(${pdf_target} ALL
-        DEPENDS ${output_dir}/${LATEX_TARGET}.pdf)
+      IF (LATEX_FATHER_TARGET)
+        ADD_CUSTOM_TARGET(${pdf_target}
+          DEPENDS ${output_dir}/${LATEX_TARGET}.pdf)
+        ADD_DEPENDENCIES(${LATEX_FATHER_TARGET} ${pdf_target})
+      ELSE (LATEX_FATHER_TARGET)
+        ADD_CUSTOM_TARGET(${pdf_target} ALL
+          DEPENDS ${output_dir}/${LATEX_TARGET}.pdf)
+      ENDIF (LATEX_FATHER_TARGET)
     ELSE (LATEX_DEFAULT_PDF)
       ADD_CUSTOM_TARGET(${pdf_target}
         DEPENDS ${output_dir}/${LATEX_TARGET}.pdf)
@@ -1284,10 +1300,18 @@ FUNCTION(ADD_LATEX_TARGETS_INTERNAL)
       # cannot properly do the dependencies for both.  When selecting safepdf,
       # simply force a recompile every time.
       IF (LATEX_DEFAULT_SAFEPDF)
-        ADD_CUSTOM_TARGET(${safepdf_target} ALL
-          ${CMAKE_COMMAND} -E chdir ${output_dir}
-          ${PS2PDF_CONVERTER} ${PS2PDF_CONVERTER_FLAGS} ${LATEX_TARGET}.ps ${LATEX_TARGET}.pdf
-          )
+        IF (LATEX_FATHER_TARGET)
+          ADD_CUSTOM_TARGET(${safepdf_target}
+            ${CMAKE_COMMAND} -E chdir ${output_dir}
+            ${PS2PDF_CONVERTER} ${PS2PDF_CONVERTER_FLAGS} ${LATEX_TARGET}.ps ${LATEX_TARGET}.pdf
+            )
+          ADD_DEPENDENCIES(${LATEX_FATHER_TARGET} ${safepdf_target})
+        ELSE (LATEX_FATHER_TARGET)
+          ADD_CUSTOM_TARGET(${safepdf_target} ALL
+            ${CMAKE_COMMAND} -E chdir ${output_dir}
+            ${PS2PDF_CONVERTER} ${PS2PDF_CONVERTER_FLAGS} ${LATEX_TARGET}.ps ${LATEX_TARGET}.pdf
+            )
+        ENDIF (LATEX_FATHER_TARGET)
       ELSE (LATEX_DEFAULT_SAFEPDF)
         ADD_CUSTOM_TARGET(${safepdf_target}
           ${CMAKE_COMMAND} -E chdir ${output_dir}
-- 
GitLab