Skip to content

Commit b558591

Browse files
authored
Merge pull request #26 from sy-c/master
node.js
2 parents d10e2f2 + f875f0f commit b558591

File tree

2 files changed

+25
-25
lines changed

2 files changed

+25
-25
lines changed

CMakeLists.txt

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -335,34 +335,33 @@ if(SWIG_FOUND)
335335
endif()
336336

337337
#library for Javascript / node.js
338-
if(NOT APPLE)
339-
find_program(NODE_EXECUTABLE node)
340-
get_filename_component(NODE_DIR ${NODE_EXECUTABLE} DIRECTORY)
341-
find_path(NODEJS_INCLUDE_DIRS NAMES node.h NO_DEFAULT_PATH PATHS ${Nodejs_ROOT} ${Nodejs_ROOT}/include ${NODE_DIR}/../include/node)
342-
if (NODEJS_INCLUDE_DIRS)
343-
message("Bindings for node.js will be generated")
344-
message("Using NODEJS_INCLUDE_DIRS=${NODEJS_INCLUDE_DIRS}")
345-
if (${SWIG_VERSION} VERSION_LESS "4.0.0")
346-
message("SWIG>=4.0.0 needed to generate node.js wrapper, reusing cached one")
347-
set(SWIG_MODULE_infoLoggerForNodejs_REAL_NAME infoLoggerForNodejs)
348-
add_library (infoLoggerForNodejs SHARED src/infoLoggerJAVASCRIPT_wrap.cxx ${INFOLOGGER_LIB_OBJECTS})
349-
target_include_directories(${SWIG_MODULE_infoLoggerForNodejs_REAL_NAME} PRIVATE ${INFOLOGGER_INCLUDE_DIRS} ${NODEJS_INCLUDE_DIRS})
350-
set_target_properties(${SWIG_MODULE_infoLoggerForNodejs_REAL_NAME} PROPERTIES PREFIX "")
351-
else()
352-
set(CMAKE_SWIG_FLAGS -module infoLoggerForNodejs -v8)
353-
swig_add_library(infoLoggerForNodejs LANGUAGE javascript SOURCES src/infoLogger.i ${INFOLOGGER_LIB_OBJECTS})
354-
endif()
338+
find_program(NODE_EXECUTABLE node)
339+
execute_process(COMMAND ${NODE_EXECUTABLE} --version COMMAND tr -d 'v' OUTPUT_VARIABLE NODEJS_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
340+
get_filename_component(NODE_DIR ${NODE_EXECUTABLE} DIRECTORY)
341+
find_path(NODEJS_INCLUDE_DIRS NAMES node.h NO_DEFAULT_PATH PATHS ${Nodejs_ROOT} ${Nodejs_ROOT}/include ${NODE_DIR}/../include/node)
342+
if (NODEJS_INCLUDE_DIRS AND ${NODEJS_VERSION} VERSION_GREATER_EQUAL "8.9")
343+
message("Bindings for node.js will be generated")
344+
message("Using NODEJS_INCLUDE_DIRS=${NODEJS_INCLUDE_DIRS}")
345+
message("Node.js version ${NODEJS_VERSION}")
346+
if (${SWIG_VERSION} VERSION_LESS "4.0.0")
347+
message("SWIG>=4.0.0 needed to generate node.js wrapper, reusing cached one")
348+
set(SWIG_MODULE_infoLoggerForNodejs_REAL_NAME infoLoggerForNodejs)
349+
add_library (infoLoggerForNodejs SHARED src/infoLoggerJAVASCRIPT_wrap.cxx ${INFOLOGGER_LIB_OBJECTS})
355350
target_include_directories(${SWIG_MODULE_infoLoggerForNodejs_REAL_NAME} PRIVATE ${INFOLOGGER_INCLUDE_DIRS} ${NODEJS_INCLUDE_DIRS})
356-
target_compile_definitions(${SWIG_MODULE_infoLoggerForNodejs_REAL_NAME} PRIVATE -DBUILDING_NODE_EXTENSION)
357-
set_target_properties(${SWIG_MODULE_infoLoggerForNodejs_REAL_NAME} PROPERTIES OUTPUT_NAME infoLogger SUFFIX ".node")
358-
set(no_lookup_compilers "Clang" "AppleClang")
359-
if ( ${CMAKE_CXX_COMPILER_ID} IN_LIST no_lookup_compilers)
360-
set_target_properties(${SWIG_MODULE_infoLoggerForNodejs_REAL_NAME} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
361-
endif()
362-
install(TARGETS ${SWIG_MODULE_infoLoggerForNodejs_REAL_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
351+
set_target_properties(${SWIG_MODULE_infoLoggerForNodejs_REAL_NAME} PROPERTIES PREFIX "")
352+
else()
353+
set(CMAKE_SWIG_FLAGS -module infoLoggerForNodejs -v8)
354+
swig_add_library(infoLoggerForNodejs LANGUAGE javascript SOURCES src/infoLogger.i ${INFOLOGGER_LIB_OBJECTS})
363355
endif()
356+
target_include_directories(${SWIG_MODULE_infoLoggerForNodejs_REAL_NAME} PRIVATE ${INFOLOGGER_INCLUDE_DIRS} ${NODEJS_INCLUDE_DIRS})
357+
target_compile_definitions(${SWIG_MODULE_infoLoggerForNodejs_REAL_NAME} PRIVATE -DBUILDING_NODE_EXTENSION)
358+
set_target_properties(${SWIG_MODULE_infoLoggerForNodejs_REAL_NAME} PROPERTIES OUTPUT_NAME infoLogger SUFFIX ".node")
359+
set(no_lookup_compilers "Clang" "AppleClang")
360+
if ( ${CMAKE_CXX_COMPILER_ID} IN_LIST no_lookup_compilers)
361+
set_target_properties(${SWIG_MODULE_infoLoggerForNodejs_REAL_NAME} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
362+
endif()
363+
install(TARGETS ${SWIG_MODULE_infoLoggerForNodejs_REAL_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
364364
endif()
365-
366365
endif()
367366

368367

doc/scriptingAPI.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ Example usage is shown below. Library files listed there are available from the
7676
* **Go**
7777
* Library files: `infoLoggerForGo.a` and `infoLoggerForGo.go`, to be copied to your `${GOPATH}/src/infoLoggerForGo`
7878
* Build: `CGO_LDFLAGS="${GOPATH}/src/infoLoggerForGo/infoLoggerForGo.a -lstdc++" go build`
79+
If the c++ library version used at compile time is not available at runtime, you may include a static version of the lib in the executable by replacing `-lstdc++` with `/full/path/to/libstdc++.a`.
7980
* Code example:
8081
```
8182
package main

0 commit comments

Comments
 (0)