Skip to content

Commit 204fd69

Browse files
committed
Build JavaScriptCoreTest and upload artifacts
1 parent c95e0f2 commit 204fd69

13 files changed

+132
-144
lines changed

.github/workflows/build-javascriptcore.yml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,13 @@ jobs:
99
run: |
1010
git clone https://github.com/microsoft/vcpkg.git
1111
./vcpkg/bootstrap-vcpkg.bat
12-
ls vcpkg\scripts\buildsystems\vcpkg.cmake
1312
- name: Build JavaScriptCore
14-
run: |
15-
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE="vcpkg\scripts\buildsystems\vcpkg.cmake"
13+
run: cmake --preset release -DCMAKE_TOOLCHAIN_FILE="vcpkg\scripts\buildsystems\vcpkg.cmake"
14+
- name: Build JavaScriptCoreTest
15+
run: cmake --build --preset release
16+
- name: Upload JavaScriptCore artifacts
17+
uses: actions/upload-artifact@v4
18+
with:
19+
name: JavaScriptCore
20+
path: build/release/vcpkg_installed/x64-windows/
21+
if-no-files-found: error

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
################################################################################
2+
# This .gitignore file was automatically created by Microsoft(R) Visual Studio.
3+
################################################################################
4+
5+
/build
6+
/CMakeUserPresets.json
7+
/.vs

CMakeLists.txt

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,24 @@
1-
cmake_minimum_required(VERSION 3.18)
1+
cmake_minimum_required(VERSION 3.23)
22

33
project(PublishJavaScriptCore)
44

5+
add_executable(JavaScriptCoreTest main.cpp)
6+
7+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
8+
9+
# Find JavaScriptCore
510
find_package(JavaScriptCore REQUIRED)
11+
if (NOT TARGET JavaScriptCore)
12+
add_library(JavaScriptCore SHARED IMPORTED)
13+
set_target_properties(JavaScriptCore PROPERTIES
14+
IMPORTED_LOCATION "${JavaScriptCore_LOCATION_RELEASE}"
15+
IMPORTED_LOCATION_DEBUG "${JavaScriptCore_LOCATION_DEBUG}"
16+
IMPORTED_IMPLIB "${JavaScriptCore_IMPLIB_RELEASE}"
17+
IMPORTED_IMPLIB_DEBUG "${JavaScriptCore_IMPLIB_DEBUG}"
18+
INTERFACE_INCLUDE_DIRECTORIES "${JavaScriptCore_INCLUDE_DIRS}"
19+
IMPORTED_CONFIGURATIONS "Release;Debug"
20+
)
21+
endif()
22+
23+
target_link_libraries(JavaScriptCoreTest PRIVATE JavaScriptCore)
24+

CMakePresets.json

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
{
2+
"version": 3,
3+
"configurePresets": [
4+
{
5+
"name": "release",
6+
"binaryDir": "build/release",
7+
"cacheVariables": {
8+
"CMAKE_BUILD_TYPE": {
9+
"type": "STRING",
10+
"value": "Release"
11+
}
12+
}
13+
},
14+
{
15+
"name": "debug",
16+
"binaryDir": "build/debug",
17+
"cacheVariables": {
18+
"CMAKE_BUILD_TYPE": {
19+
"type": "STRING",
20+
"value": "Debug"
21+
}
22+
}
23+
}
24+
],
25+
"buildPresets": [
26+
{
27+
"name": "release",
28+
"configurePreset": "release"
29+
},
30+
{
31+
"name": "debug",
32+
"configurePreset": "debug"
33+
}
34+
]
35+
}

cmake/FindJavaScriptCore.cmake

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
message(STATUS "Using vcpkg to find JavaScriptCore")
2+
message(STATUS "CMAKE_BINARY_DIR: ${CMAKE_BINARY_DIR}")
3+
set(JavaScriptCore_DIR "${CMAKE_BINARY_DIR}/vcpkg_installed/x64-windows")
4+
set(JavaScriptCore_INCLUDE_DIRS "${JavaScriptCore_DIR}/include")
5+
message(STATUS "JavaScriptCore_INCLUDE_DIRS: ${JavaScriptCore_INCLUDE_DIRS}")
6+
7+
set(JavaScriptCore_LOCATION_DEBUG "${JavaScriptCore_DIR}/debug/bin/JavaScriptCore.dll")
8+
set(JavaScriptCore_LOCATION_RELEASE "${JavaScriptCore_DIR}/bin/JavaScriptCore.dll")
9+
set(JavaScriptCore_IMPLIB_DEBUG "${JavaScriptCore_DIR}/debug/lib/JavaScriptCore.lib")
10+
set(JavaScriptCore_IMPLIB_RELEASE "${JavaScriptCore_DIR}/lib/JavaScriptCore.lib")
11+
set(JavaScriptCore_FOUND TRUE)

