Update Makefile to enable users to define per build type flags

This commit is contained in:
Abdelrahman Said
2025-11-30 20:58:53 +00:00
parent 1bdc1ad955
commit 432e4a48d5

View File

@@ -30,15 +30,17 @@ override INCLUDE_INSTALL := $(INSTALL_PREFIX)/include/$(LIB_NAME)
override LIB_INSTALL := $(INSTALL_PREFIX)/lib override LIB_INSTALL := $(INSTALL_PREFIX)/lib
override HEADER_INSTALL_CMD := scripts/header_install.sh override HEADER_INSTALL_CMD := scripts/header_install.sh
ifeq ($(origin BUILD_FLAGS), undefined)
ifeq ($(BUILD_TYPE),Debug) ifeq ($(BUILD_TYPE),Debug)
override CFLAGS += -g -fsanitize=address,undefined -DWAPP_DEBUG_ASSERT BUILD_FLAGS += -g -fsanitize=address,undefined -DWAPP_DEBUG_ASSERT
else ifeq ($(BUILD_TYPE),RelWithDebInfo) else ifeq ($(BUILD_TYPE),RelWithDebInfo)
override CFLAGS += -g -O2 -fsanitize=address,undefined -DWAPP_DEBUG_ASSERT BUILD_FLAGS += -g -O2 -fsanitize=address,undefined -DWAPP_DEBUG_ASSERT
else ifeq ($(BUILD_TYPE),Release) else ifeq ($(BUILD_TYPE),Release)
override CFLAGS += -O3 BUILD_FLAGS += -O3
else else
$(error Invalid BUILD type '$(BUILD_TYPE)'. Use 'Debug', 'RelWithDebInfo' or 'Release') $(error Invalid BUILD type '$(BUILD_TYPE)'. Use 'Debug', 'RelWithDebInfo' or 'Release')
endif endif
endif
ifeq ($(CC),gcc) ifeq ($(CC),gcc)
# Used to disable the "ASan runtime does not come first in initial library list" error when compiling with gcc # Used to disable the "ASan runtime does not come first in initial library list" error when compiling with gcc
@@ -99,7 +101,7 @@ builddir:
@mkdir -p $(BUILD_DIR) @mkdir -p $(BUILD_DIR)
build-c-test: build-c-test:
$(CC) $(CSTD) $(CFLAGS) $(TEST_INCLUDE) $(TEST_C_SRC) -o $(TEST_C_OUT) $(CC) $(CSTD) $(CFLAGS) $(BUILD_FLAGS) $(TEST_INCLUDE) $(TEST_C_SRC) -o $(TEST_C_OUT)
run-c-test: build-c-test run-c-test: build-c-test
@echo -e "\n\033[34;1mRUNNING C TESTS\033[0m" @echo -e "\n\033[34;1mRUNNING C TESTS\033[0m"
@@ -107,7 +109,7 @@ run-c-test: build-c-test
@rm $(TEST_C_OUT) @rm $(TEST_C_OUT)
build-cc-test: build-cc-test:
$(CXX) $(CXXSTD) $(CFLAGS) $(TEST_INCLUDE) $(TEST_CXX_SRC) $(LIB_OUT) -o $(TEST_CXX_OUT) $(CXX) $(CXXSTD) $(CFLAGS) $(BUILD_FLAGS) $(TEST_INCLUDE) $(TEST_CXX_SRC) $(LIB_OUT) -o $(TEST_CXX_OUT)
run-cc-test: build-cc-test run-cc-test: build-cc-test
@echo -e "\n\033[34;1mRUNNING C++ TESTS\033[0m" @echo -e "\n\033[34;1mRUNNING C++ TESTS\033[0m"
@@ -124,9 +126,9 @@ install: codegen build-lib
@bash $(HEADER_INSTALL_CMD) $(LIB_SRC) $(INCLUDE_INSTALL) $(INCLUDES) @bash $(HEADER_INSTALL_CMD) $(LIB_SRC) $(INCLUDE_INSTALL) $(INCLUDES)
build-lib: builddir build-lib: builddir
$(CC) -c $(CSTD) $(CFLAGS) $(LIBFLAGS) $(LIB_SRC) -o $(OBJ_OUT) $(CC) -c $(CSTD) $(CFLAGS) $(BUILD_FLAGS) $(LIBFLAGS) $(LIB_SRC) -o $(OBJ_OUT)
$(AR) r $(LIB_OUT) $(OBJ_OUT) $(AR) r $(LIB_OUT) $(OBJ_OUT)
@rm $(OBJ_OUT) @rm $(OBJ_OUT)
ccodegen: ccodegen:
$(CC) $(CSTD) $(CFLAGS) $(LIBFLAGS) -Isrc/core src/core/wapp_core.c ccodegen/*.c -o ccgen $(CC) $(CSTD) $(CFLAGS) $(BUILD_FLAGS) $(LIBFLAGS) -Isrc/core src/core/wapp_core.c ccodegen/*.c -o ccgen