Initial version of Makefile that produces library
This commit is contained in:
parent
357be5ec0d
commit
61d4ea1903
67
Makefile
67
Makefile
|
@ -2,13 +2,16 @@
|
||||||
CFLAGS = -fPIC -Iinclude -I. -W -Wunused -Wall
|
CFLAGS = -fPIC -Iinclude -I. -W -Wunused -Wall
|
||||||
|
|
||||||
# Additional CFLAGS for debug build
|
# Additional CFLAGS for debug build
|
||||||
DFLAGS = -O0 -g3
|
DCFLAGS = -O0 -g3
|
||||||
|
|
||||||
# Addditional CFLAGS for release build
|
# Addditional CFLAGS for release build
|
||||||
RFLAGS = -O3 -s
|
RCFLAGS = -O3 -s
|
||||||
|
|
||||||
# Flags to pass to the linker
|
# Flags to pass to the linker
|
||||||
LFLAGS =
|
LDFLAGS =
|
||||||
|
|
||||||
|
# Destination directory
|
||||||
|
DESTDIR ?= $(realpath .)/binary
|
||||||
|
|
||||||
##############################################
|
##############################################
|
||||||
### Do not modify anything below this line ###
|
### Do not modify anything below this line ###
|
||||||
|
@ -21,53 +24,54 @@ endif
|
||||||
|
|
||||||
ifeq "$(PLATFORM)" "Darwin"
|
ifeq "$(PLATFORM)" "Darwin"
|
||||||
CC := clang
|
CC := clang
|
||||||
|
CP := cp -av
|
||||||
MD := mkdir -p
|
MD := mkdir -p
|
||||||
RM := rm -rfv
|
RM := rm -rfv
|
||||||
LIBS := -ldl -lm
|
LIBS := -ldl -lm
|
||||||
LFLAGS := $(LFLAGS) -Wl,-export_dynamic -rdynamic -undefined dynamic_lookup
|
EXESUFFIX :=
|
||||||
ESUFFIX :=
|
LIBSUFFIX := .dylib
|
||||||
LSUFFIX := .dylib
|
|
||||||
endif
|
endif
|
||||||
ifeq "$(PLATFORM)" "FreeBSD"
|
ifeq "$(PLATFORM)" "FreeBSD"
|
||||||
CC := clang
|
CC := clang
|
||||||
|
CP := cp -av
|
||||||
MD := mkdir -p
|
MD := mkdir -p
|
||||||
RM := rm -rfv
|
RM := rm -rfv
|
||||||
LIBS := -lm
|
LIBS := -lm
|
||||||
LFLAGS := $(LFLAGS) -Wl,--export-dynamic -rdynamic
|
EXESUFFIX :=
|
||||||
ESUFFIX :=
|
LIBSUFFIX := .so
|
||||||
LSUFFIX := .so
|
|
||||||
endif
|
endif
|
||||||
ifeq "$(PLATFORM)" "Linux"
|
ifeq "$(PLATFORM)" "Linux"
|
||||||
CC := gcc
|
CC := gcc
|
||||||
|
CP := cp -av
|
||||||
MD := mkdir -p
|
MD := mkdir -p
|
||||||
RM := rm -rfv
|
RM := rm -rfv
|
||||||
LIBS := -ldl -lm
|
LIBS := -ldl -lm
|
||||||
LFLAGS := $(LFLAGS) -Wl,--export-dynamic -rdynamic
|
EXESUFFIX :=
|
||||||
ESUFFIX :=
|
LIBSUFFIX := .so
|
||||||
LSUFFIX := .so
|
|
||||||
endif
|
endif
|
||||||
ifeq "$(PLATFORM)" "OpenBSD"
|
ifeq "$(PLATFORM)" "OpenBSD"
|
||||||
CC := clang
|
CC := clang
|
||||||
|
CP := cp -av
|
||||||
MD := mkdir -p
|
MD := mkdir -p
|
||||||
RM := rm -rfv
|
RM := rm -rfv
|
||||||
LIBS := -lm
|
LIBS := -lm
|
||||||
LFLAGS := $(LFLAGS) -Wl,--export-dynamic -rdynamic
|
EXESUFFIX :=
|
||||||
ESUFFIX :=
|
LIBSUFFIX := .so
|
||||||
LSUFFIX := .so
|
|
||||||
endif
|
endif
|
||||||
ifeq "$(PLATFORM)" "Windows"
|
ifeq "$(PLATFORM)" "Windows"
|
||||||
CC := gcc
|
CC := gcc
|
||||||
|
CP := copy
|
||||||
MD := md
|
MD := md
|
||||||
RM := del /F
|
RM := del /F
|
||||||
LIBS := -ldl -lm
|
LIBS := -ldl -lm
|
||||||
LFLAGS := $(LFLAGS) -Wl,--export-all-symbols -rdynamic
|
EXESUFFIX := .exe
|
||||||
ESUFFIX := .exe
|
LIBSUFFIX := .dll
|
||||||
LSUFFIX := .dll
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
BINARY := psharp
|
BINARY := psharp
|
||||||
BUILD_DIR := build
|
BUILD_DIR := build
|
||||||
CFLAGS := $(CFLAGS) -DPH7_LIBRARY_SUFFIX=\"$(LSUFFIX)\"
|
CFLAGS := $(CFLAGS) -DPH7_LIBRARY_SUFFIX=\"$(LIBSUFFIX)\"
|
||||||
|
LIBFLAGS := -Wl,-rpath=$(DESTDIR) -L$(BUILD_DIR) -l$(BINARY)
|
||||||
|
|
||||||
ENGINE_DIRS := engine/lib engine
|
ENGINE_DIRS := engine/lib engine
|
||||||
ENGINE_SRCS := $(foreach dir,$(ENGINE_DIRS),$(wildcard $(dir)/*.c))
|
ENGINE_SRCS := $(foreach dir,$(ENGINE_DIRS),$(wildcard $(dir)/*.c))
|
||||||
|
@ -79,16 +83,17 @@ SAPI := $(subst /,,$(subst sapi/,,$(dir $(wildcard sapi/*/))))
|
||||||
|
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.PHONY: clean debug release style test
|
.PHONY: clean debug install release style test
|
||||||
|
|
||||||
debug: export CFLAGS := $(CFLAGS) $(DFLAGS)
|
debug: export CFLAGS := $(CFLAGS) $(DCFLAGS)
|
||||||
debug: engine sapi module
|
debug: engine sapi modules
|
||||||
release: export CFLAGS := $(CFLAGS) $(RFLAGS)
|
release: export CFLAGS := $(CFLAGS) $(RCFLAGS)
|
||||||
release: engine sapi module
|
release: engine sapi modules
|
||||||
|
|
||||||
engine: $(ENGINE_OBJS)
|
engine: $(ENGINE_OBJS)
|
||||||
|
$(CC) -o $(BUILD_DIR)/lib$(BINARY)$(LIBSUFFIX) $(LDFLAGS) $(LIBS) -shared $(ENGINE_OBJS)
|
||||||
|
|
||||||
module: $(MODULE)
|
modules: $(MODULE)
|
||||||
|
|
||||||
sapi: $(SAPI)
|
sapi: $(SAPI)
|
||||||
|
|
||||||
|
@ -101,18 +106,22 @@ $(MODULE):
|
||||||
$(eval MODULE_SRCS := $(foreach dir,modules/$(MODULE_DIRS),$(wildcard $(dir)/*.c)))
|
$(eval MODULE_SRCS := $(foreach dir,modules/$(MODULE_DIRS),$(wildcard $(dir)/*.c)))
|
||||||
$(eval MODULE_MAKE := $(MODULE_SRCS:.c=.o))
|
$(eval MODULE_MAKE := $(MODULE_SRCS:.c=.o))
|
||||||
$(eval MODULE_OBJS := $(addprefix $(BUILD_DIR)/,$(MODULE_MAKE)))
|
$(eval MODULE_OBJS := $(addprefix $(BUILD_DIR)/,$(MODULE_MAKE)))
|
||||||
$(eval MODULE_PROG := $(MODULE_DIRS)$(LSUFFIX))
|
$(eval MODULE_PROG := $(MODULE_DIRS)$(LIBSUFFIX))
|
||||||
$(MAKE) $(MODULE_OBJS)
|
$(MAKE) $(MODULE_OBJS)
|
||||||
$(CC) -o $(BUILD_DIR)/$(MODULE_PROG) $(LFLAGS) $(LIBS) -shared $(MODULE_OBJS)
|
$(CC) -o $(BUILD_DIR)/$(MODULE_PROG) $(LDFLAGS) $(LIBFLAGS) -shared $(MODULE_OBJS)
|
||||||
|
|
||||||
$(SAPI):
|
$(SAPI):
|
||||||
$(eval SAPI_DIRS := $@)
|
$(eval SAPI_DIRS := $@)
|
||||||
$(eval SAPI_SRCS := $(foreach dir,sapi/$(SAPI_DIRS),$(wildcard $(dir)/*.c)))
|
$(eval SAPI_SRCS := $(foreach dir,sapi/$(SAPI_DIRS),$(wildcard $(dir)/*.c)))
|
||||||
$(eval SAPI_MAKE := $(SAPI_SRCS:.c=.o))
|
$(eval SAPI_MAKE := $(SAPI_SRCS:.c=.o))
|
||||||
$(eval SAPI_OBJS := $(addprefix $(BUILD_DIR)/,$(SAPI_MAKE)))
|
$(eval SAPI_OBJS := $(addprefix $(BUILD_DIR)/,$(SAPI_MAKE)))
|
||||||
$(eval SAPI_PROG := $(subst -cli,,$(BINARY)-$(SAPI_DIRS))$(ESUFFIX))
|
$(eval SAPI_PROG := $(subst -cli,,$(BINARY)-$(SAPI_DIRS))$(EXESUFFIX))
|
||||||
$(MAKE) $(SAPI_OBJS)
|
$(MAKE) $(SAPI_OBJS)
|
||||||
$(CC) -o $(BUILD_DIR)/$(SAPI_PROG) $(LFLAGS) $(LIBS) $(ENGINE_OBJS) $(SAPI_OBJS)
|
$(CC) -o $(BUILD_DIR)/$(SAPI_PROG) $(LDFLAGS) $(LIBFLAGS) $(SAPI_OBJS)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) $(BUILD_DIR)
|
$(RM) $(BUILD_DIR)
|
||||||
|
|
||||||
|
install:
|
||||||
|
$(MD) $(DESTDIR)
|
||||||
|
$(CP) $(BUILD_DIR)/* $(DESTDIR)/
|
||||||
|
|
Loading…
Reference in New Issue