diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2018-04-20 16:40:17 +0300 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2018-05-22 11:17:01 +0200 |
commit | d1a266b3e68d052d1478382795598bf2ff28da6a (patch) | |
tree | d303f378e1c959397b23739fbb9b06697da024e5 /cmake/node.cmake | |
parent | 973aa963f917df2c20a05dfea1b3af7314677e06 (diff) | |
download | qtlocation-mapboxgl-d1a266b3e68d052d1478382795598bf2ff28da6a.tar.gz |
[node] allow building all ABIs at once
Diffstat (limited to 'cmake/node.cmake')
-rw-r--r-- | cmake/node.cmake | 121 |
1 files changed, 65 insertions, 56 deletions
diff --git a/cmake/node.cmake b/cmake/node.cmake index 90bec6575c..b6f7bb9dc0 100644 --- a/cmake/node.cmake +++ b/cmake/node.cmake @@ -1,87 +1,96 @@ # Load Node.js -include(cmake/NodeJS.cmake) -nodejs_init() +include(node_modules/@mapbox/cmake-node-module/module.cmake) -add_library(mbgl-loop-node STATIC - platform/default/async_task.cpp - platform/default/run_loop.cpp - platform/default/timer.cpp -) +add_library(mbgl-loop-node INTERFACE) -target_include_directories(mbgl-loop-node - PRIVATE include - PRIVATE src +target_sources(mbgl-loop-node INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR}/platform/default/async_task.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/platform/default/run_loop.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/platform/default/timer.cpp ) -target_include_directories(mbgl-loop-node PUBLIC ${NODEJS_INCLUDE_DIRS}) +target_include_directories(mbgl-loop-node INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR}/include + ${CMAKE_CURRENT_SOURCE_DIR}/src +) create_source_groups(mbgl-loop-node) -xcode_create_scheme(TARGET mbgl-loop-node) -add_nodejs_module(mbgl-node - platform/node/src/node_mapbox_gl_native.cpp + +add_node_module(mbgl-node + INSTALL_DIR "lib" + NAN_VERSION "2.10.0" + EXCLUDE_NODE_ABIS 47 51 59 # Don't build old beta ABIs 5.x, 7.x, and 9.x ) -# NodeJS.cmake forces C++11. -# https://github.com/cjntaylor/node-cmake/issues/18 -set_target_properties("mbgl-node" PROPERTIES CXX_STANDARD 14) - -target_sources(mbgl-node - PRIVATE platform/node/src/node_logging.hpp - PRIVATE platform/node/src/node_logging.cpp - PRIVATE platform/node/src/node_conversion.hpp - PRIVATE platform/node/src/node_map.hpp - PRIVATE platform/node/src/node_map.cpp - PRIVATE platform/node/src/node_request.hpp - PRIVATE platform/node/src/node_request.cpp - PRIVATE platform/node/src/node_feature.hpp - PRIVATE platform/node/src/node_feature.cpp - PRIVATE platform/node/src/node_thread_pool.hpp - PRIVATE platform/node/src/node_thread_pool.cpp - PRIVATE platform/node/src/node_expression.hpp - PRIVATE platform/node/src/node_expression.cpp - PRIVATE platform/node/src/util/async_queue.hpp +target_sources(mbgl-node INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR}/platform/node/src/node_mapbox_gl_native.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/platform/node/src/node_mapbox_gl_native.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/platform/node/src/node_logging.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/platform/node/src/node_logging.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/platform/node/src/node_conversion.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/platform/node/src/node_map.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/platform/node/src/node_map.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/platform/node/src/node_request.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/platform/node/src/node_request.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/platform/node/src/node_feature.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/platform/node/src/node_feature.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/platform/node/src/node_thread_pool.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/platform/node/src/node_thread_pool.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/platform/node/src/node_expression.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/platform/node/src/node_expression.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/platform/node/src/util/async_queue.hpp ) -target_include_directories(mbgl-node - PRIVATE platform/default +target_include_directories(mbgl-node INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR}/platform/default ) -target_link_libraries(mbgl-node - PRIVATE mbgl-core - PRIVATE mbgl-loop-node +target_link_libraries(mbgl-node INTERFACE + mbgl-core + mbgl-loop-node ) -target_add_mason_package(mbgl-node PRIVATE geojson) +target_add_mason_package(mbgl-node INTERFACE geojson) -add_custom_command( - TARGET mbgl-node - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:mbgl-node> ${CMAKE_SOURCE_DIR}/lib/mapbox_gl_native.node -) +add_custom_target(mbgl-node.active DEPENDS mbgl-node.abi-${NodeJS_ABI}) mbgl_platform_node() create_source_groups(mbgl-node) -initialize_xcode_cxx_build_settings(mbgl-node) +foreach(ABI IN LISTS mbgl-node::abis) + initialize_xcode_cxx_build_settings(mbgl-node.abi-${ABI}) + xcode_create_scheme( + TARGET mbgl-node.abi-${ABI} + NAME "mbgl-node (ABI ${ABI})" + ) +endforeach() + +xcode_create_scheme( + TARGET mbgl-node.active + TYPE library + NAME "mbgl-node (Active ABI)" +) xcode_create_scheme( - TARGET mbgl-node + TARGET mbgl-node.all + TYPE library + NAME "mbgl-node (All ABIs)" ) xcode_create_scheme( - TARGET mbgl-node + TARGET mbgl-node.active TYPE node - NAME "node tests" + NAME "node tests (Active ABI)" ARGS "node_modules/.bin/tape platform/node/test/js/**/*.test.js" ) xcode_create_scheme( - TARGET mbgl-node + TARGET mbgl-node.active TYPE node - NAME "node render tests" + NAME "node render tests (Active ABI)" ARGS "platform/node/test/render.test.js" OPTIONAL_ARGS @@ -90,9 +99,9 @@ xcode_create_scheme( ) xcode_create_scheme( - TARGET mbgl-node + TARGET mbgl-node.active TYPE node - NAME "node query tests" + NAME "node query tests (Active ABI)" ARGS "platform/node/test/query.test.js" OPTIONAL_ARGS @@ -101,9 +110,9 @@ xcode_create_scheme( ) xcode_create_scheme( - TARGET mbgl-node + TARGET mbgl-node.active TYPE node - NAME "node expression tests" + NAME "node expression tests (Active ABI)" ARGS "platform/node/test/expression.test.js" OPTIONAL_ARGS @@ -112,9 +121,9 @@ xcode_create_scheme( ) xcode_create_scheme( - TARGET mbgl-node + TARGET mbgl-node.active TYPE node - NAME "node-benchmark" + NAME "node-benchmark (Active ABI)" ARGS "platform/node/test/benchmark.js" OPTIONAL_ARGS |