Reorganize the repository for new build system
This commit is contained in:
		
							
								
								
									
										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)
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user