# $NetBSD: Makefile.common,v 1.56 2024/06/14 08:58:23 wiz Exp $
# used by lang/nodejs/Makefile
# used by lang/nodejs14/Makefile
# used by lang/nodejs16/Makefile
# used by lang/nodejs18/Makefile
# used by lang/nodejs20/Makefile

CATEGORIES=	lang
MASTER_SITES=	https://nodejs.org/dist/${DISTNAME:S/node-//}/
PKGNAME=	${DISTNAME:S/-v/js-/}

MAINTAINER=	pkgsrc-users@NetBSD.org
HOMEPAGE=	https://nodejs.org/
COMMENT=	V8 JavaScript for clients and servers
LICENSE=	mit

HAS_CONFIGURE=	yes
USE_TOOLS+=	bash gmake pkg-config

PYTHON_FOR_BUILD_ONLY=	tool

CONFLICTS+=	npm-[0-9]*
SUPERSEDES+=	npm-[0-9]*

GCC_REQD+=		4.9.4

CONFIG_SHELL=		${PYTHONBIN}
CONFIGURE_ARGS+=	--prefix=${PREFIX}
CONFIGURE_ARGS+=	--shared-brotli
CONFIGURE_ARGS+=	--shared-cares
CONFIGURE_ARGS+=	--shared-libuv
CONFIGURE_ARGS+=	--shared-nghttp2
CONFIGURE_ARGS+=	--shared-zlib
CONFIGURE_ARGS+=	--with-intl=system-icu
PTHREAD_AUTO_VARS=	yes

CONFIGURE_ENV.NetBSD+=	GYP_DEFINES="OS=netbsd"
MAKE_ENV.NetBSD+=	GYP_DEFINES="OS=netbsd"

.if ${MACHINE_ARCH} == "powerpc"
CONFIGURE_ARGS+=	--dest-cpu=ppc
.endif

.if ${OPSYS} == "Linux" && !exists(/usr/bin/gold)
CONFIGURE_ENV+=		GYP_DEFINES="linux_use_gold_flags=0"
.endif

# see patch-configure.py and patch-tools_gyp_pylib_gyp_input.py
TOOL_DEPENDS+=		${PYPKGPREFIX}-packaging-[0-9]*:../../devel/py-packaging

REPLACE_NODEJS+=	deps/corepack/dist/*.js
REPLACE_NODEJS+=	deps/npm/bin/*.js
REPLACE_PYTHON+=	configure
REPLACE_PYTHON+=	tools/gyp/pylib/gyp/flock_tool.py

.if ${OPSYS} == "NetBSD"
TOOL_DEPENDS+=		lockf-[0-9]*:../../sysutils/lockf
BUILDLINK_TRANSFORM+=	rm:-ldl
.endif

TEST_TARGET=		check

CHECK_INTERPRETER_SKIP+=	lib/node_modules/npm/*

.if defined(TOOLS_PLATFORM.paxctl)
SUBST_CLASSES+=		mktools
SUBST_STAGE.mktools=	post-configure
# nodejs8
SUBST_FILES.mktools+=	out/deps/v8/src/mksnapshot.target.mk
# nodejs10
SUBST_FILES.mktools+=	out/deps/v8/gypfiles/mksnapshot.target.mk
# nodejs12
SUBST_FILES.mktools+=	out/mkcodecache.target.mk
SUBST_FILES.mktools+=	out/tools/v8_gypfiles/mksnapshot.target.mk
# nodejs13
SUBST_FILES.mktools+=	out/node_mksnapshot.target.mk
SUBST_SED.mktools+=	-e 's|call do_cmd,link)|call do_cmd,link)\${.newline}	${TOOLS_PLATFORM.paxctl} +m $$@|'
SUBST_NOOP_OK.mktools=	yes # because of the different affected files
.endif

CFLAGS.SunOS+=		-D_FILE_OFFSET_BITS=64
CXXFLAGS.SunOS+=	-D_FILE_OFFSET_BITS=64

pre-install:
	${CHMOD} -R g-w ${WRKSRC}

.PHONY: paxctl
post-install: paxctl
paxctl:
.if defined(TOOLS_PLATFORM.paxctl)
	${TOOLS_PLATFORM.paxctl} +m ${DESTDIR}${PREFIX}/bin/node
.endif

.if ${OPSYS} != "Darwin"
.include "../../devel/libexecinfo/buildlink3.mk"
.endif
.include "../../archivers/brotli/buildlink3.mk"
BUILDLINK_API_DEPENDS.libuv+=	libuv>=1.41
.include "../../devel/libuv/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
.include "../../lang/nodejs/application.mk"
.include "../../lang/python/application.mk"
.include "../../lang/python/batteries-included.mk"
.include "../../lang/python/tool.mk"
.include "../../net/libcares/buildlink3.mk"
.include "../../textproc/icu/buildlink3.mk"
# Requires nghttp2_option_set_max_settings
BUILDLINK_API_DEPENDS.nghttp2+=	nghttp2>=1.41.0
.include "../../www/nghttp2/buildlink3.mk"
.include "../../mk/pthread.buildlink3.mk"
