Skip to content

Commit

Permalink
CMAKE: Handle bezier2 and beziercurve separately in docgen.
Browse files Browse the repository at this point in the history
  • Loading branch information
jamievlin committed Aug 22, 2024
1 parent b004daa commit 74afb4e
Showing 1 changed file with 59 additions and 30 deletions.
89 changes: 59 additions & 30 deletions cmake-scripts/docgen.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()

# <doc-root>/logo.asy -> <build-root>/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) # <asydep1> [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
)

# <build-root>/logo.asy -> <build-root>/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 <docroot>/file.asy -> <buildroot>/file.asy
COMMAND ${CMAKE_COPY_ASY_FILE_TO_DOCBUILD_BASE_ARGS} ${ASY_DOC_ROOT}/CDlabel.asy
COMMAND ${ASY_BASE_ARGUMENTS} -fpdf CDlabel.asy
# cleanup <buildroot>/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()

# <build-root>/logo.asy + <doc-root>/CDlabel.asy -> <build-root>/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 <docroot>/file.asy -> <buildroot>/file.asy
COMMAND ${CMAKE_COPY_ASY_FILE_TO_DOCBUILD_BASE_ARGS} ${ASY_DOC_ROOT}/CDlabel.asy
COMMAND ${ASY_BASE_ARGUMENTS} -fpdf CDlabel.asy
# cleanup <buildroot>/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(
Expand Down

0 comments on commit 74afb4e

Please sign in to comment.