diff --git a/CMakeLists.txt b/CMakeLists.txt index 359ecab5..9ffec7df 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,7 @@ option (BUILDFTI "Build Funtion Table Interface (FTI) in C sensor libraries" OFF option (BUILDSWIGPYTHON "Build swig python modules" ON) option (BUILDSWIGNODE "Build swig node modules" ON) option (BUILDSWIGJAVA "Build swig java modules" OFF) +option (BUILDCORDOVA "Build cordova bindings" OFF) option (BUILDEXAMPLES "Build C/C++/JAVA examples" OFF) option (IPK "Generate IPK using CPack" OFF) option (RPM "Generate RPM using CPack" OFF) @@ -165,6 +166,17 @@ if (BUILDSWIGJAVA) find_library(MRAAJAVA_LIBRARY NAMES mraajava HINTS ${MRAA_LIBDIR}) endif (BUILDSWIGJAVA) +# Cordova binding +if (BUILDCORDOVA) + if (NOT BUILDSWIGJAVA) + message(FATAL_ERROR "Cordova bindings require JAVA packages, please enable BUILDSWIGJAVA (-DBUILDSWIGJAVA=on).") + endif() + + find_package (Node REQUIRED) + find_package (Npm REQUIRED) + find_package (Cordova REQUIRED) +endif (BUILDCORDOVA) + # Find swig if any wrapper is enabled if (BUILDSWIGPYTHON OR BUILDSWIGNODE OR BUILDSWIGJAVA) find_package (SWIG 3.0.5 REQUIRED) diff --git a/cmake/modules/FindCordova.cmake b/cmake/modules/FindCordova.cmake new file mode 100644 index 00000000..b2d867db --- /dev/null +++ b/cmake/modules/FindCordova.cmake @@ -0,0 +1,8 @@ +find_program(UPM_CORDOVA_BINDING NAMES upm-cordova-binding +) + +if(UPM_CORDOVA_BINDING) + message(STATUS "The npm package to build cordova bindings found at ${UPM_CORDOVA_BINDING}") +else() + message(FATAL_ERROR "Unable to find the npm package for building cordova bindings, please install by 'npm install -g upm-cordova-binding'") +endif() \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index bdb79664..030218a3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -668,6 +668,17 @@ if (BUILDSWIGNODE) endmacro(createpackagejson) endif(BUILDSWIGNODE) +# Cordova binding +if (BUILDCORDOVA) + add_custom_target(cordova_binding ALL + COMMAND upm-cordova-binding ${CMAKE_BINARY_DIR}/src ${CMAKE_BINARY_DIR}/cordova ${VERSION} + COMMENT "Building cordova bindings based on swig java modules") + + install(DIRECTORY ${CMAKE_BINARY_DIR}/cordova + DESTINATION ${CMAKE_INSTALL_PREFIX} + COMPONENT ${CMAKE_PROJECT_NAME}-cordova) +endif (BUILDCORDOVA) + # Process C/C++ sensor modules # This function pre-processes sensor library input and hands off the # necessary global variables to upm_module_init for library creation, @@ -821,6 +832,13 @@ function(upm_module_init) endif (BUILDSWIGJAVA) endif (NOT IS_C_LIBRARY) + # Skip if the libname is in the blacklist + if (BUILDCORDOVA) + if (NOT IS_C_LIBRARY AND NOT ";${JAVASWIG_BLACKLIST};" MATCHES ";${libname};") + add_dependencies(cordova_binding javaupm_${libname}) + endif() + endif (BUILDCORDOVA) + # Add additional properties to this target (used later for .pc/pom file creation) set_target_properties(${libname} PROPERTIES PKG_CONFIG_NAME "${libprefix}${basename}") set_target_properties(${libname} PROPERTIES PKG_CONFIG_DESCRIPTION "${libdescription}")