summaryrefslogtreecommitdiff
path: root/devel/mold/Makefile
blob: eb4c66282255253a0a6fb1fe7bf15676d51d4323 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
PORTNAME=	mold
DISTVERSIONPREFIX=	v
DISTVERSION=	2.40.1
CATEGORIES=	devel

MAINTAINER=	ashish@FreeBSD.org
COMMENT=	Modern Linker
WWW=		https://github.com/rui314/mold

LICENSE=	MIT
LICENSE_FILE=	${WRKSRC}/LICENSE

NOT_FOR_ARCHS=	armhf armv7 i386

LIB_DEPENDS=	libmimalloc.so:devel/mimalloc \
		libtbb.so:devel/onetbb \
		libzstd.so:archivers/zstd
TEST_DEPENDS=	bash:shells/bash \
		gcc${GCC_DEFAULT}:lang/gcc${GCC_DEFAULT} \
		ggrep:textproc/gnugrep \
		${LOCALBASE}/bin/readelf:devel/binutils

USES=		cmake:testing compiler:c++20-lang localbase:ldflags shebangfix
SHEBANG_FILES=	test/*.sh

USE_GITHUB=	yes
GH_ACCOUNT=	rui314

PLIST_FILES=	bin/ld.mold \
		bin/mold \
		lib/mold/mold-wrapper.so \
		libexec/mold/ld \
		share/man/man1/ld.mold.1.gz \
		share/man/man1/mold.1.gz


CMAKE_TESTING_OFF=	MOLD_ENABLE_QEMU_TESTS

CMAKE_ON=	MOLD_USE_MIMALLOC \
		MOLD_USE_SYSTEM_MIMALLOC \
		MOLD_USE_SYSTEM_TBB

CMAKE_OFF=	MOLD_USE_MOLD \
		MOLD_USE_TSAN \
		MOLD_MOSTLY_STATIC \
		BUILD_TESTING

OPTIONS_DEFINE=	ASAN LTO

ASAN_DESC=	Enable Address Sanitizer

ASAN_CMAKE_BOOL=MOLD_USE_ASAN

LTO_CMAKE_BOOL=	MOLD_LTO

pre-test:
	### BINARY_ALIAS doesn't work for tests so we need to fix it manually
	@${REINPLACE_CMD} -e 's|OBJCOPY=objcopy|OBJCOPY=${PREFIX}/bin/objcopy|g' \
	    ${PATCH_WRKSRC}/test/common.inc
	@${REINPLACE_CMD} -e 's|OBJDUMP=objdump|OBJDUMP=${PREFIX}/bin/objdump|g' \
	    ${PATCH_WRKSRC}/test/common.inc
	@${REINPLACE_CMD} -e 's|$$GCC |gcc${GCC_DEFAULT} |g' \
	    ${PATCH_WRKSRC}/test/*.sh
	@${REINPLACE_CMD} -e 's|gcc |gcc${GCC_DEFAULT} |g' \
	    ${PATCH_WRKSRC}/test/*.sh
	@${REINPLACE_CMD} -e 's|grep -|${PREFIX}/bin/ggrep -|g' \
	    ${PATCH_WRKSRC}/test/*.sh
	@${REINPLACE_CMD} -e 's|readelf |${PREFIX}/bin/readelf |g' \
	    ${PATCH_WRKSRC}/test/*.sh
	### Depends on LLVMgold plugin which isn't built by binutils
	@${RM} ${WRKSRC}/test/defsym-lto.sh
	@${RM} ${WRKSRC}/test/lto-archive.sh
	@${RM} ${WRKSRC}/test/lto-archive2.sh
	@${RM} ${WRKSRC}/test/lto-dso.sh
	@${RM} ${WRKSRC}/test/lto-version-script.sh
	@${RM} ${WRKSRC}/test/symbol-version-lto.sh
	### These tests errors out with "Unsupported relocation type 36 in non-PLT relocations"
	@${RM} ${WRKSRC}/test/tlsdesc.sh
	@${RM} ${WRKSRC}/test/tlsdesc-dlopen.sh
	@${RM} ${WRKSRC}/test/tlsdesc-initial-exec.sh
	@${RM} ${WRKSRC}/test/tlsdesc-local-dynamic.sh
	@${RM} ${WRKSRC}/test/wrap-lto.sh
	@${RM} ${WRKSRC}/test/x86_64_tlsdesc.sh
	@${RM} ${WRKSRC}/test/x86_64_tls-module-base.sh

.include <bsd.port.mk>