cordova: added Cordova binding based on Java binding

The Cordova plugins for each Java packages will be created
if BUILDCORDOVA=ON and BUILDSWIGJAVA=ON.
This commit is contained in:
Lin Sun 2017-11-22 22:14:59 +08:00
parent 334f7365f0
commit 09e5d79fc7
3 changed files with 38 additions and 0 deletions

View File

@ -8,6 +8,7 @@ option (BUILDFTI "Build Funtion Table Interface (FTI) in C sensor libraries" OFF
option (BUILDSWIGPYTHON "Build swig python modules" ON) option (BUILDSWIGPYTHON "Build swig python modules" ON)
option (BUILDSWIGNODE "Build swig node modules" ON) option (BUILDSWIGNODE "Build swig node modules" ON)
option (BUILDSWIGJAVA "Build swig java modules" OFF) option (BUILDSWIGJAVA "Build swig java modules" OFF)
option (BUILDCORDOVA "Build cordova bindings" OFF)
option (BUILDEXAMPLES "Build C/C++/JAVA examples" OFF) option (BUILDEXAMPLES "Build C/C++/JAVA examples" OFF)
option (IPK "Generate IPK using CPack" OFF) option (IPK "Generate IPK using CPack" OFF)
option (RPM "Generate RPM 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}) find_library(MRAAJAVA_LIBRARY NAMES mraajava HINTS ${MRAA_LIBDIR})
endif (BUILDSWIGJAVA) 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 # Find swig if any wrapper is enabled
if (BUILDSWIGPYTHON OR BUILDSWIGNODE OR BUILDSWIGJAVA) if (BUILDSWIGPYTHON OR BUILDSWIGNODE OR BUILDSWIGJAVA)
find_package (SWIG 3.0.5 REQUIRED) find_package (SWIG 3.0.5 REQUIRED)

View File

@ -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()

View File

@ -668,6 +668,17 @@ if (BUILDSWIGNODE)
endmacro(createpackagejson) endmacro(createpackagejson)
endif(BUILDSWIGNODE) 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 # Process C/C++ sensor modules
# This function pre-processes sensor library input and hands off the # This function pre-processes sensor library input and hands off the
# necessary global variables to upm_module_init for library creation, # necessary global variables to upm_module_init for library creation,
@ -821,6 +832,13 @@ function(upm_module_init)
endif (BUILDSWIGJAVA) endif (BUILDSWIGJAVA)
endif (NOT IS_C_LIBRARY) 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) # 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_NAME "${libprefix}${basename}")
set_target_properties(${libname} PROPERTIES PKG_CONFIG_DESCRIPTION "${libdescription}") set_target_properties(${libname} PROPERTIES PKG_CONFIG_DESCRIPTION "${libdescription}")