0a012e04ff9e5351bf8cfb4e6de4367933abb426
[alexxy/gromacs.git] / docs / manual / CMakeLists.txt
1 #
2 # This file is part of the GROMACS molecular simulation package.
3 #
4 # Copyright (c) 2013,2014, by the GROMACS development team, led by
5 # Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
6 # and including many others, as listed in the AUTHORS file in the
7 # top-level source directory and at http://www.gromacs.org.
8 #
9 # GROMACS is free software; you can redistribute it and/or
10 # modify it under the terms of the GNU Lesser General Public License
11 # as published by the Free Software Foundation; either version 2.1
12 # of the License, or (at your option) any later version.
13 #
14 # GROMACS is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17 # Lesser General Public License for more details.
18 #
19 # You should have received a copy of the GNU Lesser General Public
20 # License along with GROMACS; if not, see
21 # http://www.gnu.org/licenses, or write to the Free Software Foundation,
22 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
23 #
24 # If you want to redistribute modifications to GROMACS, please
25 # consider that scientific software is very special. Version
26 # control is crucial - bugs must be traceable. We will be happy to
27 # consider code for inclusion in the official distribution, but
28 # derived work must not be called official GROMACS. Details are found
29 # in the README & COPYING files - if they are missing, get the
30 # official version at http://www.gromacs.org.
31 #
32 # To help us fund GROMACS development, we humbly ask that you cite
33 # the research papers on the package. Check out http://www.gromacs.org.
34
35 if(${CMAKE_BINARY_DIR} STREQUAL ${CMAKE_SOURCE_DIR})
36     # UseLATEX.cmake does not work with an in-source build
37     message(STATUS "Cannot build the manual when building in the source directory")
38     set(MANUAL_BUILD_IS_POSSIBLE OFF)
39 else()
40     INCLUDE(UseLATEX.cmake)
41
42     if(NOT PDFLATEX_COMPILER OR NOT IMAGEMAGICK_CONVERT)
43         # No pdflatex was found, so don't build the manual.
44         message(STATUS "A required dependency of the manual (pdflatex, ImageMagick's convert) was not found, so the manual build will not be available")
45         set(MANUAL_BUILD_IS_POSSIBLE OFF)
46
47         # TODO Later, identify other dependencies like bibtex,
48         # make_index, date, some graphics conversion program,
49         # etc. Perhaps patch UseLATEX.cmake and contribute upstream.
50     else()
51         set(MANUAL_BUILD_IS_POSSIBLE ON)
52     endif()
53 endif()
54
55 if(MANUAL_BUILD_IS_POSSIBLE)
56     LATEX_GET_OUTPUT_PATH(output_dir)
57
58     # Avoid generating a global "html" target that clashes with the
59     # html target from program generaion of help text in share/html.
60     set(LATEX2HTML_CONVERTER off)
61
62     # This helps make the index look decent.
63     set(MAKEINDEX_COMPILER_FLAGS -s ${CMAKE_CURRENT_SOURCE_DIR}/hfill.ist)
64     # UseLATEX.cmake is hacked to call Anton Feenstra's subindex script
65     # to improve the index generation. Don't replace UseLATEX.cmake
66     # blindly from upstream!
67
68     # Here follows various custom CMake "commands" that call our various
69     # GROMACS helper scripts to make bits of the manual from the installed
70     # binaries and/or source distribution, as appropriate.
71     #
72     # Only files that can be built should be listed in DEPENDS. Makefile
73     # rules are generated for those files.
74     #
75     # The .mdp options section is now intended to be built directly
76     # from a GROMACS source directory. This facilitates drafting
77     # updates in that HTML file without copying files by hand.
78
79     ADD_CUSTOM_COMMAND(OUTPUT ${output_dir}/mdp_opt.tex
80         COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/mkmdp ARGS ${CMAKE_CURRENT_SOURCE_DIR}/../old-html
81         DEPENDS mkmdp ${CMAKE_CURRENT_SOURCE_DIR}/../old-html/online/mdp_opt.html
82         )
83
84     # Finally, the command to build the manual.
85
86     ADD_LATEX_DOCUMENT(gromacs.tex
87         # Normal LaTeX \included files
88         INPUTS algorithms.tex  defunits.tex    implement.tex  macros.tex     special.tex
89         analyse.tex     files.tex       install.tex    topology.tex
90         averages.tex    forcefield.tex  gromacs.tex    intro.tex      programs.tex
91
92         # CMake does variable replacement in these files
93         CONFIGURE macros.tex
94
95         # These files we're responsible for creating in the
96         # add_custom_targets() above. They should not be in the git
97         # repository, or its directory, or the dependencies will not work
98         # properly.
99         DEPENDS mdp_opt.tex
100
101         BIBFILES monster.bib unpubl.bib
102         IMAGE_DIRS plots
103         DEFAULT_PDF
104         USE_INDEX
105         )
106 endif()
107
108 if(MANUAL_BUILD_IS_POSSIBLE)
109     # An explicit "make manual" will still be required for the manual
110     # to be built.
111     add_custom_target(manual DEPENDS pdf)
112 else()
113     # TODO Arrange for the "make manual" target to explain that this can't
114     # be done
115 endif()
116
117 set(MANUAL_BUILD_IS_POSSIBLE ${MANUAL_BUILD_IS_POSSIBLE} PARENT_SCOPE)