Files
integration/luprex/Makefile

157 lines
5.3 KiB
Makefile
Raw Normal View History

2023-02-21 15:28:45 -05:00
#######################################################################
##
## Auto detect Operating System
##
#######################################################################
ifneq "" "$(findstring -linux-,$(MAKE_HOST))"
OS:=Linux
2023-05-09 22:12:17 -04:00
else ifneq "" "$(VSINSTALLDIR)"
OS:=Windows
2023-05-09 23:27:22 -04:00
else
OS:=""
endif
2023-02-21 15:28:45 -05:00
ifeq "$(OS)" ""
$(error Cannot figure out which OS to build for."
endif
2023-02-21 15:28:45 -05:00
$(info Building for $(OS)...)
2023-02-14 14:05:45 -05:00
2023-02-21 15:28:45 -05:00
#######################################################################
##
## Make rules for linux
2023-02-21 15:28:45 -05:00
##
#######################################################################
ifeq "$(OS)" "Linux"
OPT:=-g -O0
LUPREX_EXE:=luprex
LUPREXLIB_DLL:=luprexlib.so
LUPREXSTATIC_EXE:=luprexstatic
COMPILE:=g++ -Wall $(OPT) -std=c++20 -fvisibility=hidden -c -MMD -fPIC -o
LINKDLL:=g++ -Wall $(OPT) -std=c++20 -export-dynamic -Wl,--no-allow-shlib-undefined -Wl,-z,defs -shared -o
LINKEXE:=g++ -Wall $(OPT) -std=c++20 -export-dynamic -o
MAKEDEPS:=true
LIBS:=-L./ext/openssl-3.0.1/lib/linux -lssl -lcrypto -ldl
2025-06-16 21:32:40 -04:00
CCJSON:=build/$(OS)/compile_commands.json
FLAGS_ERIS:=-DLUA_USE_APICHECK -DLUA_USE_POSIX
FLAGS_CORE:=-I./ext/eris-master/src -I./cpp/wrap -I./cpp/core -I./ext
FLAGS_DRV:=-I./ext/openssl-3.1.0/inc -I./src/drv -I./ext
endif
2023-05-09 22:12:17 -04:00
#######################################################################
##
## Make rules for visual
##
#######################################################################
ifeq "$(OS)" "Windows"
ifeq "" "$(VSINSTALLDIR)"
$(error You must use vcvars64.bat to set up the visual studio environment variables)
endif
OPT:=/Od /Zi
LUPREX_EXE:=luprex.exe
LUPREXLIB_DLL:=luprexlib.dll
LUPREXSTATIC_EXE:=luprexstatic.exe
COMPILE:=CL $(OPT) /std:c++20 /EHsc /nologo /MD /TP /c /Fo:
LINKDLL:=CL $(OPT) /std:c++20 /EHsc /nologo /LDd /Fe:
LINKEXE:=CL $(OPT) /std:c++20 /EHsc /nologo /Fe:
MAKEDEPS:=g++ -Wall -std=c++20 -MMD -E -o
LIBS:=ext/openssl-3.1.0/lib/visual/libcrypto.lib ext/openssl-3.1.0/lib/visual/libssl.lib ws2_32.lib crypt32.lib cryptui.lib user32.lib advapi32.lib
2025-06-16 21:32:40 -04:00
CCJSON:=build/$(OS)/compile_commands.json
FLAGS_ERIS:=-DLUA_USE_APICHECK -DLUA_COMPAT_ALL
FLAGS_CORE:=-I./ext/eris-master/src -I./cpp/wrap -I./cpp/core -I./ext
FLAGS_DRV:=-I./ext/openssl-3.1.0/inc -I./src/drv -I./ext
2023-05-09 22:14:29 -04:00
endif
#######################################################################
##
## List of all source files
##
#######################################################################
BASE_ERIS := \
lapi lcode lctype ldebug ldo ldump lfunc lgc llex lmem lobject lopcodes \
lparser lstate lstring ltable ltm lundump lvm lzio \
lauxlib lbaselib lbitlib lcorolib ldblib liolib lmathlib loslib \
lstrlib ltablib loadlib linit eris
BASE_CORE := \
invocation spookyv2 eng-malloc debugcollector drivenengine util luastack \
traceback planemap pprint luaconsole luavector idalloc globaldb sched http \
json table luasnap animqueue streambuffer source world-core world-accessor \
world-difftab world-diffxmit world-pairtab world-testing lpxserver lpxclient \
eng-tests printbuffer serializelua
BASE_DRV := driver drvutil osdrvutil sslutil readline
#######################################################################
##
## Generate lists of OBJ files.
##
#######################################################################
OBJ_ERIS := $(patsubst %,build/$(OS)/eris/%.obj,$(BASE_ERIS))
OBJ_CORE := $(patsubst %,build/$(OS)/core/%.obj,$(BASE_CORE))
OBJ_DRV := $(patsubst %,build/$(OS)/drv/%.obj,$(BASE_DRV))
#######################################################################
##
## Make Rules
##
#######################################################################
2023-05-09 22:12:17 -04:00
all: build/$(OS)/$(LUPREX_EXE) build/$(OS)/$(LUPREXSTATIC_EXE) build/$(OS)/$(LUPREXLIB_DLL) $(CCJSON)
2023-05-09 22:12:17 -04:00
2023-07-03 15:25:45 -04:00
build/$(OS)/DIRECTORY:
2023-06-08 16:31:38 -04:00
mkdir -p build/$(OS)/core build/$(OS)/eris build/$(OS)/drv
2023-07-03 15:25:45 -04:00
touch build/$(OS)/DIRECTORY
2023-06-08 16:31:38 -04:00
build/$(OS)/$(LUPREX_EXE): build/$(OS)/$(LUPREXLIB_DLL) $(OBJ_DRV)
$(LINKEXE) $@ $(OBJ_DRV) $(LIBS)
2023-05-09 22:12:17 -04:00
build/$(OS)/$(LUPREXSTATIC_EXE): $(OBJ_DRV) $(OBJ_ERIS) $(OBJ_CORE)
$(LINKEXE) $@ $^ $(LIBS)
2023-05-09 18:43:40 -04:00
build/$(OS)/$(LUPREXLIB_DLL): $(OBJ_ERIS) $(OBJ_CORE)
$(LINKDLL) $@ $^
2023-05-09 22:12:17 -04:00
2023-07-03 15:25:45 -04:00
build/$(OS)/eris/%.obj: ext/eris-master/src/%.c build/$(OS)/DIRECTORY
$(MAKEDEPS) $@d $(FLAGS_ERIS) $<
$(COMPILE) $@ $(FLAGS_ERIS) $<
2023-05-09 22:12:17 -04:00
2023-07-03 15:25:45 -04:00
build/$(OS)/core/%.obj: cpp/core/%.cpp build/$(OS)/DIRECTORY
$(MAKEDEPS) $@d $(FLAGS_CORE) $<
$(COMPILE) $@ $(FLAGS_CORE) $<
2023-05-09 22:12:17 -04:00
2023-07-03 15:25:45 -04:00
build/$(OS)/drv/%.obj: cpp/drv/%.cpp build/$(OS)/DIRECTORY
$(MAKEDEPS) $@d $(FLAGS_DRV) $<
$(COMPILE) $@ $(FLAGS_DRV) $<
$(CCJSON): Makefile add-compile-commands.py
2025-06-16 21:32:40 -04:00
echo "[]" > $(CCJSON)
python3 ./add-compile-commands.py "$(CCJSON)" "$(COMPILE)" "$(FLAGS_ERIS)" "build/$(OS)/eris/FILE.obj" "ext/eris-master/src/FILE.c" $(BASE_ERIS)
python3 ./add-compile-commands.py "$(CCJSON)" "$(COMPILE)" "$(FLAGS_CORE)" "build/$(OS)/cpp/FILE.obj" "cpp/core/FILE.cpp" $(BASE_CORE)
python3 ./add-compile-commands.py "$(CCJSON)" "$(COMPILE)" "$(FLAGS_DRV)" "build/$(OS)/drv/FILE.obj" "cpp/drv/FILE.cpp" $(BASE_DRV)
2023-02-21 15:28:45 -05:00
clean:
rm -f *.pdb
2023-06-08 16:31:38 -04:00
rm -rf build
clean-os:
rm -f *.pdb build/$(OS)/* build/$(OS)/*/*
2023-02-21 15:28:45 -05:00
#######################################################################
##
## Automatically generated Make Dependencies
##
#######################################################################
2023-02-14 14:05:45 -05:00
2023-05-09 22:12:17 -04:00
-include $(OBJ_ERIS:%.obj=%.d)
-include $(OBJ_CORE:%.obj=%.d)
-include $(OBJ_DRV:%.obj=%.d)
2023-02-14 14:05:45 -05:00