Support for building Node Addon for target 73/43973/25
authorNick Holland <nick.holland@partner.samsung.com>
Wed, 9 Dec 2015 17:42:55 +0000 (17:42 +0000)
committerNick Holland <nick.holland@partner.samsung.com>
Wed, 9 Dec 2015 18:35:02 +0000 (18:35 +0000)
Includes changes to examples to have correct dali node addon path for running on device.

On device to use dali

var dali = require('dali')(options);

Change-Id: I42e77e63d805bb0dbd3700a4c3969b2b9e2d2cc4

.gitignore
node-addon/README [new file with mode: 0644]
node-addon/build/config.gypi [deleted file]
node-addon/build/dali.target.mk [deleted file]
node-addon/build/tizen/CMakeLists.txt [new file with mode: 0644]
node-addon/line-mesh.js
node-addon/mesh-morph.js
node-addon/point-mesh.js
node-addon/test.js [deleted file]
node-addon/texture-mesh.js
packaging/dali-addon.spec [new file with mode: 0644]

index 96a5860..d2fa7ba 100644 (file)
@@ -4,6 +4,8 @@
 .directory
 Makefile.in
 Makefile
+CMakeCache.txt
+dali.node
 dali.doxy
 *~
 *.o
diff --git a/node-addon/README b/node-addon/README
new file mode 100644 (file)
index 0000000..0a66f1e
--- /dev/null
@@ -0,0 +1,23 @@
+Building dali node addon for GBS
+
+Ensure node-devel (0.12.4) rpm is install into gbs. The addon expects /usr/lib/node/node.h to exists
+in the gbs environment
+
+sudo gbs  build -A armv7l --include-all --ccache --keep-packs --spec dali-addon.spec
+
+Building for Ubuntu desktop:
+
+2 options:
+
+option 1 (easy):  in node-addon folder type
+
+$ node-gyp build
+
+option 2 (harder)
+Ensure node-js source has been downloaded and built from source.
+It doesn't have to be installed anywhere (make sure node executable is in your PATH).
+
+In node-addon/build/tizen direction, run cmake, with the source directory of node
+
+cmake -DDesktopNodePath:String=/home/my-user/Downloads/node-v0.12.4 .
+make
diff --git a/node-addon/build/config.gypi b/node-addon/build/config.gypi
deleted file mode 100644 (file)
index 050745d..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-# Do not edit. File was generated by node-gyp's "configure" step
-{
-  "target_defaults": {
-    "cflags": [],
-    "default_configuration": "Release",
-    "defines": [],
-    "include_dirs": [],
-    "libraries": []
-  },
-  "variables": {
-    "clang": 0,
-    "gcc_version": 46,
-    "host_arch": "x64",
-    "icu_small": "false",
-    "node_install_npm": "true",
-    "node_prefix": "",
-    "node_shared_cares": "false",
-    "node_shared_http_parser": "false",
-    "node_shared_libuv": "false",
-    "node_shared_openssl": "false",
-    "node_shared_v8": "false",
-    "node_shared_zlib": "false",
-    "node_tag": "",
-    "node_use_dtrace": "false",
-    "node_use_etw": "false",
-    "node_use_mdb": "false",
-    "node_use_openssl": "true",
-    "node_use_perfctr": "false",
-    "openssl_no_asm": 0,
-    "python": "/usr/bin/python",
-    "target_arch": "x64",
-    "uv_library": "static_library",
-    "uv_parent_path": "/deps/uv/",
-    "uv_use_dtrace": "false",
-    "v8_enable_gdbjit": 0,
-    "v8_enable_i18n_support": 0,
-    "v8_no_strict_aliasing": 1,
-    "v8_optimized_debug": 0,
-    "v8_random_seed": 0,
-    "v8_use_snapshot": "true",
-    "want_separate_host_toolset": 0,
-    "nodedir": "/home/likewise-open/SERILOCAL/nick.holland/.node-gyp/0.12.4",
-    "copy_dev_lib": "true",
-    "standalone_static_library": 1
-  }
-}
diff --git a/node-addon/build/dali.target.mk b/node-addon/build/dali.target.mk
deleted file mode 100644 (file)
index d2acf12..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-# This file is generated by gyp; do not edit.
-
-TOOLSET := target
-TARGET := dali
-DEFS_Debug := \
-       '-DNODE_GYP_MODULE_NAME=dali' \
-       '-D_LARGEFILE_SOURCE' \
-       '-D_FILE_OFFSET_BITS=64' \
-       '-DBUILDING_NODE_EXTENSION' \
-       '-DDEBUG' \
-       '-D_DEBUG'
-
-# Flags passed to all source files.
-CFLAGS_Debug := \
-       -fPIC \
-       -pthread \
-       -Wall \
-       -Wextra \
-       -Wno-unused-parameter \
-       -m64 \
-       -fPIC \
-       -frtti \
-       -I/home/likewise-open/SERILOCAL/nick.holland/dali-env/opt/include/dali \
-       -I/home/likewise-open/SERILOCAL/nick.holland/dali-env/opt/include \
-       -g \
-       -O0
-
-# Flags passed to only C files.
-CFLAGS_C_Debug :=
-
-# Flags passed to only C++ files.
-CFLAGS_CC_Debug := \
-       -fno-rtti \
-       -fno-exceptions \
-       -fexceptions \
-       -frtti
-
-INCS_Debug := \
-       -I/home/likewise-open/SERILOCAL/nick.holland/.node-gyp/0.12.4/src \
-       -I/home/likewise-open/SERILOCAL/nick.holland/.node-gyp/0.12.4/deps/uv/include \
-       -I/home/likewise-open/SERILOCAL/nick.holland/.node-gyp/0.12.4/deps/v8/include \
-       -I$(srcdir)/../plugins/dali-script-v8/src \
-       -I$(srcdir)/../plugins/dali-script-v8/src/utils
-
-DEFS_Release := \
-       '-DNODE_GYP_MODULE_NAME=dali' \
-       '-D_LARGEFILE_SOURCE' \
-       '-D_FILE_OFFSET_BITS=64' \
-       '-DBUILDING_NODE_EXTENSION'
-
-# Flags passed to all source files.
-CFLAGS_Release := \
-       -fPIC \
-       -pthread \
-       -Wall \
-       -Wextra \
-       -Wno-unused-parameter \
-       -m64 \
-       -fPIC \
-       -frtti \
-       -I/home/likewise-open/SERILOCAL/nick.holland/dali-env/opt/include/dali \
-       -I/home/likewise-open/SERILOCAL/nick.holland/dali-env/opt/include \
-       -O3 \
-       -ffunction-sections \
-       -fdata-sections \
-       -fno-tree-vrp \
-       -fno-omit-frame-pointer
-
-# Flags passed to only C files.
-CFLAGS_C_Release :=
-
-# Flags passed to only C++ files.
-CFLAGS_CC_Release := \
-       -fno-rtti \
-       -fno-exceptions \
-       -fexceptions \
-       -frtti
-
-INCS_Release := \
-       -I/home/likewise-open/SERILOCAL/nick.holland/.node-gyp/0.12.4/src \
-       -I/home/likewise-open/SERILOCAL/nick.holland/.node-gyp/0.12.4/deps/uv/include \
-       -I/home/likewise-open/SERILOCAL/nick.holland/.node-gyp/0.12.4/deps/v8/include \
-       -I$(srcdir)/../plugins/dali-script-v8/src \
-       -I$(srcdir)/../plugins/dali-script-v8/src/utils
-
-OBJS := \
-       $(obj).target/$(TARGET)/dali-addon.o \
-       $(obj).target/$(TARGET)/javascript-application-options.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/utils/v8-utils.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/dali-wrapper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/shared/base-wrapped-object.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/shared/object-template-helper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/actors/actor-wrapper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/actors/actor-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/actors/layer-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/actors/image-actor-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/actors/camera-actor-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/constants/constants-wrapper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/animation/animation-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/animation/animation-wrapper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/animation/constrainer-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/animation/linear-constrainer-wrapper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/animation/path-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/animation/path-constrainer-wrapper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/animation/path-wrapper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/stage/stage-wrapper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/events/event-object-generator.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/events/pan-gesture-detector-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/events/pan-gesture-detector-wrapper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/stage/stage-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/shader-effects/shader-effect-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/shader-effects/shader-effect-wrapper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/image/image-wrapper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/image/image-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/image/buffer-image-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/image/native-image-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/image/frame-buffer-image-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/image/resource-image-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/image/nine-patch-image-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/object/handle-wrapper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/object/property-value-wrapper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/signals/signal-manager.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/render-tasks/render-task-list-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/render-tasks/render-task-list-wrapper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/render-tasks/render-task-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/render-tasks/render-task-wrapper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/toolkit/builder/builder-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/toolkit/builder/builder-wrapper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/toolkit/focus-manager/keyboard-focus-manager-api.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/toolkit/focus-manager/keyboard-focus-manager-wrapper.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/signals/dali-any-javascript-converter.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/garbage-collector/garbage-collector.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/module-loader/module.o \
-       $(obj).target/$(TARGET)/../plugins/dali-script-v8/src/module-loader/module-loader.o
-
-# Add to the list of files we specially track dependencies for.
-all_deps += $(OBJS)
-
-# CFLAGS et al overrides must be target-local.
-# See "Target-specific Variable Values" in the GNU Make manual.
-$(OBJS): TOOLSET := $(TOOLSET)
-$(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE))  $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE))
-$(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE))  $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE))
-
-# Suffix rules, putting all outputs into $(obj).
-
-$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.cpp FORCE_DO_CMD
-       @$(call do_cmd,cxx,1)
-
-# Try building from generated source, too.
-
-$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.cpp FORCE_DO_CMD
-       @$(call do_cmd,cxx,1)
-
-$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.cpp FORCE_DO_CMD
-       @$(call do_cmd,cxx,1)
-
-# End of this set of suffix rules
-### Rules for final target.
-LDFLAGS_Debug := \
-       -pthread \
-       -rdynamic \
-       -m64 \
-       -L/home/likewise-open/SERILOCAL/nick.holland/dali-env/opt/lib
-
-LDFLAGS_Release := \
-       -pthread \
-       -rdynamic \
-       -m64 \
-       -L/home/likewise-open/SERILOCAL/nick.holland/dali-env/opt/lib
-
-LIBS := \
-       -ldali-adaptor \
-       -ldali-toolkit \
-       -ldali-core
-
-$(obj).target/dali.node: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE))
-$(obj).target/dali.node: LIBS := $(LIBS)
-$(obj).target/dali.node: TOOLSET := $(TOOLSET)
-$(obj).target/dali.node: $(OBJS) FORCE_DO_CMD
-       $(call do_cmd,solink_module)
-
-all_deps += $(obj).target/dali.node
-# Add target alias
-.PHONY: dali
-dali: $(builddir)/dali.node
-
-# Copy this to the executable output path.
-$(builddir)/dali.node: TOOLSET := $(TOOLSET)
-$(builddir)/dali.node: $(obj).target/dali.node FORCE_DO_CMD
-       $(call do_cmd,copy)
-
-all_deps += $(builddir)/dali.node
-# Short alias for building this executable.
-.PHONY: dali.node
-dali.node: $(obj).target/dali.node $(builddir)/dali.node
-
-# Add executable to "all" target.
-.PHONY: all
-all: $(builddir)/dali.node
-
diff --git a/node-addon/build/tizen/CMakeLists.txt b/node-addon/build/tizen/CMakeLists.txt
new file mode 100644 (file)
index 0000000..bd4dd2c
--- /dev/null
@@ -0,0 +1,138 @@
+# Guide to build for GBS
+# Build dali-toolkit with gbs, the dali-addon will be built automatically
+#
+# To build for Desktop
+# option 1 (easy):  in node-addon folder type
+#
+# $ node-gyp build
+#
+# option 2: use cmake
+# This relies on Node source being downloaded ( don't forget the dot)
+#
+# cmake -DDesktopNodePath:String=/home/Downloads/node-v0.12.4 .
+
+
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8.5)
+PROJECT(dali_addon)
+set(configuration "Default")
+enable_language(ASM)
+set(builddir "${CMAKE_BINARY_DIR}")
+set(obj "${builddir}/obj")
+
+set(CMAKE_C_OUTPUT_EXTENSION_REPLACE 1)
+set(CMAKE_CXX_OUTPUT_EXTENSION_REPLACE 1)
+
+option(GBSBuild "GBSBuild" 0)
+option(DesktopNodePath "DesktopNodePath" "")
+
+IF( ${GBSBuild} )
+  set( NODE_HEADERS "/usr/include/node" )
+  set( V8_HEADERS "/usr/include/node" )
+  MESSAGE("Performing a GBS build, ensure Node JS devel RPM is installed")
+  MESSAGE("node.h and v8.h should exist in ${NODE_HEADERS}")
+ELSE()
+  MESSAGE("Performing Desktop build node path =${DesktopNodePath}")
+  IF( NOT DesktopNodePath )
+    MESSAGE(FATAL_ERROR "\n Node JS Source code path empty, please specify,e.g. \n cmake -DDesktopNodePath:String=~/Downloads/node-v0.12.4/  .")
+  ENDIF( NOT DesktopNodePath )
+  set( NODE_HEADERS "${DesktopNodePath}/src" )
+  set( V8_HEADERS   "${DesktopNodePath}/deps/v8/include" )
+  MESSAGE( "-- Node include header location = ${NODE_HEADERS} ")
+  MESSAGE( "-- V8 include header location = ${V8_HEADERS} ")
+ENDIF( ${GBSBuild})
+
+set(TARGET "dali_addon")
+set(TOOLSET "target")
+set(PLUGING_SRC_DIR "../../../plugins/dali-script-v8/src")
+set(NODE_ADDON_SRC "../..")
+add_library(dali_addon SHARED
+  ${NODE_ADDON_SRC}/dali-addon.cpp
+  ${NODE_ADDON_SRC}/javascript-application-options.cpp
+  ${PLUGING_SRC_DIR}/utils/v8-utils.cpp
+  ${PLUGING_SRC_DIR}/dali-wrapper.cpp
+  ${PLUGING_SRC_DIR}/shared/base-wrapped-object.cpp
+  ${PLUGING_SRC_DIR}/shared/object-template-helper.cpp
+  ${PLUGING_SRC_DIR}/actors/actor-wrapper.cpp
+  ${PLUGING_SRC_DIR}/actors/actor-api.cpp
+  ${PLUGING_SRC_DIR}/actors/layer-api.cpp
+  ${PLUGING_SRC_DIR}/actors/camera-actor-api.cpp
+  ${PLUGING_SRC_DIR}/constants/constants-wrapper.cpp
+  ${PLUGING_SRC_DIR}/animation/animation-api.cpp
+  ${PLUGING_SRC_DIR}/animation/animation-wrapper.cpp
+  ${PLUGING_SRC_DIR}/animation/constrainer-api.cpp
+  ${PLUGING_SRC_DIR}/animation/linear-constrainer-wrapper.cpp
+  ${PLUGING_SRC_DIR}/animation/path-api.cpp
+  ${PLUGING_SRC_DIR}/animation/path-constrainer-wrapper.cpp
+  ${PLUGING_SRC_DIR}/animation/path-wrapper.cpp
+  ${PLUGING_SRC_DIR}/stage/stage-wrapper.cpp
+  ${PLUGING_SRC_DIR}/events/event-object-generator.cpp
+  ${PLUGING_SRC_DIR}/events/pan-gesture-detector-api.cpp
+  ${PLUGING_SRC_DIR}/events/pan-gesture-detector-wrapper.cpp
+  ${PLUGING_SRC_DIR}/stage/stage-api.cpp
+  ${PLUGING_SRC_DIR}/image/image-wrapper.cpp
+  ${PLUGING_SRC_DIR}/image/image-api.cpp
+  ${PLUGING_SRC_DIR}/image/buffer-image-api.cpp
+  ${PLUGING_SRC_DIR}/image/frame-buffer-image-api.cpp
+  ${PLUGING_SRC_DIR}/image/resource-image-api.cpp
+  ${PLUGING_SRC_DIR}/object/handle-wrapper.cpp
+  ${PLUGING_SRC_DIR}/object/property-buffer-api.cpp
+  ${PLUGING_SRC_DIR}/object/property-buffer-wrapper.cpp
+  ${PLUGING_SRC_DIR}/object/property-value-wrapper.cpp
+  ${PLUGING_SRC_DIR}/signals/signal-manager.cpp
+  ${PLUGING_SRC_DIR}/render-tasks/render-task-list-api.cpp
+  ${PLUGING_SRC_DIR}/render-tasks/render-task-list-wrapper.cpp
+  ${PLUGING_SRC_DIR}/render-tasks/render-task-api.cpp
+  ${PLUGING_SRC_DIR}/render-tasks/render-task-wrapper.cpp
+  ${PLUGING_SRC_DIR}/rendering/geometry-api.cpp
+  ${PLUGING_SRC_DIR}/rendering/geometry-wrapper.cpp
+  ${PLUGING_SRC_DIR}/rendering/material-api.cpp
+  ${PLUGING_SRC_DIR}/rendering/material-wrapper.cpp
+  ${PLUGING_SRC_DIR}/rendering/renderer-api.cpp
+  ${PLUGING_SRC_DIR}/rendering/renderer-wrapper.cpp
+  ${PLUGING_SRC_DIR}/rendering/sampler-api.cpp
+  ${PLUGING_SRC_DIR}/rendering/sampler-wrapper.cpp
+  ${PLUGING_SRC_DIR}/rendering/shader-api.cpp
+  ${PLUGING_SRC_DIR}/rendering/shader-wrapper.cpp
+  ${PLUGING_SRC_DIR}/toolkit/builder/builder-api.cpp
+  ${PLUGING_SRC_DIR}/toolkit/builder/builder-wrapper.cpp
+  ${PLUGING_SRC_DIR}/toolkit/focus-manager/keyboard-focus-manager-api.cpp
+  ${PLUGING_SRC_DIR}/toolkit/focus-manager/keyboard-focus-manager-wrapper.cpp
+  ${PLUGING_SRC_DIR}/signals/dali-any-javascript-converter.cpp
+  ${PLUGING_SRC_DIR}/garbage-collector/garbage-collector.cpp
+  ${PLUGING_SRC_DIR}/module-loader/module.cpp
+  ${PLUGING_SRC_DIR}/module-loader/module-loader.cpp
+)
+set_target_properties(dali_addon PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${builddir}/lib.${TOOLSET}")
+set_target_properties(dali_addon PROPERTIES PREFIX "")
+set_target_properties(dali_addon PROPERTIES LIBRARY_OUTPUT_NAME "dali")
+set_target_properties(dali_addon PROPERTIES SUFFIX ".node")
+set_source_files_properties(${builddir}/lib.${TOOLSET}/dali.node PROPERTIES GENERATED "TRUE")
+set_target_properties(dali_addon PROPERTIES EXCLUDE_FROM_ALL "FALSE")
+
+
+SET(PKG_LIST dali
+             dali-toolkit)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(REQUIRED_PKGS REQUIRED ${PKG_LIST})
+
+# This is just pulling out dali / dali-toolkit header locations from pkg-config
+FOREACH(flag ${REQUIRED_PKGS_CFLAGS})
+        SET(REQUIRED_CFLAGS "${REQUIRED_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+# Set the include paths to include dali, dali-core, node, v8 and headers for dali-addon
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${REQUIRED_CFLAGS} -I${PLUGING_SRC_DIR}/utils -I${PLUGING_SRC_DIR}  -I${NODE_HEADERS} -I ${V8_HEADERS}")
+
+set_target_properties(dali_addon PROPERTIES COMPILE_FLAGS "-fPIC -frtti -fexceptions")
+
+# This sets up the linker flags for dali-core/ adaptor and toolkit
+# we don't need any flags for node / v8 as we're running inside node and v8 is statically linked to it
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${REQUIRED_PKGS_LDFLAGS})
+
+# ${CMAKE_INSTALL_PREFIX}
+#################################### install #####################################
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX} )
+
+unset(TOOLSET)
+unset(TARGET)
index 9dd4053..f1c9532 100644 (file)
     'view-mode': viewMode,
  }
 
