aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake')
-rw-r--r--cmake/Manual.cmake2
-rw-r--r--cmake/Release.cmake19
2 files changed, 14 insertions, 7 deletions
diff --git a/cmake/Manual.cmake b/cmake/Manual.cmake
index 689c91e..17a8e77 100644
--- a/cmake/Manual.cmake
+++ b/cmake/Manual.cmake
@@ -6,7 +6,7 @@ endif()
configure_file("${CMAKE_CURRENT_LIST_DIR}/GenerateManual.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/GenerateManual.cmake" @ONLY)
-file(GLOB cpsc_language_sources CONFIGURE_DEPENDS
+file(GLOB_RECURSE cpsc_language_sources CONFIGURE_DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/doc/language/cpsc-*.7.md")
set(cpsc_manual_sources "${CMAKE_CURRENT_SOURCE_DIR}/doc/cpsc.1.md"
${cpsc_language_sources})
diff --git a/cmake/Release.cmake b/cmake/Release.cmake
index 59a1d79..66c2e2b 100644
--- a/cmake/Release.cmake
+++ b/cmake/Release.cmake
@@ -21,7 +21,7 @@ if(CPSC_WINDOWS)
set(cpsc_binary_name cpsc.exe)
set(cpsc_installer install.ps1)
set(cpsc_manual cpsc.html)
- set(cpsc_language_pattern "${CPSC_BINARY_DIR}/doc/language/cpsc-*.html")
+ set(cpsc_language_extension html)
set(cpsc_tar_flags cf)
set(cpsc_archive_format zip)
else()
@@ -29,7 +29,7 @@ else()
set(cpsc_binary_name cpsc)
set(cpsc_installer install.sh)
set(cpsc_manual cpsc.1)
- set(cpsc_language_pattern "${CPSC_BINARY_DIR}/doc/language/cpsc-*.7")
+ set(cpsc_language_extension 7)
set(cpsc_tar_flags cJf)
set(cpsc_archive_format gnutar)
endif()
@@ -40,11 +40,18 @@ configure_file("${CPSC_EXECUTABLE}" "${cpsc_package_dir}/${cpsc_binary_name}" CO
file(COPY "${CPSC_SOURCE_DIR}/${cpsc_installer}" "${CPSC_SOURCE_DIR}/LICENSE"
DESTINATION "${cpsc_package_dir}")
file(COPY "${CPSC_BINARY_DIR}/doc/${cpsc_manual}" DESTINATION "${cpsc_package_dir}/doc")
-file(GLOB cpsc_language_manuals "${cpsc_language_pattern}")
-if(NOT cpsc_language_manuals)
- message(FATAL_ERROR "Language manuals are missing; build the doc target first")
+# Package the current source set, preserving categories and ignoring stale outputs.
+file(GLOB_RECURSE cpsc_language_sources "${CPSC_SOURCE_DIR}/doc/language/cpsc-*.7.md")
+if(NOT cpsc_language_sources)
+ message(FATAL_ERROR "Language manual sources are missing")
endif()
-file(COPY ${cpsc_language_manuals} DESTINATION "${cpsc_package_dir}/doc/language")
+foreach(source IN LISTS cpsc_language_sources)
+ file(RELATIVE_PATH relative "${CPSC_SOURCE_DIR}/doc/language" "${source}")
+ string(REGEX REPLACE "\\.7\\.md$" ".${cpsc_language_extension}" relative "${relative}")
+ get_filename_component(directory "${relative}" DIRECTORY)
+ file(COPY "${CPSC_BINARY_DIR}/doc/language/${relative}"
+ DESTINATION "${cpsc_package_dir}/doc/language/${directory}")
+endforeach()
execute_process(
COMMAND "${CMAKE_COMMAND}" -E tar "${cpsc_tar_flags}" "${cpsc_archive}"
"--format=${cpsc_archive_format}" "${cpsc_package_name}"