annotate buildsys/cmake/Modules/UseLATEX.cmake @ 0:3e629dc19168

initial from svn dyncall-1745
author Daniel Adler
date Thu, 19 Mar 2015 22:24:28 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
1 # File: UseLATEX.cmake
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2 # CMAKE commands to actually use the LaTeX compiler
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 # Version: 1.7.2
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4 # Author: Kenneth Moreland (kmorel at sandia dot gov)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 # Copyright 2004 Sandia Corporation.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
7 # Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8 # license for use of this work by or on behalf of the
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9 # U.S. Government. Redistribution and use in source and binary forms, with
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 # or without modification, are permitted provided that this Notice and any
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
11 # statement of authorship are reproduced on all copies.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
12 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
13 # The following MACROS are defined:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
14 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
15 # ADD_LATEX_DOCUMENT(<tex_file>
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
16 # [BIBFILES <bib_files>]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
17 # [INPUTS <input_tex_files>]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
18 # [IMAGE_DIRS] <image_directories>
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
19 # [IMAGES] <image_files>
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
20 # [CONFIGURE] <tex_files>
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
21 # [DEPENDS] <tex_files>
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
22 # [USE_INDEX] [USE_GLOSSARY]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
23 # [DEFAULT_PDF] [MANGLE_TARGET_NAMES])
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
24 # Adds targets that compile <tex_file>. The latex output is placed
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
25 # in LATEX_OUTPUT_PATH or CMAKE_CURRENT_BINARY_DIR if the former is
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
26 # not set. The latex program is picky about where files are located,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
27 # so all input files are copied from the source directory to the
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
28 # output directory. This includes the target tex file, any tex file
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
29 # listed with the INPUTS option, the bibliography files listed with
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
30 # the BIBFILES option, and any .cls, .bst, and .clo files found in
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
31 # the current source directory. Images found in the IMAGE_DIRS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
32 # directories or listed by IMAGES are also copied to the output
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
33 # directory and coverted to an appropriate format if necessary. Any
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
34 # tex files also listed with the CONFIGURE option are also processed
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
35 # with the CMake CONFIGURE_FILE command (with the @ONLY flag. Any
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
36 # file listed in CONFIGURE but not the target tex file or listed with
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
37 # INPUTS has no effect. DEPENDS can be used to specify generated files
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
38 # that are needed to compile the latex target.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
39 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
40 # The following targets are made:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
41 # dvi: Makes <name>.dvi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
42 # pdf: Makes <name>.pdf using pdflatex.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
43 # safepdf: Makes <name>.pdf using ps2pdf. If using the default
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
44 # program arguments, this will ensure all fonts are
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
45 # embedded and no lossy compression has been performed
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
46 # on images.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
47 # ps: Makes <name>.ps
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
48 # html: Makes <name>.html
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
49 # auxclean: Deletes <name>.aux. This is sometimes necessary
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
50 # if a LaTeX error occurs and writes a bad aux file.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
51 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
52 # The dvi target is added to the ALL. That is, it will be the target
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
53 # built by default. If the DEFAULT_PDF argument is given, then the
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
54 # pdf target will be the default instead of dvi.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
55 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
56 # If the argument MANGLE_TARGET_NAMES is given, then each of the
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
57 # target names above will be mangled with the <tex_file> name. This
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
58 # is to make the targets unique if ADD_LATEX_DOCUMENT is called for
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
59 # multiple documents. If the argument USE_INDEX is given, then
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
60 # commands to build an index are made. If the argument USE_GLOSSARY
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
61 # is given, then commands to build a glossary are made.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
62 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
63 # History:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
64 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
65 # 1.7.2 Use ps2pdf to convert eps to pdf to get around the problem with
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
66 # ImageMagick dropping the bounding box (thanks to Lukasz Lis).
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
67 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
68 # 1.7.1 Fixed some dependency issues.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
69 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
70 # 1.7.0 Added DEPENDS options (thanks to Theodore Papadopoulo).
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
71 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
72 # 1.6.1 Ported the makeglossaries command to CMake and embedded the port
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
73 # into UseLATEX.cmake.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
74 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
75 # 1.6.0 Allow the use of the makeglossaries command. Thanks to Oystein
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
76 # S. Haaland for the patch.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
77 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
78 # 1.5.0 Allow any type of file in the INPUTS lists, not just tex file
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
79 # (suggested by Eric Noulard). As a consequence, the ability to
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
80 # specify tex files without the .tex extension is removed. The removed
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
81 # function is of dubious value anyway.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
82 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
83 # When copying input files, skip over any file that exists in the
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
84 # binary directory but does not exist in the source directory with the
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
85 # assumption that these files were added by some other mechanism. I
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
86 # find this useful when creating large documents with multiple
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
87 # chapters that I want to build separately (for speed) as I work on
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
88 # them. I use the same boilerplate as the starting point for all
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
89 # and just copy it with different configurations. This was what the
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
90 # separate ADD_LATEX_DOCUMENT method was supposed to originally be for.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
91 # Since its external use is pretty much deprecated, I removed that
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
92 # documentation.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
93 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
94 # 1.4.1 Copy .sty files along with the other class and package files.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
95 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
96 # 1.4.0 Added a MANGLE_TARGET_NAMES option that will mangle the target names.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
97 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
98 # Fixed problem with copying bib files that became apparent with
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
99 # CMake 2.4.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
100 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
101 # 1.3.0 Added a LATEX_OUTPUT_PATH variable that allows you or the user to
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
102 # specify where the built latex documents to go. This is especially
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
103 # handy if you want to do in-source builds.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
104 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
105 # Removed the ADD_LATEX_IMAGES macro and absorbed the functionality
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
106 # into ADD_LATEX_DOCUMENT. The old interface was always kind of
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
107 # clunky anyway since you had to specify the image directory in both
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
108 # places. It also made supporting LATEX_OUTPUT_PATH problematic.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
109 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
110 # Added support for jpeg files.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
111 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
112 # 1.2.0 Changed the configuration options yet again. Removed the NO_CONFIGURE
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
113 # Replaced it with a CONFIGURE option that lists input files for which
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
114 # configure should be run.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
115 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
116 # The pdf target no longer depends on the dvi target. This allows you
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
117 # to build latex documents that require pdflatex. Also added an option
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
118 # to make the pdf target the default one.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
119 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
120 # 1.1.1 Added the NO_CONFIGURE option. The @ character can be used when
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
121 # specifying table column separators. If two or more are used, then
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
122 # will incorrectly substitute them.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
123 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
124 # 1.1.0 Added ability include multiple bib files. Added ability to do copy
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
125 # sub-tex files for multipart tex files.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
126 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
127 # 1.0.0 If both ps and pdf type images exist, just copy the one that
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
128 # matches the current render mode. Replaced a bunch of STRING
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
129 # commands with GET_FILENAME_COMPONENT commands that were made to do
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
130 # the desired function.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
131 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
132 # 0.4.0 First version posted to CMake Wiki.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
133 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
134
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
135 #############################################################################
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
136 # Find the location of myself while originally executing. If you do this
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
137 # inside of a macro, it will recode where the macro was invoked.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
138 #############################################################################
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
139 SET(LATEX_USE_LATEX_LOCATION ${CMAKE_CURRENT_LIST_FILE}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
140 CACHE INTERNAL "Location of UseLATEX.cmake file." FORCE
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
141 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
142
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
143 #############################################################################
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
144 # Generic helper macros
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
145 #############################################################################
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
146
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
147 # Helpful list macros.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
148 MACRO(LATEX_CAR var)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
149 SET(${var} ${ARGV1})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
150 ENDMACRO(LATEX_CAR)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
151 MACRO(LATEX_CDR var junk)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
152 SET(${var} ${ARGN})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
153 ENDMACRO(LATEX_CDR)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
154
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
155 MACRO(LATEX_LIST_CONTAINS var value)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
156 SET(${var})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
157 FOREACH (value2 ${ARGN})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
158 IF (${value} STREQUAL ${value2})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
159 SET(${var} TRUE)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
160 ENDIF (${value} STREQUAL ${value2})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
161 ENDFOREACH (value2)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
162 ENDMACRO(LATEX_LIST_CONTAINS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
163
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
164 # Parse macro arguments.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
165 MACRO(LATEX_PARSE_ARGUMENTS prefix arg_names option_names)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
166 SET(DEFAULT_ARGS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
167 FOREACH(arg_name ${arg_names})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
168 SET(${prefix}_${arg_name})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
169 ENDFOREACH(arg_name)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
170 FOREACH(option ${option_names})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
171 SET(${prefix}_${option})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
172 ENDFOREACH(option)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
173
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
174 SET(current_arg_name DEFAULT_ARGS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
175 SET(current_arg_list)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
176 FOREACH(arg ${ARGN})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
177 LATEX_LIST_CONTAINS(is_arg_name ${arg} ${arg_names})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
178 IF (is_arg_name)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
179 SET(${prefix}_${current_arg_name} ${current_arg_list})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
180 SET(current_arg_name ${arg})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
181 SET(current_arg_list)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
182 ELSE (is_arg_name)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
183 LATEX_LIST_CONTAINS(is_option ${arg} ${option_names})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
184 IF (is_option)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
185 SET(${prefix}_${arg} TRUE)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
186 ELSE (is_option)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
187 SET(current_arg_list ${current_arg_list} ${arg})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
188 ENDIF (is_option)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
189 ENDIF (is_arg_name)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
190 ENDFOREACH(arg)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
191 SET(${prefix}_${current_arg_name} ${current_arg_list})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
192 ENDMACRO(LATEX_PARSE_ARGUMENTS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
193
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
194 # Match the contents of a file to a regular expression.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
195 MACRO(LATEX_FILE_MATCH variable filename regexp default)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
196 # The FILE STRINGS command would be a bit better, but it's not supported on
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
197 # older versions of CMake.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
198 FILE(READ ${filename} file_contents)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
199 STRING(REGEX MATCHALL "${regexp}"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
200 ${variable} ${file_contents}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
201 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
202 IF (NOT ${variable})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
203 SET(${variable} "${default}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
204 ENDIF (NOT ${variable})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
205 ENDMACRO(LATEX_FILE_MATCH)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
206
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
207 #############################################################################
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
208 # Macros that perform processing during a LaTeX build.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
209 #############################################################################
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
210 MACRO(LATEX_MAKEGLOSSARIES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
211 MESSAGE("**************************** In makeglossaries")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
212 IF (NOT LATEX_TARGET)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
213 MESSAGE(SEND_ERROR "Need to define LATEX_TARGET")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
214 ENDIF (NOT LATEX_TARGET)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
215
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
216 IF (NOT MAKEINDEX_COMPILER)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
217 MESSAGE(SEND_ERROR "Need to define MAKEINDEX_COMPILER")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
218 ENDIF (NOT MAKEINDEX_COMPILER)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
219
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
220 SET(aux_file ${LATEX_TARGET}.aux)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
221
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
222 IF (NOT EXISTS ${aux_file})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
223 MESSAGE(SEND_ERROR "${aux_file} does not exist. Run latex on your target file.")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
224 ENDIF (NOT EXISTS ${aux_file})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
225
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
226 LATEX_FILE_MATCH(newglossary_lines ${aux_file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
227 "@newglossary[ \t]*{([^}]*)}{([^}]*)}{([^}]*)}{([^}]*)}"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
228 "@newglossary{main}{glg}{gls}{glo}"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
229 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
230
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
231 LATEX_FILE_MATCH(istfile_line ${aux_file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
232 "@istfilename[ \t]*{([^}]*)}"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
233 "@istfilename{${LATEX_TARGET}.ist}"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
234 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
235 STRING(REGEX REPLACE "@istfilename[ \t]*{([^}]*)}" "\\1"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
236 istfile ${istfile_line}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
237 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
238
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
239 FOREACH(newglossary ${newglossary_lines})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
240 STRING(REGEX REPLACE
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
241 "@newglossary[ \t]*{([^}]*)}{([^}]*)}{([^}]*)}{([^}]*)}"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
242 "\\1" glossary_name ${newglossary}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
243 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
244 STRING(REGEX REPLACE
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
245 "@newglossary[ \t]*{([^}]*)}{([^}]*)}{([^}]*)}{([^}]*)}"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
246 "${LATEX_TARGET}.\\2" glossary_log ${newglossary}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
247 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
248 STRING(REGEX REPLACE
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
249 "@newglossary[ \t]*{([^}]*)}{([^}]*)}{([^}]*)}{([^}]*)}"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
250 "${LATEX_TARGET}.\\3" glossary_out ${newglossary}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
251 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
252 STRING(REGEX REPLACE
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
253 "@newglossary[ \t]*{([^}]*)}{([^}]*)}{([^}]*)}{([^}]*)}"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
254 "${LATEX_TARGET}.\\4" glossary_in ${newglossary}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
255 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
256 MESSAGE("${MAKEINDEX_COMPILER} ${MAKEGLOSSARIES_COMPILER_FLAGS} -s ${istfile} -t ${glossary_log} -o ${glossary_out} ${glossary_in}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
257 EXEC_PROGRAM(${MAKEINDEX_COMPILER} ARGS ${MAKEGLOSSARIES_COMPILER_FLAGS}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
258 -s ${istfile} -t ${glossary_log} -o ${glossary_out} ${glossary_in}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
259 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
260 ENDFOREACH(newglossary)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
261 ENDMACRO(LATEX_MAKEGLOSSARIES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
262
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
263 #############################################################################
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
264 # Helper macros for establishing LaTeX build.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
265 #############################################################################
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
266
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
267 MACRO(LATEX_NEEDIT VAR NAME)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
268 IF (NOT ${VAR})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
269 MESSAGE(SEND_ERROR "I need the ${NAME} command.")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
270 ENDIF(NOT ${VAR})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
271 ENDMACRO(LATEX_NEEDIT)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
272
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
273 MACRO(LATEX_WANTIT VAR NAME)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
274 IF (NOT ${VAR})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
275 MESSAGE(STATUS "I could not find the ${NAME} command.")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
276 ENDIF(NOT ${VAR})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
277 ENDMACRO(LATEX_WANTIT)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
278
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
279 MACRO(LATEX_SETUP_VARIABLES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
280 SET(LATEX_OUTPUT_PATH "${LATEX_OUTPUT_PATH}"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
281 CACHE PATH "If non empty, specifies the location to place LaTeX output."
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
282 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
283
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
284 FIND_PACKAGE(LATEX)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
285
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
286 MARK_AS_ADVANCED(CLEAR
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
287 LATEX_COMPILER
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
288 PDFLATEX_COMPILER
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
289 BIBTEX_COMPILER
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
290 MAKEINDEX_COMPILER
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
291 DVIPS_CONVERTER
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
292 PS2PDF_CONVERTER
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
293 LATEX2HTML_CONVERTER
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
294 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
295
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
296 LATEX_NEEDIT(LATEX_COMPILER latex)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
297 LATEX_WANTIT(PDFLATEX_COMPILER pdflatex)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
298 LATEX_NEEDIT(BIBTEX_COMPILER bibtex)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
299 LATEX_NEEDIT(MAKEINDEX_COMPILER makeindex)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
300 LATEX_WANTIT(DVIPS_CONVERTER dvips)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
301 LATEX_WANTIT(PS2PDF_CONVERTER ps2pdf)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
302 LATEX_WANTIT(LATEX2HTML_CONVERTER latex2html)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
303
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
304 SET(LATEX_COMPILER_FLAGS "-interaction=nonstopmode"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
305 CACHE STRING "Flags passed to latex.")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
306 SET(PDFLATEX_COMPILER_FLAGS ${LATEX_COMPILER_FLAGS}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
307 CACHE STRING "Flags passed to pdflatex.")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
308 SET(BIBTEX_COMPILER_FLAGS ""
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
309 CACHE STRING "Flags passed to bibtex.")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
310 SET(MAKEINDEX_COMPILER_FLAGS ""
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
311 CACHE STRING "Flags passed to makeindex.")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
312 SET(MAKEGLOSSARIES_COMPILER_FLAGS ""
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
313 CACHE STRING "Flags passed to makeglossaries.")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
314 SET(DVIPS_CONVERTER_FLAGS "-Ppdf -G0 -t letter"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
315 CACHE STRING "Flags passed to dvips.")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
316 SET(PS2PDF_CONVERTER_FLAGS "-dMaxSubsetPct=100 -dCompatibilityLevel=1.3 -dSubsetFonts=true -dEmbedAllFonts=true -dAutoFilterColorImages=false -dAutoFilterGrayImages=false -dColorImageFilter=/FlateEncode -dGrayImageFilter=/FlateEncode -dMonoImageFilter=/FlateEncode"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
317 CACHE STRING "Flags passed to ps2pdf.")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
318 SET(LATEX2HTML_CONVERTER_FLAGS ""
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
319 CACHE STRING "Flags passed to latex2html.")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
320 MARK_AS_ADVANCED(
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
321 LATEX_COMPILER_FLAGS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
322 PDFLATEX_COMPILER_FLAGS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
323 BIBTEX_COMPILER_FLAGS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
324 MAKEINDEX_COMPILER_FLAGS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
325 MAKEGLOSSARIES_COMPILER_FLAGS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
326 DVIPS_CONVERTER_FLAGS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
327 PS2PDF_CONVERTER_FLAGS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
328 LATEX2HTML_CONVERTER_FLAGS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
329 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
330 SEPARATE_ARGUMENTS(LATEX_COMPILER_FLAGS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
331 SEPARATE_ARGUMENTS(PDFLATEX_COMPILER_FLAGS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
332 SEPARATE_ARGUMENTS(BIBTEX_COMPILER_FLAGS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
333 SEPARATE_ARGUMENTS(MAKEINDEX_COMPILER_FLAGS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
334 SEPARATE_ARGUMENTS(MAKEGLOSSARIES_COMPILER_FLAGS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
335 SEPARATE_ARGUMENTS(DVIPS_CONVERTER_FLAGS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
336 SEPARATE_ARGUMENTS(PS2PDF_CONVERTER_FLAGS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
337 SEPARATE_ARGUMENTS(LATEX2HTML_CONVERTER_FLAGS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
338
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
339 FIND_PROGRAM(IMAGEMAGICK_CONVERT convert
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
340 DOC "The convert program that comes with ImageMagick (available at http://www.imagemagick.org)."
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
341 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
342 IF (NOT IMAGEMAGICK_CONVERT)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
343 MESSAGE(SEND_ERROR "Could not find convert program. Please download ImageMagick from http://www.imagemagick.org and install.")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
344 ENDIF (NOT IMAGEMAGICK_CONVERT)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
345
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
346 OPTION(LATEX_SMALL_IMAGES
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
347 "If on, the raster images will be converted to 1/6 the original size. This is because papers usually require 600 dpi images whereas most monitors only require at most 96 dpi. Thus, smaller images make smaller files for web distributation and can make it faster to read dvi files."
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
348 OFF)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
349 IF (LATEX_SMALL_IMAGES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
350 SET(LATEX_RASTER_SCALE 16)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
351 SET(LATEX_OPPOSITE_RASTER_SCALE 100)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
352 ELSE (LATEX_SMALL_IMAGES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
353 SET(LATEX_RASTER_SCALE 100)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
354 SET(LATEX_OPPOSITE_RASTER_SCALE 16)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
355 ENDIF (LATEX_SMALL_IMAGES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
356
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
357 # Just holds extensions for known image types. They should all be lower case.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
358 SET(LATEX_DVI_VECTOR_IMAGE_EXTENSIONS .eps)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
359 SET(LATEX_DVI_RASTER_IMAGE_EXTENSIONS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
360 SET(LATEX_DVI_IMAGE_EXTENSIONS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
361 ${LATEX_DVI_VECTOR_IMAGE_EXTENSIONS} ${LATEX_DVI_RASTER_IMAGE_EXTENSIONS})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
362 SET(LATEX_PDF_VECTOR_IMAGE_EXTENSIONS .pdf)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
363 SET(LATEX_PDF_RASTER_IMAGE_EXTENSIONS .png .jpeg .jpg)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
364 SET(LATEX_PDF_IMAGE_EXTENSIONS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
365 ${LATEX_PDF_VECTOR_IMAGE_EXTENSIONS} ${LATEX_PDF_RASTER_IMAGE_EXTENSIONS})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
366 SET(LATEX_IMAGE_EXTENSIONS
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
367 ${LATEX_DVI_IMAGE_EXTENSIONS} ${LATEX_PDF_IMAGE_EXTENSIONS})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
368 ENDMACRO(LATEX_SETUP_VARIABLES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
369
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
370 MACRO(LATEX_GET_OUTPUT_PATH var)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
371 SET(${var})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
372 IF (LATEX_OUTPUT_PATH)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
373 IF ("${LATEX_OUTPUT_PATH}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
374 MESSAGE(SEND_ERROR "You cannot set LATEX_OUTPUT_PATH to the same directory that contains LaTeX input files.")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
375 ELSE ("${LATEX_OUTPUT_PATH}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
376 SET(${var} "${LATEX_OUTPUT_PATH}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
377 ENDIF ("${LATEX_OUTPUT_PATH}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
378 ELSE (LATEX_OUTPUT_PATH)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
379 IF ("${CMAKE_CURRENT_BINARY_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
380 MESSAGE(SEND_ERROR "LaTeX files must be built out of source or you must set LATEX_OUTPUT_PATH.")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
381 ELSE ("${CMAKE_CURRENT_BINARY_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
382 SET(${var} "${CMAKE_CURRENT_BINARY_DIR}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
383 ENDIF ("${CMAKE_CURRENT_BINARY_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
384 ENDIF (LATEX_OUTPUT_PATH)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
385 ENDMACRO(LATEX_GET_OUTPUT_PATH)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
386
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
387 MACRO(LATEX_ADD_CONVERT_COMMAND output_path input_path output_extension
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
388 input_extension flags)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
389 SET (converter ${IMAGEMAGICK_CONVERT})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
390 SET (convert_flags "")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
391 # ImageMagick has broken eps to pdf conversion
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
392 # use ps2pdf instead
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
393 IF (${input_extension} STREQUAL ".eps" AND ${output_extension} STREQUAL ".pdf")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
394 IF (PS2PDF_CONVERTER)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
395 SET (converter ${PS2PDF_CONVERTER})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
396 SET (convert_flags "-dEPSCrop ${flags}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
397 ELSE (PS2PDF_CONVERTER)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
398 MESSAGE(SEND_ERROR "Using postscript files with pdflatex requires ps2pdf for conversion.")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
399 ENDIF (PS2PDF_CONVERTER)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
400 ELSE (${input_extension} STREQUAL ".eps" AND ${output_extension} STREQUAL ".pdf")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
401 SET (convert_flags ${flags})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
402 ENDIF (${input_extension} STREQUAL ".eps" AND ${output_extension} STREQUAL ".pdf")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
403
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
404 ADD_CUSTOM_COMMAND(OUTPUT ${output_path}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
405 COMMAND ${converter}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
406 ARGS ${convert_flags} ${input_path} ${output_path}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
407 DEPENDS ${input_path}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
408 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
409 ENDMACRO(LATEX_ADD_CONVERT_COMMAND)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
410
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
411 # Makes custom commands to convert a file to a particular type.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
412 MACRO(LATEX_CONVERT_IMAGE output_files input_file output_extension convert_flags
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
413 output_extensions other_files)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
414 SET(input_dir ${CMAKE_CURRENT_SOURCE_DIR})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
415 LATEX_GET_OUTPUT_PATH(output_dir)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
416
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
417 GET_FILENAME_COMPONENT(extension "${input_file}" EXT)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
418
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
419 STRING(REGEX REPLACE "\\.[^.]*\$" ${output_extension} output_file
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
420 "${input_file}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
421
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
422 LATEX_LIST_CONTAINS(is_type ${extension} ${output_extensions})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
423 IF (is_type)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
424 IF (convert_flags)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
425 LATEX_ADD_CONVERT_COMMAND(${output_dir}/${output_file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
426 ${input_dir}/${input_file} ${output_extension} ${extension}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
427 "${convert_flags}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
428 SET(${output_files} ${${output_files}} ${output_dir}/${output_file})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
429 ELSE (convert_flags)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
430 # As a shortcut, we can just copy the file.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
431 ADD_CUSTOM_COMMAND(OUTPUT ${output_dir}/${input_file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
432 COMMAND ${CMAKE_COMMAND}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
433 ARGS -E copy ${input_dir}/${input_file} ${output_dir}/${input_file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
434 DEPENDS ${input_dir}/${input_file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
435 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
436 SET(${output_files} ${${output_files}} ${output_dir}/${input_file})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
437 ENDIF (convert_flags)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
438 ELSE (is_type)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
439 SET(do_convert TRUE)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
440 # Check to see if there is another input file of the appropriate type.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
441 FOREACH(valid_extension ${output_extensions})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
442 STRING(REGEX REPLACE "\\.[^.]*\$" ${output_extension} try_file
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
443 "${input_file}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
444 LATEX_LIST_CONTAINS(has_native_file "${try_file}" ${other_files})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
445 IF (has_native_file)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
446 SET(do_convert FALSE)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
447 ENDIF (has_native_file)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
448 ENDFOREACH(valid_extension)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
449
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
450 # If we still need to convert, do it.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
451 IF (do_convert)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
452 LATEX_ADD_CONVERT_COMMAND(${output_dir}/${output_file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
453 ${input_dir}/${input_file} ${output_extension} ${extension}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
454 "${convert_flags}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
455 SET(${output_files} ${${output_files}} ${output_dir}/${output_file})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
456 ENDIF (do_convert)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
457 ENDIF (is_type)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
458 ENDMACRO(LATEX_CONVERT_IMAGE)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
459
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
460 # Adds custom commands to process the given files for dvi and pdf builds.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
461 # Adds the output files to the given variables (does not replace).
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
462 MACRO(LATEX_PROCESS_IMAGES dvi_outputs pdf_outputs)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
463 LATEX_GET_OUTPUT_PATH(output_dir)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
464 FOREACH(file ${ARGN})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
465 IF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${file}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
466 GET_FILENAME_COMPONENT(extension "${file}" EXT)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
467 SET(convert_flags)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
468
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
469 # Check to see if we need to downsample the image.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
470 LATEX_LIST_CONTAINS(is_raster extension
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
471 ${LATEX_DVI_RASTER_IMAGE_EXTENSIONS}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
472 ${LATEX_PDF_RASTER_IMAGE_EXTENSIONS})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
473 IF (LATEX_SMALL_IMAGES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
474 IF (is_raster)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
475 SET(convert_flags -resize ${LATEX_RASTER_SCALE}%)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
476 ENDIF (is_raster)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
477 ENDIF (LATEX_SMALL_IMAGES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
478
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
479 # Make sure the output directory exists.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
480 GET_FILENAME_COMPONENT(path "${output_dir}/${file}" PATH)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
481 MAKE_DIRECTORY("${path}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
482
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
483 # Do conversions for dvi.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
484 LATEX_CONVERT_IMAGE(${dvi_outputs} "${file}" .eps "${convert_flags}"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
485 "${LATEX_DVI_IMAGE_EXTENSIONS}" "${ARGN}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
486
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
487 # Do conversions for pdf.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
488 IF (is_raster)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
489 LATEX_CONVERT_IMAGE(${pdf_outputs} "${file}" .png "${convert_flags}"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
490 "${LATEX_PDF_IMAGE_EXTENSIONS}" "${ARGN}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
491 ELSE (is_raster)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
492 LATEX_CONVERT_IMAGE(${pdf_outputs} "${file}" .pdf "${convert_flags}"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
493 "${LATEX_PDF_IMAGE_EXTENSIONS}" "${ARGN}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
494 ENDIF (is_raster)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
495 ELSE (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${file}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
496 MESSAGE("Could not find file \"${CMAKE_CURRENT_SOURCE_DIR}/${file}\"")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
497 ENDIF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${file}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
498 ENDFOREACH(file)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
499 ENDMACRO(LATEX_PROCESS_IMAGES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
500
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
501 MACRO(ADD_LATEX_IMAGES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
502 MESSAGE("The ADD_LATEX_IMAGES macro is deprecated. Image directories are specified with LATEX_ADD_DOCUMENT.")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
503 ENDMACRO(ADD_LATEX_IMAGES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
504
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
505 MACRO(LATEX_COPY_GLOBBED_FILES pattern dest)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
506 FILE(GLOB file_list ${pattern})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
507 FOREACH(in_file ${file_list})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
508 GET_FILENAME_COMPONENT(out_file ${in_file} NAME)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
509 CONFIGURE_FILE(${in_file} ${dest}/${out_file} COPYONLY)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
510 ENDFOREACH(in_file)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
511 ENDMACRO(LATEX_COPY_GLOBBED_FILES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
512
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
513 MACRO(LATEX_COPY_INPUT_FILE file)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
514 LATEX_GET_OUTPUT_PATH(output_dir)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
515
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
516 IF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
517 GET_FILENAME_COMPONENT(path ${file} PATH)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
518 FILE(MAKE_DIRECTORY ${output_dir}/${path})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
519
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
520 LATEX_LIST_CONTAINS(use_config ${file} ${LATEX_CONFIGURE})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
521 IF (use_config)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
522 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
523 ${output_dir}/${file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
524 @ONLY
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
525 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
526 ADD_CUSTOM_COMMAND(OUTPUT ${output_dir}/${file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
527 COMMAND ${CMAKE_COMMAND}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
528 ARGS ${CMAKE_BINARY_DIR}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
529 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
530 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
531 ELSE (use_config)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
532 ADD_CUSTOM_COMMAND(OUTPUT ${output_dir}/${file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
533 COMMAND ${CMAKE_COMMAND}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
534 ARGS -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${file} ${output_dir}/${file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
535 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
536 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
537 ENDIF (use_config)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
538 ELSE (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
539 IF (EXISTS ${output_dir}/${file})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
540 # Special case: output exists but input does not. Assume that it was
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
541 # created elsewhere and skip the input file copy.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
542 ELSE (EXISTS ${output_dir}/${file})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
543 MESSAGE("Could not find input file ${CMAKE_CURRENT_SOURCE_DIR}/${file}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
544 ENDIF (EXISTS ${output_dir}/${file})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
545 ENDIF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
546 ENDMACRO(LATEX_COPY_INPUT_FILE)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
547
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
548 #############################################################################
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
549 # Commands provided by the UseLATEX.cmake "package"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
550 #############################################################################
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
551
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
552 MACRO(LATEX_USAGE command message)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
553 MESSAGE(SEND_ERROR
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
554 "${message}\nUsage: ${command}(<tex_file>\n [BIBFILES <bib_file> <bib_file> ...]\n [INPUTS <tex_file> <tex_file> ...]\n [IMAGE_DIRS <directory1> <directory2> ...]\n [IMAGES <image_file1> <image_file2>\n [CONFIGURE <tex_file> <tex_file> ...]\n [DEPENDS <tex_file> <tex_file> ...]\n [USE_INDEX] [USE_GLOSSARY] [DEFAULT_PDF] [MANGLE_TARGET_NAMES])"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
555 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
556 ENDMACRO(LATEX_USAGE command message)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
557
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
558 # Parses arguments to ADD_LATEX_DOCUMENT and ADD_LATEX_TARGETS and sets the
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
559 # variables LATEX_TARGET, LATEX_IMAGE_DIR, LATEX_BIBFILES, LATEX_DEPENDS, and
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
560 # LATEX_INPUTS.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
561 MACRO(PARSE_ADD_LATEX_ARGUMENTS command)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
562 LATEX_PARSE_ARGUMENTS(
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
563 LATEX
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
564 "BIBFILES;INPUTS;IMAGE_DIRS;IMAGES;CONFIGURE;DEPENDS"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
565 "USE_INDEX;USE_GLOSSARY;USE_GLOSSARIES;DEFAULT_PDF;MANGLE_TARGET_NAMES"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
566 ${ARGN}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
567 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
568
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
569 # The first argument is the target latex file.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
570 IF (LATEX_DEFAULT_ARGS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
571 LATEX_CAR(LATEX_MAIN_INPUT ${LATEX_DEFAULT_ARGS})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
572 LATEX_CDR(LATEX_DEFAULT_ARGS ${LATEX_DEFAULT_ARGS})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
573 GET_FILENAME_COMPONENT(LATEX_TARGET ${LATEX_MAIN_INPUT} NAME_WE)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
574 ELSE (LATEX_DEFAULT_ARGS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
575 LATEX_USAGE(${command} "No tex file target given to ${command}.")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
576 ENDIF (LATEX_DEFAULT_ARGS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
577
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
578 IF (LATEX_DEFAULT_ARGS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
579 LATEX_USAGE(${command} "Invalid or depricated arguments: ${LATEX_DEFAULT_ARGS}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
580 ENDIF (LATEX_DEFAULT_ARGS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
581
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
582 # Backward compatibility between 1.6.0 and 1.6.1.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
583 IF (LATEX_USE_GLOSSARIES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
584 SET(LATEX_USE_GLOSSARY TRUE)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
585 ENDIF (LATEX_USE_GLOSSARIES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
586 ENDMACRO(PARSE_ADD_LATEX_ARGUMENTS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
587
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
588 MACRO(ADD_LATEX_TARGETS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
589 LATEX_GET_OUTPUT_PATH(output_dir)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
590 PARSE_ADD_LATEX_ARGUMENTS(ADD_LATEX_TARGETS ${ARGV})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
591
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
592 # Set up target names.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
593 IF (LATEX_MANGLE_TARGET_NAMES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
594 SET(dvi_target ${LATEX_TARGET}_dvi)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
595 SET(pdf_target ${LATEX_TARGET}_pdf)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
596 SET(ps_target ${LATEX_TARGET}_ps)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
597 SET(safepdf_target ${LATEX_TARGET}_safepdf)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
598 SET(html_target ${LATEX_TARGET}_html)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
599 SET(auxclean_target ${LATEX_TARGET}_auxclean)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
600 ELSE (LATEX_MANGLE_TARGET_NAMES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
601 SET(dvi_target dvi)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
602 SET(pdf_target pdf)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
603 SET(ps_target ps)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
604 SET(safepdf_target safepdf)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
605 SET(html_target html)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
606 SET(auxclean_target auxclean)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
607 ENDIF (LATEX_MANGLE_TARGET_NAMES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
608
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
609 # For each directory in LATEX_IMAGE_DIRS, glob all the image files and
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
610 # place them in LATEX_IMAGES.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
611 FOREACH(dir ${LATEX_IMAGE_DIRS})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
612 FOREACH(extension ${LATEX_IMAGE_EXTENSIONS})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
613 FILE(GLOB files ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/*${extension})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
614 FOREACH(file ${files})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
615 GET_FILENAME_COMPONENT(filename ${file} NAME)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
616 SET(LATEX_IMAGES ${LATEX_IMAGES} ${dir}/${filename})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
617 ENDFOREACH(file)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
618 ENDFOREACH(extension)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
619 ENDFOREACH(dir)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
620
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
621 SET(dvi_images)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
622 SET(pdf_images)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
623 LATEX_PROCESS_IMAGES(dvi_images pdf_images ${LATEX_IMAGES})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
624
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
625 SET(make_dvi_command
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
626 ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
627 ${LATEX_COMPILER} ${LATEX_COMPILER_FLAGS} ${LATEX_MAIN_INPUT})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
628 SET(make_pdf_command
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
629 ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
630 ${PDFLATEX_COMPILER} ${PDFLATEX_COMPILER_FLAGS} ${LATEX_MAIN_INPUT})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
631
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
632 SET(make_dvi_depends ${LATEX_DEPENDS} ${dvi_images})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
633 SET(make_pdf_depends ${LATEX_DEPENDS} ${pdf_images})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
634 FOREACH(input ${LATEX_MAIN_INPUT} ${LATEX_INPUTS})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
635 SET(make_dvi_depends ${make_dvi_depends} ${output_dir}/${input})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
636 SET(make_pdf_depends ${make_pdf_depends} ${output_dir}/${input})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
637 ENDFOREACH(input)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
638
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
639 IF (LATEX_BIBFILES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
640 SET(make_dvi_command ${make_dvi_command}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
641 COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
642 ${BIBTEX_COMPILER} ${BIBTEX_COMPILER_FLAGS} ${LATEX_TARGET})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
643 SET(make_pdf_command ${make_pdf_command}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
644 COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
645 ${BIBTEX_COMPILER} ${BIBTEX_COMPILER_FLAGS} ${LATEX_TARGET})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
646 FOREACH (bibfile ${LATEX_BIBFILES})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
647 SET(make_dvi_depends ${make_dvi_depends} ${output_dir}/${bibfile})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
648 SET(make_pdf_depends ${make_pdf_depends} ${output_dir}/${bibfile})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
649 ENDFOREACH (bibfile ${LATEX_BIBFILES})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
650 ENDIF (LATEX_BIBFILES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
651
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
652 IF (LATEX_USE_INDEX)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
653 SET(make_dvi_command ${make_dvi_command}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
654 COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
655 ${LATEX_COMPILER} ${LATEX_COMPILER_FLAGS} ${LATEX_MAIN_INPUT}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
656 COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
657 ${MAKEINDEX_COMPILER} ${MAKEINDEX_COMPILER_FLAGS} ${LATEX_TARGET}.idx)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
658 SET(make_pdf_command ${make_pdf_command}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
659 COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
660 ${PDFLATEX_COMPILER} ${PDFLATEX_COMPILER_FLAGS} ${LATEX_MAIN_INPUT}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
661 COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
662 ${MAKEINDEX_COMPILER} ${MAKEINDEX_COMPILER_FLAGS} ${LATEX_TARGET}.idx)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
663 ENDIF (LATEX_USE_INDEX)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
664
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
665 IF (LATEX_USE_GLOSSARY)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
666 SET(make_dvi_command ${make_dvi_command}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
667 COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
668 ${LATEX_COMPILER} ${LATEX_COMPILER_FLAGS} ${LATEX_MAIN_INPUT}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
669 COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
670 ${CMAKE_COMMAND}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
671 -D LATEX_BUILD_COMMAND=makeglossaries
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
672 -D LATEX_TARGET=${LATEX_TARGET}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
673 -D MAKEINDEX_COMPILER=${MAKEINDEX_COMPILER}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
674 -D MAKEGLOSSARIES_COMPILER_FLAGS=${MAKEGLOSSARIES_COMPILER_FLAGS}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
675 -P ${LATEX_USE_LATEX_LOCATION}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
676 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
677 SET(make_pdf_command ${make_pdf_command}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
678 COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
679 ${PDFLATEX_COMPILER} ${PDFLATEX_COMPILER_FLAGS} ${LATEX_MAIN_INPUT}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
680 COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
681 ${CMAKE_COMMAND}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
682 -D LATEX_BUILD_COMMAND=makeglossaries
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
683 -D LATEX_TARGET=${LATEX_TARGET}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
684 -D MAKEINDEX_COMPILER=${MAKEINDEX_COMPILER}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
685 -D MAKEGLOSSARIES_COMPILER_FLAGS=${MAKEGLOSSARIES_COMPILER_FLAGS}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
686 -P ${LATEX_USE_LATEX_LOCATION}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
687 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
688 ENDIF (LATEX_USE_GLOSSARY)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
689
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
690 SET(make_dvi_command ${make_dvi_command}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
691 COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
692 ${LATEX_COMPILER} ${LATEX_COMPILER_FLAGS} ${LATEX_MAIN_INPUT}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
693 COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
694 ${LATEX_COMPILER} ${LATEX_COMPILER_FLAGS} ${LATEX_MAIN_INPUT})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
695 SET(make_pdf_command ${make_pdf_command}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
696 COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
697 ${PDFLATEX_COMPILER} ${PDFLATEX_COMPILER_FLAGS} ${LATEX_MAIN_INPUT}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
698 COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
699 ${PDFLATEX_COMPILER} ${PDFLATEX_COMPILER_FLAGS} ${LATEX_MAIN_INPUT})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
700
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
701 # Add commands and targets for building dvi outputs.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
702 ADD_CUSTOM_COMMAND(OUTPUT ${output_dir}/${LATEX_TARGET}.dvi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
703 COMMAND ${make_dvi_command}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
704 DEPENDS ${make_dvi_depends}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
705 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
706 IF (LATEX_DEFAULT_PDF)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
707 ADD_CUSTOM_TARGET(${dvi_target}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
708 DEPENDS ${output_dir}/${LATEX_TARGET}.dvi)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
709 ELSE (LATEX_DEFAULT_PDF)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
710 ADD_CUSTOM_TARGET(${dvi_target} ALL
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
711 DEPENDS ${output_dir}/${LATEX_TARGET}.dvi)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
712 ENDIF (LATEX_DEFAULT_PDF)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
713
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
714 # Add commands and targets for building pdf outputs (with pdflatex).
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
715 IF (PDFLATEX_COMPILER)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
716 ADD_CUSTOM_COMMAND(OUTPUT ${output_dir}/${LATEX_TARGET}.pdf
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
717 COMMAND ${make_pdf_command}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
718 DEPENDS ${make_pdf_depends}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
719 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
720 IF (LATEX_DEFAULT_PDF)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
721 ADD_CUSTOM_TARGET(${pdf_target} ALL
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
722 DEPENDS ${output_dir}/${LATEX_TARGET}.pdf)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
723 ELSE (LATEX_DEFAULT_PDF)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
724 ADD_CUSTOM_TARGET(${pdf_target}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
725 DEPENDS ${output_dir}/${LATEX_TARGET}.pdf)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
726 ENDIF (LATEX_DEFAULT_PDF)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
727 ENDIF (PDFLATEX_COMPILER)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
728
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
729 IF (DVIPS_CONVERTER)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
730 ADD_CUSTOM_COMMAND(OUTPUT ${output_dir}/${LATEX_TARGET}.ps
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
731 COMMAND ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
732 ${DVIPS_CONVERTER} ${DVIPS_CONVERTER_FLAGS} -o ${LATEX_TARGET}.ps ${LATEX_TARGET}.dvi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
733 DEPENDS ${output_dir}/${LATEX_TARGET}.dvi)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
734 ADD_CUSTOM_TARGET(${ps_target}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
735 DEPENDS ${output_dir}/${LATEX_TARGET}.ps)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
736 IF (PS2PDF_CONVERTER)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
737 # Since both the pdf and safepdf targets have the same output, we
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
738 # cannot properly do the dependencies for both. When selecting safepdf,
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
739 # simply force a recompile every time.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
740 ADD_CUSTOM_TARGET(${safepdf_target}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
741 ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
742 ${PS2PDF_CONVERTER} ${PS2PDF_CONVERTER_FLAGS} ${LATEX_TARGET}.ps ${LATEX_TARGET}.pdf
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
743 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
744 ADD_DEPENDENCIES(${safepdf_target} ${ps_target})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
745 ENDIF (PS2PDF_CONVERTER)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
746 ENDIF (DVIPS_CONVERTER)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
747
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
748 IF (LATEX2HTML_CONVERTER)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
749 ADD_CUSTOM_TARGET(${html_target}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
750 ${CMAKE_COMMAND} -E chdir ${output_dir}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
751 ${LATEX2HTML_CONVERTER} ${LATEX2HTML_CONVERTER_FLAGS} ${LATEX_MAIN_INPUT}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
752 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
753 ADD_DEPENDENCIES(${html_target} ${LATEX_MAIN_INPUT} ${LATEX_INPUTS})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
754 ENDIF (LATEX2HTML_CONVERTER)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
755
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
756 ADD_CUSTOM_TARGET(${auxclean_target}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
757 ${CMAKE_COMMAND} -E remove ${output_dir}/${LATEX_TARGET}.aux ${output_dir}/${LATEX_TARGET}.idx ${output_dir}/${LATEX_TARGET}.ind
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
758 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
759 ENDMACRO(ADD_LATEX_TARGETS)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
760
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
761 MACRO(ADD_LATEX_DOCUMENT)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
762 LATEX_GET_OUTPUT_PATH(output_dir)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
763 IF (output_dir)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
764 PARSE_ADD_LATEX_ARGUMENTS(ADD_LATEX_DOCUMENT ${ARGV})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
765
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
766 LATEX_COPY_INPUT_FILE(${LATEX_MAIN_INPUT})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
767
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
768 FOREACH (bib_file ${LATEX_BIBFILES})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
769 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${bib_file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
770 ${output_dir}/${bib_file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
771 COPYONLY)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
772 ADD_CUSTOM_COMMAND(OUTPUT ${output_dir}/${bib_file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
773 COMMAND ${CMAKE_COMMAND}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
774 ARGS -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${bib_file} ${output_dir}/${bib_file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
775 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${bib_file}
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
776 )
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
777 ENDFOREACH (bib_file)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
778
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
779 FOREACH (input ${LATEX_INPUTS})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
780 LATEX_COPY_INPUT_FILE(${input})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
781 ENDFOREACH(input)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
782
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
783 LATEX_COPY_GLOBBED_FILES(${CMAKE_CURRENT_SOURCE_DIR}/*.cls ${output_dir})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
784 LATEX_COPY_GLOBBED_FILES(${CMAKE_CURRENT_SOURCE_DIR}/*.bst ${output_dir})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
785 LATEX_COPY_GLOBBED_FILES(${CMAKE_CURRENT_SOURCE_DIR}/*.clo ${output_dir})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
786 LATEX_COPY_GLOBBED_FILES(${CMAKE_CURRENT_SOURCE_DIR}/*.sty ${output_dir})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
787
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
788 ADD_LATEX_TARGETS(${ARGV})
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
789 ENDIF (output_dir)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
790 ENDMACRO(ADD_LATEX_DOCUMENT)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
791
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
792 #############################################################################
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
793 # Actually do stuff
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
794 #############################################################################
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
795
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
796 IF (LATEX_BUILD_COMMAND)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
797 SET(command_handled)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
798
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
799 IF ("${LATEX_BUILD_COMMAND}" STREQUAL makeglossaries)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
800 LATEX_MAKEGLOSSARIES()
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
801 SET(command_handled TRUE)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
802 ENDIF ("${LATEX_BUILD_COMMAND}" STREQUAL makeglossaries)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
803
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
804 IF (NOT command_handled)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
805 MESSAGE(SEND_ERROR "Unknown command: ${LATEX_BUILD_COMMAND}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
806 ENDIF (NOT command_handled)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
807
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
808 ELSE (LATEX_BUILD_COMMAND)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
809 # Must be part of the actual configure (included from CMakeLists.txt).
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
810 LATEX_SETUP_VARIABLES()
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
811 ENDIF (LATEX_BUILD_COMMAND)