config BR2_PACKAGE_NODEJS_ARCH_SUPPORTS
	bool
	# On ARM, at least ARMv6+ with VFPv2+ is needed
	default y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5 && BR2_ARM_CPU_HAS_VFPV2
	default y if BR2_aarch64 || BR2_i386 || BR2_x86_64
	# libuv
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS

comment "nodejs needs a toolchain w/ C++, dynamic library, NPTL, gcc >= 10, wchar, host gcc >= 10"
	depends on BR2_USE_MMU
	depends on BR2_PACKAGE_NODEJS_ARCH_SUPPORTS
	depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \
		!BR2_HOST_GCC_AT_LEAST_10 || !BR2_TOOLCHAIN_GCC_AT_LEAST_10 || !BR2_USE_WCHAR

config BR2_PACKAGE_NODEJS
	bool "nodejs"
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_PACKAGE_NODEJS_ARCH_SUPPORTS
	depends on BR2_HOST_GCC_AT_LEAST_10
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_10
	depends on BR2_USE_WCHAR
	# 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_NODEJS_SRC
	select BR2_PACKAGE_HOST_NODEJS if BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL != ""
	select BR2_PACKAGE_HOST_PYTHON3
	select BR2_PACKAGE_HOST_PYTHON3_BZIP2
	select BR2_PACKAGE_HOST_PYTHON3_SSL
	select BR2_PACKAGE_HOST_QEMU
	select BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE
	select BR2_PACKAGE_C_ARES
	select BR2_PACKAGE_LIBUV
	select BR2_PACKAGE_ZLIB
	select BR2_PACKAGE_NGHTTP2
	help
	  Event-driven I/O server-side JavaScript environment based on
	  V8.

	  http://nodejs.org/

if BR2_PACKAGE_NODEJS

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_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.

endif

config BR2_PACKAGE_HAS_NODEJS
	bool

config BR2_PACKAGE_PROVIDES_NODEJS
	string
	default "nodejs-src"

source "package/nodejs/nodejs-src/Config.in"
