From a48f457057748d190e9faeec6495ef9a8c504de6 Mon Sep 17 00:00:00 2001 From: Brendan Le Foll Date: Mon, 21 Mar 2016 17:21:46 +0000 Subject: [PATCH] FindNode.cmake: Improve FindNode cmake module Use mraa's FindNode since it's alot more robus and can handle NVM better Signed-off-by: Brendan Le Foll --- cmake/modules/FindNode.cmake | 54 +++++++++++++++++++----------------- src/CMakeLists.txt | 17 +++++++++--- 2 files changed, 41 insertions(+), 30 deletions(-) diff --git a/cmake/modules/FindNode.cmake b/cmake/modules/FindNode.cmake index c84b19d6..fa793a62 100644 --- a/cmake/modules/FindNode.cmake +++ b/cmake/modules/FindNode.cmake @@ -1,12 +1,12 @@ - # Macro to add directory to NODE_INCLUDE_DIRS if it exists and is not /usr/include + # Macro to add directory to NODEJS_INCLUDE_DIRS if it exists and is not /usr/include macro(add_include_dir dir) - if (IS_DIRECTORY ${dir}) - set(NODE_INCLUDE_DIRS ${NODE_INCLUDE_DIRS} ${dir}) + if (IS_DIRECTORY ${dir} AND NOT ${dir} STREQUAL "/usr/include") + set(NODEJS_INCLUDE_DIRS ${NODEJS_INCLUDE_DIRS} ${dir}) endif() endmacro() -find_program (NODE_EXECUTABLE NAMES node nodejs +find_program (NODEJS_EXECUTABLE NAMES node nodejs HINTS $ENV{NODE_DIR} PATH_SUFFIXES bin @@ -18,47 +18,47 @@ include (FindPackageHandleStandardArgs) # If compat-libuv package exists, it must be at start of include path find_path (UV_ROOT_DIR "uv.h" PATHS /usr/include/compat-libuv010 NO_DEFAULT_PATH) if (UV_ROOT_DIR) - # set (NODE_INCLUDE_DIRS ${UV_ROOT_DIR}) + # set (NODEJS_INCLUDE_DIRS ${UV_ROOT_DIR}) add_include_dir(${UV_ROOT_DIR}) endif() # Now look for node. Flag an error if not found -find_path (NODE_ROOT_DIR "node/node.h" "src/node.h" +find_path (NODE_ROOT_DIR "include/node/node.h" "include/src/node.h" PATHS /usr/include/nodejs /usr/local/include/nodejs /usr/local/include) if (NODE_ROOT_DIR) - add_include_dir(${NODE_ROOT_DIR}/src) - add_include_dir(${NODE_ROOT_DIR}/node) - add_include_dir(${NODE_ROOT_DIR}/deps/v8/include) - add_include_dir(${NODE_ROOT_DIR}/deps/uv/include) + add_include_dir(${NODE_ROOT_DIR}/include/src) + add_include_dir(${NODE_ROOT_DIR}/include/node) + add_include_dir(${NODE_ROOT_DIR}/include/deps/v8/include) + add_include_dir(${NODE_ROOT_DIR}/include/deps/uv/include) else() - unset(NODE_INCLUDE_DIRS) + unset(NODEJS_INCLUDE_DIRS) message(ERROR " - node.h not found") endif() -# Check that v8.h is in NODE_INCLUDE_DIRS -find_path (V8_ROOT_DIR "v8.h" PATHS ${NODE_INCLUDE_DIRS}) +# Check that v8.h is in NODEJS_INCLUDE_DIRS +find_path (V8_ROOT_DIR "v8.h" PATHS ${NODEJS_INCLUDE_DIRS}) if (NOT V8_ROOT_DIR) - unset(NODE_INCLUDE_DIRS) + unset(NODEJS_INCLUDE_DIRS) message(ERROR " - v8.h not found") endif() -# Check that uv.h is in NODE_INCLUDE_DIRS -find_path (UV_ROOT_DIR "uv.h" PATHS ${NODE_INCLUDE_DIRS}) +# Check that uv.h is in NODEJS_INCLUDE_DIRS +find_path (UV_ROOT_DIR "uv.h" PATHS ${NODEJS_INCLUDE_DIRS}) if (NOT UV_ROOT_DIR) - unset(NODE_INCLUDE_DIRS) + unset(NODEJS_INCLUDE_DIRS) message(ERROR " - uv.h not found") endif() find_package_handle_standard_args (Nodejs DEFAULT_MSG - NODE_EXECUTABLE - NODE_INCLUDE_DIRS + NODEJS_EXECUTABLE + NODEJS_INCLUDE_DIRS ) -if (NODE_EXECUTABLE) - execute_process(COMMAND ${NODE_EXECUTABLE} --version +if (NODEJS_EXECUTABLE) + execute_process(COMMAND ${NODEJS_EXECUTABLE} --version OUTPUT_VARIABLE _VERSION RESULT_VARIABLE _NODE_VERSION_RESULT) - execute_process(COMMAND ${NODE_EXECUTABLE} -e "console.log(process.versions.v8)" + execute_process(COMMAND ${NODEJS_EXECUTABLE} -e "console.log(process.versions.v8)" OUTPUT_VARIABLE _V8_VERSION RESULT_VARIABLE _V8_RESULT) if (NOT _NODE_VERSION_RESULT AND NOT _V8_RESULT) @@ -69,6 +69,8 @@ if (NODE_EXECUTABLE) list (GET _VERSION_LIST 2 NODE_VERSION_PATCH) set (V8_VERSION_STRING ${_V8_VERSION}) string (REPLACE "." ";" _V8_VERSION_LIST "${_V8_VERSION}") + string (REPLACE "." "" V8_DEFINE_STRING "${_V8_VERSION}") + string (STRIP ${V8_DEFINE_STRING} V8_DEFINE_STRING) list (GET _V8_VERSION_LIST 0 V8_VERSION_MAJOR) list (GET _V8_VERSION_LIST 1 V8_VERSION_MINOR) list (GET _V8_VERSION_LIST 2 V8_VERSION_PATCH) @@ -80,8 +82,8 @@ if (NODE_EXECUTABLE) set (NODE_VERSION_MINOR "10") set (NODE_VERSION_PATCH "30") set (V8_VERSION_MAJOR "3") - set (V8_VERSION_MINOR"14") - set (V8_VERSION_PATCH "5") + set (V8_VERSION_MINOR "28") + set (V8_VERSION_PATCH "72") set (V8_VERSION_STRING "3.28.72") message ("defaulted to node 0.10.30") endif () @@ -89,7 +91,7 @@ if (NODE_EXECUTABLE) string (REGEX REPLACE "\n" "" V8_VERSION_STRING ${V8_VERSION_STRING}) message ("INFO - Node version is " ${NODE_VERSION_STRING}) message ("INFO - Node using v8 " ${V8_VERSION_STRING}) - mark_as_advanced (NODE_EXECUTABLE) + mark_as_advanced (NODEJS_EXECUTABLE) endif () - +mark_as_advanced (NODE_EXECUTABLE) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 982d9a00..1fdda9c2 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -69,8 +69,9 @@ macro(upm_SWIG_NODE) set_property (TARGET jsupm_${libname} PROPERTY CXX_STANDARD_REQUIRED ON) endif() createpackagejson(${libname}) + set (NODE_MODULE_INSTALL_PATH ${NODE_ROOT_DIR}/lib/node_modules/jsupm_${libname}/) install (FILES ${CMAKE_CURRENT_BINARY_DIR}/jsupm_${libname}.node - DESTINATION lib/node_modules/jsupm_${libname} COMPONENT ${libname}) + DESTINATION ${NODE_MODULE_INSTALL_PATH} COMPONENT ${libname}) endif() endmacro() @@ -147,15 +148,23 @@ if (SWIG_FOUND) endif(BUILDSWIGPYTHON) if(BUILDSWIGNODE) if(NOT NODE_FOUND) - find_package(Node REQUIRED) + find_package(Node) endif() if(SWIG_VERSION VERSION_LESS 3.0.5 AND NODE_VERSION_STRING VERSION_GREATER 0.12) message("WARNING - SWIG 3.0.5+ required for building with nodejs 0.12. Current version is ${SWIG_VERSION}") endif() + find_path (NODE_ROOT_DIR "include/node/node.h") + set (NODE_INCLUDE_DIRS + ${NODE_ROOT_DIR}/include/src + ${NODE_ROOT_DIR}/include/node + ${NODE_ROOT_DIR}/include/deps/v8/include + ${NODE_ROOT_DIR}/include/deps/uv/include + ) macro(createpackagejson) configure_file (${PROJECT_SOURCE_DIR}/src/package.json.in ${CMAKE_CURRENT_BINARY_DIR}/package.json @ONLY) + set (NODE_MODULE_INSTALL_PATH ${NODE_ROOT_DIR}/lib/node_modules/jsupm_${libname}/) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/package.json - DESTINATION lib/node_modules/jsupm_${libname} COMPONENT ${libname}) + DESTINATION ${NODE_MODULE_INSTALL_PATH} COMPONENT ${libname}) endmacro() endif(BUILDSWIGNODE) @@ -168,7 +177,7 @@ macro(upm_module_init) foreach (linkflag ${ARGN}) target_link_libraries (${libname} ${linkflag}) endforeach () - include_directories (${MRAA_INCLUDE_DIRS} . ..) + include_directories (${MRAA_INCLUDE_DIRS} .) target_link_libraries (${libname} ${MRAA_LIBRARIES}) set_target_properties( ${libname}