diff options
-rw-r--r-- | sys-devel/mold/files/mold-9999-build-respect-user-FLAGS.patch | 83 | ||||
-rw-r--r-- | sys-devel/mold/files/mold-9999-don-t-compress-man-page.patch | 22 | ||||
-rw-r--r-- | sys-devel/mold/mold-0.9.6-r2.ebuild | 10 | ||||
-rw-r--r-- | sys-devel/mold/mold-9999.ebuild | 77 |
4 files changed, 190 insertions, 2 deletions
diff --git a/sys-devel/mold/files/mold-9999-build-respect-user-FLAGS.patch b/sys-devel/mold/files/mold-9999-build-respect-user-FLAGS.patch new file mode 100644 index 000000000000..ac218201b902 --- /dev/null +++ b/sys-devel/mold/files/mold-9999-build-respect-user-FLAGS.patch @@ -0,0 +1,83 @@ +https://github.com/rui314/mold/pull/135 + +From: Sam James <sam@gentoo.org> +Date: Tue, 14 Dec 2021 10:53:44 +0000 +Subject: [PATCH 1/2] build: respect user *FLAGS + +- Respect user CXXFLAGS +- Rename CPPFLAGS (previously used in the sense of "flags for the C++ compiler") -> CXXFLAGS +- CPPFLAGS is generally used for "flags for the C(++) preprocessor.", so let's + use it for that +- Respect user LDFLAGS + (In one instance, we were respecting LDFLAGS, but doing it too late. + We need to pass LDFLAGS _before_ any objects in order for -Wl,--as-needed + to work correctly.) + +Signed-off-by: Sam James <sam@gentoo.org> +--- a/Makefile ++++ b/Makefile +@@ -17,10 +17,15 @@ STRIP ?= strip + + OS ?= $(shell uname -s) + +-CPPFLAGS = -pthread -std=c++20 -fPIE -DMOLD_VERSION=\"0.9.6\" \ +- -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables \ +- -DLIBDIR="\"$(LIBDIR)\"" $(EXTRA_CPPFLAGS) +-LDFLAGS += $(EXTRA_LDFLAGS) ++# Used for both C and C++ ++COMMON_FLAGS = -pthread -fPIE -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables ++ ++CFLAGS ?= -O2 ++CFLAGS += $(COMMON_FLAGS) ++ ++CXXFLAGS ?= -O2 ++CXXFLAGS += $(COMMON_FLAGS) -std=c++20 ++CPPFLAGS += -DMOLD_VERSION=\"0.9.6\" -DLIBDIR="\"$(LIBDIR)\"" + LIBS = -pthread -lz -lxxhash -ldl -lm + + SRCS=$(wildcard *.cc elf/*.cc macho/*.cc) +@@ -38,21 +43,19 @@ ifneq ($(GIT_HASH),) + endif + + ifeq ($(DEBUG), 1) +- CPPFLAGS += -O0 -g +-else +- CPPFLAGS += -O2 ++ CXXFLAGS += -O0 -g + endif + + ifeq ($(LTO), 1) +- CPPFLAGS += -flto -O3 ++ CXXFLAGS += -flto -O3 + LDFLAGS += -flto + endif + + ifeq ($(ASAN), 1) +- CPPFLAGS += -fsanitize=address ++ CXXFLAGS += -fsanitize=address + LDFLAGS += -fsanitize=address + else ifeq ($(TSAN), 1) +- CPPFLAGS += -fsanitize=thread ++ CXXFLAGS += -fsanitize=thread + LDFLAGS += -fsanitize=thread + else ifneq ($(OS), Darwin) + # By default, we want to use mimalloc as a memory allocator. +@@ -89,15 +92,15 @@ endif + all: mold mold-wrapper.so + + mold: $(OBJS) $(MIMALLOC_LIB) $(TBB_LIB) +- $(CXX) $(CPPFLAGS) $(OBJS) -o $@ $(LDFLAGS) $(LIBS) ++ $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $(OBJS) -o $@ $(LIBS) + ln -sf mold ld + ln -sf mold ld64.mold + + mold-wrapper.so: elf/mold-wrapper.c Makefile +- $(CC) -fPIC -shared -o $@ $< -ldl ++ $(CC) $(CPPFLAGS) $(CFLAGS) -fPIC -shared -o $@ $(LDFLAGS) $< -ldl + + out/%.o: %.cc $(HEADERS) Makefile out/elf/.keep out/macho/.keep +- $(CXX) $(CPPFLAGS) -c -o $@ $< ++ $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $< + + out/elf/.keep: + mkdir -p out/elf diff --git a/sys-devel/mold/files/mold-9999-don-t-compress-man-page.patch b/sys-devel/mold/files/mold-9999-don-t-compress-man-page.patch new file mode 100644 index 000000000000..23dd705b553a --- /dev/null +++ b/sys-devel/mold/files/mold-9999-don-t-compress-man-page.patch @@ -0,0 +1,22 @@ +https://github.com/rui314/mold/pull/135 + +From: Sam James <sam@gentoo.org> +Date: Tue, 14 Dec 2021 11:01:19 +0000 +Subject: [PATCH 2/2] build: don't compress man page + +Negligible saving and downstream, distributions usually recompress or +compress with their own specific options. Unconditionally compressing +man pages, while well intended, usually creates more hassle there. + +Signed-off-by: Sam James <sam@gentoo.org> +--- a/Makefile ++++ b/Makefile +@@ -140,8 +140,6 @@ install: all + + install -m 755 -d $D$(MANDIR)/man1 + install -m 644 docs/mold.1 $D$(MANDIR)/man1 +- rm -f $D$(MANDIR)/man1/mold.1.gz +- gzip -9 $D$(MANDIR)/man1/mold.1 + + ln -sf mold $D$(BINDIR)/ld.mold + ln -sf mold $D$(BINDIR)/ld64.mold diff --git a/sys-devel/mold/mold-0.9.6-r2.ebuild b/sys-devel/mold/mold-0.9.6-r2.ebuild index a8bb3b7a4246..ceaaeaf2af4f 100644 --- a/sys-devel/mold/mold-0.9.6-r2.ebuild +++ b/sys-devel/mold/mold-0.9.6-r2.ebuild @@ -7,11 +7,17 @@ inherit toolchain-funcs DESCRIPTION="A Modern Linker" HOMEPAGE="https://github.com/rui314/mold" -SRC_URI="https://github.com/rui314/mold/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" +if [[ ${PV} == 9999 ]] ; then + EGIT_REPO_URI="https://github.com/rui314/mold.git" + inherit git-r3 +else + SRC_URI="https://github.com/rui314/mold/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64" +fi LICENSE="AGPL-3" SLOT="0" -KEYWORDS="~amd64" + # Try again after 0.9.6 RESTRICT="test" diff --git a/sys-devel/mold/mold-9999.ebuild b/sys-devel/mold/mold-9999.ebuild new file mode 100644 index 000000000000..0a936b317bbc --- /dev/null +++ b/sys-devel/mold/mold-9999.ebuild @@ -0,0 +1,77 @@ +# Copyright 2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit toolchain-funcs + +DESCRIPTION="A Modern Linker" +HOMEPAGE="https://github.com/rui314/mold" +if [[ ${PV} == 9999 ]] ; then + EGIT_REPO_URI="https://github.com/rui314/mold.git" + inherit git-r3 +else + SRC_URI="https://github.com/rui314/mold/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64" +fi + +LICENSE="AGPL-3" +SLOT="0" + +# Try again after 0.9.6 +RESTRICT="test" + +RDEPEND=">=dev-cpp/tbb-2021.4.0:= + dev-libs/xxhash:= + sys-libs/zlib + !kernel_Darwin? ( + dev-libs/mimalloc:= + dev-libs/openssl:= + )" +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}"/${PN}-9999-build-respect-user-FLAGS.patch + "${FILESDIR}"/${PN}-9999-don-t-compress-man-page.patch +) + +src_compile() { + tc-export CC CXX + + emake \ + SYSTEM_TBB=1 \ + SYSTEM_MIMALLOC=1 \ + EXTRA_CFLAGS="${CFLAGS}" \ + EXTRA_CXXFLAGS="${CXXFLAGS}" \ + EXTRA_CPPFLAGS="${CPPFLAGS}" \ + EXTRA_LDFLAGS="${LDFLAGS}" \ + STRIP="true" + LIBDIR="${EPREFIX}/usr/$(get_libdir)" +} + +src_test() { + emake \ + SYSTEM_TBB=1 \ + SYSTEM_MIMALLOC=1 \ + EXTRA_CFLAGS="${CFLAGS}" \ + EXTRA_CXXFLAGS="${CXXFLAGS}" \ + EXTRA_CPPFLAGS="${CPPFLAGS}" \ + EXTRA_LDFLAGS="${LDFLAGS}" \ + LIBDIR="${EPREFIX}/usr/$(get_libdir)" \ + STRIP="true" + check +} + +src_install() { + emake \ + SYSTEM_TBB=1 \ + SYSTEM_MIMALLOC=1 \ + EXTRA_CFLAGS="${CFLAGS}" \ + EXTRA_CXXFLAGS="${CXXFLAGS}" \ + EXTRA_CPPFLAGS="${CPPFLAGS}" \ + EXTRA_LDFLAGS="${LDFLAGS}" \ + DESTDIR="${ED}" \ + LIBDIR="${EPREFIX}/usr/$(get_libdir)" \ + STRIP="true" \ + install +} |