diff options
| author | Xavier Del Campo Romero <xavi92@disroot.org> | 2026-02-13 07:51:58 +0100 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi92@disroot.org> | 2026-02-13 07:55:09 +0100 |
| commit | 10c200907760b441e72f7f1c2fa9555d4628ab81 (patch) | |
| tree | 42dd706ff717059b274228b9fede448a04b5b4b2 | |
| parent | decb51529889b8f2afd67811d635379f030a1b19 (diff) | |
Honor user CFLAGS/LDFLAGS
Ideally, these flags must be appended to those introduced by the project
(e.g.: if user enters -Oz as CFLAGS, then -O1 and -Oz would co-exist and
the compiler would choose the later), rather than replacing them.
Additionally, user CFLAGS/LDFLAGS should be passed to children projects,
too.
| -rwxr-xr-x | configure | 59 |
1 files changed, 34 insertions, 25 deletions
@@ -10,9 +10,6 @@ default_CFLAGS='-O1 -g -D_FILE_OFFSET_BITS=64 -Wall -MD' default_LDFLAGS="-lm" CC=${CC:-$default_CC} -CFLAGS=${CFLAGS:-"$default_CFLAGS $default_NPCFLAGS"} -LDFLAGS=${LDFLAGS:-$default_LDFLAGS} -USERGEN_LDFLAGS=${LDFLAGS} build_thumbnail=0 @@ -54,8 +51,8 @@ done if pkg-config libsodium then - CFLAGS="$CFLAGS $(pkg-config --cflags libsodium)" - LDFLAGS="$LDFLAGS $(pkg-config --libs libsodium)" + proj_CFLAGS="$proj_CFLAGS $(pkg-config --cflags libsodium)" + proj_LDFLAGS="$proj_LDFLAGS $(pkg-config --libs libsodium)" USERGEN_LDFLAGS="$USERGEN_LDFLAGS $(pkg-config --libs libsodium)" else echo "Error: libsodium not found." >&2 @@ -64,8 +61,8 @@ fi if pkg-config libcjson then - CFLAGS="$CFLAGS $(pkg-config --cflags libcjson)" - LDFLAGS="$LDFLAGS $(pkg-config --libs libcjson)" + proj_CFLAGS="$(pkg-config --cflags libcjson) $proj_CFLAGS" + proj_LDFLAGS="$(pkg-config --libs libcjson) $proj_LDFLAGS" USERGEN_LDFLAGS="$USERGEN_LDFLAGS $(pkg-config --libs libcjson)" else echo "Error: libcjson not found." >&2 @@ -75,50 +72,54 @@ fi if pkg-config dynstr then in_tree_dynstr=0 - CFLAGS="$CFLAGS $(pkg-config --cflags dynstr)" - LDFLAGS="$LDFLAGS $(pkg-config --libs dynstr)" + proj_CFLAGS="$(pkg-config --cflags dynstr) $proj_CFLAGS" + proj_LDFLAGS="$(pkg-config --libs dynstr) $proj_LDFLAGS" USERGEN_LDFLAGS="$USERGEN_LDFLAGS $(pkg-config --libs dynstr)" else echo "Info: dynstr not found. Using in-tree copy" >&2 in_tree_dynstr=1 - CFLAGS="$CFLAGS -Ilibweb/dynstr/include" - LDFLAGS="$LDFLAGS -Llibweb/dynstr -ldynstr" - USERGEN_LDFLAGS="$LDFLAGS -Llibweb/dynstr -ldynstr" + proj_CFLAGS="$proj_CFLAGS -Ilibweb/dynstr/include" + proj_LDFLAGS="$proj_LDFLAGS -Llibweb/dynstr -ldynstr" + USERGEN_LDFLAGS="$USERGEN_LDFLAGS -Llibweb/dynstr -ldynstr" fi if pkg-config libweb then in_tree_libweb=0 - CFLAGS="$CFLAGS $(pkg-config --cflags libweb)" - LDFLAGS="$LDFLAGS $(pkg-config --libs libweb)" + proj_CFLAGS="$proj_CFLAGS $(pkg-config --cflags libweb)" + proj_LDFLAGS="$proj_LDFLAGS $(pkg-config --libs libweb)" else echo "Info: libweb not found. Using in-tree copy" >&2 in_tree_libweb=1 - CFLAGS="$CFLAGS -Ilibweb/include" - LDFLAGS="$LDFLAGS -Llibweb -lweb" + proj_CFLAGS="$proj_CFLAGS -Ilibweb/include" + proj_LDFLAGS="$proj_LDFLAGS -Llibweb -lweb" fi if pkg-config fdzipstream then in_tree_fdzipstream=0 - CFLAGS="$CFLAGS $(pkg-config --cflags fdzipstream)" - LDFLAGS="$LDFLAGS $(pkg-config --libs fdzipstream)" + proj_proj_CFLAGS="$proj_CFLAGS $(pkg-config --cflags fdzipstream)" + proj_proj_LDFLAGS="$proj_LDFLAGS $(pkg-config --libs fdzipstream)" else echo "Info: fdzipstream not found. Using in-tree copy" >&2 in_tree_fdzipstream=1 - CFLAGS="$CFLAGS -Ifdzipstream/fdzipstream" - LDFLAGS="$LDFLAGS -Lfdzipstream -lfdzipstream" + proj_CFLAGS="$proj_CFLAGS -Ifdzipstream/fdzipstream" + proj_LDFLAGS="$proj_LDFLAGS -Lfdzipstream -lfdzipstream" fi if pkg-config zlib then - CFLAGS="$CFLAGS $(pkg-config --cflags zlib)" - LDFLAGS="$LDFLAGS $(pkg-config --libs zlib)" + proj_CFLAGS="$proj_CFLAGS $(pkg-config --cflags zlib)" + proj_LDFLAGS="$proj_LDFLAGS $(pkg-config --libs zlib)" else echo "Error: zlib not found." >&2 exit 1 fi +proj_CFLAGS="$proj_CFLAGS $default_CFLAGS $CFLAGS" +proj_LDFLAGS="$proj_LDFLAGS $default_LDFLAGS $LDFLAGS" +USERGEN_LDFLAGS="$USERGEN_LDFLAGS $LDFLAGS" + cleanup() { rm -f $F @@ -134,6 +135,8 @@ CC = $CC PREFIX = $prefix DST = $prefix/bin CFLAGS = $CFLAGS +PROJ_CFLAGS = $proj_CFLAGS +PROJ_LDFLAGS = $proj_LDFLAGS LDFLAGS = $LDFLAGS USERGEN_LDFLAGS = $USERGEN_LDFLAGS EOF @@ -160,8 +163,11 @@ all: $(PROJECT) usergen FORCE: +.c.o: + $(CC) $(PROJ_CFLAGS) -c $< -o $@ + $(PROJECT): $(OBJECTS) - $(CC) $(OBJECTS) $(LDFLAGS) -o $@ + $(CC) $(OBJECTS) $(PROJ_LDFLAGS) -o $@ usergen: $(USERGEN_OBJECTS) $(CC) $(USERGEN_OBJECTS) $(USERGEN_LDFLAGS) -o $@ @@ -196,11 +202,13 @@ then cat <<"EOF" >> $F LIBWEB_MK = libweb/Makefile $(LIBWEB_MK): - cd libweb && ./configure --prefix=$(PREFIX) + cd libweb && CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ + ./configure --prefix=$(PREFIX) LIBWEB = libweb/libweb.a $(PROJECT): $(LIBWEB) $(LIBWEB): $(LIBWEB_MK) FORCE +cd libweb && $(MAKE) CC=$(CC) +libweb: $(LIBWEB) EOF fi @@ -221,7 +229,8 @@ THUMBNAIL = thumbnail/thumbnail THUMBNAIL_MK = thumbnail/Makefile thumbnail $(PROJECT): $(THUMBNAIL) $(THUMBNAIL_MK): - cd thumbnail && CFLAGS="$(CFLAGS)" ./configure --prefix=$(PREFIX) + cd thumbnail && CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ + ./configure --prefix=$(PREFIX) $(THUMBNAIL): $(THUMBNAIL_MK) FORCE +cd thumbnail && $(MAKE) CC=$(CC) all: $(THUMBNAIL) |
