Skip to content

Commit b2b37ef

Browse files
committed
Respect user-provided CFLAGS (closes #836)
- configure.ac: Saves whether the user set CFLAGS before AC_PROG_CC runs, uses a new LIBMODBUSCFLAGS variable for project-specific flags instead of overwriting CFLAGS/CXXFLAGS - removes unused CXXFLAGS handling (pure C library) - src/Makefile.am and tests/Makefile.am: Include $(LIBMODBUSCFLAGS) in AM_CFLAGS The result is that CFLAGS="-O3 -march=native" ./configure now works as expected, while the default behavior (-O2 or -g -O0 with --enable-debug) is preserved. Thank you Henrik Brodin @hbrodin
1 parent a01439c commit b2b37ef

3 files changed

Lines changed: 16 additions & 7 deletions

File tree

configure.ac

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ AC_INIT([libmodbus],
3030
AC_CONFIG_SRCDIR([src/modbus.c])
3131
AC_CONFIG_AUX_DIR([build-aux])
3232
AM_INIT_AUTOMAKE([foreign 1.11 silent-rules tar-pax subdir-objects])
33+
34+
# Check if user provided CFLAGS before AC_PROG_CC sets defaults
35+
user_set_cflags="${CFLAGS+set}"
36+
3337
AC_PROG_CC
3438
AC_USE_SYSTEM_EXTENSIONS
3539
AC_SYS_LARGEFILE
@@ -178,13 +182,18 @@ AC_ARG_ENABLE([debug],
178182
[enable_debug=$enableval],
179183
[enable_debug=no])
180184

185+
# Set project-specific optimization flags based on debug mode.
186+
# These are added via AM_CFLAGS in Makefile.am, preserving user's CFLAGS.
181187
AS_IF([test "x$enable_debug" = "xyes"], [
182-
CFLAGS="-g -O0"
183-
CXXFLAGS="-g -O0"
188+
LIBMODBUSCFLAGS="-g -O0"
189+
# Clear AC_PROG_CC's default -O2 so debug mode works, unless user set CFLAGS
190+
AS_IF([test "x$user_set_cflags" != "xset"], [
191+
CFLAGS="-g"
192+
])
184193
], [
185-
CFLAGS="-O2"
186-
CXXFLAGS="-O2"
194+
LIBMODBUSCFLAGS="-O2"
187195
])
196+
AC_SUBST([LIBMODBUSCFLAGS])
188197

189198
AC_OUTPUT
190199
AC_MSG_RESULT([
@@ -197,7 +206,7 @@ AC_MSG_RESULT([
197206
includedir: ${includedir}
198207
199208
compiler: ${CC}
200-
cflags: ${CFLAGS} ${WARNING_CFLAGS}
209+
cflags: ${LIBMODBUSCFLAGS} ${WARNING_CFLAGS} ${CFLAGS}
201210
ldflags: ${LDFLAGS}
202211
203212
tests: ${enable_tests}

src/Makefile.am

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ AM_CPPFLAGS = \
77
-DLIBEXECDIR=\""$(libexecdir)"\" \
88
-I${top_srcdir}/src
99

10-
AM_CFLAGS = ${WARNING_CFLAGS}
10+
AM_CFLAGS = $(LIBMODBUSCFLAGS) $(WARNING_CFLAGS)
1111

1212
libmodbus_la_SOURCES = \
1313
modbus.c \

tests/Makefile.am

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ AM_CPPFLAGS = \
4444
-I${top_srcdir}/src \
4545
-I${top_builddir}/src
4646

47-
AM_CFLAGS = ${WARNING_CFLAGS}
47+
AM_CFLAGS = $(LIBMODBUSCFLAGS) $(WARNING_CFLAGS)
4848

4949
CLEANFILES = *~ *.log
5050

0 commit comments

Comments
 (0)