main.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#include <iostream>
2+
#include <JavaScriptCore/JavaScript.h>
3+
4+
int main() {
5+
JSStringRef string = JSStringCreateWithUTF8CString("Hello JSCore!");
6+
int length = JSStringGetLength(string);
7+
std::cout << "Length of the String: " << length << std::endl;
8+
char buffer[20];
9+
JSStringGetUTF8CString(string, buffer, JSStringGetLength(string) + 1);
10+
std::cout << "String: " << buffer << std::endl;
11+
JSStringRelease(string);
12+
return 0;
13+
}

overlay-ports/javascriptcore/disable_api_tests.patch

Lines changed: 0 additions & 17 deletions
This file was deleted.

overlay-ports/javascriptcore/modify_install_rules.patch

Lines changed: 15 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -12,43 +12,30 @@ index aa99898dc4f1..17db4640001e 100644
1212

1313
# Remove this cmake_policy() after upgrading cmake_minimum_required() to 3.20.
1414
diff --git a/Source/JavaScriptCore/CMakeLists.txt b/Source/JavaScriptCore/CMakeLists.txt
15-
index a64c09b5d470..80c45bd91c17 100644
15+
index 5fbb9a3bc110..cab1c6927b41 100644
1616
--- a/Source/JavaScriptCore/CMakeLists.txt
1717
+++ b/Source/JavaScriptCore/CMakeLists.txt
18-
@@ -1490,6 +1490,13 @@ WEBKIT_COPY_FILES(JavaScriptCore_CopyHeaders
19-
FLATTENED
20-
)
18+
@@ -1569,10 +1569,22 @@ if (NOT "${PORT}" STREQUAL "Mac")
19+
if (${JavaScriptCore_LIBRARY_TYPE} STREQUAL "SHARED")
20+
WEBKIT_POPULATE_LIBRARY_VERSION(JAVASCRIPTCORE)
21+
set_target_properties(JavaScriptCore PROPERTIES VERSION ${JAVASCRIPTCORE_VERSION} SOVERSION ${JAVASCRIPTCORE_VERSION_MAJOR})
22+
- install(TARGETS JavaScriptCore DESTINATION "${LIB_INSTALL_DIR}")
23+
endif ()
24+
endif ()
2125

