From 770b7312f5d9eacf0c56afae44a54482fb034c63 Mon Sep 17 00:00:00 2001 From: Sam James 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 --- Makefile | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index 4e08c293..4df2a024 100644 --- 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-unwind-tables -fno-asynchronous-unwind-tables + +CFLAGS ?= -O2 +CFLAGS += $(COMMON_FLAGS) + +CXXFLAGS ?= -O2 +CXXFLAGS += $(COMMON_FLAGS) -std=c++20 -fno-exceptions +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 From 0c6458da2614ce9914ca37afa3ed441f61e5d7d1 Mon Sep 17 00:00:00 2001 From: Sam James 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 --- Makefile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Makefile b/Makefile index 4df2a024..18727b57 100644 --- 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