-var dali = require('./build/Release/dali')( options );
+// desktop
+//var dali = require('./build/Release/dali')( options );
+
+// target
+var dali = require('dali')( options );
 
 var daliApp = {};
 
index 1fa1fb6..dd4527a 100644 (file)
     'view-mode': viewMode,
  }
 
-var dali = require('./build/Release/dali')( options );
+
+// desktop
+//var dali = require('./build/Release/dali')( options );
+
+// target
+var dali = require('dali')( options );
 
 var daliApp = {};
 
index afe6e3a..f9c7186 100644 (file)
 
 var imageDir = "./";
 
-var dali = require('./build/Release/dali')( options );
+
+// desktop
+//var dali = require('./build/Release/dali')( options );
+
+// target
+var dali = require('dali')( options );
 
 var daliApp = {};
 
diff --git a/node-addon/test.js b/node-addon/test.js
deleted file mode 100644 (file)
index 25bbd48..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
- var window= {
-        x:800,
-         y:500,
-       width:880,
-       height: 1020,
-       transparent: false,
-       name:'my-first-dali-app'
- };
-var viewMode={
-       'stereoscopic-mode':'mono', // stereo-horizontal, stereo-vertical, stereo-interlaced,
-       'stereo-base': 65 // Distance in millimeters between left/right cameras typically between (50-70mm)
- };
- var options= {
-    'window': window,
-    'view-mode': viewMode,
- }
-
-var dali = require('./build/Release/dali')( options );
-var netflixRoulette = require('netflix-roulette');
-
-
-var NUMBER_OF_IMAGES = 40; // for now use 16 ( demo files go up to 30)
-var DEMO_IMAGES = []; // array to store Dali Images
-var VIDEO_WALL_ACTORS = []; // array to store Image actors
-var VIDEO_WALL_ROWS = 5; // use 3 rows for the video wall
-var VIDEO_WALL_COLUMNS = 6; // use 12 columns for the video wall
-var VIDEO_WALL_TOTAL_ITEMS = VIDEO_WALL_COLUMNS * VIDEO_WALL_ROWS; // total items
-var VIDEO_WALL_ITEM_SIZE = 128; // width / height of a item in the video wall
-var BORDER_SIZE = 5;
-var VIDEO_WALL_ITEM_SIZE_NO_BORDER = VIDEO_WALL_ITEM_SIZE - BORDER_SIZE;
-var VIDEO_WALL_WIDTH = VIDEO_WALL_COLUMNS * VIDEO_WALL_ITEM_SIZE;
-var VIDEO_WALL_HEIGHT = VIDEO_WALL_ROWS * VIDEO_WALL_ITEM_SIZE;
-var daliApp = {};
-var posters = [];
-
-var wallRootActor; // the root actor of the video wall
-
-
-daliApp.loadNetflixImages = function() {
-
-  if( NUMBER_OF_IMAGES >= VIDEO_WALL_TOTAL_ITEMS)
-  {
-    NUMBER_OF_IMAGES = VIDEO_WALL_TOTAL_ITEMS-1;
-  }
-
-  for (index = 0; index < NUMBER_OF_IMAGES; ++index) {
-
-    fileName = posters[ index % (posters.length-1)  ];
-    if ( fileName )
-    {
-      DEMO_IMAGES[index] = new dali.ResourceImage( { url:fileName } );
-    }
-  }
-}
-
-
-daliApp.createRootActor = function() {
-    wallRootActor = new dali.Actor();
-    wallRootActor.parentOrigin = dali.CENTER;
-    wallRootActor.anchorPoint = dali.CENTER;
-    dali.stage.add(wallRootActor);
-
-    var field = new dali.Control("TextField");
-    field.parentOrigin = dali.CENTER;
-    field.anchorPoint = dali.CENTER;
-
-    field.placeholderText = "DALi netflix netflix-roulette demo";
-    dali.stage.add( field );
-}
-
-
-
-daliApp.getWallActorIndex = function(x, y) {
-    return x + y * VIDEO_WALL_COLUMNS;
-}
-
-daliApp.createActors = function() {
-    daliApp.createRootActor();
-
-    var anim = new dali.Animation(1);
-    var animOptions = {
-      alpha: "linear",
-      delay: 0.0,     // used to delay the start of the animation
-      duration: 1,    // duration of the animation
-     };
-
-    for (y = 0; y < VIDEO_WALL_ROWS; ++y) {
-        for (x = 0; x < VIDEO_WALL_COLUMNS; ++x) {
-
-            var actorIndex = daliApp.getWallActorIndex(x, y);
-            var imageView = new dali.Control("ImageView");
-
-            // wrap image index between 0 and NUMBER_OF_IMAGES
-            var imageIndex = actorIndex % NUMBER_OF_IMAGES;
-
-            imageView.image = DEMO_IMAGES[imageIndex];
-
-            imageView.parentOrigin = dali.CENTER;
-            imageView.anchorPoint = dali.CENTER;
-            imageView.size = [VIDEO_WALL_ITEM_SIZE_NO_BORDER, VIDEO_WALL_ITEM_SIZE_NO_BORDER, 1.0]; // start with zero size so it zooms up
-
-            var xPosition = x * VIDEO_WALL_ITEM_SIZE;
-            //  as the middle the wall is at zero (relative to wallRootActor), we need to subtract half the wall width.
-            // + add half item size because the item anchor point is the center of the wallRootActor.
-            xPosition = xPosition - (VIDEO_WALL_WIDTH / 2) + (VIDEO_WALL_ITEM_SIZE / 2);
-
-            var yPosition = y * VIDEO_WALL_ITEM_SIZE;
-            yPosition = yPosition - (VIDEO_WALL_HEIGHT / 2) + (VIDEO_WALL_ITEM_SIZE / 2);
-
-            imageView.position = [0,0,0];
-
-            animOptions.delay+=0.25;
-            anim.animateTo( imageView,"position",[xPosition, yPosition, 0.0],animOptions);
-            // store the actor
-            VIDEO_WALL_ACTORS[actorIndex] = imageView;
-
-            // Add to the video wall root actor.
-            wallRootActor.add(imageView);
-        }
-    }
-    anim.play();
-}
-
-function Initialise() {
-
-    daliApp.loadNetflixImages();
-
-    daliApp.createActors();
-}
-
-function actorLoaded( error, data )
-{
-  for( i = 0; i < data.length; ++i )
-  {
-    var entry = data[i];
-
-   if( entry.poster )
-    {
-      posters.push(entry.poster);
-      //console.log(" entry = " + entry.poster );
-    }
-  }
-  Initialise();
-
-}
-
-
-netflixRoulette.actor('nicolas', actorLoaded );
-
index f224c56..7f6173e 100644 (file)
 
 var imageDir = "./";
 
