From ffbcf7a739dedb751a0a257fee142650e53bce60 Mon Sep 17 00:00:00 2001 From: Nick Holland Date: Wed, 9 Dec 2015 17:42:55 +0000 Subject: [PATCH] Support for building Node Addon for target 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 | 2 + node-addon/README | 23 ++++ node-addon/build/config.gypi | 46 -------- node-addon/build/dali.target.mk | 201 ---------------------------------- node-addon/build/tizen/CMakeLists.txt | 138 +++++++++++++++++++++++ node-addon/line-mesh.js | 6 +- node-addon/mesh-morph.js | 7 +- node-addon/point-mesh.js | 7 +- node-addon/test.js | 149 ------------------------- node-addon/texture-mesh.js | 7 +- packaging/dali-addon.spec | 97 ++++++++++++++++ 11 files changed, 283 insertions(+), 400 deletions(-) create mode 100644 node-addon/README delete mode 100644 node-addon/build/config.gypi delete mode 100644 node-addon/build/dali.target.mk create mode 100644 node-addon/build/tizen/CMakeLists.txt delete mode 100644 node-addon/test.js create mode 100644 packaging/dali-addon.spec diff --git a/.gitignore b/.gitignore index 96a5860..d2fa7ba 100644 --- a/.gitignore +++ b/.gitignore @@ -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 index 0000000..0a66f1e --- /dev/null +++ b/node-addon/README @@ -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 index 050745d..0000000 --- a/node-addon/build/config.gypi +++ /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 index d2acf12..0000000 --- a/node-addon/build/dali.target.mk +++ /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 index 0000000..bd4dd2c --- /dev/null +++ b/node-addon/build/tizen/CMakeLists.txt @@ -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) diff --git a/node-addon/line-mesh.js b/node-addon/line-mesh.js index 9dd4053..f1c9532 100644 --- a/node-addon/line-mesh.js +++ b/node-addon/line-mesh.js @@ -17,7 +17,11 @@ '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 = {}; diff --git a/node-addon/mesh-morph.js b/node-addon/mesh-morph.js index 1fa1fb6..dd4527a 100644 --- a/node-addon/mesh-morph.js +++ b/node-addon/mesh-morph.js @@ -17,7 +17,12 @@ '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 = {}; diff --git a/node-addon/point-mesh.js b/node-addon/point-mesh.js index afe6e3a..f9c7186 100644 --- a/node-addon/point-mesh.js +++ b/node-addon/point-mesh.js @@ -19,7 +19,12 @@ 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 index 25bbd48..0000000 --- a/node-addon/test.js +++ /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 ); - diff --git a/node-addon/texture-mesh.js b/node-addon/texture-mesh.js index f224c56..7f6173e 100644 --- a/node-addon/texture-mesh.js +++ b/node-addon/texture-mesh.js @@ -19,7 +19,12 @@ 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 index 0000000..35f956c --- /dev/null +++ b/packaging/dali-addon.spec @@ -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} + + -- 2.7.4