Use CMake's built-in timestamp formatting.
It notably honors SOURCE_DATE_EPOCH if set, making for reproducible output. For even better reproducibility, use UTC. (Unlike the date command's output, the result is already always in English.) Extend this approach to the book, introducing appropriately formatted PDF_DATE and TODAY variables for its PDF metadata and title page respectively and making make_pdf configurable.
This commit is contained in:
parent
794d493eb6
commit
678c850272
@ -37,16 +37,12 @@ if(GENERATE_DOCS)
|
||||
|
||||
# create required variables
|
||||
|
||||
execute_process(COMMAND date "+%Y"
|
||||
OUTPUT_VARIABLE YEAR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
string(TIMESTAMP YEAR "%Y" UTC)
|
||||
# note: current locale is used for abbreviated month
|
||||
execute_process(COMMAND date "+%b %d, %Y"
|
||||
OUTPUT_VARIABLE CURRENT_DATE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
string(TIMESTAMP CURRENT_DATE "%b %d, %Y" UTC)
|
||||
string(TIMESTAMP PDF_DATE "D:%Y%m%d%H%M%SZ" UTC)
|
||||
string(TIMESTAMP TODAY "%B %d, %Y" UTC)
|
||||
string(REPLACE " 0" " " TODAY "${TODAY}")
|
||||
|
||||
# Find "short" doxygen version if it was built from Git
|
||||
# Note: this is still needed in CMake 3.15 but later CMake versions
|
||||
@ -77,6 +73,8 @@ if(GENERATE_DOCS)
|
||||
if(0) # debug
|
||||
fl_debug_var(YEAR)
|
||||
fl_debug_var(CURRENT_DATE)
|
||||
fl_debug_var(PDF_DATE)
|
||||
fl_debug_var(TODAY)
|
||||
fl_debug_var(FLTK_GIT_REVISION)
|
||||
fl_debug_var(DOXYGEN_FOUND)
|
||||
fl_debug_var(DOXYGEN_EXECUTABLE)
|
||||
@ -179,7 +177,7 @@ if(FLTK_BUILD_PDF_DOCS)
|
||||
COMMENT "Converting ${DOXYFILE} to doxygen version ${DOXYGEN_VERSION_SHORT}" VERBATIM
|
||||
)
|
||||
|
||||
# generate LaTeX title fltk-title.tex
|
||||
# generate LaTeX title fltk-title.tex and make_pdf script
|
||||
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/fltk-title.tex.in
|
||||
@ -187,6 +185,12 @@ if(FLTK_BUILD_PDF_DOCS)
|
||||
@ONLY
|
||||
)
|
||||
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/make_pdf.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/make_pdf
|
||||
@ONLY
|
||||
)
|
||||
|
||||
# generate fltk.pdf
|
||||
|
||||
add_custom_command(
|
||||
@ -196,7 +200,7 @@ if(FLTK_BUILD_PDF_DOCS)
|
||||
${CMAKE_CURRENT_BINARY_DIR}/fltk-title.tex
|
||||
${CMAKE_CURRENT_BINARY_DIR}/fltk-book.tex
|
||||
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE}
|
||||
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/make_pdf
|
||||
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/make_pdf
|
||||
COMMAND cp -f latex/refman.pdf fltk.pdf
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${DOXYFILE}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/fltk-title.tex
|
||||
|
||||
@ -26,10 +26,15 @@
|
||||
#
|
||||
# Used in: Makefile and CMakeLists.txt
|
||||
|
||||
run_pdflatex() {
|
||||
pdflatex --interaction=nonstopmode \
|
||||
"\pdfinfo{/CreationDate(@PDF_DATE@)/ModDate(@PDF_DATE@)}\input{refman.tex}"
|
||||
}
|
||||
|
||||
( cd latex
|
||||
pdflatex --interaction=nonstopmode refman.tex
|
||||
run_pdflatex
|
||||
makeindex refman.idx
|
||||
pdflatex --interaction=nonstopmode refman.tex
|
||||
run_pdflatex
|
||||
latex_count=5
|
||||
while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log \
|
||||
&& [ $latex_count -gt 0 ]
|
||||
@ -25,7 +25,7 @@ provided this copyright and permission notice are preserved.}\\
|
||||
\vspace*{1.5cm}
|
||||
{\large Generated by Doxygen @DOXY_VERSION@}\\
|
||||
\vspace*{0.5cm}
|
||||
\today{}\\
|
||||
@TODAY@\\
|
||||
\vspace*{0.5cm}
|
||||
{\small Git revision @FLTK_GIT_REVISION@}\\
|
||||
\end{center}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user