-var dali = require('./build/Release/dali')( options );
+
+// desktop
+//var dali = require('./build/Release/dali')( options );
+
+// target
+var dali = require('dali')( options );
 
 var daliApp = {};
 
diff --git a/packaging/dali-addon.spec b/packaging/dali-addon.spec
new file mode 100644 (file)
index 0000000..35f956c
--- /dev/null
@@ -0,0 +1,97 @@
+Name:       dali-addon
+Summary:    DALi module for Node.JS
+Version:    0.0.1
+Release:    1
+Group:      Development/Libraries
+License:    Apache License, Version 2.0
+URL:        https://review.tizen.org/gerrit/#/q/project:platform/core/uifw/dali-toolkit
+Distribution: Tizen
+Source0:    %{name}-%{version}.tar.gz
+Requires:   dali
+
+# Do NOT put an adaptor here - it is an application choice which adaptor to use
+BuildRequires:  pkgconfig
+BuildRequires:  pkgconfig(dlog)
+BuildRequires:  cmake
+BuildRequires:  pkgconfig(dali)
+BuildRequires:  pkgconfig(dali-core)
+BuildRequires:  pkgconfig(dali-toolkit)
+BuildRequires:  nodejs-devel
+
+%description
+DALi Node.JS addon
+
+
+##############################
+# Define directory locations
+# Currently the addon is part of toolkit repository
+##############################
+# addonDir = node-addon directory inside BUILD directory
+%define addonDir %{_builddir}/dali-addon-%{version}/node-addon
+
+# addonBuildDir = node-addon build directory inside BUILD directory
+%define addonBuildDir %{addonDir}/build/tizen
+
+# installPath = the directory the node-addon is installed into
+# we use /usr/lib/node so the developer can do var dali = require('dali');
+%define installPath /usr/lib/node
+
+# full install path, for GBS were are installing into a BUILDROOT
+%define installDir %{buildroot}%{installPath}
+
+##############################
+# Preparation
+##############################
+%prep
+
+# setup = cd build area, decompresses source, sets all file permisions to be owned by root ( q = quiet )
+%setup -q
+
+##############################
+# Build
+##############################
+%build
+
+echo "----------------Build directory = " %{addonBuildDir}
+PREFIX="/usr"
+CXXFLAGS+=" -std=c++11 -Wall -g -Os -fPIC -fvisibility-inlines-hidden -fdata-sections -ffunction-sections "
+LDFLAGS+=" -Wl,--rpath=$PREFIX/lib -Wl,--as-needed -Wl,--gc-sections -Wl,-Bsymbolic-functions "
+
+cd "%{addonBuildDir}"
+cmake -DCMAKE_INSTALL_PREFIX=%{installPath}  -DGBSBuild:BOOL=1 .
+make
+
+##############################
+# Installation
+##############################
+%install
+rm -rf %{buildroot}
+
+cd "%{addonBuildDir}"
+%make_install
+cp %{addonDir}/line-mesh.js %{installDir}/line-mesh.js
+
+
+%clean
+rm -rf %{buildroot}
+
+##############################
+# Post Install
+##############################
+%post
+exit 0
+
+
+##############################
+# Post Uninstall
+##############################
+%postun
+
+##############################
+# Files in Binary Packages
+##############################
+%files
+%defattr(-,root,root,-)
+%{installPath}
+
+