ud3tn/mk/posix.mk
Felix Walter a63d389c48 mk/posix: Remove default -march=native
This "performance opptimization" decreases portability. If desired,
`ARCH` can be set manually.

Signed-off-by: Felix Walter <felix.walter@d3tn.com>
2026-05-13 09:44:49 +02:00

64 lines
1.3 KiB
Makefile

# BASIC TOOLCHAIN CONFIG
TOOLCHAIN_POSIX ?=
GCC_TOOLCHAIN_PREFIX ?= $(TOOLCHAIN_POSIX)
CLANG_PREFIX ?=
CLANG_SYSROOT_POSIX ?=
CLANG_SYSROOT ?= $(CLANG_SYSROOT_POSIX)
# COMPILER AND LINKER FLAGS
CPPFLAGS += -DPLATFORM_POSIX -pipe -fPIC
# Provide POSIX plus Linux and BSD symbols and extensions.
# https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html
CPPFLAGS += -D_XOPEN_SOURCE=700 -D_DEFAULT_SOURCE
ifdef ARCH
CPPFLAGS += -march=$(ARCH)
endif
# OS DETECTION
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
EXPECT_MACOS_LINKER ?= 1
TOOLCHAIN ?= clang
else
EXPECT_MACOS_LINKER ?= 0
endif
# PLATFORM-SPECIFIC FLAGS
LDFLAGS += -lpthread
ifndef DISABLE_SQLITE_STORAGE
LDFLAGS += -lsqlite3
else
CPPFLAGS += -DDISABLE_SQLITE_STORAGE
endif
ifndef DISABLE_JSON
LDFLAGS += -ljansson
else
CPPFLAGS += -DDISABLE_JSON
endif
LDFLAGS_LIB += -shared
ifneq ($(EXPECT_MACOS_LINKER),1)
LDFLAGS_EXECUTABLE += -pie
endif
ifeq "$(type)" "release"
CPPFLAGS += -ffunction-sections -fdata-sections \
-D_FORTIFY_SOURCE=2 -fstack-protector-strong \
--param ssp-buffer-size=4 -Wstack-protector \
-fno-plt
LDFLAGS += -flto
ifneq ($(EXPECT_MACOS_LINKER),1)
LDFLAGS += -Wl,-z,relro,-z,now,-z,noexecstack
LDFLAGS_EXECUTABLE += -Wl,--gc-sections,--sort-common,--as-needed
endif
endif