diff --git a/.gitignore b/.gitignore index 05fbd26..04e9fcc 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,11 @@ build/ # Temp files *.swp *~ + +# npmpub files +src/mraajsJAVASCRIPT_wrap.cxx +src/version.c +package.json +binding.gyp +READMEFIRST +npm-debug.log diff --git a/docs/npm.md b/docs/npm.md new file mode 100644 index 0000000..49e75c1 --- /dev/null +++ b/docs/npm.md @@ -0,0 +1,27 @@ +mraa NPM pkg {#npmpkg} +============ + +What you are looking at is a tarball made after 'make npmpkg' has been run on +our build system. It contains a few prebuilt files in order to build easily +with node-gyp on most systems. Note that this is not the preffered way of +building libmraa and if you'd like to contribute, please learn how the build +system works and get your sources from git. + +Any patches for mraajsJAVASCRIPT_wrap.cxx or version.c will be ignored as these +are automatically generated files. When you execute a build from node-gyp/npm +you do not generate the mraajsJAVASCRIPT_wrap.cxx file but rather use one that +we have generated for you. + +Recreating tarball +------------------ + +From a checkout of mraa you can do the following to 'generate' this tarball + +~~~~~~~~~~~~~{.sh} +mkdir build +cd build +cmake -DBUILDSWIGNODE=ON .. +make npmpkg +cd ../ +tar czv --exclude='build/*' --exclude='.git/*' -f /tmp/mraa.tar.gz . +~~~~~~~~~~~~~ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index da8bb17..63d15f8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,10 +1,14 @@ -include_directories( +set (mraa_LIB_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/api ${PROJECT_SOURCE_DIR}/api/mraa ${PROJECT_SOURCE_DIR}/include ) -set (mraa_LIB_SRCS +include_directories( + ${mraa_LIB_INCLUDE_DIRS} +) + +set (mraa_LIB_SRCS_NOAUTO ${PROJECT_SOURCE_DIR}/src/mraa.c ${PROJECT_SOURCE_DIR}/src/gpio/gpio.c ${PROJECT_SOURCE_DIR}/src/i2c/i2c.c @@ -17,6 +21,10 @@ set (mraa_LIB_SRCS ${PROJECT_SOURCE_DIR}/src/intel_edison_fab_c.c ${PROJECT_SOURCE_DIR}/src/intel_de3815.c ${PROJECT_SOURCE_DIR}/src/intel_minnow_max.c +) + +set (mraa_LIB_SRCS + ${mraa_LIB_SRCS_NOAUTO} # autogenerated version file ${CMAKE_CURRENT_BINARY_DIR}/version.c ) diff --git a/src/javascript/CMakeLists.txt b/src/javascript/CMakeLists.txt index 1754979..b25520a 100644 --- a/src/javascript/CMakeLists.txt +++ b/src/javascript/CMakeLists.txt @@ -37,5 +37,32 @@ macro (mraa_CREATE_INSTALL_PACKAGE_JSON generated_file install_location) endmacro (mraa_CREATE_INSTALL_PACKAGE_JSON) mraa_create_install_package_json (package.json lib/node_modules/mraa) +macro (mraa_CREATE_BINDING_GYP generated_file) + set (mraa_LIB_SRCS_GYP "") + foreach (srcfile ${mraa_LIB_SRCS_NOAUTO}) + file (RELATIVE_PATH rel ${CMAKE_SOURCE_DIR} ${srcfile}) + set (mraa_LIB_SRCS_GYP "'${rel}',\n${mraa_LIB_SRCS_GYP}") + endforeach (srcfile) + foreach (includedir ${mraa_LIB_INCLUDE_DIRS}) + file (RELATIVE_PATH rel ${CMAKE_SOURCE_DIR} ${includedir}) + set (mraa_LIB_INCLUDE_DIRS_GYP "'${rel}',\n${mraa_LIB_INCLUDE_DIRS_GYP}") + endforeach (includedir) + configure_file (${generated_file}.cmake ${CMAKE_CURRENT_BINARY_DIR}/${generated_file} @ONLY) +endmacro (mraa_CREATE_BINDING_GYP) +mraa_create_binding_gyp (binding.gyp) + +add_custom_target (npmpkg) +add_custom_command (TARGET npmpkg POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_CURRENT_BINARY_DIR}/mraajsJAVASCRIPT_wrap.cxx ${CMAKE_SOURCE_DIR}/src + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_BINARY_DIR}/src/version.c ${CMAKE_SOURCE_DIR}/src + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_CURRENT_BINARY_DIR}/package.json ${CMAKE_SOURCE_DIR} + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_CURRENT_BINARY_DIR}/binding.gyp ${CMAKE_SOURCE_DIR} + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_SOURCE_DIR}/docs/npm.md ${CMAKE_SOURCE_DIR}/READMEFIRST) +add_dependencies (npmpkg mraajs) + install (FILES ${CMAKE_CURRENT_BINARY_DIR}/mraa.node DESTINATION lib/node_modules/mraa) diff --git a/src/javascript/binding.gyp.cmake b/src/javascript/binding.gyp.cmake new file mode 100644 index 0000000..54beb08 --- /dev/null +++ b/src/javascript/binding.gyp.cmake @@ -0,0 +1,18 @@ +{ + 'targets': [ + { + 'target_name': 'mraa', + 'sources': [ +@mraa_LIB_SRCS_GYP@ +'src/version.c', +'src/mraajsJAVASCRIPT_wrap.cxx' ], + 'include_dirs': [ +@mraa_LIB_INCLUDE_DIRS_GYP@ + ], + 'cflags_cc!': [ '-fno-rtti', '-fno-exceptions' ], + 'cflags!': [ '-fno-exceptions' ], + 'defines' : [ 'SWIG', + 'SWIGNODE' ], + } + ] +} diff --git a/src/javascript/package.json.cmake b/src/javascript/package.json.cmake index dc1f9a2..3c5daea 100644 --- a/src/javascript/package.json.cmake +++ b/src/javascript/package.json.cmake @@ -1,9 +1,22 @@ { "name" : "mraa", + "description": "IO library that helps you use I2c, SPI, gpio, uart, pwm, analog inputs (aio) and more on a number of platforms such as the Intel galileo, the Intel edison and others", + "keywords":["gpio", "edison","galileo","io", "mraajs", "spi", "i2c", "minnow", "intel"], + "homepage": "http://github.com/intel-iot-devkit/mraa", + + + "repository" : { + "type" : "git", + "url" : "http://github.com/intel-iot-devkit/mraa.git" + }, "main" : "./mraa.node", "engines": { "node": ">= 1.0.x" }, + "bugs": { + "url" : "http://github.com/intel-iot-devkit/mraa/issues" + }, "license": "MIT", - "version": "@VERSION@" + "version": "@VERSION@", + "authors": "See github.com/intel-iot-devkit/mraa/graphs/contributors" }