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