Initial release commit
This commit is contained in:
59
makefile
Normal file
59
makefile
Normal file
@@ -0,0 +1,59 @@
|
||||
CXX := clang++
|
||||
|
||||
INCLUDES := include src thirdparty/luajit/src
|
||||
LIBRARY_DIRECTORIES := thirdparty/luajit/src
|
||||
LINKER_INPUTS := lua51 luajit
|
||||
|
||||
DEBUG_DEFINES :=
|
||||
DEFINES :=
|
||||
|
||||
CXX_FLAGS := -std=c++20 -g -O0
|
||||
CXX_DEBUG_FLAGS :=
|
||||
LNK_FLAGS := -g -O0
|
||||
LNK_DEBUG_FLAGS :=
|
||||
|
||||
LUAJUT_BUILD_CMD := call msvcbuild.bat
|
||||
|
||||
.PHONY: all clean
|
||||
all: build_deps link_lbs
|
||||
|
||||
# From https://stackoverflow.com/a/18258352/8617429
|
||||
rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d))
|
||||
define \n
|
||||
|
||||
endef
|
||||
ifeq ($(OS), Windows_NT)
|
||||
PLATFORM_SEPERATOR := &
|
||||
touch = type nul > $(1)
|
||||
rm = rmdir /S /Q $(1) > nul || (exit 0)
|
||||
RM = del
|
||||
mkdir = mkdir $(subst /,\,$(1)) > nul 2>&1 || (exit 0)
|
||||
OUTPUT_NAME := lbs.exe
|
||||
else
|
||||
PLATFORM_SEPERATOR := &&
|
||||
touch = touch $(1)
|
||||
rm = rm -rf $(1)
|
||||
RM = rm -f
|
||||
mkdir = mkdir -p $(1)
|
||||
OUTPUT_NAME := lbs
|
||||
endif
|
||||
|
||||
clean:
|
||||
$(call RM,$(call rwildcard, obj,*.o) build/$(OUTPUT_NAME))
|
||||
|
||||
SOURCE_FILES := $(call rwildcard,src,*.cpp,*.hpp)
|
||||
OBJECT_FILES := $(foreach d,$(addsuffix .o,$(SOURCE_FILES)), obj/$(d))
|
||||
|
||||
obj/src/%.cpp.o: src/%.cpp
|
||||
$(CXX) -c $(CXX_FLAGS) $(foreach inc,$(INCLUDES),-I$(inc)) $(foreach def,$(DEFINES),-D$(def)) $< -o $@
|
||||
obj/src/%.hpp.o: src/%.hpp
|
||||
|
||||
link_lbs: $(OBJECT_FILES)
|
||||
$(CXX) $(LNK_FLAGS) $(LNK_FLAGS) $(foreach lib,$(LIBRARY_DIRECTORIES),-L$(lib)) $(foreach lnk,$(LINKER_INPUTS),-l$(lnk)) $^ -o build/$(OUTPUT_NAME)
|
||||
|
||||
build_deps: .make/thirdparty_luajit
|
||||
|
||||
.make/thirdparty_luajit:
|
||||
git submodule update --init --recursive
|
||||
cd thirdparty/luajit/src $(PLATFORM_SEPERATOR) $(LUAJUT_BUILD_CMD)
|
||||
$(call touch,".make/thirdparty_luajit")
|
||||
Reference in New Issue
Block a user