diff --git a/release/arch/arm/build-arm.sh b/release/arch/arm/build-arm.sh index 6317bbd194a098359447995c271dd12c2cdc2d8f..cfed6749021c29b782d863c9db4c84e7ea900a07 100755 --- a/release/arch/arm/build-arm.sh +++ b/release/arch/arm/build-arm.sh @@ -4,9 +4,11 @@ export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm + # Prepare +NODE_VERSION=8.9.1 ARCH="`uname -m | sed -e \"s/86_//\"`" -NVER="v6.11.2" +NVER="v$NODE_VERSION" DUNITER_TAG=$1 # Folders @@ -15,6 +17,11 @@ ROOT="/tmp/build_duniter" DOWNLOADS="$ROOT/downloads" RELEASES="$ROOT/releases" +nvm install ${NODE_VERSION} +nvm use ${NODE_VERSION} + +echo "Version de NodeJS : `node -v`" + # ----------- # Clean sources + releases # ----------- @@ -39,10 +46,10 @@ DUNITER_VER="$DUNITER_TAG" DUNITER_DEB_VER=" $DUNITER_TAG" DUNITER_TAG="v$DUNITER_TAG" -echo "$ARCH" -echo "$NVER" -echo "$DUNITER_VER" -echo "$DUNITER_DEB_VER" +echo "Arch: $ARCH" +echo "Nver: $NVER" +echo "DuniterVer: $DUNITER_VER" +echo "DebianVer: $DUNITER_DEB_VER" if [ ! -f "$DOWNLOADS/node-${NVER}-linux-${ARCH}.tar.gz" ]; then # Download Node.js and package it with the sources diff --git a/release/arch/debian/0.24.4_common.gypi b/release/arch/debian/0.24.4_common.gypi new file mode 100644 index 0000000000000000000000000000000000000000..d753e62ae583f9ee7aad7e686681647104568baa --- /dev/null +++ b/release/arch/debian/0.24.4_common.gypi @@ -0,0 +1,521 @@ +{ + 'variables': { + 'asan%': 0, + 'werror': '', # Turn off -Werror in V8 build. + 'visibility%': 'hidden', # V8's visibility setting + 'target_arch%': 'ia32', # set v8's target architecture + 'host_arch%': 'ia32', # set v8's host architecture + 'want_separate_host_toolset%': 0, # V8 should not build target and host + 'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds + 'component%': 'static_library', # NB. these names match with what V8 expects + 'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way + 'python%': 'python', + + 'node_shared%': 'true', + 'force_dynamic_crt%': 0, + 'node_use_v8_platform%': 'true', + 'node_use_bundled_v8%': 'true', + 'node_module_version%': '', + 'mac_product_name': 'nwjs', + + 'node_tag%': '', + 'uv_library%': 'static_library', + + 'openssl_fips': '', + + # Default to -O0 for debug builds. + 'v8_optimized_debug%': 0, + + # Enable disassembler for `--print-code` v8 options + 'v8_enable_disassembler': 1, + 'v8_host_byteorder': '<!(python -c "import sys; print sys.byteorder")', + + 'v8_use_external_startup_data': 1, + 'v8_enable_i18n_support%': 1, + #'icu_use_data_file_flag%': 1, + 'win_fastlink': 0, + + # Don't use ICU data file (icudtl.dat) from V8, we use our own. + 'icu_use_data_file_flag%': 0, + + 'conditions': [ + ['OS == "win"', { + 'os_posix': 0, + 'v8_postmortem_support%': 'false', + 'OBJ_DIR': '<(PRODUCT_DIR)/obj', + 'V8_BASE': '<(PRODUCT_DIR)/lib/v8_libbase.lib', + }, { + 'os_posix': 1, + 'v8_postmortem_support%': 'true', + 'clang_dir': '<!(cd <(DEPTH) && pwd -P)/third_party/llvm-build/Release+Asserts', + }], + ['OS=="linux" and target_arch=="ia32"', { + 'sysroot': '<!(cd <(DEPTH) && pwd -P)/build/linux/debian_jessie_i386-sysroot', + }], + ['OS=="linux" and target_arch=="x64"', { + 'sysroot': '<!(cd <(DEPTH) && pwd -P)/build/linux/debian_jessie_amd64-sysroot', + }], + ['OS== "mac"', { + 'conditions': [ + ['GENERATOR=="ninja"', { + 'OBJ_DIR': '<(PRODUCT_DIR)/obj', + 'V8_BASE': '<(PRODUCT_DIR)/obj/deps/v8/src/libv8_base.a', + }, { + 'OBJ_DIR%': '<(PRODUCT_DIR)/obj.target', + 'V8_BASE%': '<(PRODUCT_DIR)/obj.target/deps/v8/src/libv8_base.a', + }], + ], + }], + ['openssl_fips != ""', { + 'OPENSSL_PRODUCT': 'libcrypto.a', + }, { + 'OPENSSL_PRODUCT': 'libopenssl.a', + }], + ['OS=="mac"', { + 'clang%': 1, + }, { + 'clang%': 0, + }], + ], + }, + + 'conditions': [ + [ 'clang==1 and OS != "mac"', { + 'make_global_settings': [ + ['CC', '<(clang_dir)/bin/clang'], + ['CXX', '<(clang_dir)/bin/clang++'], + ['CC.host', '$(CC)'], + ['CXX.host', '$(CXX)'], + ], + }], + ], + 'target_defaults': { + 'default_configuration': 'Release', + 'variables': { + 'conditions': [ + ['OS=="win" and component=="shared_library"', { + # See http://msdn.microsoft.com/en-us/library/aa652367.aspx + 'win_release_RuntimeLibrary%': '2', # 2 = /MD (nondebug DLL) + 'win_debug_RuntimeLibrary%': '3', # 3 = /MDd (debug DLL) + }, { + # See http://msdn.microsoft.com/en-us/library/aa652367.aspx + 'win_release_RuntimeLibrary%': '0', # 0 = /MT (nondebug static) + 'win_debug_RuntimeLibrary%': '1', # 1 = /MTd (debug static) + }], + ], + }, + 'configurations': { + 'Common_Base': { + 'abstract': 1, + 'msvs_settings':{ + 'VCCLCompilerTool': { + 'AdditionalOptions': [ + '/bigobj', + # Tell the compiler to crash on failures. This is undocumented + # and unsupported but very handy. + '/d2FastFail', + ], + }, + 'VCLinkerTool': { + # Add the default import libs. + 'AdditionalDependencies': [ + 'kernel32.lib', + 'gdi32.lib', + 'winspool.lib', + 'comdlg32.lib', + 'advapi32.lib', + 'shell32.lib', + 'ole32.lib', + 'oleaut32.lib', + 'user32.lib', + 'uuid.lib', + 'odbc32.lib', + 'odbccp32.lib', + 'delayimp.lib', + 'credui.lib', + 'dbghelp.lib', + 'shlwapi.lib', + 'winmm.lib', + ], + 'AdditionalOptions': [ + # Suggested by Microsoft Devrel to avoid + # LINK : fatal error LNK1248: image size (80000000) exceeds maximum allowable size (80000000) + # which started happening more regularly after VS2013 Update 4. + # Needs to be a bit lower for VS2015, or else errors out. + '/maxilksize:0x7ff00000', + # Tell the linker to crash on failures. + '/fastfail', + ], + }, + }, + 'conditions': [ + ['OS=="win" and win_fastlink==1 and MSVS_VERSION != "2013"', { + 'msvs_settings': { + 'VCLinkerTool': { + # /PROFILE is incompatible with /debug:fastlink + 'Profile': 'false', + 'AdditionalOptions': [ + # Tell VS 2015+ to create a PDB that references debug + # information in .obj and .lib files instead of copying + # it all. + '/DEBUG:FASTLINK', + ], + }, + }, + }], + ['OS=="win" and MSVS_VERSION == "2015"', { + 'msvs_settings': { + 'VCCLCompilerTool': { + 'AdditionalOptions': [ + # Work around crbug.com/526851, bug in VS 2015 RTM compiler. + '/Zc:sizedDealloc-', + # Disable thread-safe statics to avoid overhead and because + # they are disabled on other platforms. See crbug.com/587210 + # and -fno-threadsafe-statics. + '/Zc:threadSafeInit-', + ], + }, + }, + }], + ], + }, + 'Debug_Base': { + 'abstract': 1, + 'variables': { + 'v8_enable_handle_zapping': 1, + }, + 'defines': [ 'DEBUG', '_DEBUG', 'V8_ENABLE_CHECKS' ], + 'cflags': [ '-g', '-O0' ], + 'conditions': [ + ['target_arch=="x64"', { + 'msvs_configuration_platform': 'x64', + }], + ['OS=="aix"', { + 'cflags': [ '-gxcoff' ], + 'ldflags': [ '-Wl,-bbigtoc' ], + }], + ['OS == "android"', { + 'cflags': [ '-fPIE' ], + 'ldflags': [ '-fPIE', '-pie' ] + }], + ], + 'msvs_settings': { + 'VCCLCompilerTool': { + 'RuntimeLibrary': '<(win_debug_RuntimeLibrary)', # static debug + 'Optimization': 0, # /Od, no optimization + 'MinimalRebuild': 'false', + 'OmitFramePointers': 'false', + 'BasicRuntimeChecks': 3, # /RTC1 + }, + 'VCLinkerTool': { + 'LinkIncremental': 2, # enable incremental linking + }, + }, + 'xcode_settings': { + 'GCC_OPTIMIZATION_LEVEL': '0', # stop gyp from defaulting to -Os + }, + }, + 'Release_Base': { + 'abstract': 1, + 'variables': { + 'v8_enable_handle_zapping': 0, + }, + 'cflags': [ '-O3' ], + 'conditions': [ + ['target_arch=="x64"', { + 'msvs_configuration_platform': 'x64', + }], + ['OS=="solaris"', { + # pull in V8's postmortem metadata + 'ldflags': [ '-Wl,-z,allextract' ] + }], + ['OS!="mac" and OS!="win"', { + 'cflags': [ '-fno-omit-frame-pointer' ], + }], + ['OS == "android"', { + 'cflags': [ '-fPIE' ], + 'ldflags': [ '-fPIE', '-pie' ] + }], + ], + 'msvs_settings': { + 'VCCLCompilerTool': { + 'RuntimeLibrary': '<(win_release_RuntimeLibrary)', # static release + 'Optimization': 3, # /Ox, full optimization + 'FavorSizeOrSpeed': 1, # /Ot, favour speed over size + 'InlineFunctionExpansion': 2, # /Ob2, inline anything eligible + 'WholeProgramOptimization': 'true', # /GL, whole program optimization, needed for LTCG + 'OmitFramePointers': 'true', + 'EnableFunctionLevelLinking': 'true', + 'EnableIntrinsicFunctions': 'true', + 'RuntimeTypeInfo': 'false', + 'AdditionalOptions': [ + '/MP', # compile across multiple CPUs + ], + }, + 'VCLibrarianTool': { + 'AdditionalOptions': [ + '/LTCG', # link time code generation + ], + }, + 'VCLinkerTool': { + 'LinkTimeCodeGeneration': 1, # link-time code generation + 'OptimizeReferences': 2, # /OPT:REF + 'EnableCOMDATFolding': 2, # /OPT:ICF + 'LinkIncremental': 1, # disable incremental linking + }, + }, + }, + 'Debug': { + 'inherit_from': ['Common_Base', 'Debug_Base'], + }, + 'Release': { + 'inherit_from': ['Common_Base', 'Release_Base'], + }, + 'conditions': [ + [ 'OS=="win"', { + 'Debug_x64': { 'inherit_from': ['Debug'] }, + 'Release_x64': { 'inherit_from': ['Release'], }, + }], + ], + }, + # Forcibly disable -Werror. We support a wide range of compilers, it's + # simply not feasible to squelch all warnings, never mind that the + # libraries in deps/ are not under our control. + 'cflags!': ['-Werror'], + 'msvs_settings': { + 'VCCLCompilerTool': { + 'StringPooling': 'true', # pool string literals + 'DebugInformationFormat': 3, # Generate a PDB + 'WarningLevel': 3, + 'BufferSecurityCheck': 'true', + 'ExceptionHandling': 0, # /EHsc + 'SuppressStartupBanner': 'true', + # Disable "warning C4267: conversion from 'size_t' to 'int', + # possible loss of data". Many originate from our dependencies + # and their sheer number drowns out other, more legitimate warnings. + 'DisableSpecificWarnings': ['4267'], + 'WarnAsError': 'false', + }, + 'VCLibrarianTool': { + }, + 'VCLinkerTool': { + 'conditions': [ + ['target_arch=="ia32"', { + 'TargetMachine' : 1, # /MACHINE:X86 + 'target_conditions': [ + ['_type=="executable"', { + 'AdditionalOptions': [ '/SubSystem:Console,"5.01"' ], + }], + ], + }], + ['target_arch=="x64"', { + 'TargetMachine' : 17, # /MACHINE:AMD64 + 'target_conditions': [ + ['_type=="executable"', { + 'AdditionalOptions': [ '/SubSystem:Console,"5.02"' ], + }], + ], + }], + ], + 'GenerateDebugInformation': 'true', + 'GenerateMapFile': 'true', # /MAP + 'MapExports': 'true', # /MAPINFO:EXPORTS + 'RandomizedBaseAddress': 2, # enable ASLR + 'DataExecutionPrevention': 2, # enable DEP + 'AllowIsolation': 'true', + 'SuppressStartupBanner': 'true', + }, + }, + 'msvs_disabled_warnings': [4351, 4355, 4800, 4595], + 'conditions': [ + ['asan == 1 and OS != "mac"', { + 'cflags+': [ + '-fno-omit-frame-pointer', + '-fsanitize=address', + '-DLEAK_SANITIZER' + ], + 'cflags!': [ '-fomit-frame-pointer' ], + 'ldflags': [ '-fsanitize=address' ], + }], + ['asan == 1 and OS == "mac"', { + 'xcode_settings': { + 'OTHER_CFLAGS+': [ + '-fno-omit-frame-pointer', + '-gline-tables-only', + '-fsanitize=address', + '-DLEAK_SANITIZER' + ], + 'OTHER_CFLAGS!': [ + '-fomit-frame-pointer', + ], + }, + 'target_conditions': [ + ['_type!="static_library"', { + 'xcode_settings': {'OTHER_LDFLAGS': ['-fsanitize=address']}, + }], + ], + }], + ['OS == "win"', { + 'msvs_cygwin_shell': 0, # prevent actions from trying to use cygwin + 'defines': [ + 'WIN32', + # we don't really want VC++ warning us about + # how dangerous C functions are... + '_CRT_SECURE_NO_DEPRECATE', + # ... or that C implementations shouldn't use + # POSIX names + '_CRT_NONSTDC_NO_DEPRECATE', + # Make sure the STL doesn't try to use exceptions + '_HAS_EXCEPTIONS=0', + #'BUILDING_V8_SHARED=1', + 'BUILDING_UV_SHARED=1', + ], + }], + [ 'OS in "linux freebsd openbsd solaris aix"', { + 'cflags': [ '-pthread'], + 'ldflags': [ '-pthread'], + }], + [ 'OS in "linux freebsd openbsd solaris android aix"', { + 'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ], + 'cflags_cc': [ '-fno-rtti', '-fno-exceptions', '-std=gnu++0x' ], + 'ldflags': [ '-rdynamic' ], + 'target_conditions': [ + # The 1990s toolchain on SmartOS can't handle thin archives. + ['_type=="static_library" and OS=="solaris"', { + 'standalone_static_library': 1, + }], + ['OS=="openbsd"', { + 'ldflags': [ '-Wl,-z,wxneeded' ], + }], + ], + 'conditions': [ + [ 'target_arch=="ia32"', { + 'cflags': [ '-m32', '--sysroot=<(sysroot)' ], + 'ldflags': [ '-m32','--sysroot=<(sysroot)','<!(<(DEPTH)/content/nw/tools/sysroot_ld_path.sh <(sysroot))' ], + }], + [ 'target_arch=="x32"', { + 'cflags': [ '-mx32' ], + 'ldflags': [ '-mx32' ], + }], + [ 'target_arch=="x64"', { + 'cflags': [ '-m64' ], + 'ldflags': [ '-m64' ], + }], + [ 'target_arch=="ppc" and OS!="aix"', { + 'cflags': [ '-m32' ], + 'ldflags': [ '-m32' ], + }], + [ 'target_arch=="ppc64" and OS!="aix"', { + 'cflags': [ '-m64', '-mminimal-toc' ], + 'ldflags': [ '-m64' ], + }], + [ 'target_arch=="s390"', { + 'cflags': [ '-m31', '-march=z196' ], + 'ldflags': [ '-m31', '-march=z196' ], + }], + [ 'target_arch=="s390x"', { + 'cflags': [ '-m64', '-march=z196' ], + 'ldflags': [ '-m64', '-march=z196' ], + }], + [ 'OS=="solaris"', { + 'cflags': [ '-pthreads' ], + 'ldflags': [ '-pthreads' ], + 'cflags!': [ '-pthread' ], + 'ldflags!': [ '-pthread' ], + }], + [ 'OS=="aix"', { + 'conditions': [ + [ 'target_arch=="ppc"', { + 'ldflags': [ '-Wl,-bmaxdata:0x60000000/dsa' ], + }], + [ 'target_arch=="ppc64"', { + 'cflags': [ '-maix64' ], + 'ldflags': [ '-maix64' ], + }], + ], + 'ldflags': [ '-Wl,-bbigtoc' ], + 'ldflags!': [ '-rdynamic' ], + }], + [ 'node_shared=="true"', { + 'cflags': [ '-fPIC' ], + }], + ], + }], + ['OS=="android"', { + 'target_conditions': [ + ['_toolset=="target"', { + 'defines': [ '_GLIBCXX_USE_C99_MATH' ], + 'libraries': [ '-llog' ], + }], + ], + }], + ['OS=="mac"', { + 'defines': ['_DARWIN_USE_64_BIT_INODE=1'], + 'xcode_settings': { + 'ALWAYS_SEARCH_USER_PATHS': 'NO', + 'GCC_CW_ASM_SYNTAX': 'NO', # No -fasm-blocks + 'GCC_DYNAMIC_NO_PIC': 'NO', # No -mdynamic-no-pic + # (Equivalent to -fPIC) + 'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', # -fno-exceptions + 'GCC_ENABLE_CPP_RTTI': 'NO', # -fno-rtti + 'GCC_ENABLE_PASCAL_STRINGS': 'NO', # No -mpascal-strings + 'GCC_THREADSAFE_STATICS': 'NO', # -fno-threadsafe-statics + 'PREBINDING': 'NO', # No -Wl,-prebind + 'MACOSX_DEPLOYMENT_TARGET': '10.7', # -mmacosx-version-min=10.7 + 'USE_HEADERMAP': 'NO', + 'OTHER_CFLAGS': [ + '-fno-strict-aliasing', + ], + 'WARNING_CFLAGS': [ + '-Wall', + '-Wendif-labels', + '-W', + '-Wno-unused-parameter', + ], + }, + 'target_conditions': [ + ['_type!="static_library"', { + 'xcode_settings': { + 'OTHER_LDFLAGS': [ + '-Wl,-no_pie', + '-Wl,-search_paths_first', + ], + }, + }], + ], + 'conditions': [ + ['target_arch=="ia32"', { + 'xcode_settings': {'ARCHS': ['i386']}, + }], + ['target_arch=="x64"', { + 'xcode_settings': {'ARCHS': ['x86_64']}, + }], + ['clang==1', { + 'xcode_settings': { + 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0', + 'CLANG_CXX_LANGUAGE_STANDARD': 'gnu++0x', # -std=gnu++0x + 'CLANG_CXX_LIBRARY': 'libc++', + }, + }], + ], + }], + ['OS=="freebsd" and node_use_dtrace=="true"', { + 'libraries': [ '-lelf' ], + }], + ['OS=="freebsd"', { + 'conditions': [ + ['llvm_version < "4.0"', { + # Use this flag because on FreeBSD std::pairs copy constructor is non-trivial. + # Doesn't apply to llvm 4.0 (FreeBSD 11.1) or later. + # Refs: https://lists.freebsd.org/pipermail/freebsd-toolchain/2016-March/002094.html + # Refs: https://svnweb.freebsd.org/ports/head/www/node/Makefile?revision=444555&view=markup + 'cflags': [ '-D_LIBCPP_TRIVIAL_PAIR_COPY_CTOR=1' ], + }], + ], + 'ldflags': [ + '-Wl,--export-dynamic', + ], + }] + ], + } +} \ No newline at end of file diff --git a/release/arch/debian/build-deb.sh b/release/arch/debian/build-deb.sh index fca8b249710fe58c9534cd7d8009930bd0ee2ef7..72540f48c54beb46a3f8af28ec7e368e7567feac 100644 --- a/release/arch/debian/build-deb.sh +++ b/release/arch/debian/build-deb.sh @@ -5,14 +5,19 @@ export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm # Prepare -NVER=`node -v` -ADDON_VERSION=48 -NW_VERSION=0.17.6 +NODE_VERSION=8.9.1 +NVER="v$NODE_VERSION" DUNITER_TAG=$1 +ADDON_VERSION=57 +NW_VERSION=0.24.4 NW_RELEASE="v${NW_VERSION}" NW="nwjs-${NW_RELEASE}-linux-x64" NW_GZ="${NW}.tar.gz" +nvm install ${NVER} +nvm use ${NVER} +npm install -g node-pre-gyp +npm install -g nw-gyp # Folders ROOT=`pwd` DOWNLOADS="$ROOT/downloads" @@ -103,6 +108,11 @@ cd "$RELEASES/desktop_" echo "$NW_RELEASE" cd "$RELEASES/desktop_/node_modules/wotb" + +#Â FIX: bug of nw.js, we need to patch first. +#Â TODO: remove this patch once a correct version of Nw.js is out (NodeJS 8 or 9 if the above modules are compliant) +cp /vagrant/0.24.4_common.gypi ~/.nw-gyp/0.24.4/common.gypi + #yarn --build-from-source node-pre-gyp --runtime=node-webkit --target=$NW_VERSION configure node-pre-gyp --runtime=node-webkit --target=$NW_VERSION build diff --git a/release/arch/windows/0.24.4_common.gypi b/release/arch/windows/0.24.4_common.gypi new file mode 100644 index 0000000000000000000000000000000000000000..d753e62ae583f9ee7aad7e686681647104568baa --- /dev/null +++ b/release/arch/windows/0.24.4_common.gypi @@ -0,0 +1,521 @@ +{ + 'variables': { + 'asan%': 0, + 'werror': '', # Turn off -Werror in V8 build. + 'visibility%': 'hidden', # V8's visibility setting + 'target_arch%': 'ia32', # set v8's target architecture + 'host_arch%': 'ia32', # set v8's host architecture + 'want_separate_host_toolset%': 0, # V8 should not build target and host + 'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds + 'component%': 'static_library', # NB. these names match with what V8 expects + 'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way + 'python%': 'python', + + 'node_shared%': 'true', + 'force_dynamic_crt%': 0, + 'node_use_v8_platform%': 'true', + 'node_use_bundled_v8%': 'true', + 'node_module_version%': '', + 'mac_product_name': 'nwjs', + + 'node_tag%': '', + 'uv_library%': 'static_library', + + 'openssl_fips': '', + + # Default to -O0 for debug builds. + 'v8_optimized_debug%': 0, + + # Enable disassembler for `--print-code` v8 options + 'v8_enable_disassembler': 1, + 'v8_host_byteorder': '<!(python -c "import sys; print sys.byteorder")', + + 'v8_use_external_startup_data': 1, + 'v8_enable_i18n_support%': 1, + #'icu_use_data_file_flag%': 1, + 'win_fastlink': 0, + + # Don't use ICU data file (icudtl.dat) from V8, we use our own. + 'icu_use_data_file_flag%': 0, + + 'conditions': [ + ['OS == "win"', { + 'os_posix': 0, + 'v8_postmortem_support%': 'false', + 'OBJ_DIR': '<(PRODUCT_DIR)/obj', + 'V8_BASE': '<(PRODUCT_DIR)/lib/v8_libbase.lib', + }, { + 'os_posix': 1, + 'v8_postmortem_support%': 'true', + 'clang_dir': '<!(cd <(DEPTH) && pwd -P)/third_party/llvm-build/Release+Asserts', + }], + ['OS=="linux" and target_arch=="ia32"', { + 'sysroot': '<!(cd <(DEPTH) && pwd -P)/build/linux/debian_jessie_i386-sysroot', + }], + ['OS=="linux" and target_arch=="x64"', { + 'sysroot': '<!(cd <(DEPTH) && pwd -P)/build/linux/debian_jessie_amd64-sysroot', + }], + ['OS== "mac"', { + 'conditions': [ + ['GENERATOR=="ninja"', { + 'OBJ_DIR': '<(PRODUCT_DIR)/obj', + 'V8_BASE': '<(PRODUCT_DIR)/obj/deps/v8/src/libv8_base.a', + }, { + 'OBJ_DIR%': '<(PRODUCT_DIR)/obj.target', + 'V8_BASE%': '<(PRODUCT_DIR)/obj.target/deps/v8/src/libv8_base.a', + }], + ], + }], + ['openssl_fips != ""', { + 'OPENSSL_PRODUCT': 'libcrypto.a', + }, { + 'OPENSSL_PRODUCT': 'libopenssl.a', + }], + ['OS=="mac"', { + 'clang%': 1, + }, { + 'clang%': 0, + }], + ], + }, + + 'conditions': [ + [ 'clang==1 and OS != "mac"', { + 'make_global_settings': [ + ['CC', '<(clang_dir)/bin/clang'], + ['CXX', '<(clang_dir)/bin/clang++'], + ['CC.host', '$(CC)'], + ['CXX.host', '$(CXX)'], + ], + }], + ], + 'target_defaults': { + 'default_configuration': 'Release', + 'variables': { + 'conditions': [ + ['OS=="win" and component=="shared_library"', { + # See http://msdn.microsoft.com/en-us/library/aa652367.aspx + 'win_release_RuntimeLibrary%': '2', # 2 = /MD (nondebug DLL) + 'win_debug_RuntimeLibrary%': '3', # 3 = /MDd (debug DLL) + }, { + # See http://msdn.microsoft.com/en-us/library/aa652367.aspx + 'win_release_RuntimeLibrary%': '0', # 0 = /MT (nondebug static) + 'win_debug_RuntimeLibrary%': '1', # 1 = /MTd (debug static) + }], + ], + }, + 'configurations': { + 'Common_Base': { + 'abstract': 1, + 'msvs_settings':{ + 'VCCLCompilerTool': { + 'AdditionalOptions': [ + '/bigobj', + # Tell the compiler to crash on failures. This is undocumented + # and unsupported but very handy. + '/d2FastFail', + ], + }, + 'VCLinkerTool': { + # Add the default import libs. + 'AdditionalDependencies': [ + 'kernel32.lib', + 'gdi32.lib', + 'winspool.lib', + 'comdlg32.lib', + 'advapi32.lib', + 'shell32.lib', + 'ole32.lib', + 'oleaut32.lib', + 'user32.lib', + 'uuid.lib', + 'odbc32.lib', + 'odbccp32.lib', + 'delayimp.lib', + 'credui.lib', + 'dbghelp.lib', + 'shlwapi.lib', + 'winmm.lib', + ], + 'AdditionalOptions': [ + # Suggested by Microsoft Devrel to avoid + # LINK : fatal error LNK1248: image size (80000000) exceeds maximum allowable size (80000000) + # which started happening more regularly after VS2013 Update 4. + # Needs to be a bit lower for VS2015, or else errors out. + '/maxilksize:0x7ff00000', + # Tell the linker to crash on failures. + '/fastfail', + ], + }, + }, + 'conditions': [ + ['OS=="win" and win_fastlink==1 and MSVS_VERSION != "2013"', { + 'msvs_settings': { + 'VCLinkerTool': { + # /PROFILE is incompatible with /debug:fastlink + 'Profile': 'false', + 'AdditionalOptions': [ + # Tell VS 2015+ to create a PDB that references debug + # information in .obj and .lib files instead of copying + # it all. + '/DEBUG:FASTLINK', + ], + }, + }, + }], + ['OS=="win" and MSVS_VERSION == "2015"', { + 'msvs_settings': { + 'VCCLCompilerTool': { + 'AdditionalOptions': [ + # Work around crbug.com/526851, bug in VS 2015 RTM compiler. + '/Zc:sizedDealloc-', + # Disable thread-safe statics to avoid overhead and because + # they are disabled on other platforms. See crbug.com/587210 + # and -fno-threadsafe-statics. + '/Zc:threadSafeInit-', + ], + }, + }, + }], + ], + }, + 'Debug_Base': { + 'abstract': 1, + 'variables': { + 'v8_enable_handle_zapping': 1, + }, + 'defines': [ 'DEBUG', '_DEBUG', 'V8_ENABLE_CHECKS' ], + 'cflags': [ '-g', '-O0' ], + 'conditions': [ + ['target_arch=="x64"', { + 'msvs_configuration_platform': 'x64', + }], + ['OS=="aix"', { + 'cflags': [ '-gxcoff' ], + 'ldflags': [ '-Wl,-bbigtoc' ], + }], + ['OS == "android"', { + 'cflags': [ '-fPIE' ], + 'ldflags': [ '-fPIE', '-pie' ] + }], + ], + 'msvs_settings': { + 'VCCLCompilerTool': { + 'RuntimeLibrary': '<(win_debug_RuntimeLibrary)', # static debug + 'Optimization': 0, # /Od, no optimization + 'MinimalRebuild': 'false', + 'OmitFramePointers': 'false', + 'BasicRuntimeChecks': 3, # /RTC1 + }, + 'VCLinkerTool': { + 'LinkIncremental': 2, # enable incremental linking + }, + }, + 'xcode_settings': { + 'GCC_OPTIMIZATION_LEVEL': '0', # stop gyp from defaulting to -Os + }, + }, + 'Release_Base': { + 'abstract': 1, + 'variables': { + 'v8_enable_handle_zapping': 0, + }, + 'cflags': [ '-O3' ], + 'conditions': [ + ['target_arch=="x64"', { + 'msvs_configuration_platform': 'x64', + }], + ['OS=="solaris"', { + # pull in V8's postmortem metadata + 'ldflags': [ '-Wl,-z,allextract' ] + }], + ['OS!="mac" and OS!="win"', { + 'cflags': [ '-fno-omit-frame-pointer' ], + }], + ['OS == "android"', { + 'cflags': [ '-fPIE' ], + 'ldflags': [ '-fPIE', '-pie' ] + }], + ], + 'msvs_settings': { + 'VCCLCompilerTool': { + 'RuntimeLibrary': '<(win_release_RuntimeLibrary)', # static release + 'Optimization': 3, # /Ox, full optimization + 'FavorSizeOrSpeed': 1, # /Ot, favour speed over size + 'InlineFunctionExpansion': 2, # /Ob2, inline anything eligible + 'WholeProgramOptimization': 'true', # /GL, whole program optimization, needed for LTCG + 'OmitFramePointers': 'true', + 'EnableFunctionLevelLinking': 'true', + 'EnableIntrinsicFunctions': 'true', + 'RuntimeTypeInfo': 'false', + 'AdditionalOptions': [ + '/MP', # compile across multiple CPUs + ], + }, + 'VCLibrarianTool': { + 'AdditionalOptions': [ + '/LTCG', # link time code generation + ], + }, + 'VCLinkerTool': { + 'LinkTimeCodeGeneration': 1, # link-time code generation + 'OptimizeReferences': 2, # /OPT:REF + 'EnableCOMDATFolding': 2, # /OPT:ICF + 'LinkIncremental': 1, # disable incremental linking + }, + }, + }, + 'Debug': { + 'inherit_from': ['Common_Base', 'Debug_Base'], + }, + 'Release': { + 'inherit_from': ['Common_Base', 'Release_Base'], + }, + 'conditions': [ + [ 'OS=="win"', { + 'Debug_x64': { 'inherit_from': ['Debug'] }, + 'Release_x64': { 'inherit_from': ['Release'], }, + }], + ], + }, + # Forcibly disable -Werror. We support a wide range of compilers, it's + # simply not feasible to squelch all warnings, never mind that the + # libraries in deps/ are not under our control. + 'cflags!': ['-Werror'], + 'msvs_settings': { + 'VCCLCompilerTool': { + 'StringPooling': 'true', # pool string literals + 'DebugInformationFormat': 3, # Generate a PDB + 'WarningLevel': 3, + 'BufferSecurityCheck': 'true', + 'ExceptionHandling': 0, # /EHsc + 'SuppressStartupBanner': 'true', + # Disable "warning C4267: conversion from 'size_t' to 'int', + # possible loss of data". Many originate from our dependencies + # and their sheer number drowns out other, more legitimate warnings. + 'DisableSpecificWarnings': ['4267'], + 'WarnAsError': 'false', + }, + 'VCLibrarianTool': { + }, + 'VCLinkerTool': { + 'conditions': [ + ['target_arch=="ia32"', { + 'TargetMachine' : 1, # /MACHINE:X86 + 'target_conditions': [ + ['_type=="executable"', { + 'AdditionalOptions': [ '/SubSystem:Console,"5.01"' ], + }], + ], + }], + ['target_arch=="x64"', { + 'TargetMachine' : 17, # /MACHINE:AMD64 + 'target_conditions': [ + ['_type=="executable"', { + 'AdditionalOptions': [ '/SubSystem:Console,"5.02"' ], + }], + ], + }], + ], + 'GenerateDebugInformation': 'true', + 'GenerateMapFile': 'true', # /MAP + 'MapExports': 'true', # /MAPINFO:EXPORTS + 'RandomizedBaseAddress': 2, # enable ASLR + 'DataExecutionPrevention': 2, # enable DEP + 'AllowIsolation': 'true', + 'SuppressStartupBanner': 'true', + }, + }, + 'msvs_disabled_warnings': [4351, 4355, 4800, 4595], + 'conditions': [ + ['asan == 1 and OS != "mac"', { + 'cflags+': [ + '-fno-omit-frame-pointer', + '-fsanitize=address', + '-DLEAK_SANITIZER' + ], + 'cflags!': [ '-fomit-frame-pointer' ], + 'ldflags': [ '-fsanitize=address' ], + }], + ['asan == 1 and OS == "mac"', { + 'xcode_settings': { + 'OTHER_CFLAGS+': [ + '-fno-omit-frame-pointer', + '-gline-tables-only', + '-fsanitize=address', + '-DLEAK_SANITIZER' + ], + 'OTHER_CFLAGS!': [ + '-fomit-frame-pointer', + ], + }, + 'target_conditions': [ + ['_type!="static_library"', { + 'xcode_settings': {'OTHER_LDFLAGS': ['-fsanitize=address']}, + }], + ], + }], + ['OS == "win"', { + 'msvs_cygwin_shell': 0, # prevent actions from trying to use cygwin + 'defines': [ + 'WIN32', + # we don't really want VC++ warning us about + # how dangerous C functions are... + '_CRT_SECURE_NO_DEPRECATE', + # ... or that C implementations shouldn't use + # POSIX names + '_CRT_NONSTDC_NO_DEPRECATE', + # Make sure the STL doesn't try to use exceptions + '_HAS_EXCEPTIONS=0', + #'BUILDING_V8_SHARED=1', + 'BUILDING_UV_SHARED=1', + ], + }], + [ 'OS in "linux freebsd openbsd solaris aix"', { + 'cflags': [ '-pthread'], + 'ldflags': [ '-pthread'], + }], + [ 'OS in "linux freebsd openbsd solaris android aix"', { + 'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ], + 'cflags_cc': [ '-fno-rtti', '-fno-exceptions', '-std=gnu++0x' ], + 'ldflags': [ '-rdynamic' ], + 'target_conditions': [ + # The 1990s toolchain on SmartOS can't handle thin archives. + ['_type=="static_library" and OS=="solaris"', { + 'standalone_static_library': 1, + }], + ['OS=="openbsd"', { + 'ldflags': [ '-Wl,-z,wxneeded' ], + }], + ], + 'conditions': [ + [ 'target_arch=="ia32"', { + 'cflags': [ '-m32', '--sysroot=<(sysroot)' ], + 'ldflags': [ '-m32','--sysroot=<(sysroot)','<!(<(DEPTH)/content/nw/tools/sysroot_ld_path.sh <(sysroot))' ], + }], + [ 'target_arch=="x32"', { + 'cflags': [ '-mx32' ], + 'ldflags': [ '-mx32' ], + }], + [ 'target_arch=="x64"', { + 'cflags': [ '-m64' ], + 'ldflags': [ '-m64' ], + }], + [ 'target_arch=="ppc" and OS!="aix"', { + 'cflags': [ '-m32' ], + 'ldflags': [ '-m32' ], + }], + [ 'target_arch=="ppc64" and OS!="aix"', { + 'cflags': [ '-m64', '-mminimal-toc' ], + 'ldflags': [ '-m64' ], + }], + [ 'target_arch=="s390"', { + 'cflags': [ '-m31', '-march=z196' ], + 'ldflags': [ '-m31', '-march=z196' ], + }], + [ 'target_arch=="s390x"', { + 'cflags': [ '-m64', '-march=z196' ], + 'ldflags': [ '-m64', '-march=z196' ], + }], + [ 'OS=="solaris"', { + 'cflags': [ '-pthreads' ], + 'ldflags': [ '-pthreads' ], + 'cflags!': [ '-pthread' ], + 'ldflags!': [ '-pthread' ], + }], + [ 'OS=="aix"', { + 'conditions': [ + [ 'target_arch=="ppc"', { + 'ldflags': [ '-Wl,-bmaxdata:0x60000000/dsa' ], + }], + [ 'target_arch=="ppc64"', { + 'cflags': [ '-maix64' ], + 'ldflags': [ '-maix64' ], + }], + ], + 'ldflags': [ '-Wl,-bbigtoc' ], + 'ldflags!': [ '-rdynamic' ], + }], + [ 'node_shared=="true"', { + 'cflags': [ '-fPIC' ], + }], + ], + }], + ['OS=="android"', { + 'target_conditions': [ + ['_toolset=="target"', { + 'defines': [ '_GLIBCXX_USE_C99_MATH' ], + 'libraries': [ '-llog' ], + }], + ], + }], + ['OS=="mac"', { + 'defines': ['_DARWIN_USE_64_BIT_INODE=1'], + 'xcode_settings': { + 'ALWAYS_SEARCH_USER_PATHS': 'NO', + 'GCC_CW_ASM_SYNTAX': 'NO', # No -fasm-blocks + 'GCC_DYNAMIC_NO_PIC': 'NO', # No -mdynamic-no-pic + # (Equivalent to -fPIC) + 'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', # -fno-exceptions + 'GCC_ENABLE_CPP_RTTI': 'NO', # -fno-rtti + 'GCC_ENABLE_PASCAL_STRINGS': 'NO', # No -mpascal-strings + 'GCC_THREADSAFE_STATICS': 'NO', # -fno-threadsafe-statics + 'PREBINDING': 'NO', # No -Wl,-prebind + 'MACOSX_DEPLOYMENT_TARGET': '10.7', # -mmacosx-version-min=10.7 + 'USE_HEADERMAP': 'NO', + 'OTHER_CFLAGS': [ + '-fno-strict-aliasing', + ], + 'WARNING_CFLAGS': [ + '-Wall', + '-Wendif-labels', + '-W', + '-Wno-unused-parameter', + ], + }, + 'target_conditions': [ + ['_type!="static_library"', { + 'xcode_settings': { + 'OTHER_LDFLAGS': [ + '-Wl,-no_pie', + '-Wl,-search_paths_first', + ], + }, + }], + ], + 'conditions': [ + ['target_arch=="ia32"', { + 'xcode_settings': {'ARCHS': ['i386']}, + }], + ['target_arch=="x64"', { + 'xcode_settings': {'ARCHS': ['x86_64']}, + }], + ['clang==1', { + 'xcode_settings': { + 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0', + 'CLANG_CXX_LANGUAGE_STANDARD': 'gnu++0x', # -std=gnu++0x + 'CLANG_CXX_LIBRARY': 'libc++', + }, + }], + ], + }], + ['OS=="freebsd" and node_use_dtrace=="true"', { + 'libraries': [ '-lelf' ], + }], + ['OS=="freebsd"', { + 'conditions': [ + ['llvm_version < "4.0"', { + # Use this flag because on FreeBSD std::pairs copy constructor is non-trivial. + # Doesn't apply to llvm 4.0 (FreeBSD 11.1) or later. + # Refs: https://lists.freebsd.org/pipermail/freebsd-toolchain/2016-March/002094.html + # Refs: https://svnweb.freebsd.org/ports/head/www/node/Makefile?revision=444555&view=markup + 'cflags': [ '-D_LIBCPP_TRIVIAL_PAIR_COPY_CTOR=1' ], + }], + ], + 'ldflags': [ + '-Wl,--export-dynamic', + ], + }] + ], + } +} \ No newline at end of file diff --git a/release/arch/windows/build.bat b/release/arch/windows/build.bat index 793b172cca3ee3280b4f9e91574c8fe960cac1b4..7a74e0756d9f515194b262f9492f5570f7c1331c 100644 --- a/release/arch/windows/build.bat +++ b/release/arch/windows/build.bat @@ -1,15 +1,18 @@ -set ADDON_VERSION=48 -set NW_VERSION=0.17.6 -set NODEJS_VERSION=6.11.1 +set ADDON_VERSION=57 +set NW_VERSION=0.24.4 +set NODEJS_VERSION=8.9.1 -set NW_RELEASE=v0.17.6 +set NW_RELEASE=v%NW_VERSION% set NW=nwjs-%NW_RELEASE%-win-x64 set NW_GZ=%NW%.zip set NODE_RELEASE=v%NODEJS_VERSION% set NODE=node-v%NODEJS_VERSION%-win-x64 set NODE_ZIP=node-v%NODEJS_VERSION%-win-x64.zip +set NODE_MSI=node-v%NODEJS_VERSION%-x64.msi + +echo "Version courante de NodeJS : " node -v REM NPM @@ -25,6 +28,26 @@ if not exist %NODE_ZIP% ( call 7z x %NODE_ZIP% ) +if not exist %NODE_MSI% ( + echo "Telechargement de %NODE_MSI%..." + powershell -Command "(New-Object System.Net.WebClient).DownloadFile(\"https://nodejs.org/dist/%NODE_RELEASE%/%NODE_MSI%\", \"%NODE_MSI%\")" + powershell -Command "Start-Process msiexec.exe -Wait -ArgumentList '/I %cd%\%NODE_MSI% /quiet'" +) + +powershell -Command "Start-Process msiexec.exe -Wait -ArgumentList '/I %cd%\%NODE_MSI% /quiet'" + +if not exist %NW_GZ% ( + echo "Telechargement de %NW_GZ%..." + powershell -Command "(New-Object System.Net.WebClient).DownloadFile(\"https://dl.nwjs.io/%NW_RELEASE%/%NW_GZ%\", \"%NW_GZ%\")" + call 7z x %NW_GZ% +) + +echo "Version courante de NodeJS : " +node -v + +call npm install -g node-pre-gyp +call npm install -g nw-gyp + echo "Suppression des anciennes sources..." rd /s /q duniter rd /s /q duniter_release @@ -56,6 +79,11 @@ set SRC=%cd% echo %SRC% cd node_modules/wotb call npm install --build-from-source + +REM PREPARE common.gypi +call node-pre-gyp --runtime=node-webkit --target=%NW_VERSION% --msvs_version=2015 configure +xcopy C:\vagrant\0.24.4_common.gypi C:\Users\vagrant\.nw-gyp\0.24.4\common.gypi /s /e /Y + call node-pre-gyp --runtime=node-webkit --target=%NW_VERSION% --msvs_version=2015 configure call node-pre-gyp --runtime=node-webkit --target=%NW_VERSION% --msvs_version=2015 build copy %cd%\lib\binding\Release\node-webkit-%NW_RELEASE%-win32-x64\wotb.node %cd%\lib\binding\Release\node-v%ADDON_VERSION%-win32-x64\wotb.node /Y