From aeb948282a65c37decb0fc594f1b1f2443a92a8f Mon Sep 17 00:00:00 2001 From: Brendan Le Foll Date: Tue, 22 Mar 2016 12:01:59 +0000 Subject: [PATCH] cmake: Fix issues with node v4/v5 Signed-off-by: Brendan Le Foll --- .travis.yml | 2 +- src/CMakeLists.txt | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5dcfdbf1..82708f03 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,9 +14,9 @@ install: - sudo ln -s /usr/bin/swig3.0 /usr/bin/swig - sudo update-java-alternatives -s java-8-oracle before_script: + - export NODE_ROOT_DIR="/home/travis/.nvm/v0.10.36" - if [ "$CC" = "gcc" ]; then export BUILDJAVA=ON; else export BUILDJAVA=OFF; fi - export JAVA_HOME=/usr/lib/jvm/java-8-oracle - - export NODE_ROOT_DIR="/home/travis/.nvm/v0.10.36" - if [ "${NODE4}" ]; then nvm install 4.1; export CC=gcc-4.8; export CXX=g++-4.8; export NODE_ROOT_DIR="/home/travis/.nvm/versions/node/`nvm version`"; fi - if [ "${NODE5}" ]; then nvm install 5; export CC=gcc-4.8; export CXX=g++-4.8; export NODE_ROOT_DIR="/home/travis/.nvm/versions/node/`nvm version`"; fi - if [ "${NODE012}" ]; then nvm install 0.12; export NODE_ROOT_DIR="/home/travis/.nvm/versions/node/`nvm version`"; fi diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b4ca943e..6970602d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -46,16 +46,28 @@ endmacro() macro(upm_SWIG_NODE) if (BUILDSWIGNODE AND BUILDSWIG) + # SWIG treats SWIG_FLAGS as a list and not a string so semicolon seperation is + # required. This hardcodes V8_VERSION to be <10 but I assume that's not going + # to be a problem for a little while! SWIG uses a padded SWIG_V8 version which + # we hack together from our findnode module. + set (V8_VERSION_HEX 0x0${V8_VERSION_MAJOR}${V8_VERSION_MINOR}${V8_VERSION_PATCH}) + string (LENGTH "${V8_VERSION_HEX}" V8_VERSION_HEX_length) + while (V8_VERSION_HEX_length LESS 8) + set (V8_VERSION_HEX "${V8_VERSION_HEX}0") + string (LENGTH "${V8_VERSION_HEX}" V8_VERSION_HEX_length) + endwhile () + + set_property (SOURCE jsupm_${libname}.i PROPERTY SWIG_FLAGS "-node" "-DV8_VERSION=${V8_VERSION_HEX}") set_source_files_properties (jsupm_${libname}.i PROPERTIES CPLUSPLUS ON) - set_source_files_properties (jsupm_${libname}.i PROPERTIES SWIG_FLAGS "-node") swig_add_module (jsupm_${libname} javascript jsupm_${libname}.i ${module_src}) swig_link_libraries (jsupm_${libname} ${MRAA_LIBRARIES} ${NODE_LIBRARIES}) target_include_directories ( ${SWIG_MODULE_jsupm_${libname}_REAL_NAME} PUBLIC "${NODE_INCLUDE_DIRS}" - ) + ) + set_target_properties (jsupm_${libname} PROPERTIES - COMPILE_FLAGS "${CMAKE_CXX_FLAGS} -DBUILDING_NODE_EXTENSION -DSWIG_V8_VERSION=0x0${V8_DEFINE_STRING}" + COMPILE_FLAGS "${CMAKE_CXX_FLAGS} -DBUILDING_NODE_EXTENSION -DSWIG_V8_VERSION=${V8_VERSION_HEX}" PREFIX "" SUFFIX ".node" )