ADD_DEFINITIONS("-std=c++0x") # accept C++11x standard
SET(GLOBAL_NODE_MODULE_PATH ${CMAKE_INSTALL_PREFIX}/lib/node)
+INCLUDE(build/common.cmake)
-ADD_SUBDIRECTORY(modules/jsnative)
-ADD_SUBDIRECTORY(modules/appfw)
-ADD_SUBDIRECTORY(modules/gcontext)
-ADD_SUBDIRECTORY(modules/node-dlog)
-ADD_SUBDIRECTORY(modules/node-xwalk)
-ADD_SUBDIRECTORY(modules/privileges)
-ADD_SUBDIRECTORY(modules/arguments-validator)
-ADD_SUBDIRECTORY(modules/reaper)
+ADD_SUBDIRECTORY(modules)
--- /dev/null
+# ADD_MODULE
+function(ADD_MODULE)
+ set(OV NODE XWALK)
+ set(SV JSAPI)
+ set(MV SRCS INCLUDES DEPENDS)
+ cmake_parse_arguments(ADD_MODULE "${OV}" "${SV}" "${MV}" ${ARGN})
+ set(_TARGET ${ARGV0})
+ if(ADD_MODULE_XWALK)
+ add_custom_command(
+ OUTPUT __generated_api.cc
+ COMMAND python ${PROJECT_SOURCE_DIR}/build/generate_api.py
+ ${CMAKE_CURRENT_SOURCE_DIR}/${ADD_MODULE_JSAPI}
+ kSourceJSAPI __generated_api.cc
+ DEPENDS ${ADD_MODULE_JSAPI})
+ pkg_check_modules(
+ ${_TARGET}_DEPS REQUIRED xwalk-extensions-common ${ADD_MODULE_DEPENDS})
+ include_directories(${ADD_MODULE_INCLUDES} ${${_TARGET}_DEPS_INCLUDE_DIRS})
+ add_library(${_TARGET} MODULE ${ADD_MODULE_SRCS} __generated_api.cc)
+ set_target_properties(${_TARGET} PROPERTIES PREFIX "" SUFFIX ".xwalk")
+ target_link_libraries(${_TARGET} ${${_TARGET}_DEPS_LIBRARIES})
+ endif(ADD_MODULE_XWALK)
+ if(ADD_MODULE_NODE)
+ pkg_check_modules(
+ ${_TARGET}_DEPS REQUIRED nodejs ${ADD_MODULE_DEPENDS})
+ include_directories(${ADD_MODULE_INCLUDES} ${${_TARGET}_DEPS_INCLUDE_DIRS})
+ add_library(${_TARGET} MODULE ${ADD_MODULE_SRCS})
+ set_target_properties(${_TARGET} PROPERTIES PREFIX "" SUFFIX ".node")
+ target_link_libraries(${_TARGET} ${${_TARGET}_DEPS_LIBRARIES})
+ endif(ADD_MODULE_NODE)
+endfunction()
--- /dev/null
+#!/usr/bin/env python
+
+# Copyright (c) 2013 Intel Corporation. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import os
+import sys
+import subprocess
+
+TEMPLATE = """\
+extern const char %s[];
+const char %s[] = { %s, 0 };
+"""
+
+js_code = sys.argv[1]
+cmd = ("sed -e 's#^//\##\##g' " + js_code +
+ " | cpp -E -P -I" + os.path.dirname(js_code))
+lines = subprocess.check_output(cmd, shell=True)
+c_code = ', '.join(str(ord(c)) for c in lines)
+
+symbol_name = sys.argv[2]
+output = open(sys.argv[3], "w")
+output.write(TEMPLATE % (symbol_name, symbol_name, c_code))
+output.close()
--- /dev/null
+ADD_SUBDIRECTORY(jsnative)
+ADD_SUBDIRECTORY(appfw)
+ADD_SUBDIRECTORY(gcontext)
+ADD_SUBDIRECTORY(node-dlog)
+ADD_SUBDIRECTORY(node-xwalk)
+ADD_SUBDIRECTORY(privileges)
+ADD_SUBDIRECTORY(arguments-validator)
+ADD_SUBDIRECTORY(reaper)
+
+ADD_SUBDIRECTORY(tizen-app-control)
+ADD_SUBDIRECTORY(tizen-application)
+ADD_SUBDIRECTORY(tizen-application-common)
\ No newline at end of file
-SET(TARGET_APPFW "appfw")
-SET(TARGET_APPFW_NATIVE "appfw_native")
+SET(MODULE "appfw")
+SET(MODULE_NATIVE "appfw_native")
-# Copy Project
-INSTALL(FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/package.json
- DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${TARGET_APPFW}
+ADD_MODULE(${MODULE_NATIVE} NODE
+ SRCS
+ src/appfw.cc
+ src/appfw_native_node.cc
+ INCLUDES
+ src
+ DEPENDS
+ appcore-efl aul dlog
)
-INSTALL(FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/lib/appfw.js
- DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${TARGET_APPFW}/lib
+# Copy Project
+INSTALL(FILES package.json
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}
)
-# Native Binding Module
-PKG_CHECK_MODULES(TARGET_APPFW_NATIVE_DEPS REQUIRED
- appcore-efl aul dlog nodejs
-)
-INCLUDE_DIRECTORIES (
- ${CMAKE_CURRENT_SOURCE_DIR}/src
- ${TARGET_APPFW_NATIVE_DEPS_INCLUDE_DIRS}
+INSTALL(FILES lib/appfw.js
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}/lib
)
-ADD_LIBRARY(${TARGET_APPFW_NATIVE} MODULE
- ${CMAKE_CURRENT_SOURCE_DIR}/src/appfw.cc
- ${CMAKE_CURRENT_SOURCE_DIR}/src/appfw_native_node.cc
-)
-SET_TARGET_PROPERTIES(${TARGET_APPFW_NATIVE} PROPERTIES PREFIX "" SUFFIX ".node")
-TARGET_LINK_LIBRARIES(${TARGET_APPFW_NATIVE}
- ${TARGET_APPFW_NATIVE_DEPS_LIBRARIES}
+
+INSTALL(TARGETS ${MODULE_NATIVE}
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}/build/Release
)
-INSTALL(TARGETS ${TARGET_APPFW_NATIVE} DESTINATION
- ${GLOBAL_NODE_MODULE_PATH}/${TARGET_APPFW}/build/Release)
-SET(TARGET_ARGVALIDATOR "arguments-validator")
+SET(MODULE "arguments-validator")
# Copy Project
-INSTALL(FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/package.json
- DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${TARGET_ARGVALIDATOR}
+INSTALL(FILES package.json
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}
)
-INSTALL(FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/validator.js
- DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${TARGET_ARGVALIDATOR}
+INSTALL(FILES validator.js
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}
)
-SET(TARGET_GCONTEXT "gcontext")
-SET(TARGET_GCONTEXT_NATIVE "gcontext")
+SET(MODULE "gcontext")
-# Copy Project
-INSTALL(FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/package.json
- DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${TARGET_GCONTEXT}
+# Native Module
+ADD_MODULE(${MODULE} NODE
+ SRCS
+ src/gcontext.cc
+ INCLUDES
+ src
+ DEPENDS
+ dlog glib-2.0 gobject-2.0
)
-
-# Native Binding Module
-PKG_CHECK_MODULES(TARGET_GCONTEXT_NATIVE_DEPS REQUIRED
- dlog glib-2.0 gobject-2.0 nodejs
-)
-INCLUDE_DIRECTORIES (
- ${CMAKE_CURRENT_SOURCE_DIR}/src
- ${TARGET_GCONTEXT_NATIVE_DEPS_INCLUDE_DIRS}
-)
-ADD_LIBRARY(${TARGET_GCONTEXT_NATIVE} MODULE
- ${CMAKE_CURRENT_SOURCE_DIR}/src/gcontext.cc
+# Copy Project
+INSTALL(FILES package.json
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}
)
-SET_TARGET_PROPERTIES(${TARGET_GCONTEXT_NATIVE} PROPERTIES PREFIX "" SUFFIX ".node")
-TARGET_LINK_LIBRARIES(${TARGET_GCONTEXT_NATIVE}
- ${TARGET_GCONTEXT_NATIVE_DEPS_LIBRARIES}
+
+INSTALL(TARGETS ${MODULE}
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}/build/Release
)
-INSTALL(TARGETS ${TARGET_GCONTEXT_NATIVE} DESTINATION
- ${GLOBAL_NODE_MODULE_PATH}/${TARGET_GCONTEXT}/build/Release)
+
-SET(TARGET_JSNATIVE "jsnative")
+SET(MODULE "jsnative")
# Copy Project
-INSTALL(FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/package.json
- DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${TARGET_JSNATIVE}
+INSTALL(FILES package.json
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}
)
-INSTALL(FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/main.js
- DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${TARGET_JSNATIVE}
+INSTALL(FILES main.js
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}
)
-SET(TARGET_DLOG "node-dlog")
-SET(TARGET_DLOG_NATIVE "node-dlog")
+SET(MODULE "node-dlog")
-# Copy Project
-INSTALL(FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/package.json
- DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${TARGET_DLOG}
+# Native Module
+ADD_MODULE(${MODULE} NODE
+ SRCS
+ src/dlog.cc
+ INCLUDES
+ src
+ DEPENDS
+ dlog
)
-
-# Native Binding Module
-PKG_CHECK_MODULES(TARGET_DLOG_NATIVE_DEPS REQUIRED
- dlog nodejs
-)
-INCLUDE_DIRECTORIES (
- ${CMAKE_CURRENT_SOURCE_DIR}/src
- ${TARGET_DLOG_NATIVE_DEPS_INCLUDE_DIRS}
-)
-ADD_LIBRARY(${TARGET_DLOG_NATIVE} MODULE
- ${CMAKE_CURRENT_SOURCE_DIR}/src/dlog.cc
+# Copy Project
+INSTALL(FILES package.json
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}
)
-SET_TARGET_PROPERTIES(${TARGET_DLOG_NATIVE} PROPERTIES PREFIX "" SUFFIX ".node")
-TARGET_LINK_LIBRARIES(${TARGET_DLOG_NATIVE}
- ${TARGET_DLOG_NATIVE_DEPS_LIBRARIES}
+
+INSTALL(TARGETS ${MODULE}
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}/build/Release
)
-INSTALL(TARGETS ${TARGET_DLOG_NATIVE} DESTINATION
- ${GLOBAL_NODE_MODULE_PATH}/${TARGET_DLOG}/build/Release)
+
-SET(TARGET_XWALK "node-xwalk")
-SET(TARGET_XWALK_NATIVE "native")
+SET(MODULE "node-xwalk")
+SET(MODULE_NATIVE "node-xwalk-native")
-# Copy Project
-INSTALL(FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/package.json
- DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${TARGET_XWALK}
+# Native Module
+ADD_MODULE(${MODULE_NATIVE} NODE
+ SRCS
+ src/native_binding.cc
+ src/extension.cc
+ src/extension_adapter.cc
+ INCLUDES
+ src
+ DEPENDS
+ dlog
)
-INSTALL(FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/lib/loader.js
- DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${TARGET_XWALK}/lib
+# Copy Project
+INSTALL(FILES package.json
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}
)
-# Native Binding Module
-PKG_CHECK_MODULES(TARGET_XWALK_NATIVE_DEPS REQUIRED
- dlog nodejs
+INSTALL(FILES lib/loader.js
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}/lib
)
-INCLUDE_DIRECTORIES (
- ${CMAKE_CURRENT_SOURCE_DIR}/src
- ${TARGET_XWALK_NATIVE_DEPS_INCLUDE_DIRS}
-)
-ADD_LIBRARY(${TARGET_XWALK_NATIVE} MODULE
- ${CMAKE_CURRENT_SOURCE_DIR}/src/native_binding.cc
- ${CMAKE_CURRENT_SOURCE_DIR}/src/extension.cc
- ${CMAKE_CURRENT_SOURCE_DIR}/src/extension_adapter.cc
+INSTALL(TARGETS ${MODULE_NATIVE}
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}/build/Release
)
-SET_TARGET_PROPERTIES(${TARGET_XWALK_NATIVE} PROPERTIES PREFIX "" SUFFIX ".node")
-TARGET_LINK_LIBRARIES(${TARGET_XWALK_NATIVE}
- ${TARGET_XWALK_NATIVE_DEPS_LIBRARIES}
-)
-INSTALL(TARGETS ${TARGET_XWALK_NATIVE} DESTINATION
- ${GLOBAL_NODE_MODULE_PATH}/${TARGET_XWALK}/build/Release)
-
};
ExtensionModule.prototype.load = function() {
- var native_ = require("../build/Release/native");
+ var native_ = require("../build/Release/node-xwalk-native");
this.extension_info = native_.getExtensionInfo(this.extension_path);
if (!this.extension_info) {
error('Error during get information of extension "' +
-SET(TARGET_PRIVILEGES "privileges")
-SET(TARGET_PRIVILEGES_NATIVE "privileges_native")
+SET(MODULE "privileges")
+SET(MODULE_NATIVE "privileges_native")
-# Copy Project
-INSTALL(FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/package.json
- DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${TARGET_PRIVILEGES}
+# Native Module
+ADD_MODULE(${MODULE_NATIVE} NODE
+ SRCS
+ src/privileges_native.cc
+ INCLUDES
+ src
+ DEPENDS
+ dlog cynara-client libsmack
+ pkgmgr-info capi-appfw-app-manager
)
-INSTALL(FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/lib/privileges.js
- DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${TARGET_PRIVILEGES}/lib
+# Copy Project
+INSTALL(FILES package.json
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}
)
-# Native Binding Module
-PKG_CHECK_MODULES(TARGET_PRIVILEGES_NATIVE_DEPS REQUIRED
- dlog nodejs
- cynara-client libsmack
- pkgmgr-info capi-appfw-app-manager
+INSTALL(FILES lib/privileges.js
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}/lib
)
-INCLUDE_DIRECTORIES (
- ${CMAKE_CURRENT_SOURCE_DIR}/src
- ${TARGET_PRIVILEGES_NATIVE_DEPS_INCLUDE_DIRS}
-)
-ADD_LIBRARY(${TARGET_PRIVILEGES_NATIVE} MODULE
- ${CMAKE_CURRENT_SOURCE_DIR}/src/privileges_native.cc
-)
-SET_TARGET_PROPERTIES(${TARGET_PRIVILEGES_NATIVE} PROPERTIES PREFIX "" SUFFIX ".node")
-TARGET_LINK_LIBRARIES(${TARGET_PRIVILEGES_NATIVE}
- ${TARGET_PRIVILEGES_NATIVE_DEPS_LIBRARIES}
+
+INSTALL(TARGETS ${MODULE_NATIVE}
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}/build/Release
)
-INSTALL(TARGETS ${TARGET_PRIVILEGES_NATIVE} DESTINATION
- ${GLOBAL_NODE_MODULE_PATH}/${TARGET_PRIVILEGES}/build/Release)
-SET(TARGET_REAPER "reaper")
-SET(TARGET_REAPER_NATIVE "reaper")
+SET(MODULE "reaper")
-# Copy Project
-INSTALL(FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/package.json
- DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${TARGET_REAPER}
+# Native Module
+ADD_MODULE(${MODULE} NODE
+ SRCS
+ src/reaper.cc
+ INCLUDES
+ src
+ DEPENDS
+ dlog
)
-
-# Native Binding Module
-PKG_CHECK_MODULES(TARGET_REAPER_NATIVE_DEPS REQUIRED
- dlog nodejs
-)
-INCLUDE_DIRECTORIES (
- ${CMAKE_CURRENT_SOURCE_DIR}/src
- ${TARGET_REAPER_NATIVE_DEPS_INCLUDE_DIRS}
-)
-ADD_LIBRARY(${TARGET_REAPER_NATIVE} MODULE
- ${CMAKE_CURRENT_SOURCE_DIR}/src/reaper.cc
-)
-SET_TARGET_PROPERTIES(${TARGET_REAPER_NATIVE} PROPERTIES PREFIX "" SUFFIX ".node")
-TARGET_LINK_LIBRARIES(${TARGET_REAPER_NATIVE}
- ${TARGET_REAPER_NATIVE_DEPS_LIBRARIES}
+# Copy Project
+INSTALL(FILES package.json
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}
)
-INSTALL(TARGETS ${TARGET_REAPER_NATIVE} DESTINATION
- ${GLOBAL_NODE_MODULE_PATH}/${TARGET_REAPER}/build/Release)
+
+INSTALL(TARGETS ${MODULE}
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}/build/Release
+)
\ No newline at end of file
--- /dev/null
+SET(MODULE "tizen-app-control")
+
+# Copy Project
+INSTALL(
+ FILES
+ package.json
+ tizen-app-control.js
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}
+)
--- /dev/null
+SET(MODULE "tizen-application-common")
+
+# Native Module
+ADD_MODULE(${MODULE} XWALK
+ JSAPI
+ tizen-application-common_api.js
+ SRCS
+ app_common_extension.cc
+ DEPENDS
+ dlog capi-appfw-application
+)
+
+# Copy Project
+INSTALL(FILES package.json
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}
+)
+
+INSTALL(TARGETS ${MODULE}
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}
+)
+++ /dev/null
-{
- 'targets': [
- {
- 'target_name': 'tizen-application-common',
- 'sources': [
- 'tizen-application-common_api.js',
- 'app_common_extension.h',
- 'app_common_extension.cc',
- 'picojson.h',
- ],
- 'variables': {
- 'packages': [
- 'dlog',
- 'capi-appfw-application',
- ],
- },
- },
- ],
-}
--- /dev/null
+SET(MODULE "tizen-application")
+
+# Native Module
+ADD_MODULE(${MODULE} XWALK
+ JSAPI
+ tizen-application_api.js
+ SRCS
+ appfw.cc
+ ui_app_extension.cc
+ DEPENDS
+ dlog appcore-efl aul
+)
+
+# Copy Project
+INSTALL(FILES package.json
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}
+)
+
+INSTALL(TARGETS ${MODULE}
+ DESTINATION ${GLOBAL_NODE_MODULE_PATH}/${MODULE}
+)
\ No newline at end of file
+++ /dev/null
-{
- 'targets': [
- {
- 'target_name': 'tizen-application',
- 'sources': [
- 'tizen-application_api.js',
- 'ui_app_extension.h',
- 'ui_app_extension.cc',
- 'picojson.h',
- 'appfw.cc',
- 'appfw.h',
- ],
- 'variables': {
- 'packages': [
- 'dlog',
- 'appcore-efl',
- 'aul',
- ],
- },
- },
- ],
-}
-
Source1: %{name}.manifest
BuildRequires: cmake
-BuildRequires: pkgconfig(appcore-efl)
-BuildRequires: pkgconfig(aul)
-BuildRequires: pkgconfig(dlog)
BuildRequires: pkgconfig(nodejs)
+BuildRequires: pkgconfig(xwalk-extensions-common)
+BuildRequires: pkgconfig(dlog)
BuildRequires: pkgconfig(libsmack)
BuildRequires: pkgconfig(cynara-client)
+BuildRequires: pkgconfig(appcore-efl)
+BuildRequires: pkgconfig(aul)
+BuildRequires: pkgconfig(capi-appfw-application)
BuildRequires: pkgconfig(capi-appfw-app-manager)
BuildRequires: pkgconfig(pkgmgr-info)
+
Requires: nodejs
%description