diff options
Diffstat (limited to 'cmake/node.cmake')
-rw-r--r-- | cmake/node.cmake | 119 |
1 files changed, 70 insertions, 49 deletions
diff --git a/cmake/node.cmake b/cmake/node.cmake index 0c2f556b7d..b6f7bb9dc0 100644 --- a/cmake/node.cmake +++ b/cmake/node.cmake @@ -1,75 +1,96 @@ # Load Node.js -include(cmake/NodeJS.cmake) -nodejs_init() +include(node_modules/@mapbox/cmake-node-module/module.cmake) -add_nodejs_module(mbgl-node - platform/node/src/node_mapbox_gl_native.cpp -) +add_library(mbgl-loop-node INTERFACE) -# 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-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-node - PRIVATE platform/default +target_include_directories(mbgl-loop-node INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR}/include + ${CMAKE_CURRENT_SOURCE_DIR}/src ) -# Use node-provided uv.h. This is not part of loop-uv.cmake because loop-uv.cmake is also -# used by linux/config.cmake, where we need to use headers provided by mason's libuv. -target_include_directories(mbgl-loop-uv PUBLIC ${NODEJS_INCLUDE_DIRS}) +create_source_groups(mbgl-loop-node) + -target_link_libraries(mbgl-node - PRIVATE mbgl-core - PRIVATE mbgl-loop-uv +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 ) -target_add_mason_package(mbgl-node PRIVATE geojson) +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 INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR}/platform/default +) -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 +target_link_libraries(mbgl-node INTERFACE + mbgl-core + mbgl-loop-node ) +target_add_mason_package(mbgl-node INTERFACE geojson) + +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 @@ -78,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 @@ -89,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 @@ -100,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 |