From 2f033fe5c922cc7d1ca1b619dc665cbc21341983 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Thu, 22 Oct 2026 11:35:16 +0000 Subject: 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 --- cmake/CompilerPaths.txt | 2 +- cmake/Install.cmake.in | 11 ++++++----- cmake/Release.cmake | 12 ++++++++---- 3 files changed, 15 insertions(+), 10 deletions(-) (limited to 'cmake') 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") -- cgit v1.3.1-4-g156e