config BR2_PACKAGE_NODEJS
	bool "nodejs"
	depends on BR2_INET_IPV6
	depends on BR2_LARGEFILE
	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_arm7tdmi || BR2_arm720t || BR2_arm920t || BR2_arm922t || BR2_fa526)
	# uses fork()
	depends on BR2_USE_MMU
	help
	  Event-driven I/O server-side JavaScript environment based on V8.

	  http://nodejs.org/

comment "nodejs needs a toolchain w/ C++, IPv6, largefile, threads"
	depends on BR2_USE_MMU
	depends on BR2_arm || BR2_i386 || BR2_x86_64 || BR2_mipsel
	depends on !(BR2_arm7tdmi || BR2_arm720t || BR2_arm920t || BR2_arm922t || BR2_fa526)
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_LARGEFILE || \
		!BR2_TOOLCHAIN_HAS_THREADS || !BR2_INET_IPV6

if BR2_PACKAGE_NODEJS

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