2226
+target_sources(JavaScriptCore PUBLIC
2327
+ FILE_SET install_headers
2428
+ TYPE HEADERS
2529
+ BASE_DIRS API
2630
+ FILES ${JavaScriptCore_PUBLIC_FRAMEWORK_HEADERS}
2731
+)
28-
+
29-
WEBKIT_COPY_FILES(JavaScriptCore_CopyPrivateHeaders
30-
DESTINATION ${JavaScriptCore_PRIVATE_FRAMEWORK_HEADERS_DIR}/JavaScriptCore
31-
FILES ${JavaScriptCore_PRIVATE_FRAMEWORK_HEADERS}
32-
@@ -1548,9 +1555,15 @@ if (NOT "${PORT}" STREQUAL "Mac")
33-
if (${JavaScriptCore_LIBRARY_TYPE} STREQUAL "SHARED")
34-
WEBKIT_POPULATE_LIBRARY_VERSION(JAVASCRIPTCORE)
35-
set_target_properties(JavaScriptCore PROPERTIES VERSION ${JAVASCRIPTCORE_VERSION} SOVERSION ${JAVASCRIPTCORE_VERSION_MAJOR})
36-
- install(TARGETS JavaScriptCore DESTINATION "${LIB_INSTALL_DIR}")
37-
endif ()
38-
endif ()
39-
+install(
40-
+ TARGETS JavaScriptCore
41-
+ ARCHIVE DESTINATION "${LIB_INSTALL_DIR}"
42-
+ LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
43-
+ RUNTIME DESTINATION "${LIBEXEC_INSTALL_DIR}"
44-
+ FILE_SET install_headers DESTINATION "${CMAKE_INSTALL_PREFIX}/include/JavaScriptCore"
32+
+install(TARGETS JavaScriptCore
33+
+ ARCHIVE DESTINATION "${LIB_INSTALL_DIR}"
34+
+ LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
35+
+ RUNTIME DESTINATION "${LIBEXEC_INSTALL_DIR}"
36+
+ FILE_SET install_headers DESTINATION "${CMAKE_INSTALL_PREFIX}/include/JavaScriptCore"
4537
+)
46-
38+
+
4739
# Force staging of shared scripts, even if they aren't directly used to build JavaScriptCore.
4840

49-
@@ -1565,4 +1578,4 @@ if (CMAKE_GENERATOR MATCHES "Visual Studio")
50-
add_dependencies(JavaScriptCoreSharedScripts JSCBuiltins)
51-
endif ()
52-
53-
-add_subdirectory(shell)
54-
+# add_subdirectory(shell)
41+
add_custom_target(JavaScriptCoreSharedScripts DEPENDS ${JavaScriptCore_SCRIPTS})

overlay-ports/javascriptcore/portfile.cmake

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
vcpkg_from_github(
22
OUT_SOURCE_PATH SOURCE_PATH
33
REPO webkit/webkit
4-
REF WebKit-7616.1.27.211.1
5-
SHA512 aea5feb085f9adaa6efbbb840b2bdbc677c69c82c53c611ef9b527ae4ea2490a983dfdc55eb8aa471ab9975b748ea51d2cf9f2c853454904018ab8bb0ec77ad0
4+
REF 60339678878a0cc06b7ba3b5c5bc574d59f821a1
5+
SHA512 7fbd81c3aca23ee105f64d5f8f63e00fcbaadde544377047ba58da670adb774752ed6e1fb6bff1aade8e579fecf22cbe5bd547eef82645675c05386c9ad771c5
66
HEAD_REF main
77
PATCHES
88
remove_webkit_find_package.patch
99
tune_jsconly_port_for_windows.patch
10-
tune_wtf.patch
1110
modify_install_rules.patch
12-
disable_api_tests.patch
1311
)
1412

1513
vcpkg_find_acquire_program(RUBY)
@@ -27,7 +25,7 @@ vcpkg_add_to_path("${PERL_DIR}")
2725
if (VCPKG_LIBRARY_LINKAGE STREQUAL "static")
2826
set(ENABLE_STATIC_JSC ON)
2927
else()
30-
set(ENABLE_STATIC_JSC ON)
28+
set(ENABLE_STATIC_JSC OFF)
3129
endif()
3230

3331
vcpkg_cmake_configure(
@@ -36,6 +34,7 @@ vcpkg_cmake_configure(
3634
-DPORT=JSCOnly
3735
-DENABLE_STATIC_JSC=${ENABLE_STATIC_JSC}
3836
-DUSE_APPLE_ICU=OFF
37+
-DENABLE_TOOLS=OFF
3938
)
4039

4140
vcpkg_cmake_install()

overlay-ports/javascriptcore/remove_webkit_find_package.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
diff --git a/Source/cmake/WebKitCommon.cmake b/Source/cmake/WebKitCommon.cmake
2-
index d85ee1813b4b..1670ea855ebf 100644
2+
index f20a8d06d914..16c7846511ef 100644
33
--- a/Source/cmake/WebKitCommon.cmake
44
+++ b/Source/cmake/WebKitCommon.cmake
5-
@@ -222,7 +222,7 @@ if (NOT HAS_RUN_WEBKIT_COMMON)
5+
@@ -231,7 +231,7 @@ if (NOT HAS_RUN_WEBKIT_COMMON)
66
include(WebKitCompilerFlags)
77
include(WebKitStaticAnalysis)
88
include(WebKitFeatures)
Lines changed: 15 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,22 @@
11
diff --git a/Source/cmake/OptionsJSCOnly.cmake b/Source/cmake/OptionsJSCOnly.cmake
2-
index ff391d7e0849..e05f2a3adeef 100644
2+
index 31e353ded188..218c34c24338 100644
33
--- a/Source/cmake/OptionsJSCOnly.cmake
44
+++ b/Source/cmake/OptionsJSCOnly.cmake
5-
@@ -1,4 +1,6 @@
6-
-find_package(Threads REQUIRED)
7-
+if (NOT WIN32)
8-
+ find_package(Threads REQUIRED)
9-
+endif ()
5+
@@ -41,12 +41,7 @@ set(ENABLE_WEBKIT_LEGACY OFF)
6+
set(ENABLE_WEBKIT OFF)
7+
set(ENABLE_WEBINSPECTORUI OFF)
8+
set(ENABLE_WEBGL OFF)
9+
-
10+
-if (WIN32)
11+
- set(ENABLE_API_TESTS OFF)
12+
-else ()
13+
- set(ENABLE_API_TESTS ON)
14+
-endif ()
15+
+set(ENABLE_API_TESTS OFF)
1016

11-
if (MSVC)
12-
include(OptionsMSVC)
13-
@@ -55,10 +57,15 @@ endif ()
14-
15-
# FIXME: JSCOnly on WIN32 seems to only work with fully static build
16-
# https://bugs.webkit.org/show_bug.cgi?id=172862
17-
-if (NOT ENABLE_STATIC_JSC AND NOT WIN32)
18-
- set(JavaScriptCore_LIBRARY_TYPE SHARED)
19-
- set(bmalloc_LIBRARY_TYPE OBJECT)
20-
- set(WTF_LIBRARY_TYPE OBJECT)
21-
+if (NOT ENABLE_STATIC_JSC)
22-
+ if (NOT WIN32)
23-
+ set(JavaScriptCore_LIBRARY_TYPE SHARED)
24-
+ set(bmalloc_LIBRARY_TYPE OBJECT)
25-
+ set(WTF_LIBRARY_TYPE OBJECT)
26-
+ else ()
27-
+ set(JavaScriptCore_LIBRARY_TYPE SHARED)
28-
+ set(WTF_LIBRARY_TYPE SHARED)
29-
+ endif ()
30-
endif ()
31-
32-
if (WIN32)
33-
@@ -74,7 +81,7 @@ if (WIN32)
17+
if (WTF_CPU_ARM OR WTF_CPU_MIPS)
18+
SET_AND_EXPOSE_TO_BUILD(USE_CAPSTONE TRUE)
19+
@@ -71,7 +66,7 @@ if (WIN32)
3420
endif ()
3521
endif ()
3622

@@ -39,15 +25,3 @@ index ff391d7e0849..e05f2a3adeef 100644
3925

4026
if (WTF_CPU_X86_64)
4127
set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS OFF)
42-
@@ -94,7 +101,10 @@ if (WIN32)
43-
endif ()
44-
45-
string(TOLOWER ${EVENT_LOOP_TYPE} LOWERCASE_EVENT_LOOP_TYPE)
46-
-if (LOWERCASE_EVENT_LOOP_TYPE STREQUAL "glib")
47-
+if (WIN32)
48-
+ SET_AND_EXPOSE_TO_BUILD(USE_GENERIC_EVENT_LOOP 0)
49-
+ SET_AND_EXPOSE_TO_BUILD(WTF_DEFAULT_EVENT_LOOP 1)
50-
+elseif (LOWERCASE_EVENT_LOOP_TYPE STREQUAL "glib")
51-
find_package(GLIB 2.36 REQUIRED COMPONENTS gio gio-unix gobject)
52-
SET_AND_EXPOSE_TO_BUILD(USE_GLIB 1)
53-
SET_AND_EXPOSE_TO_BUILD(USE_GLIB_EVENT_LOOP 1)

overlay-ports/javascriptcore/tune_wtf.patch

Lines changed: 0 additions & 46 deletions
This file was deleted.

overlay-ports/javascriptcore/vcpkg.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "javascriptcore",
3-
"version": "2023-09-15",
3+
"version": "2024-02-07",
44
"description": "JavaScriptCore is the built-in JavaScript engine for WebKit, which implements ECMAScript as in ECMA-262 specification.",
55
"homepage": "https://webkit.org/",
66
"license": null,

0 commit comments

Comments
 (0)