Reorganize the repository for new build system
This commit is contained in:
parent
efceb9d12b
commit
abb91a9874
167
Makefile
167
Makefile
|
@ -1,68 +1,111 @@
|
||||||
CFLAGS = -W -Wunused -Wall -I. -g -o -Ofast -DPH7_ENABLE_MATH_FUNC
|
# Flags to pass to the compiler
|
||||||
LDFLAGS = -Wl,--export-dynamic -ldl -lm -rdynamic
|
CFLAGS = -fPIC -Iinclude -I. -W -Wunused -Wall
|
||||||
CC = gcc
|
|
||||||
INCLUDES =
|
|
||||||
|
|
||||||
ENGINE_OBJS =\
|
# Additional CFLAGS for debug build
|
||||||
api.o \
|
DFLAGS = -O0 -g
|
||||||
builtin.o \
|
|
||||||
compile.o \
|
|
||||||
constant.o \
|
|
||||||
hashmap.o \
|
|
||||||
interpreter.o \
|
|
||||||
lexer.o \
|
|
||||||
lib.o \
|
|
||||||
memobj.o \
|
|
||||||
oop.o \
|
|
||||||
parser.o \
|
|
||||||
vfs.o \
|
|
||||||
vm.o
|
|
||||||
|
|
||||||
ASTYLE_FLAGS =\
|
# Addditional CFLAGS for release build
|
||||||
--style=java \
|
RFLAGS = -O3 -s
|
||||||
--indent=force-tab \
|
|
||||||
--attach-closing-while \
|
# Flags to pass to the linker
|
||||||
--attach-inlines \
|
LFLAGS = -Wl,--export-dynamic -rdynamic
|
||||||
--attach-classes \
|
|
||||||
--indent-classes \
|
# Additional libraries necessary for linker
|
||||||
--indent-modifiers \
|
LIBS = -ldl -lm
|
||||||
--indent-switches \
|
|
||||||
--indent-cases \
|
##############################################
|
||||||
--indent-preproc-block \
|
### Do not modify anything below this line ###
|
||||||
--indent-preproc-define \
|
##############################################
|
||||||
--indent-col1-comments \
|
ifeq ($(OS),Windows_NT)
|
||||||
--pad-oper \
|
PLATFORM := "Windows"
|
||||||
--pad-comma \
|
else
|
||||||
--unpad-paren \
|
PLATFORM := $(shell uname -s)
|
||||||
--delete-empty-lines \
|
endif
|
||||||
--align-pointer=name \
|
|
||||||
--align-reference=name \
|
ifeq "$(PLATFORM)" "Darwin"
|
||||||
--break-one-line-headers \
|
CC := clang
|
||||||
--add-braces \
|
MD := mkdir -p
|
||||||
--verbose \
|
RM := rm -rfv
|
||||||
--formatted \
|
ESUFFIX :=
|
||||||
--lineend=linux
|
LSUFFIX := .dylib
|
||||||
|
endif
|
||||||
|
ifeq "$(PLATFORM)" "FreeBSD"
|
||||||
|
CC := clang
|
||||||
|
MD := mkdir -p
|
||||||
|
RM := rm -rfv
|
||||||
|
ESUFFIX :=
|
||||||
|
LSUFFIX := .so
|
||||||
|
endif
|
||||||
|
ifeq "$(PLATFORM)" "Linux"
|
||||||
|
CC := gcc
|
||||||
|
MD := mkdir -p
|
||||||
|
RM := rm -rfv
|
||||||
|
ESUFFIX :=
|
||||||
|
LSUFFIX := .so
|
||||||
|
endif
|
||||||
|
ifeq "$(PLATFORM)" "OpenBSD"
|
||||||
|
CC := clang
|
||||||
|
MD := mkdir -p
|
||||||
|
RM := rm -rfv
|
||||||
|
ESUFFIX :=
|
||||||
|
LSUFFIX := .so
|
||||||
|
endif
|
||||||
|
ifeq "$(PLATFORM)" "Windows"
|
||||||
|
CC := gcc
|
||||||
|
MD := md
|
||||||
|
RM := del /F
|
||||||
|
ESUFFIX := .exe
|
||||||
|
LSUFFIX := .dll
|
||||||
|
endif
|
||||||
|
|
||||||
|
BINARY := psharp
|
||||||
|
BUILD_DIR := build
|
||||||
|
CFLAGS := $(CFLAGS) -DPH7_LIBRARY_SUFFIX=$(LSUFFIX)
|
||||||
|
|
||||||
|
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))
|
||||||
|
|
||||||
|
MODULE := $(subst /,,$(subst modules/,,$(dir $(wildcard modules/*/))))
|
||||||
|
SAPI := $(subst /,,$(subst sapi/,,$(dir $(wildcard sapi/*/))))
|
||||||
|
|
||||||
|
|
||||||
all: psharp dummy.lib json.lib xml.lib
|
.SUFFIXES:
|
||||||
|
.PHONY: clean debug release style test
|
||||||
|
|
||||||
|
debug: export CFLAGS := $(CFLAGS) $(DFLAGS)
|
||||||
|
debug: engine sapi module
|
||||||
|
release: export CFLAGS := $(CFLAGS) $(RFLAGS)
|
||||||
|
release: engine sapi module
|
||||||
|
|
||||||
|
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:
|
clean:
|
||||||
rm -f psharp $(ENGINE_OBJS) *.lib
|
$(RM) $(BUILD_DIR)
|
||||||
|
|
||||||
style:
|
|
||||||
astyle $(ASTYLE_FLAGS) --recursive ./*.c,*.h
|
|
||||||
|
|
||||||
psharp: $(ENGINE_OBJS)
|
|
||||||
$(CC) -o psharp $(LDFLAGS) $^
|
|
||||||
|
|
||||||
%.o: %.c
|
|
||||||
$(CC) -c $(INCLUDES) $(CFLAGS) -o $@ -c $<
|
|
||||||
|
|
||||||
dummy.lib: ext/dummy/dummy.c
|
|
||||||
$(CC) $(CFLAGS) $(LDFLAGS) -shared -fPIC -o dummy.lib ext/dummy/dummy.c
|
|
||||||
|
|
||||||
json.lib: ext/json/json.c
|
|
||||||
$(CC) $(CFLAGS) $(LDFLAGS) -shared -fPIC -o json.lib ext/json/json.c
|
|
||||||
|
|
||||||
xml.lib: ext/xml/xml.c
|
|
||||||
$(CC) $(CFLAGS) $(LDFLAGS) -shared -fPIC -o xml.lib ext/xml/lib.c ext/xml/xml.c
|
|
||||||
|
|
111
Makefile.new
111
Makefile.new
|
@ -1,111 +0,0 @@
|
||||||
# Flags to pass to the compiler
|
|
||||||
CFLAGS = -fPIC -Iinclude -I. -W -Wunused -Wall
|
|
||||||
|
|
||||||
# Additional CFLAGS for debug build
|
|
||||||
DFLAGS = -O0 -g
|
|
||||||
|
|
||||||
# Addditional CFLAGS for release build
|
|
||||||
RFLAGS = -O3 -s
|
|
||||||
|
|
||||||
# Flags to pass to the linker
|
|
||||||
LFLAGS = -Wl,--export-dynamic -rdynamic
|
|
||||||
|
|
||||||
# Additional libraries necessary for linker
|
|
||||||
LIBS = -ldl -lm
|
|
||||||
|
|
||||||
##############################################
|
|
||||||
### Do not modify anything below this line ###
|
|
||||||
##############################################
|
|
||||||
ifeq ($(OS),Windows_NT)
|
|
||||||
PLATFORM := "Windows"
|
|
||||||
else
|
|
||||||
PLATFORM := $(shell uname -s)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq "$(PLATFORM)" "Darwin"
|
|
||||||
CC := clang
|
|
||||||
MD := mkdir -p
|
|
||||||
RM := rm -rfv
|
|
||||||
ESUFFIX :=
|
|
||||||
LSUFFIX := .dylib
|
|
||||||
endif
|
|
||||||
ifeq "$(PLATFORM)" "FreeBSD"
|
|
||||||
CC := clang
|
|
||||||
MD := mkdir -p
|
|
||||||
RM := rm -rfv
|
|
||||||
ESUFFIX :=
|
|
||||||
LSUFFIX := .so
|
|
||||||
endif
|
|
||||||
ifeq "$(PLATFORM)" "Linux"
|
|
||||||
CC := gcc
|
|
||||||
MD := mkdir -p
|
|
||||||
RM := rm -rfv
|
|
||||||
ESUFFIX :=
|
|
||||||
LSUFFIX := .so
|
|
||||||
endif
|
|
||||||
ifeq "$(PLATFORM)" "OpenBSD"
|
|
||||||
CC := clang
|
|
||||||
MD := mkdir -p
|
|
||||||
RM := rm -rfv
|
|
||||||
ESUFFIX :=
|
|
||||||
LSUFFIX := .so
|
|
||||||
endif
|
|
||||||
ifeq "$(PLATFORM)" "Windows"
|
|
||||||
CC := gcc
|
|
||||||
MD := md
|
|
||||||
RM := del /F
|
|
||||||
ESUFFIX := .exe
|
|
||||||
LSUFFIX := .dll
|
|
||||||
endif
|
|
||||||
|
|
||||||
BINARY := psharp
|
|
||||||
BUILD_DIR := build
|
|
||||||
CFLAGS := $(CFLAGS) -DPH7_LIBRARY_SUFFIX=$(LSUFFIX)
|
|
||||||
|
|
||||||
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))
|
|
||||||
|
|
||||||
MODULE := $(subst /,,$(subst modules/,,$(dir $(wildcard modules/*/))))
|
|
||||||
SAPI := $(subst /,,$(subst sapi/,,$(dir $(wildcard sapi/*/))))
|
|
||||||
|
|
||||||
|
|
||||||
.SUFFIXES:
|
|
||||||
.PHONY: clean debug release style test
|
|
||||||
|
|
||||||
debug: export CFLAGS := $(CFLAGS) $(DFLAGS)
|
|
||||||
debug: engine sapi module
|
|
||||||
release: export CFLAGS := $(CFLAGS) $(RFLAGS)
|
|
||||||
release: engine sapi module
|
|
||||||
|
|
||||||
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)
|
|
Loading…
Reference in New Issue