aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/tcl/portfile.cmake
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/tcl/portfile.cmake
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/tcl/portfile.cmake')
-rw-r--r--vcpkg/ports/tcl/portfile.cmake155
1 files changed, 155 insertions, 0 deletions
diff --git a/vcpkg/ports/tcl/portfile.cmake b/vcpkg/ports/tcl/portfile.cmake
new file mode 100644
index 0000000..13631a8
--- /dev/null
+++ b/vcpkg/ports/tcl/portfile.cmake
@@ -0,0 +1,155 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO tcltk/tcl
+ REF 0fa6a4e5aad821a5c34fdfa070c37c3f1ffc8c8e
+ SHA512 9d7f35309fe8b1a7c116639aaea50cc01699787c7afb432389bee2b9ad56a67034c45d90c9585ef1ccf15bdabf0951cbef86257c0c6aedbd2591bbfae3e93b76
+ PATCHES force-shell-install.patch
+)
+
+if (VCPKG_TARGET_IS_WINDOWS)
+ if(VCPKG_TARGET_ARCHITECTURE MATCHES "x64")
+ set(TCL_BUILD_MACHINE_STR MACHINE=AMD64)
+ else()
+ set(TCL_BUILD_MACHINE_STR MACHINE=IX86)
+ endif()
+
+ # Handle features
+ set(TCL_BUILD_OPTS OPTS=pdbs)
+ set(TCL_BUILD_STATS STATS=none)
+ set(TCL_BUILD_CHECKS CHECKS=none)
+ if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
+ set(TCL_BUILD_OPTS ${TCL_BUILD_OPTS},static,staticpkg)
+ endif()
+ if (VCPKG_CRT_LINKAGE STREQUAL dynamic)
+ set(TCL_BUILD_OPTS ${TCL_BUILD_OPTS},msvcrt)
+ endif()
+
+ if ("thrdalloc" IN_LIST FEATURES)
+ set(TCL_BUILD_OPTS ${TCL_BUILD_OPTS},thrdalloc)
+ endif()
+ if ("profile" IN_LIST FEATURES)
+ set(TCL_BUILD_OPTS ${TCL_BUILD_OPTS},profile)
+ endif()
+ if ("unchecked" IN_LIST FEATURES)
+ set(TCL_BUILD_OPTS ${TCL_BUILD_OPTS},unchecked)
+ endif()
+ if ("utfmax" IN_LIST FEATURES)
+ set(TCL_BUILD_OPTS ${TCL_BUILD_OPTS},time64bit)
+ endif()
+
+ vcpkg_install_nmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PROJECT_SUBPATH win
+ OPTIONS
+ ${TCL_BUILD_MACHINE_STR}
+ ${TCL_BUILD_STATS}
+ ${TCL_BUILD_CHECKS}
+ OPTIONS_DEBUG
+ ${TCL_BUILD_OPTS},symbols
+ INSTALLDIR=${CURRENT_PACKAGES_DIR}/debug
+ SCRIPT_INSTALL_DIR=${CURRENT_PACKAGES_DIR}/tools/tcl/debug/lib/tcl9.0
+ OPTIONS_RELEASE
+ release
+ ${TCL_BUILD_OPTS}
+ INSTALLDIR=${CURRENT_PACKAGES_DIR}
+ SCRIPT_INSTALL_DIR=${CURRENT_PACKAGES_DIR}/tools/tcl/lib/tcl9.0
+ )
+
+
+ # Install
+ # Note: tcl shell requires it to be in a folder adjacent to the /lib/ folder, i.e. in a /bin/ folder
+ if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL release)
+ file(GLOB_RECURSE TOOL_BIN
+ "${CURRENT_PACKAGES_DIR}/bin/*.exe"
+ "${CURRENT_PACKAGES_DIR}/bin/*.dll"
+ )
+ file(COPY ${TOOL_BIN} DESTINATION "${CURRENT_PACKAGES_DIR}/tools/tcl/bin/")
+
+ # Remove .exes only after copying
+ file(GLOB_RECURSE TOOL_EXES
+ ${CURRENT_PACKAGES_DIR}/bin/*.exe
+ )
+ file(REMOVE ${TOOL_EXES})
+
+ file(GLOB_RECURSE TOOLS
+ "${CURRENT_PACKAGES_DIR}/lib/dde1.4/*"
+ "${CURRENT_PACKAGES_DIR}/lib/nmake/*"
+ "${CURRENT_PACKAGES_DIR}/lib/reg1.3/*"
+ "${CURRENT_PACKAGES_DIR}/lib/tcl8/*"
+ "${CURRENT_PACKAGES_DIR}/lib/tcl8.6/*"
+ "${CURRENT_PACKAGES_DIR}/lib/tdbcsqlite31.1.0/*"
+ )
+
+ foreach(TOOL ${TOOLS})
+ get_filename_component(DST_DIR ${TOOL} PATH)
+ file(COPY "${TOOL}" DESTINATION ${DST_DIR})
+ endforeach()
+ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/lib/dde1.4"
+ "${CURRENT_PACKAGES_DIR}/lib/nmake"
+ "${CURRENT_PACKAGES_DIR}/lib/reg1.3"
+ "${CURRENT_PACKAGES_DIR}/lib/tcl8"
+ "${CURRENT_PACKAGES_DIR}/lib/tcl8.6"
+ "${CURRENT_PACKAGES_DIR}/lib/tdbcsqlite31.1.0"
+ )
+ file(CHMOD_RECURSE
+ "${CURRENT_PACKAGES_DIR}/tools/tcl/lib/tcl9.0/msgs" "${CURRENT_PACKAGES_DIR}/tools/tcl/lib/tcl9.0/tzdata"
+ PERMISSIONS
+ OWNER_READ OWNER_WRITE
+ GROUP_READ GROUP_WRITE
+ WORLD_READ WORLD_WRITE
+ )
+ endif()
+ if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL debug)
+ file(GLOB_RECURSE TOOL_BIN
+ "${CURRENT_PACKAGES_DIR}/debug/bin/*.exe"
+ "${CURRENT_PACKAGES_DIR}/debug/bin/*.dll"
+ )
+ file(COPY ${TOOL_BIN} DESTINATION "${CURRENT_PACKAGES_DIR}/tools/tcl/debug/bin/")
+
+ # Remove .exes only after copying
+ file(GLOB_RECURSE EXES
+ "${CURRENT_PACKAGES_DIR}/debug/bin/*.exe"
+ )
+ file(REMOVE ${EXES})
+
+ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/lib/dde1.4"
+ "${CURRENT_PACKAGES_DIR}/debug/lib/nmake"
+ "${CURRENT_PACKAGES_DIR}/debug/lib/reg1.3"
+ "${CURRENT_PACKAGES_DIR}/debug/lib/tcl8"
+ "${CURRENT_PACKAGES_DIR}/debug/lib/tcl8.6"
+ "${CURRENT_PACKAGES_DIR}/debug/lib/tdbcsqlite31.1.0"
+ )
+
+ file(CHMOD_RECURSE
+ "${CURRENT_PACKAGES_DIR}/tools/tcl/debug/lib/tcl9.0/msgs" "${CURRENT_PACKAGES_DIR}/tools/tcl/debug/lib/tcl9.0/tzdata"
+ PERMISSIONS
+ OWNER_READ OWNER_WRITE
+ GROUP_READ GROUP_WRITE
+ WORLD_READ WORLD_WRITE
+ )
+ endif()
+
+ if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
+ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin")
+ endif()
+
+ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+else()
+ file(REMOVE "${SOURCE_PATH}/unix/configure")
+ vcpkg_configure_make(
+ SOURCE_PATH "${SOURCE_PATH}"
+ PROJECT_SUBPATH unix
+ )
+
+ vcpkg_install_make()
+ vcpkg_fixup_pkgconfig()
+
+ if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
+ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin")
+ endif()
+ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" "${CURRENT_PACKAGES_DIR}/debug/share")
+endif()
+
+file(REMOVE "${CURRENT_PACKAGES_DIR}/lib/tclConfig.sh" "${CURRENT_PACKAGES_DIR}/debug/lib/tclConfig.sh")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/license.terms")