Last active
November 24, 2022 21:31
-
-
Save albi90/6135922 to your computer and use it in GitHub Desktop.
Compiling node-webkit on raspberry pi
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cd ~ | |
mkdir .gyp | |
nano .gyp/include.gypi | |
paste the following | |
{ | |
'variables': { | |
'linux_use_gold_binary' : 0, | |
'linux_use_gold_flags' : 0, | |
'target_arch': 'arm', | |
'disable_nacl': 1, # NaCL does not build for ARM. | |
'linux_use_tcmalloc': 0, # tcmalloc does not build for ARM. | |
'armv7': 0, # Optional, for targeting ARMv7. | |
'armv6': 1, # Optional, for targeting ARMv6. | |
'arm_thumb': 0, # Optional, for targeting thumb. Combine with armv7 to target thumb2. | |
'arm_neon': 0, # Optional, to disable NEON. 1 is the default, and most people want to keep it that way. | |
'arm_fpu': 'vfp', # Optional, to select which version of vfp to use if NEON is off. Default is vfpv3. | |
'verbose': 1, | |
'use_system_yasm': 0, | |
'werror' : '' | |
} | |
} | |
-Save | |
nano arm.env | |
paste the following | |
export CXX=g++ | |
export CC=gcc | |
export AR=ar | |
export AS=as | |
export RANLIB=ranlib | |
export CFLAGS="-I/usr/include/gtk-2.0 -I/usr/include/glib-2.0 -march=armv6 -mfpu=vfp -mfloat-abi=hard" | |
export CCFLAGS=$CFLAGS | |
export CXXFLAGS="-I/usr/include/gtk-2.0 -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include/ -I/usr/include/pango-1.0 -I/usr/include/cairo/ -I/usr/include/librsvg-2 -O3 -march=armv6 -mfpu=vfp -mfloat-abi=hard" | |
export GYP_DEFINES="target_arch=arm disable_nacl=1 linux_use_tcmalloc=0 armv6=1 arm_thumb=0 use_libjpeg_turbo=0" | |
export GYP_GENERATORS='make' | |
-Save | |
source arm.env | |
sudo nano /etc/dphys-swapfile | |
overwrite the file contients with | |
CONF_MAXSWAP=3072 | |
CONF_SWAPSIZE=3072 | |
-Save | |
sudo dphys-swapfile setup | |
sudo dphys-swapfile swapon | |
-Get the src for node-webkit (i wont document that here) | |
cd src/third_party/ffmpeg | |
nano ffmpeg.gyp and replace "armv7-a" with "armv6", "vfp16-d3" with "vfp" and remove mtune=cortex-a8 and mthumb options. | |
./configure --arch=armel --target-os=linux --enable-gpl | |
cp config.h chromium/config/Chromium/linux/arm/ | |
cd ../../ | |
nano third_party/node/deps/v8/SConstruct | |
-change | |
'all': { | |
'CCFLAGS': ['$DIALECTFLAGS', '$WARNINGFLAGS'], | |
'CXXFLAGS': ['-fno-rtti', '-fno-exceptions'], | |
}, | |
-to | |
'all': { | |
'CCFLAGS': ['$DIALECTFLAGS', '$WARNINGFLAGS', '-march=armv6'], | |
'CXXFLAGS': ['-fno-rtti', '-fno-exceptions', '-march=armv6'], | |
}, | |
-change | |
'armeabi:softfp' : { | |
'CPPDEFINES' : ['USE_EABI_HARDFLOAT=0'], | |
'vfp3:on': { | |
'CPPDEFINES' : ['CAN_USE_VFP_INSTRUCTIONS'] | |
}, | |
'simulator:none': { | |
'CCFLAGS': ['-mfloat-abi=softfp'], | |
} | |
}, | |
-to | |
'armeabi:softfp' : { | |
'CPPDEFINES' : ['USE_EABI_HARDFLOAT=0'] | |
# 'vfp3:on': { | |
# 'CPPDEFINES' : ['CAN_USE_VFP_INSTRUCTIONS'] | |
# }, | |
# 'simulator:none': { | |
# 'CCFLAGS': ['-mfloat-abi=softfp'], | |
# } | |
}, | |
-Save | |
nano build/common.gypi | |
-change | |
['OS=="linux" and target_arch=="arm" and chromeos==0', { | |
# Set some defaults for arm/linux chrome builds | |
'linux_breakpad%': 0, | |
'linux_use_tcmalloc%': 0, | |
# sysroot needs to be an absolute path otherwise it generates | |
# incorrect results when passed to pkg-config | |
'sysroot%': '<!(cd <(DEPTH) && pwd -P)/arm-sysroot', | |
}], # OS=="linux" and target_arch=="arm" and chromeos==0 | |
-to | |
['OS=="linux" and target_arch=="arm" and chromeos==0', { | |
# Set some defaults for arm/linux chrome builds | |
'linux_breakpad%': 0, | |
'linux_use_tcmalloc%': 0, | |
# sysroot needs to be an absolute path otherwise it generates | |
# incorrect results when passed to pkg-config | |
#'sysroot%': '<!(cd <(DEPTH) && pwd -P)/arm-sysroot', | |
}], # OS=="linux" and target_arch=="arm" and chromeos==0 | |
now just run | |
make nw -j4 BUILDTYPE=Release | |
the compile will take about 3 days so you better have a good magazine to read |
@albi90 could you also shoot me the compiled code if you have it? I was all geeked up to compile it on my Pi but my SD card is too small to compile chromium (says it needs 14G of space), thanks!
Hello,
I have just created a repository with the node-webkit binary port that runs on Raspbian, tested and working on Raspberry Pi 1 and Raspberry Pi 3 so it is ARMv6 and ARMv7 compatible.
Here you can check it: https://github.com/jalbam/nwjs_rpi
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@singhularity have you found a better way to use node-webkit on RaspberryPi? I would really appreciate if you could point it to me.
@albi90 I really appreciate your efforts to make nw runnable on RaspberryPi! would love to know if you have improved the compilation time or maybe you could forward me the compiled code.. thank you :)