-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFindJavaScriptCore.cmake
More file actions
56 lines (52 loc) · 2.57 KB
/
FindJavaScriptCore.cmake
File metadata and controls
56 lines (52 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
if(NOT JavaScriptCore_FOUND)
if(APPLE)
add_library(javascript_core INTERFACE IMPORTED)
target_link_libraries(javascript_core INTERFACE "-framework Foundation")
target_link_libraries(javascript_core INTERFACE "-framework JavaScriptCore")
add_library(JavaScriptCore::JavaScriptCore ALIAS javascript_core)
set(JavaScriptCore_FOUND ON)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
add_library(javascript_core INTERFACE IMPORTED)
find_package(PkgConfig REQUIRED)
# If find_package(JavaScriptCore [version]) is called we only look for that
# otherwise loop through a list of supported options, pick the first one found
# and error out if there is no match
if(JavaScriptCore_FIND_VERSION)
pkg_check_modules(JAVASCRIPTCORE javascriptcoregtk-${JavaScriptCore_FIND_VERSION} REQUIRED)
else()
set(supported_versions 6.0 4.1 4.0)
foreach(ver ${supported_versions})
pkg_check_modules(JAVASCRIPTCORE javascriptcoregtk-${ver})
if(JAVASCRIPTCORE_FOUND)
set(JavaScriptCore_FIND_VERSION ${ver})
break()
endif()
endforeach()
if(NOT JAVASCRIPTCORE_FOUND)
message(FATAL_ERROR "Required package JavaScriptCore was not found")
endif()
endif()
set_property(TARGET javascript_core PROPERTY
INTERFACE_INCLUDE_DIRECTORIES ${JAVASCRIPTCORE_INCLUDE_DIRS})
set_property(TARGET javascript_core PROPERTY
INTERFACE_COMPILE_OPTIONS ${JAVASCRIPTCORE_CFLAGS})
set_property(TARGET javascript_core PROPERTY
INTERFACE_LINK_OPTIONS ${JAVASCRIPTCORE_LDFLAGS})
set_property(TARGET javascript_core PROPERTY
INTERFACE_LINK_LIBRARIES ${JAVASCRIPTCORE_LINK_LIBRARIES})
if(JavaScriptCore_FIND_VERSION STREQUAL "6.0")
# NOTE: this is required since WebkitGTK (which includes JavaScriptCore) only
# exposes the GLib headers starting in versions after 4.0
# see: https://github.com/WebKit/WebKit/blob/main/Source/WebKit/gtk/migrating-to-webkitgtk-6.0.md#stop-using-deprecated-apis
file(GLOB headers ${PROJECT_SOURCE_DIR}/vendor/webkitgtk/Source/JavaScriptCore/API/*.h)
foreach(header ${headers})
cmake_path(GET header FILENAME header_filename)
configure_file("${header}" "${PROJECT_BINARY_DIR}/javascriptcore-headers/JavaScriptCore/${header_filename}" COPYONLY)
endforeach()
set_property(TARGET javascript_core PROPERTY
INTERFACE_INCLUDE_DIRECTORIES "${PROJECT_BINARY_DIR}/javascriptcore-headers")
endif()
add_library(JavaScriptCore::JavaScriptCore ALIAS javascript_core)
set(JavaScriptCore_FOUND ON)
endif()
endif()