config BR2_PACKAGE_NODEJS
	bool "nodejs"
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_arm || BR2_i386 || BR2_x86_64 || BR2_mipsel
	depends on !BR2_MIPS_SOFT_FLOAT
	# ARM needs BLX, so v5t+
	depends on !BR2_ARM_CPU_ARMV4
	# uses fork()
	depends on BR2_USE_MMU
	# uses dlopen(). On ARMv5, we could technically support static
	# linking, but that's too much of a corner case to support it.
	depends on !BR2_STATIC_LIBS
	select BR2_PACKAGE_ZLIB
	help
	  Event-driven I/O server-side JavaScript environment based on V8.

	  http://nodejs.org/

comment "nodejs needs a toolchain w/ C++, dynamic library, threads"
	depends on BR2_USE_MMU
	depends on BR2_arm || BR2_i386 || BR2_x86_64 || BR2_mipsel
	depends on !BR2_ARM_CPU_ARMV4
	depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS

if BR2_PACKAGE_NODEJS

# Starting with 0.12.x, on ARM, V8 (the JS engine)
# now requires an armv6+ and a VFPv2+.
config BR2_PACKAGE_NODEJS_V8_ARCH_SUPPORTS
	bool
	# On supported architectures other than ARM, no special requirement
	default y if !BR2_arm
	# On ARM, at least ARMv6+ with VFPv2+ is needed
	default y if !BR2_ARM_CPU_ARMV5 && BR2_ARM_CPU_HAS_VFPV2

choice
	prompt "Node.js version"
	default BR2_BR2_PACKAGE_NODEJS_0_10_X if BR2_ARM_CPU_ARMV5
	default BR2_BR2_PACKAGE_NODEJS_4_X
	help
	  Select the version of Node.js you wish to use.

config BR2_BR2_PACKAGE_NODEJS_0_10_X
	bool "v0.10.40"

config BR2_BR2_PACKAGE_NODEJS_0_12_X
	bool "v0.12.7"
	depends on BR2_PACKAGE_NODEJS_V8_ARCH_SUPPORTS

config BR2_BR2_PACKAGE_NODEJS_4_X
	bool "v4.1.2"
	depends on BR2_PACKAGE_NODEJS_V8_ARCH_SUPPORTS
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8

comment "v4.1.2 needs a toolchain w/ gcc >= 4.8"
	depends on BR2_PACKAGE_NODEJS_V8_ARCH_SUPPORTS
	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8

endchoice

config BR2_PACKAGE_NODEJS_VERSION_STRING
	string
	default "0.10.40"	if BR2_BR2_PACKAGE_NODEJS_0_10_X
	default "0.12.7"	if BR2_BR2_PACKAGE_NODEJS_0_12_X
	default "4.1.2"		if BR2_BR2_PACKAGE_NODEJS_4_X

menu "Module Selection"

config BR2_PACKAGE_NODEJS_NPM
	bool "NPM for the target"
	select BR2_PACKAGE_OPENSSL
	help
	  NPM is the package manager for the Node JavaScript platform.
	  Note that enabling NPM on the target also selects OpenSSL for the
	  target.

	  http://www.npmjs.org

	  Note that NPM is always built for the buildroot host.

config BR2_PACKAGE_NODEJS_MODULES_EXPRESS
	bool "Express web application framework"
	help
	  Express is a minimal and flexible node.js web application
	  framework, providing a robust set of features for building
	  single and multi-page, and hybrid web applications.

	  http://www.expressjs.com
	  https://github.com/visionmedia/express

config BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT
	bool "CoffeeScript"
	help
	  CoffeeScript is a little language that compiles into JavaScript.

	  http://www.coffeescript.org

config BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL
	string "Additional modules"
	help
	  List of space-separated nodejs modules to install via npm.
	  See https://npmjs.org/ to find modules and 'npm help install'
	  for available installation methods. For repeatable builds,
	  download and save tgz files or clone git repos for the
	  components you care about.

	  Example: serialport uglify-js@1.3.4 /my/module/mymodule.tgz git://github.com/someuser/somemodule.git#v1.2

	  This would install the serialport module (at the newest version),
	  the uglify-js module at 1.3.4, a module from a filesystem path,
	  and a module from a git repository.

config BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL_DEPS
	string "Additional module dependencies"
	help
	  List of space-separated buildroot recipes which must be built before
	  your npms can be installed. For example, if in 'Additional modules'
	  you specified 'node-curl' (see:
	  https://github.com/jiangmiao/node-curl), you could then specify
	  'libcurl' here, to ensure that buildroot builds the libcurl package,
	  and does so before building your node modules.

endmenu

endif
