From 74afb4ec6c4cb62589fa29efbdcc80368202a7ff Mon Sep 17 00:00:00 2001 From: Supakorn 'Jamie' Rassameemasmuang Date: Thu, 22 Aug 2024 02:23:37 -0600 Subject: [PATCH] CMAKE: Handle bezier2 and beziercurve separately in docgen. --- cmake-scripts/docgen.cmake | 89 +++++++++++++++++++++++++------------- 1 file changed, 59 insertions(+), 30 deletions(-) diff --git a/cmake-scripts/docgen.cmake b/cmake-scripts/docgen.cmake index 85f600bf5..0a625855b 100644 --- a/cmake-scripts/docgen.cmake +++ b/cmake-scripts/docgen.cmake @@ -135,7 +135,7 @@ add_custom_target(docgen DEPENDS ${BASE_ASYMPTOTE_DOC_AND_TEX_FILES}) if (ENABLE_ASYMPTOTE_PDF_DOCGEN) # asy files set(ASY_DOC_FILE_PREFIXES - axis3 basealign bezier bezier2 beziercurve bigdiagonal binarytreetest Bode brokenaxis + axis3 basealign bezier bigdiagonal binarytreetest Bode brokenaxis colons colors cube cylinderskeleton datagraph diagonal dots eetomumu elliptic errorbars exp fillcontour flow flowchartdemo GaussianSurface generalaxis generalaxis3 graphmarkers graphwithderiv grid3xyz @@ -189,39 +189,68 @@ endforeach() # handle CDlabel and logo separately +macro(copy_doc_asy_file_to_docbuild_root asyfile) + add_custom_command( + OUTPUT ${ASY_TEX_BUILD_ROOT}/${asyfile}.asy + COMMAND ${CMAKE_COPY_ASY_FILE_TO_DOCBUILD_BASE_ARGS} + ${ASY_DOC_ROOT}/${asyfile}.asy + DEPENDS ${ASY_DOC_ROOT}/${asyfile}.asy + ) +endmacro() -# /logo.asy -> /logo.asy -add_custom_command( - OUTPUT ${ASY_TEX_BUILD_ROOT}/logo.asy - COMMAND ${CMAKE_COPY_ASY_FILE_TO_DOCBUILD_BASE_ARGS} - ${ASY_DOC_ROOT}/logo.asy - DEPENDS ${ASY_DOC_ROOT}/logo.asy -) +macro(add_asy_file_with_asy_dependency asyfile) # [asydep2] ... + list( + TRANSFORM ARGN + PREPEND ${ASY_TEX_BUILD_ROOT}/ + OUTPUT_VARIABLE ASY_REQUIRED_DEPS + ) + list( + TRANSFORM ASY_REQUIRED_DEPS + APPEND .asy + OUTPUT_VARIABLE ASY_REQUIRED_DEPS + ) -# /logo.asy -> /logo.pdf [+ artifacts] -add_custom_command( - OUTPUT ${ASY_TEX_BUILD_ROOT}/logo.pdf - COMMAND ${ASY_BASE_ARGUMENTS} -fpdf logo.asy - DEPENDS ${ASY_TEX_BUILD_ROOT}/logo.asy - BYPRODUCTS ${ASY_TEX_BUILD_ROOT}/logo_.tex ${ASY_TEX_BUILD_ROOT}/logo_.eps - WORKING_DIRECTORY ${ASY_TEX_BUILD_ROOT} -) + add_custom_command( + OUTPUT ${ASY_TEX_BUILD_ROOT}/CDlabel.pdf + DEPENDS ${ASY_DOC_ROOT}/CDlabel.asy asy ${ASY_OUTPUT_BASE_FILES} ${ASY_REQUIRED_DEPS} + # copy /file.asy -> /file.asy + COMMAND ${CMAKE_COPY_ASY_FILE_TO_DOCBUILD_BASE_ARGS} ${ASY_DOC_ROOT}/CDlabel.asy + COMMAND ${ASY_BASE_ARGUMENTS} -fpdf CDlabel.asy + # cleanup /file.asy + COMMAND ${CMAKE_RM_BASE_ARGUMENTS} ${ASY_TEX_BUILD_ROOT}/CDlabel.asy + # cleanup tex artifacts, if exist + COMMAND ${CMAKE_RM_BASE_ARGUMENTS} -f ${ASY_TEX_BUILD_ROOT}/CDlabel_.tex + WORKING_DIRECTORY ${ASY_TEX_BUILD_ROOT} + ) +endmacro() -# /logo.asy + /CDlabel.asy -> /CDlabel.pdf -add_custom_command( - OUTPUT ${ASY_TEX_BUILD_ROOT}/CDlabel.pdf - DEPENDS ${ASY_DOC_ROOT}/CDlabel.asy asy ${ASY_OUTPUT_BASE_FILES} ${ASY_TEX_BUILD_ROOT}/logo.asy - # copy /file.asy -> /file.asy - COMMAND ${CMAKE_COPY_ASY_FILE_TO_DOCBUILD_BASE_ARGS} ${ASY_DOC_ROOT}/CDlabel.asy - COMMAND ${ASY_BASE_ARGUMENTS} -fpdf CDlabel.asy - # cleanup /file.asy - COMMAND ${CMAKE_RM_BASE_ARGUMENTS} ${ASY_TEX_BUILD_ROOT}/CDlabel.asy - # cleanup tex artifacts, if exist - COMMAND ${CMAKE_RM_BASE_ARGUMENTS} -f ${ASY_TEX_BUILD_ROOT}/CDlabel_.tex - WORKING_DIRECTORY ${ASY_TEX_BUILD_ROOT} -) +macro(add_asy_file_from_docbuild_root asyfile) + # does not copy from doc root to docbuild root; have to do manually + add_custom_command( + OUTPUT ${ASY_TEX_BUILD_ROOT}/${asyfile}.pdf + COMMAND ${ASY_BASE_ARGUMENTS} -fpdf ${asyfile}.asy + DEPENDS ${ASY_TEX_BUILD_ROOT}/${asyfile}.asy + BYPRODUCTS ${ASY_TEX_BUILD_ROOT}/${asyfile}_.tex ${ASY_TEX_BUILD_ROOT}/${asyfile}_.eps + WORKING_DIRECTORY ${ASY_TEX_BUILD_ROOT} + ) +endmacro() -list(APPEND ASY_DOC_PDF_FILES ${ASY_TEX_BUILD_ROOT}/logo.pdf ${ASY_TEX_BUILD_ROOT}/CDlabel.pdf ) +# CDlabel + logo +copy_doc_asy_file_to_docbuild_root(logo) +add_asy_file_from_docbuild_root(logo) +add_asy_file_with_asy_dependency(CDlabel logo) + +# bezier2 & beziercurve +copy_doc_asy_file_to_docbuild_root(beziercurve) +add_asy_file_from_docbuild_root(beziercurve) +add_asy_file_with_asy_dependency(bezier2 beziercurve) + +list(APPEND ASY_DOC_PDF_FILES + ${ASY_TEX_BUILD_ROOT}/logo.pdf + ${ASY_TEX_BUILD_ROOT}/CDlabel.pdf + ${ASY_TEX_BUILD_ROOT}/beziercurve.pdf + ${ASY_TEX_BUILD_ROOT}/bezier2.pdf +) # options file add_custom_command(