Hi Brad,
please find attached a new patch following your latest suggestions.

> Once you have that explicit mapping then you can optionally use
> lower-case component names.  I have no strong preference on that
> though.

I'd like to have lower case components but I dislike mixed-cased
variable names. The latter feeling is stronger.

Wish you nice holidays,
Christoph
>From 66b20975b29af82d2f561e9324c53fed717311a1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20Gr=C3=BCninger?= <gruen...@dune-project.org>
Date: Tue, 23 Dec 2014 00:24:04 +0100
Subject: [PATCH] FindLATEX: Add components handling

---
 Modules/FindLATEX.cmake | 85 +++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 79 insertions(+), 6 deletions(-)

diff --git a/Modules/FindLATEX.cmake b/Modules/FindLATEX.cmake
index a935f00..954f8f7 100644
--- a/Modules/FindLATEX.cmake
+++ b/Modules/FindLATEX.cmake
@@ -6,17 +6,42 @@
 #
 # This module finds an installed Latex and determines the location
 # of the compiler.  Additionally the module looks for Latex-related
-# software like BibTeX.  This code sets the following variables:
+# software like BibTeX.
+#
+# This module sets the following result variables:
 #
 # ::
 #
+#   LATEX_FOUND:          whether found Latex and requested components
+#   LATEX_<component>_FOUND:  whether found <component>
 #   LATEX_COMPILER:       path to the LaTeX compiler
 #   PDFLATEX_COMPILER:    path to the PdfLaTeX compiler
 #   BIBTEX_COMPILER:      path to the BibTeX compiler
 #   MAKEINDEX_COMPILER:   path to the MakeIndex compiler
 #   DVIPS_CONVERTER:      path to the DVIPS converter
+#   DVIPDF_CONVERTER:     path to the DVIPDF converter
 #   PS2PDF_CONVERTER:     path to the PS2PDF converter
 #   LATEX2HTML_CONVERTER: path to the LaTeX2Html converter
+#
+# Possible components are:
+#
+# ::
+#
+#  PDFLATEX
+#  BIBTEX
+#  MAKEINDEX
+#  DVIPS
+#  DVIPDF
+#  PS2PDF
+#  LATEX2HTML
+#
+# Example Usages:
+#
+# ::
+#
+#   find_package(LATEX)
+#   find_package(LATEX COMPONENTS PDFLATEX)
+#   find_package(LATEX COMPONENTS BIBTEX PS2PDF)
 
 #=============================================================================
 # Copyright 2002-2014 Kitware, Inc.
@@ -32,9 +57,7 @@
 #  License text for the above reference.)
 
 if (WIN32)
-
   # Try to find the MikTex binary path (look for its package manager).
-
   find_path(MIKTEX_BINARY_PATH mpm.exe
     "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MiK\\MiKTeX\\CurrentVersion\\MiKTeX;Install Root]/miktex/bin"
     DOC
@@ -43,7 +66,6 @@ if (WIN32)
   mark_as_advanced(MIKTEX_BINARY_PATH)
 
   # Try to find the GhostScript binary path (look for gswin32).
-
   get_filename_component(GHOSTSCRIPT_BINARY_PATH_FROM_REGISTERY_8_00
      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\AFPL Ghostscript\\8.00;GS_DLL]" PATH
   )
@@ -64,45 +86,76 @@ if (WIN32)
     DOC "Path to the GhostScript library directory."
   )
   mark_as_advanced(GHOSTSCRIPT_LIBRARY_PATH)
-
 endif ()
 
+# try to find Latex and the related programs
 find_program(LATEX_COMPILER
   NAMES latex
   PATHS ${MIKTEX_BINARY_PATH}
         /usr/bin
 )
 
+# find pdflatex
 find_program(PDFLATEX_COMPILER
   NAMES pdflatex
   PATHS ${MIKTEX_BINARY_PATH}
         /usr/bin
 )
+if (PDFLATEX_COMPILER)
+  set(LATEX_PDFLATEX_FOUND TRUE)
+else()
+  set(LATEX_PDFLATEX_FOUND FALSE)
+endif()
 
+# find bibtex
 find_program(BIBTEX_COMPILER
   NAMES bibtex
   PATHS ${MIKTEX_BINARY_PATH}
         /usr/bin
 )
+if (BIBTEX_COMPILER)
+  set(LATEX_BIBTEX_FOUND TRUE)
+else()
+  set(LATEX_BIBTEX_FOUND FALSE)
+endif()
 
+# find makeindex
 find_program(MAKEINDEX_COMPILER
   NAMES makeindex
   PATHS ${MIKTEX_BINARY_PATH}
         /usr/bin
 )
+if (MAKEINDEX_COMPILER)
+#   set(LATEX_MAKEINDEX_FOUND TRUE)
+else()
+  set(LATEX_MAKEINDEX_FOUND FALSE)
+endif()
 
+# find dvips
 find_program(DVIPS_CONVERTER
   NAMES dvips
   PATHS ${MIKTEX_BINARY_PATH}
         /usr/bin
 )
+if (DVIPS_CONVERTER)
+  set(LATEX_DVIPS_FOUND TRUE)
+else()
+  set(LATEX_DVIPS_FOUND FALSE)
+endif()
 
+# find dvipdf
 find_program(DVIPDF_CONVERTER
   NAMES dvipdfm dvipdft dvipdf
   PATHS ${MIKTEX_BINARY_PATH}
         /usr/bin
 )
+if (DVIPDF_CONVERTER)
+  set(LATEX_DVIPDF_FOUND TRUE)
+else()
+  set(LATEX_DVIPDF_FOUND FALSE)
+endif()
 
+# find ps2pdf
 if (WIN32)
   find_program(PS2PDF_CONVERTER
     NAMES ps2pdf14.bat ps2pdf14 ps2pdf
@@ -114,26 +167,46 @@ else ()
     NAMES ps2pdf14 ps2pdf
   )
 endif ()
+if (PS2PDF_CONVERTER)
+  set(LATEX_PS2PDF_FOUND TRUE)
+else()
+  set(LATEX_PS2PDF_FOUND FALSE)
+endif()
 
+# find latex2html
 find_program(LATEX2HTML_CONVERTER
   NAMES latex2html
   PATHS ${MIKTEX_BINARY_PATH}
         /usr/bin
 )
+if (LATEX2HTML_CONVERTER)
+  set(LATEX_LATEX2HTML_FOUND TRUE)
+else()
+  set(LATEX_LATEX2HTML_FOUND FALSE)
+endif()
 
 
 mark_as_advanced(
   LATEX_COMPILER
   PDFLATEX_COMPILER
+  LATEX_PDFLATEX_FOUND
   BIBTEX_COMPILER
+  LATEX_BIBTEX_FOUND
   MAKEINDEX_COMPILER
+  LATEX_MAKEINDEX_FOUND
   DVIPS_CONVERTER
+  LATEX_DVIPS_FOUND
   DVIPDF_CONVERTER
+  LATEX_DVIPDF_FOUND
   PS2PDF_CONVERTER
+  LATEX_PS2PDF_FOUND
   LATEX2HTML_CONVERTER
+  LATEX_LATEX2HTML_FOUND
 )
 
+# handle variables for found Latex and its components
 include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-find_package_handle_standard_args(Latex
+find_package_handle_standard_args(LATEX
   REQUIRED_VARS LATEX_COMPILER
+  HANDLE_COMPONENTS
 )
-- 
2.1.2

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers

Reply via email to