diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/chakracore | |
Diffstat (limited to 'vcpkg/ports/chakracore')
| -rw-r--r-- | vcpkg/ports/chakracore/avoid_msvc_internal_STRINGIZE.patch | 78 | ||||
| -rw-r--r-- | vcpkg/ports/chakracore/no-warning-as-error.props | 8 | ||||
| -rw-r--r-- | vcpkg/ports/chakracore/portfile.cmake | 120 | ||||
| -rw-r--r-- | vcpkg/ports/chakracore/unofficial-chakracore-config.cmake | 18 | ||||
| -rw-r--r-- | vcpkg/ports/chakracore/vcpkg.json | 27 |
5 files changed, 251 insertions, 0 deletions
diff --git a/vcpkg/ports/chakracore/avoid_msvc_internal_STRINGIZE.patch b/vcpkg/ports/chakracore/avoid_msvc_internal_STRINGIZE.patch new file mode 100644 index 0000000..591744b --- /dev/null +++ b/vcpkg/ports/chakracore/avoid_msvc_internal_STRINGIZE.patch @@ -0,0 +1,78 @@ +diff --git a/bin/NativeTests/stdafx.h b/bin/NativeTests/stdafx.h
+index c7a021c..77f8299 100644
+--- a/bin/NativeTests/stdafx.h
++++ b/bin/NativeTests/stdafx.h
+@@ -25,11 +25,16 @@
+
+ #define DebugOnly(x) x
+
++#if !defined(CHAKRACORE_STRINGIZE)
++#define CHAKRACORE_STRINGIZE_IMPL(x) #x
++#define CHAKRACORE_STRINGIZE(x) CHAKRACORE_STRINGIZE_IMPL(x)
++#endif
++
+ #define AssertMsg(exp, comment) \
+ do { \
+ if (!(exp)) \
+ { \
+- fprintf(stderr, "ASSERTION (%s, line %d) %s %s\n", __FILE__, __LINE__, _STRINGIZE(exp), comment); \
++ fprintf(stderr, "ASSERTION (%s, line %d) %s %s\n", __FILE__, __LINE__, CHAKRACORE_STRINGIZE(exp), comment); \
+ fflush(stderr); \
+ DebugBreak(); \
+ } \
+diff --git a/bin/ch/stdafx.h b/bin/ch/stdafx.h
+index 450a33d..7c5ecc2 100644
+--- a/bin/ch/stdafx.h
++++ b/bin/ch/stdafx.h
+@@ -57,16 +57,16 @@
+
+ #if defined(DBG)
+
+-#define _STRINGIZE_(x) #x
+-#if !defined(_STRINGIZE)
+-#define _STRINGIZE(x) _STRINGIZE_(x)
++#if !defined(CHAKRACORE_STRINGIZE)
++#define CHAKRACORE_STRINGIZE_IMPL(x) #x
++#define CHAKRACORE_STRINGIZE(x) CHAKRACORE_STRINGIZE_IMPL(x)
+ #endif
+
+ #define AssertMsg(exp, comment) \
+ do { \
+ if (!(exp)) \
+ { \
+- fprintf(stderr, "ASSERTION (%s, line %d) %s %s\n", __FILE__, __LINE__, _STRINGIZE(exp), comment); \
++ fprintf(stderr, "ASSERTION (%s, line %d) %s %s\n", __FILE__, __LINE__, CHAKRACORE_STRINGIZE(exp), comment); \
+ fflush(stderr); \
+ DebugBreak(); \
+ } \
+diff --git a/pal/inc/assert_only.h b/pal/inc/assert_only.h
+index eef0e62..644460c 100644
+--- a/pal/inc/assert_only.h
++++ b/pal/inc/assert_only.h
+@@ -6,20 +6,22 @@
+ // PAL free Assert definitions
+ #ifdef DEBUG
+
+-#define _QUOTE_(s) #s
+-#define _STRINGIZE_(s) _QUOTE_(s)
++#if !defined(CHAKRACORE_STRINGIZE)
++#define CHAKRACORE_STRINGIZE_IMPL(x) #x
++#define CHAKRACORE_STRINGIZE(x) CHAKRACORE_STRINGIZE_IMPL(x)
++#endif
+
+ #ifndef __ANDROID__
+ #define _ERR_OUTPUT_(condition, comment) \
+ fprintf(stderr, "ASSERTION (%s, line %d) %s %s\n", __FILE__, __LINE__, \
+- _STRINGIZE_(condition), comment); \
++ CHAKRACORE_STRINGIZE(condition), comment); \
+ fflush(stderr);
+ #else // ANDROID
+ #include <android/log.h>
+ #define _ERR_OUTPUT_(condition, comment) \
+ __android_log_print(ANDROID_LOG_ERROR, "chakracore-log", \
+ "ASSERTION (%s, line %d) %s %s\n", __FILE__, __LINE__, \
+- _STRINGIZE_(condition), comment);
++ CHAKRACORE_STRINGIZE(condition), comment);
+ #endif
+
+ #define _Assert_(condition, comment) \
diff --git a/vcpkg/ports/chakracore/no-warning-as-error.props b/vcpkg/ports/chakracore/no-warning-as-error.props new file mode 100644 index 0000000..6020ed1 --- /dev/null +++ b/vcpkg/ports/chakracore/no-warning-as-error.props @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemDefinitionGroup> + <ClCompile> + <TreatWarningAsError>false</TreatWarningAsError> + </ClCompile> + </ItemDefinitionGroup> +</Project> diff --git a/vcpkg/ports/chakracore/portfile.cmake b/vcpkg/ports/chakracore/portfile.cmake new file mode 100644 index 0000000..294191b --- /dev/null +++ b/vcpkg/ports/chakracore/portfile.cmake @@ -0,0 +1,120 @@ +vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO Microsoft/ChakraCore
+ REF 2af598f04ab508f9231d6e26f0f82f5a57561413
+ SHA512 a42138cb5906d8f6cbdab32fad042f626bacb62450839f66d6b27831fcd5bd93039f68423c82d460cf1147ce82908c04595442f90be3bf67e2066547d0fe0291
+ HEAD_REF master
+ PATCHES
+ avoid_msvc_internal_STRINGIZE.patch
+)
+
+set(BUILDTREE_PATH "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}")
+if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
+ if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
+ set(additional_options NO_TOOLCHAIN_PROPS) # don't know how to fix the linker error about __guard_check_icall_thunk
+ endif()
+ if(VCPKG_TARGET_ARCHITECTURE MATCHES "x86")
+ set(PLATFORM_ARG PLATFORM x86) # it's x86, not Win32 in sln file
+ endif()
+
+ vcpkg_msbuild_install(
+ SOURCE_PATH "${SOURCE_PATH}"
+ PROJECT_SUBPATH Build/Chakra.Core.sln
+ OPTIONS
+ "/p:CustomBeforeMicrosoftCommonTargets=${CMAKE_CURRENT_LIST_DIR}/no-warning-as-error.props"
+ ${PLATFORM_ARG}
+ ${additional_options}
+ )
+ file(GLOB_RECURSE LIB_FILES "${CURRENT_PACKAGES_DIR}/lib/*.lib")
+ file(GLOB_RECURSE DEBUG_LIB_FILES "${CURRENT_PACKAGES_DIR}/debug/lib/*.lib")
+ foreach(file ${LIB_FILES} ${DEBUG_LIB_FILES})
+ if(NOT file MATCHES "ChakraCore.lib")
+ file(REMOVE ${file})
+ endif()
+ endforeach()
+else()
+ if(VCPKG_TARGET_ARCHITECTURE MATCHES "x64")
+ set(CHAKRACORE_TARGET_ARCH amd64)
+ elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x86")
+ set(CHAKRACORE_TARGET_ARCH x86)
+ endif()
+
+ if (VCPKG_TARGET_IS_LINUX)
+ message(WARNING "${PORT} requires Clang from the system package manager, this can be installed on Ubuntu systems via sudo apt install clang")
+ endif()
+
+ file(MAKE_DIRECTORY "${BUILDTREE_PATH}-dbg")
+ if(NOT DEFINED VCPKG_BUILD_TYPE)
+ list(APPEND configs "debug")
+ execute_process(
+ COMMAND bash "build.sh" "--arch=${CHAKRACORE_TARGET_ARCH}" "--debug" "-j=${VCPKG_CONCURRENCY}"
+ WORKING_DIRECTORY "${SOURCE_PATH}"
+
+ OUTPUT_VARIABLE CHAKRA_BUILD_SH_OUT
+ ERROR_VARIABLE CHAKRA_BUILD_SH_ERR
+ RESULT_VARIABLE CHAKRA_BUILD_SH_RES
+ ECHO_OUTPUT_VARIABLE
+ ECHO_ERROR_VARIABLE
+ )
+ endif()
+
+ file(MAKE_DIRECTORY "${BUILDTREE_PATH}-rel")
+ list(APPEND configs "release")
+ execute_process(
+ COMMAND bash "build.sh" "--arch=${CHAKRACORE_TARGET_ARCH}" "-j=${VCPKG_CONCURRENCY}"
+ WORKING_DIRECTORY "${SOURCE_PATH}"
+ OUTPUT_VARIABLE CHAKRA_BUILD_SH_OUT
+ ERROR_VARIABLE CHAKRA_BUILD_SH_ERR
+ RESULT_VARIABLE CHAKRA_BUILD_SH_RES
+ ECHO_OUTPUT_VARIABLE
+ ECHO_ERROR_VARIABLE
+ )
+endif()
+
+file(INSTALL
+ "${SOURCE_PATH}/lib/Jsrt/ChakraCore.h"
+ "${SOURCE_PATH}/lib/Jsrt/ChakraCommon.h"
+ "${SOURCE_PATH}/lib/Jsrt/ChakraDebug.h"
+ DESTINATION "${CURRENT_PACKAGES_DIR}/include"
+)
+
+if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
+ file(INSTALL
+ "${BUILDTREE_PATH}-rel/lib/Jsrt/ChakraCommonWindows.h"
+ "${BUILDTREE_PATH}-rel/lib/Jsrt/ChakraCoreWindows.h"
+ DESTINATION "${CURRENT_PACKAGES_DIR}/include"
+ )
+else()
+ if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
+ file(INSTALL "${SOURCE_PATH}/out/Debug/libChakraCore.so" DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
+ file(INSTALL "${SOURCE_PATH}/out/Release/libChakraCore.so" DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
+ else()
+ file(INSTALL "${SOURCE_PATH}/out/Debug/lib/libChakraCoreStatic.a" DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
+ file(INSTALL "${SOURCE_PATH}/out/Release/lib/libChakraCoreStatic.a" DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
+ endif()
+
+ set(out_dir_release "${SOURCE_PATH}/out/Release")
+
+ if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
+ file(INSTALL
+ "${out_dir_release}/ch"
+ DESTINATION "${CURRENT_PACKAGES_DIR}/tools/chakracore"
+ )
+ vcpkg_copy_tools(TOOL_NAMES ch
+ SEARCH_DIR "${out_dir_release}"
+ )
+ endif()
+
+
+endif()
+
+file(INSTALL
+ "${CMAKE_CURRENT_LIST_DIR}/unofficial-chakracore-config.cmake"
+ DESTINATION "${CURRENT_PACKAGES_DIR}/share/unofficial-${PORT}"
+)
+
+vcpkg_install_copyright(FILE_LIST
+ "${SOURCE_PATH}/LICENSE.txt"
+)
diff --git a/vcpkg/ports/chakracore/unofficial-chakracore-config.cmake b/vcpkg/ports/chakracore/unofficial-chakracore-config.cmake new file mode 100644 index 0000000..b1fab01 --- /dev/null +++ b/vcpkg/ports/chakracore/unofficial-chakracore-config.cmake @@ -0,0 +1,18 @@ +if(NOT TARGET unofficial::chakracore::chakracore) + add_library(unofficial::chakracore::chakracore UNKNOWN IMPORTED) + + find_path(ChakraCore_INCLUDE_DIR NAMES ChakraCore.h) + + set_target_properties(unofficial::chakracore::chakracore PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${ChakraCore_INCLUDE_DIR}" + ) + + find_library(ChakraCore_LIBRARY_RELEASE NAMES ChakraCore PATHS "${CMAKE_CURRENT_LIST_DIR}/../../lib" NO_DEFAULT_PATH REQUIRED) + find_library(ChakraCore_LIBRARY_DEBUG NAMES ChakraCore PATHS "${CMAKE_CURRENT_LIST_DIR}/../../debug/lib" NO_DEFAULT_PATH REQUIRED) + + set_target_properties(unofficial::chakracore::chakracore PROPERTIES + IMPORTED_LOCATION_DEBUG "${ChakraCore_LIBRARY_DEBUG}" + IMPORTED_LOCATION_RELEASE "${ChakraCore_LIBRARY_RELEASE}" + IMPORTED_CONFIGURATIONS "Release;Debug" + ) +endif() diff --git a/vcpkg/ports/chakracore/vcpkg.json b/vcpkg/ports/chakracore/vcpkg.json new file mode 100644 index 0000000..c3a2533 --- /dev/null +++ b/vcpkg/ports/chakracore/vcpkg.json @@ -0,0 +1,27 @@ +{ + "name": "chakracore", + "version-date": "2022-11-09", + "port-version": 7, + "description": "Core part of the Chakra Javascript engine", + "homepage": "https://github.com/Microsoft/ChakraCore", + "license": "MIT", + "supports": "!osx & !uwp & (linux | !static)", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + { + "name": "vcpkg-msbuild", + "host": true, + "features": [ + "pkg-config" + ], + "platform": "windows" + } + ] +} |