33# == 1. VARIABLES =============================================================
44
55PROJECT_DIR := $(shell git rev-parse --show-toplevel)
6+ TARGET := $(firstword $(MAKECMDGOALS ) )
67LIB_DIR := $(PROJECT_DIR ) /dist
8+ ifeq ($(TARGET ) , debug)
9+ LIB_DIR := $(LIB_DIR ) /debug
10+ endif
711INCLUDE_DIR := $(PROJECT_DIR ) /include
812WEBUI_LIB_NAME = webui-2
913ifeq ($(WEBUI_USE_TLS ) , 1)
@@ -26,25 +30,32 @@ ifeq ($(OS),Windows_NT)
2630 PLATFORM := windows
2731 SHELL := CMD
2832 STATIC_BUILD_FLAGS += -l$(WEBUI_LIB_NAME)-static -lws2_32 -Wall -luser32 -static
29- DYN_BUILD_FLAGS += "$(LIB_DIR)/$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32
33+ COPY_LIB_CMD := @copy "$(LIB_DIR)\$(WEBUI_LIB_NAME).dll" "$(WEBUI_LIB_NAME).dll"
34+ DYN_BUILD_FLAGS += "$(WEBUI_LIB_NAME).dll" -lws2_32 -Wall -luser32
3035 STATIC_OUT := main.exe
3136 DYN_OUT := main-dyn.exe
3237 LWS2_OPT := -lws2_32
3338 STRIP_OPT := --strip-all
39+ CONSOLE_APP := -Wl,-subsystem=console
40+ GUI_APP := -Wl,-subsystem=windows
3441else
3542 STATIC_BUILD_FLAGS += -lpthread -lm -l$(WEBUI_LIB_NAME)-static
3643 DYN_BUILD_FLAGS += -lpthread -lm
3744 STATIC_OUT := main
3845 DYN_OUT := main-dyn
46+ CONSOLE_APP :=
47+ GUI_APP :=
3948 ifeq ($(shell uname),Darwin)
4049 # MacOS
4150 PLATFORM := macos
4251 CC = clang
43- DYN_BUILD_FLAGS += "$(LIB_DIR)/$(WEBUI_LIB_NAME).dylib"
52+ COPY_LIB_CMD := @cp "$(LIB_DIR)/$(WEBUI_LIB_NAME).dylib" "$(WEBUI_LIB_NAME).dylib"
53+ DYN_BUILD_FLAGS += "./$(WEBUI_LIB_NAME).dylib"
4454 else
4555 # Linux
4656 PLATFORM := linux
47- DYN_BUILD_FLAGS += "$(LIB_DIR)/$(WEBUI_LIB_NAME).so"
57+ COPY_LIB_CMD := @cp "$(LIB_DIR)/$(WEBUI_LIB_NAME).so" "$(WEBUI_LIB_NAME).so"
58+ DYN_BUILD_FLAGS += "./$(WEBUI_LIB_NAME).so"
4859 STRIP_OPT := --strip-all
4960 ifeq ($(CC),clang)
5061 LLVM_OPT := llvm-
@@ -56,19 +67,19 @@ endif
5667
5768all : release
5869
59- debug : LIB_DIR := $(LIB_DIR ) /debug
6070debug : --validate-args
6171ifeq ($(BUILD_LIB ) ,true)
6272 @cd "$(PROJECT_DIR)" && $(MAKE) debug
6373endif
6474# Static with Debug info
6575ifneq ($(WEBUI_USE_TLS ) , 1)
6676 @echo "Build C99 Example ($(CC) debug static)..."
67- @$(CC) -g -Wl,-subsystem=console $(STATIC_BUILD_FLAGS) $(LWS2_OPT) -o $(STATIC_OUT)
77+ @$(CC) -g $(CONSOLE_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) -o $(STATIC_OUT)
6878endif
6979# Dynamic with Debug info
7080 @echo "Build C99 Example ($(CC) debug dynamic)..."
71- @$(CC) -g -Wl,-subsystem=console $(DYN_BUILD_FLAGS) $(LWS2_OPT) -o $(DYN_OUT)
81+ $(COPY_LIB_CMD)
82+ @$(CC) -g $(CONSOLE_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) -o $(DYN_OUT)
7283# Clean
7384ifeq ($(PLATFORM ) ,windows)
7485 @- del *.o >nul 2>&1
@@ -85,12 +96,13 @@ endif
8596# Static Release
8697ifneq ($(WEBUI_USE_TLS ) , 1)
8798 @echo "Build C99 Example ($(CC) release static)..."
88- @$(CC) -Os -Wl,-subsystem=windows $(STATIC_BUILD_FLAGS) $(LWS2_OPT) -o $(STATIC_OUT)
99+ @$(CC) -Os $(GUI_APP) $(STATIC_BUILD_FLAGS) $(LWS2_OPT) -o $(STATIC_OUT)
89100 @$(LLVM_OPT)strip $(STRIP_OPT) $(STATIC_OUT)
90101endif
91102# Dynamic Release
92103 @echo "Build C99 Example ($(CC) release dynamic)..."
93- @$(CC) -Wl,-subsystem=windows $(DYN_BUILD_FLAGS) $(LWS2_OPT) -o $(DYN_OUT)
104+ $(COPY_LIB_CMD)
105+ @$(CC) $(GUI_APP) $(DYN_BUILD_FLAGS) $(LWS2_OPT) -o $(DYN_OUT)
94106 @$(LLVM_OPT)strip $(STRIP_OPT) $(DYN_OUT)
95107# Clean
96108ifeq ($(PLATFORM ) ,windows)
0 commit comments