### Description
ping @xkaraman
cmake is overriding distro build flags
Here is typical CFLAGS for EL distros
```
export CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches
-pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic
-fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection'
## try to build
cd build/
make
[ 1%] Building C object src/CMakeFiles/kamailio.dir/lib/srdb1/db_row.c.o
In file included from /usr/include/bits/libc-header-start.h:33,
from /usr/include/string.h:26,
from /home/centos/src/kamailio-5.8/src/lib/srdb1/../../core/str.h:26,
from /home/centos/src/kamailio-5.8/src/lib/srdb1/db_con.h:33,
from /home/centos/src/kamailio-5.8/src/lib/srdb1/db_val.h:40,
from /home/centos/src/kamailio-5.8/src/lib/srdb1/db_row.h:37,
from /home/centos/src/kamailio-5.8/src/lib/srdb1/db_row.c:33:
/usr/include/features.h:412:4: warning: #warning _FORTIFY_SOURCE requires compiling with
optimization (-O) [-Wcpp]
412 | # warning _FORTIFY_SOURCE requires compiling with optimization (-O)
```
It is probably due to `cmake/compiler-specific.cmake`:
```
# If GCC version is greater than 4.2.0, enable the following flags
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER 4.2.0)
target_compile_options(
common INTERFACE -m64 -minline-all-stringops -falign-loops
-ftree-vectorize -fno-strict-overflow -mtune=generic
)
endif()
```
Packaging for ELx requires respecting the default flags - for EL9 included here for
reference
```
CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe
-Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic
-fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection'
CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe
-Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic
-fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection'
FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe
-Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic
-fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection
-I/usr/lib64/gfortran/modules'
FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe
-Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic
-fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection
-I/usr/lib64/gfortran/modules'
LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now
-specs=/usr/lib/rpm/redhat/redhat-hardened-ld
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 '
```
ELx packaging typically involves this dance:
```
# in practice RPM build tools have macros for all the following steps
# use standard distro flags
export CFLAGS=....
export CXXFLAGS=...
export LDFLAGS=....
./configure
```
Is there a way we can respect distro build flags with cmake?
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/4082
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/4082(a)github.com>