aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi92@disroot.org>2026-02-13 07:51:58 +0100
committerXavier Del Campo Romero <xavi92@disroot.org>2026-02-13 07:55:09 +0100
commit10c200907760b441e72f7f1c2fa9555d4628ab81 (patch)
tree42dd706ff717059b274228b9fede448a04b5b4b2
parentdecb51529889b8f2afd67811d635379f030a1b19 (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-xconfigure59
1 files changed, 34 insertions, 25 deletions
diff --git a/configure b/configure
index 35a0743..a9127bd 100755
--- a/configure
+++ b/configure
@@ -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)