aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-22 11:35:16 +0000
committer_ov4 <ov4@ov4.org>2026-10-22 11:35:16 +0000
commit2f033fe5c922cc7d1ca1b619dc665cbc21341983 (patch)
treec6d5eafaf4eaa7881f60a00427a1fb60e3332d43 /cmake
parent0ee55887474146f7a8b679db65ff12c2e9b61815 (diff)
build: package and invoke install.cmd instead of install.ps1
The Windows ZIP now ships install.cmd, rewritten to CRLF by configure_file so the package is right on any build host. The CMake install target runs it through "cmd /d /c call", and install.cmd replaces install.ps1 in the version input paths. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'cmake')
-rw-r--r--cmake/CompilerPaths.txt2
-rw-r--r--cmake/Install.cmake.in11
-rw-r--r--cmake/Release.cmake12
3 files changed, 15 insertions, 10 deletions
diff --git a/cmake/CompilerPaths.txt b/cmake/CompilerPaths.txt
index 42beb57..18ab18d 100644
--- a/cmake/CompilerPaths.txt
+++ b/cmake/CompilerPaths.txt
@@ -7,6 +7,6 @@ tests
tools
CMakeLists.txt
install.sh
-install.ps1
+install.cmd
LICENSE
.github
diff --git a/cmake/Install.cmake.in b/cmake/Install.cmake.in
index c6cd83f..7ee27a5 100644
--- a/cmake/Install.cmake.in
+++ b/cmake/Install.cmake.in
@@ -11,12 +11,13 @@ endif()
set(cpsc_install_windows "@WIN32@")
if(cpsc_install_windows)
- cpsc_find_dependency(PROGRAM cpsc_powershell NAMES powershell.exe REQUIRED)
+ cpsc_find_dependency(PROGRAM cpsc_cmd NAMES cmd.exe REQUIRED)
+ file(TO_NATIVE_PATH "@CMAKE_CURRENT_SOURCE_DIR@/install.cmd" cpsc_installer)
+ # An explicit "call" keeps cmd's handling of the quoted script path the same on CMake 3.x and 4.x.
execute_process(
- COMMAND "${cpsc_powershell}" -NoProfile -NonInteractive -ExecutionPolicy Bypass
- -File "@CMAKE_CURRENT_SOURCE_DIR@/install.ps1"
- -SourceDir "@CMAKE_CURRENT_BINARY_DIR@"
- -Prefix "${CMAKE_INSTALL_PREFIX}"
+ COMMAND "${cpsc_cmd}" /d /c call "${cpsc_installer}"
+ --source-dir "@CMAKE_CURRENT_BINARY_DIR@"
+ --prefix "${CMAKE_INSTALL_PREFIX}"
RESULT_VARIABLE cpsc_install_result
)
else()
diff --git a/cmake/Release.cmake b/cmake/Release.cmake
index c825f74..c1ab9be 100644
--- a/cmake/Release.cmake
+++ b/cmake/Release.cmake
@@ -23,7 +23,6 @@ set(cpsc_package_dir "${CPSC_BINARY_DIR}/release/${cpsc_package_name}")
if(CPSC_WINDOWS)
set(cpsc_archive "${CPSC_BINARY_DIR}/${cpsc_package_name}.zip")
set(cpsc_binary_name cpsc.exe)
- set(cpsc_installer install.ps1)
set(cpsc_manual cpsc.html)
set(cpsc_language_extension html)
set(cpsc_tar_flags cf)
@@ -31,7 +30,6 @@ if(CPSC_WINDOWS)
else()
set(cpsc_archive "${CPSC_BINARY_DIR}/${cpsc_package_name}.tar.xz")
set(cpsc_binary_name cpsc)
- set(cpsc_installer install.sh)
set(cpsc_manual cpsc.1)
set(cpsc_language_extension 7)
set(cpsc_tar_flags cJf)
@@ -41,8 +39,14 @@ endif()
file(REMOVE_RECURSE "${cpsc_package_dir}")
file(MAKE_DIRECTORY "${cpsc_package_dir}/doc")
configure_file("${CPSC_EXECUTABLE}" "${cpsc_package_dir}/${cpsc_binary_name}" COPYONLY)
-file(COPY "${CPSC_SOURCE_DIR}/${cpsc_installer}" "${CPSC_SOURCE_DIR}/LICENSE"
- DESTINATION "${cpsc_package_dir}")
+file(COPY "${CPSC_SOURCE_DIR}/LICENSE" DESTINATION "${cpsc_package_dir}")
+if(CPSC_WINDOWS)
+ # cmd needs CRLF line endings whatever the packaging host is; install.cmd contains no @NAME@ sequences.
+ configure_file("${CPSC_SOURCE_DIR}/install.cmd" "${cpsc_package_dir}/install.cmd"
+ @ONLY NEWLINE_STYLE CRLF)
+else()
+ file(COPY "${CPSC_SOURCE_DIR}/install.sh" DESTINATION "${cpsc_package_dir}")
+endif()
file(COPY "${CPSC_BINARY_DIR}/doc/${cpsc_manual}" DESTINATION "${cpsc_package_dir}/doc")
# 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")