summaryrefslogtreecommitdiff
path: root/cmake/node.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/node.cmake')
-rw-r--r--cmake/node.cmake121
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