1 ################################################################################
5 ################################################################################
8 NODEJS_SOURCE
= node-v
$(NODEJS_VERSION
).
tar.xz
9 NODEJS_SITE
= http
://nodejs.org
/dist/v
$(NODEJS_VERSION
)
10 NODEJS_DEPENDENCIES
= host-python host-nodejs zlib \
11 $(call qstrip
,$(BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL_DEPS
))
12 HOST_NODEJS_DEPENDENCIES
= host-python host-zlib
13 NODEJS_LICENSE
= MIT
(core code
); MIT
, Apache and BSD family licenses
(Bundled components
)
14 NODEJS_LICENSE_FILES
= LICENSE
23 ifeq ($(BR2_PACKAGE_OPENSSL
),y
)
24 NODEJS_DEPENDENCIES
+= openssl
25 NODEJS_CONF_OPTS
+= --shared-openssl
27 NODEJS_CONF_OPTS
+= --without-ssl
30 ifeq ($(BR2_PACKAGE_ICU
),y
)
31 NODEJS_DEPENDENCIES
+= icu
32 NODEJS_CONF_OPTS
+= --with-intl
=system-icu
34 NODEJS_CONF_OPTS
+= --with-intl
=none
37 ifneq ($(BR2_PACKAGE_NODEJS_NPM
),y
)
38 NODEJS_CONF_OPTS
+= --without-npm
41 # nodejs build system is based on python, but only support python-2.6 or
42 # python-2.7. So, we have to enforce PYTHON interpreter to be python2.
43 define HOST_NODEJS_CONFIGURE_CMDS
44 # The build system directly calls python. Work around this by forcing python2
45 # into PATH. See https://github.com/nodejs/node/issues/2735
47 ln
-sf
$(HOST_DIR
)/usr
/bin
/python2
$(@D
)/bin
/python
49 # Build with the static, built-in OpenSSL which is supplied as part of
50 # the nodejs source distribution. This is needed on the host because
51 # NPM is non-functional without it, and host-openssl isn't part of
54 $(HOST_CONFIGURE_OPTS
) \
55 PATH
=$(@D
)/bin
:$(BR_PATH
) \
56 PYTHON
=$(HOST_DIR
)/usr
/bin
/python2 \
57 $(HOST_DIR
)/usr
/bin
/python2 .
/configure \
58 --prefix=$(HOST_DIR
)/usr \
67 define HOST_NODEJS_BUILD_CMDS
68 $(HOST_MAKE_ENV
) PYTHON
=$(HOST_DIR
)/usr
/bin
/python2 \
70 $(HOST_CONFIGURE_OPTS
) \
71 PATH
=$(@D
)/bin
:$(BR_PATH
)
74 define HOST_NODEJS_INSTALL_CMDS
75 $(HOST_MAKE_ENV
) PYTHON
=$(HOST_DIR
)/usr
/bin
/python2 \
76 $(MAKE
) -C
$(@D
) install \
77 $(HOST_CONFIGURE_OPTS
) \
78 PATH
=$(@D
)/bin
:$(BR_PATH
)
80 $(INSTALL
) -m755
-D
$(@D
)/out
/Release
/mkpeephole
$(HOST_DIR
)/usr
/bin
/mkpeephole
85 else ifeq ($(BR2_x86_64
),y
)
87 else ifeq ($(BR2_mips
),y
)
89 else ifeq ($(BR2_mipsel
),y
)
91 else ifeq ($(BR2_arm
),y
)
93 else ifeq ($(BR2_aarch64
),y
)
95 # V8 needs to know what floating point ABI the target is using.
96 NODEJS_ARM_FP
= $(call qstrip
,$(BR2_GCC_TARGET_FLOAT_ABI
))
99 # MIPS architecture specific options
100 ifeq ($(BR2_mips
)$(BR2_mipsel
),y
)
101 ifeq ($(BR2_MIPS_CPU_MIPS32R6
),y
)
102 NODEJS_MIPS_ARCH_VARIANT
= r6
103 NODEJS_MIPS_FPU_MODE
= fp64
104 else ifeq ($(BR2_MIPS_CPU_MIPS32R2
),y
)
105 NODEJS_MIPS_ARCH_VARIANT
= r2
106 else ifeq ($(BR2_MIPS_CPU_MIPS32
),y
)
107 NODEJS_MIPS_ARCH_VARIANT
= r1
111 define NODEJS_CONFIGURE_CMDS
113 ln
-sf
$(HOST_DIR
)/usr
/bin
/python2
$(@D
)/bin
/python
116 $(TARGET_CONFIGURE_OPTS
) \
117 PATH
=$(@D
)/bin
:$(BR_PATH
) \
119 PYTHON
=$(HOST_DIR
)/usr
/bin
/python2 \
120 $(HOST_DIR
)/usr
/bin
/python2 .
/configure \
122 --dest-cpu
=$(NODEJS_CPU
) \
123 $(if
$(NODEJS_ARM_FP
),--with-arm-float-abi
=$(NODEJS_ARM_FP
)) \
124 $(if
$(NODEJS_MIPS_ARCH_VARIANT
),--with-mips-arch-variant
=$(NODEJS_MIPS_ARCH_VARIANT
)) \
125 $(if
$(NODEJS_MIPS_FPU_MODE
),--with-mips-fpu-mode
=$(NODEJS_MIPS_FPU_MODE
)) \
126 $(NODEJS_CONF_OPTS
) \
129 # use host version of mkpeephole
130 sed
"s#<(mkpeephole_exec)#$(HOST_DIR)/usr/bin/mkpeephole#g" -i
$(@D
)/deps
/v8
/src
/v8.gyp
133 define NODEJS_BUILD_CMDS
134 $(TARGET_MAKE_ENV
) PYTHON
=$(HOST_DIR
)/usr
/bin
/python2 \
136 $(TARGET_CONFIGURE_OPTS
) \
137 PATH
=$(@D
)/bin
:$(BR_PATH
) \
142 # Build the list of modules to install based on the booleans for
143 # popular modules, as well as the "additional modules" list.
145 NODEJS_MODULES_LIST
= $(call qstrip
,\
146 $(if
$(BR2_PACKAGE_NODEJS_MODULES_EXPRESS
),express
) \
147 $(if
$(BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT
),coffee-script
) \
148 $(BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL
))
150 # Define NPM for other packages to use
151 NPM
= $(TARGET_CONFIGURE_OPTS
) \
153 npm_config_arch
=$(NODEJS_CPU
) \
154 npm_config_target_arch
=$(NODEJS_CPU
) \
155 npm_config_build_from_source
=true \
156 npm_config_nodedir
=$(BUILD_DIR
)/nodejs-
$(NODEJS_VERSION
) \
157 npm_config_prefix
=$(TARGET_DIR
)/usr \
158 $(HOST_DIR
)/usr
/bin
/npm
161 # We can only call NPM if there's something to install.
163 ifneq ($(NODEJS_MODULES_LIST
),)
164 define NODEJS_INSTALL_MODULES
165 # If you're having trouble with module installation, adding -d to the
166 # npm install call below and setting npm_config_rollback=false can both
167 # help in diagnosing the problem.
168 $(NPM
) install -g
$(NODEJS_MODULES_LIST
)
172 define NODEJS_INSTALL_TARGET_CMDS
173 $(TARGET_MAKE_ENV
) PYTHON
=$(HOST_DIR
)/usr
/bin
/python2 \
174 $(MAKE
) -C
$(@D
) install \
175 DESTDIR
=$(TARGET_DIR
) \
176 $(TARGET_CONFIGURE_OPTS
) \
177 PATH
=$(@D
)/bin
:$(BR_PATH
) \
179 $(NODEJS_INSTALL_MODULES
)
182 # node.js configure is a Python script and does not use autotools
183 $(eval
$(generic-package
))
184 $(eval
$(host-generic-package
))