From 58204620565765600e87334868981b670eb9d928 Mon Sep 17 00:00:00 2001
From: Markus Blatt <mblatt@dune-project.org>
Date: Sun, 15 Apr 2012 18:52:50 +0000
Subject: [PATCH] Facilitate providing a custom target name where the files
 will be creates. Thus we can run latex during make doc.

[[Imported from SVN: r6618]]
---
 cmake/modules/UseLATEX.cmake | 51 +++++++++++++++++++++++++++---------
 1 file changed, 38 insertions(+), 13 deletions(-)

diff --git a/cmake/modules/UseLATEX.cmake b/cmake/modules/UseLATEX.cmake
index 9bb538146..e7d07f50d 100644
--- a/cmake/modules/UseLATEX.cmake
+++ b/cmake/modules/UseLATEX.cmake
@@ -1,4 +1,4 @@
-# File: UseLATEX.cmake
+# File: UseLATX.cmake
 # CMAKE commands to actually use the LaTeX compiler
 # Version: 1.9.1
 # Author: Kenneth Moreland <kmorel@sandia.gov>
@@ -13,6 +13,7 @@
 # The following MACROS are defined:
 #
 # ADD_LATEX_DOCUMENT(<tex_file>
+#                    [FATHER_TARGET <father_target>]
 #                    [BIBFILES <bib_files>]
 #                    [INPUTS <input_tex_files>]
 #                    [IMAGE_DIRS] <image_directories>
@@ -54,9 +55,12 @@
 #                       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.
+#       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. 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 the argument MANGLE_TARGET_NAMES is given, then each of the
 #       target names above will be mangled with the <tex_file> name.  This
@@ -805,11 +809,12 @@ ENDMACRO(LATEX_USAGE command message)
 MACRO(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;MANGLE_TARGET_NAMES"
     ${ARGN}
     )
 
+  message("FATHER_TARGET ${LATEX_FATHER_TARGET}")
   # The first argument is the target latex file.
   IF (LATEX_DEFAULT_ARGS)
     LATEX_CAR(LATEX_MAIN_INPUT ${LATEX_DEFAULT_ARGS})
@@ -1075,8 +1080,14 @@ MACRO(ADD_LATEX_TARGETS)
     ADD_CUSTOM_TARGET(${dvi_target}
       DEPENDS ${output_dir}/${LATEX_TARGET}.dvi)
   ELSE (LATEX_DEFAULT_PDF OR LATEX_DEFAULT_SAFEPDF)
-    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_DEFAULT_PDF OR LATEX_DEFAULT_SAFEPDF)
 
   # Add commands and targets for building pdf outputs (with pdflatex).
@@ -1086,8 +1097,14 @@ MACRO(ADD_LATEX_TARGETS)
       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)
@@ -1106,10 +1123,18 @@ MACRO(ADD_LATEX_TARGETS)
       # 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