2018-07-20 22:35:09 +02:00
|
|
|
# Flags to pass to the compiler
|
|
|
|
CFLAGS = -fPIC -Iinclude -I. -W -Wunused -Wall
|
2018-07-12 13:45:11 +02:00
|
|
|
|
2018-07-20 22:35:09 +02:00
|
|
|
# Additional CFLAGS for debug build
|
|
|
|
DFLAGS = -O0 -g
|
|
|
|
|
|
|
|
# Addditional CFLAGS for release build
|
|
|
|
RFLAGS = -O3 -s
|
|
|
|
|
|
|
|
# Flags to pass to the linker
|
2018-07-21 22:10:28 +02:00
|
|
|
LFLAGS =
|
2018-07-20 22:35:09 +02:00
|
|
|
|
|
|
|
##############################################
|
|
|
|
### Do not modify anything below this line ###
|
|
|
|
##############################################
|
|
|
|
ifeq ($(OS),Windows_NT)
|
2018-07-21 22:14:30 +02:00
|
|
|
PLATFORM := Windows
|
2018-07-20 22:35:09 +02:00
|
|
|
else
|
|
|
|
PLATFORM := $(shell uname -s)
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq "$(PLATFORM)" "Darwin"
|
|
|
|
CC := clang
|
|
|
|
MD := mkdir -p
|
|
|
|
RM := rm -rfv
|
2018-07-21 20:10:02 +02:00
|
|
|
LIBS := -ldl -lm
|
2018-07-21 22:10:28 +02:00
|
|
|
LFLAGS := $(LFLAGS) -Wl,--export-dynamic -rdynamic
|
2018-07-20 22:35:09 +02:00
|
|
|
ESUFFIX :=
|
|
|
|
LSUFFIX := .dylib
|
|
|
|
endif
|
|
|
|
ifeq "$(PLATFORM)" "FreeBSD"
|
|
|
|
CC := clang
|
|
|
|
MD := mkdir -p
|
|
|
|
RM := rm -rfv
|
2018-07-21 20:10:02 +02:00
|
|
|
LIBS := -lm
|
2018-07-21 22:10:28 +02:00
|
|
|
LFLAGS := $(LFLAGS) -Wl,--export-dynamic -rdynamic
|
2018-07-20 22:35:09 +02:00
|
|
|
ESUFFIX :=
|
|
|
|
LSUFFIX := .so
|
|
|
|
endif
|
|
|
|
ifeq "$(PLATFORM)" "Linux"
|
|
|
|
CC := gcc
|
|
|
|
MD := mkdir -p
|
|
|
|
RM := rm -rfv
|
2018-07-21 20:10:02 +02:00
|
|
|
LIBS := -ldl -lm
|
2018-07-21 22:10:28 +02:00
|
|
|
LFLAGS := $(LFLAGS) -Wl,--export-dynamic -rdynamic
|
2018-07-20 22:35:09 +02:00
|
|
|
ESUFFIX :=
|
|
|
|
LSUFFIX := .so
|
|
|
|
endif
|
|
|
|
ifeq "$(PLATFORM)" "OpenBSD"
|
|
|
|
CC := clang
|
|
|
|
MD := mkdir -p
|
|
|
|
RM := rm -rfv
|
2018-07-21 20:10:02 +02:00
|
|
|
LIBS := -lm
|
2018-07-21 22:10:28 +02:00
|
|
|
LFLAGS := $(LFLAGS) -Wl,--export-dynamic -rdynamic
|
2018-07-20 22:35:09 +02:00
|
|
|
ESUFFIX :=
|
|
|
|
LSUFFIX := .so
|
|
|
|
endif
|
|
|
|
ifeq "$(PLATFORM)" "Windows"
|
|
|
|
CC := gcc
|
|
|
|
MD := md
|
|
|
|
RM := del /F
|
2018-07-21 20:10:02 +02:00
|
|
|
LIBS := -ldl -lm
|
2018-07-21 22:10:28 +02:00
|
|
|
LFLAGS := $(LFLAGS) -Wl,--export-dynamic -rdynamic
|
2018-07-20 22:35:09 +02:00
|
|
|
ESUFFIX := .exe
|
|
|
|
LSUFFIX := .dll
|
|
|
|
endif
|
|
|
|
|
|
|
|
BINARY := psharp
|
|
|
|
BUILD_DIR := build
|
2018-07-20 22:43:52 +02:00
|
|
|
CFLAGS := $(CFLAGS) -DPH7_LIBRARY_SUFFIX=\"$(LSUFFIX)\"
|
2018-07-12 13:45:11 +02:00
|
|
|
|
2018-07-20 22:35:09 +02:00
|
|
|
ENGINE_DIRS := engine/lib engine
|
|
|
|
ENGINE_SRCS := $(foreach dir,$(ENGINE_DIRS),$(wildcard $(dir)/*.c))
|
|
|
|
ENGINE_MAKE := $(ENGINE_SRCS:.c=.o)
|
|
|
|
ENGINE_OBJS := $(addprefix $(BUILD_DIR)/,$(ENGINE_MAKE))
|
2018-07-12 17:36:19 +02:00
|
|
|
|
2018-07-20 22:35:09 +02:00
|
|
|
MODULE := $(subst /,,$(subst modules/,,$(dir $(wildcard modules/*/))))
|
|
|
|
SAPI := $(subst /,,$(subst sapi/,,$(dir $(wildcard sapi/*/))))
|
2018-07-12 13:45:11 +02:00
|
|
|
|
2018-07-18 22:01:04 +02:00
|
|
|
|
2018-07-20 22:35:09 +02:00
|
|
|
.SUFFIXES:
|
|
|
|
.PHONY: clean debug release style test
|
2018-07-19 18:30:56 +02:00
|
|
|
|
2018-07-20 22:35:09 +02:00
|
|
|
debug: export CFLAGS := $(CFLAGS) $(DFLAGS)
|
|
|
|
debug: engine sapi module
|
|
|
|
release: export CFLAGS := $(CFLAGS) $(RFLAGS)
|
|
|
|
release: engine sapi module
|
2018-07-19 19:58:42 +02:00
|
|
|
|
2018-07-20 22:35:09 +02:00
|
|
|
engine: $(ENGINE_OBJS)
|
|
|
|
|
|
|
|
module: $(MODULE)
|
|
|
|
|
|
|
|
sapi: $(SAPI)
|
|
|
|
|
|
|
|
$(BUILD_DIR)/%.o: %.c
|
|
|
|
$(MD) $(dir $@)
|
|
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
|
|
|
|
$(MODULE):
|
|
|
|
$(eval MODULE_DIRS := $@)
|
|
|
|
$(eval MODULE_SRCS := $(foreach dir,modules/$(MODULE_DIRS),$(wildcard $(dir)/*.c)))
|
|
|
|
$(eval MODULE_MAKE := $(MODULE_SRCS:.c=.o))
|
|
|
|
$(eval MODULE_OBJS := $(addprefix $(BUILD_DIR)/,$(MODULE_MAKE)))
|
|
|
|
$(eval MODULE_PROG := $(MODULE_DIRS)$(LSUFFIX))
|
|
|
|
$(MAKE) $(MODULE_OBJS)
|
|
|
|
$(CC) -o $(BUILD_DIR)/$(MODULE_PROG) $(LFLAGS) $(LIBS) -shared $(MODULE_OBJS)
|
|
|
|
|
|
|
|
$(SAPI):
|
|
|
|
$(eval SAPI_DIRS := $@)
|
|
|
|
$(eval SAPI_SRCS := $(foreach dir,sapi/$(SAPI_DIRS),$(wildcard $(dir)/*.c)))
|
|
|
|
$(eval SAPI_MAKE := $(SAPI_SRCS:.c=.o))
|
|
|
|
$(eval SAPI_OBJS := $(addprefix $(BUILD_DIR)/,$(SAPI_MAKE)))
|
|
|
|
$(eval SAPI_PROG := $(subst -cli,,$(BINARY)-$(SAPI_DIRS))$(ESUFFIX))
|
|
|
|
$(MAKE) $(SAPI_OBJS)
|
|
|
|
$(CC) -o $(BUILD_DIR)/$(SAPI_PROG) $(LFLAGS) $(LIBS) $(ENGINE_OBJS) $(SAPI_OBJS)
|
|
|
|
|
|
|
|
clean:
|
|
|
|
$(RM) $(BUILD_DIR)
|