From 9e74e67277dc6e2bdbfaf6042a2f20e5d16724c3 Mon Sep 17 00:00:00 2001 From: Josh Yelon Date: Wed, 10 May 2023 14:09:08 -0400 Subject: [PATCH] Makefile now uses separate build directories for different OS versions --- luprex/.gitignore | 1 + luprex/Makefile | 173 ++++++++++++++------------- luprex/cpp/drv/drvutil.cpp | 4 +- luprex/obj/{ => linux}/core/.gitkeep | 0 luprex/obj/{ => linux}/drv/.gitkeep | 0 luprex/obj/{ => linux}/eris/.gitkeep | 0 luprex/obj/mingw/core/.gitkeep | 0 luprex/obj/mingw/drv/.gitkeep | 0 luprex/obj/mingw/eris/.gitkeep | 0 luprex/obj/visual/core/.gitkeep | 0 luprex/obj/visual/drv/.gitkeep | 0 luprex/obj/visual/eris/.gitkeep | 0 12 files changed, 94 insertions(+), 84 deletions(-) rename luprex/obj/{ => linux}/core/.gitkeep (100%) rename luprex/obj/{ => linux}/drv/.gitkeep (100%) rename luprex/obj/{ => linux}/eris/.gitkeep (100%) create mode 100644 luprex/obj/mingw/core/.gitkeep create mode 100644 luprex/obj/mingw/drv/.gitkeep create mode 100644 luprex/obj/mingw/eris/.gitkeep create mode 100644 luprex/obj/visual/core/.gitkeep create mode 100644 luprex/obj/visual/drv/.gitkeep create mode 100644 luprex/obj/visual/eris/.gitkeep diff --git a/luprex/.gitignore b/luprex/.gitignore index 306cfed6..09f03327 100644 --- a/luprex/.gitignore +++ b/luprex/.gitignore @@ -19,6 +19,7 @@ luprex *.pdb obj/** +build/** .vscode/** ext/eris-master/src/lua ext/eris-master/src/luac diff --git a/luprex/Makefile b/luprex/Makefile index c7a65bb5..a6ba7b86 100644 --- a/luprex/Makefile +++ b/luprex/Makefile @@ -27,81 +27,81 @@ $(info Building for $(OS)...) ####################################################################### OBJ_ERIS=\ - obj/eris/lapi.obj \ - obj/eris/lcode.obj \ - obj/eris/lctype.obj \ - obj/eris/ldebug.obj \ - obj/eris/ldo.obj \ - obj/eris/ldump.obj \ - obj/eris/lfunc.obj \ - obj/eris/lgc.obj \ - obj/eris/llex.obj \ - obj/eris/lmem.obj \ - obj/eris/lobject.obj \ - obj/eris/lopcodes.obj \ - obj/eris/lparser.obj \ - obj/eris/lstate.obj \ - obj/eris/lstring.obj \ - obj/eris/ltable.obj \ - obj/eris/ltm.obj \ - obj/eris/lundump.obj \ - obj/eris/lvm.obj \ - obj/eris/lzio.obj \ - obj/eris/lauxlib.obj \ - obj/eris/lbaselib.obj \ - obj/eris/lbitlib.obj \ - obj/eris/lcorolib.obj \ - obj/eris/ldblib.obj \ - obj/eris/liolib.obj \ - obj/eris/lmathlib.obj \ - obj/eris/loslib.obj \ - obj/eris/lstrlib.obj \ - obj/eris/ltablib.obj \ - obj/eris/loadlib.obj \ - obj/eris/linit.obj \ - obj/eris/eris.obj \ + obj/$(OS)/eris/lapi.obj \ + obj/$(OS)/eris/lcode.obj \ + obj/$(OS)/eris/lctype.obj \ + obj/$(OS)/eris/ldebug.obj \ + obj/$(OS)/eris/ldo.obj \ + obj/$(OS)/eris/ldump.obj \ + obj/$(OS)/eris/lfunc.obj \ + obj/$(OS)/eris/lgc.obj \ + obj/$(OS)/eris/llex.obj \ + obj/$(OS)/eris/lmem.obj \ + obj/$(OS)/eris/lobject.obj \ + obj/$(OS)/eris/lopcodes.obj \ + obj/$(OS)/eris/lparser.obj \ + obj/$(OS)/eris/lstate.obj \ + obj/$(OS)/eris/lstring.obj \ + obj/$(OS)/eris/ltable.obj \ + obj/$(OS)/eris/ltm.obj \ + obj/$(OS)/eris/lundump.obj \ + obj/$(OS)/eris/lvm.obj \ + obj/$(OS)/eris/lzio.obj \ + obj/$(OS)/eris/lauxlib.obj \ + obj/$(OS)/eris/lbaselib.obj \ + obj/$(OS)/eris/lbitlib.obj \ + obj/$(OS)/eris/lcorolib.obj \ + obj/$(OS)/eris/ldblib.obj \ + obj/$(OS)/eris/liolib.obj \ + obj/$(OS)/eris/lmathlib.obj \ + obj/$(OS)/eris/loslib.obj \ + obj/$(OS)/eris/lstrlib.obj \ + obj/$(OS)/eris/ltablib.obj \ + obj/$(OS)/eris/loadlib.obj \ + obj/$(OS)/eris/linit.obj \ + obj/$(OS)/eris/eris.obj \ OBJ_CORE=\ - obj/core/invocation.obj\ - obj/core/spookyv2.obj\ - obj/core/eng-malloc.obj\ - obj/core/debugcollector.obj\ - obj/core/drivenengine.obj\ - obj/core/util.obj\ - obj/core/luastack.obj\ - obj/core/traceback.obj\ - obj/core/planemap.obj\ - obj/core/pprint.obj\ - obj/core/luaconsole.obj\ - obj/core/idalloc.obj\ - obj/core/globaldb.obj\ - obj/core/sched.obj\ - obj/core/http.obj\ - obj/core/json.obj\ - obj/core/table.obj\ - obj/core/gui.obj\ - obj/core/luasnap.obj\ - obj/core/animqueue.obj\ - obj/core/streambuffer.obj\ - obj/core/source.obj\ - obj/core/world-core.obj\ - obj/core/world-accessor.obj\ - obj/core/world-difftab.obj\ - obj/core/world-diffxmit.obj\ - obj/core/world-pairtab.obj\ - obj/core/world-testing.obj\ - obj/core/textgame.obj\ - obj/core/lpxserver.obj\ - obj/core/lpxclient.obj\ - obj/core/eng-tests.obj\ - obj/core/printbuffer.obj\ - obj/core/serializelua.obj\ + obj/$(OS)/core/invocation.obj\ + obj/$(OS)/core/spookyv2.obj\ + obj/$(OS)/core/eng-malloc.obj\ + obj/$(OS)/core/debugcollector.obj\ + obj/$(OS)/core/drivenengine.obj\ + obj/$(OS)/core/util.obj\ + obj/$(OS)/core/luastack.obj\ + obj/$(OS)/core/traceback.obj\ + obj/$(OS)/core/planemap.obj\ + obj/$(OS)/core/pprint.obj\ + obj/$(OS)/core/luaconsole.obj\ + obj/$(OS)/core/idalloc.obj\ + obj/$(OS)/core/globaldb.obj\ + obj/$(OS)/core/sched.obj\ + obj/$(OS)/core/http.obj\ + obj/$(OS)/core/json.obj\ + obj/$(OS)/core/table.obj\ + obj/$(OS)/core/gui.obj\ + obj/$(OS)/core/luasnap.obj\ + obj/$(OS)/core/animqueue.obj\ + obj/$(OS)/core/streambuffer.obj\ + obj/$(OS)/core/source.obj\ + obj/$(OS)/core/world-core.obj\ + obj/$(OS)/core/world-accessor.obj\ + obj/$(OS)/core/world-difftab.obj\ + obj/$(OS)/core/world-diffxmit.obj\ + obj/$(OS)/core/world-pairtab.obj\ + obj/$(OS)/core/world-testing.obj\ + obj/$(OS)/core/textgame.obj\ + obj/$(OS)/core/lpxserver.obj\ + obj/$(OS)/core/lpxclient.obj\ + obj/$(OS)/core/eng-tests.obj\ + obj/$(OS)/core/printbuffer.obj\ + obj/$(OS)/core/serializelua.obj\ OBJ_DRV=\ - obj/drv/driver.obj\ - obj/drv/drvutil.obj\ - obj/drv/sslutil.obj\ + obj/$(OS)/drv/driver.obj\ + obj/$(OS)/drv/drvutil.obj\ + obj/$(OS)/drv/sslutil.obj\ ####################################################################### @@ -115,10 +115,11 @@ ifeq "$(OS)" "linux" LUPREX_EXE=luprex LUPREXLIB_DLL=luprexlib.so LUPREXSTATIC_EXE=luprexstatic - MAKEDEPS=true COMPILE=g++ -Wall $(OPT) -std=c++17 -fvisibility=hidden -c -MMD -fPIC -o LINKDLL=g++ -Wall $(OPT) -std=c++17 -export-dynamic -Wl,--no-allow-shlib-undefined -Wl,-z,defs -shared -o LINKEXE=g++ -Wall $(OPT) -std=c++17 -o + MAKEDEPS=true + MAKEPDB=true OPENSSL_INCLUDE=-I./ext/openssl-3.0.1/inc LUA_FLAGS=-DLUA_USE_APICHECK -DLUA_USE_POSIX LIBS=-L./ext/openssl-3.0.1/lib/linux -lssl -lcrypto -ldl @@ -136,10 +137,11 @@ ifeq "$(OS)" "mingw" LUPREX_EXE=luprex.exe LUPREXLIB_DLL=luprexlib.dll LUPREXSTATIC_EXE=luprexstatic.exe - MAKEDEPS=true COMPILE=g++ -Wall $(OPT) -std=c++17 -fvisibility=hidden -c -MMD -fPIC -o LINKDLL=g++ -Wall $(OPT) -std=c++17 -Wl,--no-allow-shlib-undefined -shared -o LINKEXE=g++ -Wall $(OPT) -std=c++17 -o + MAKEDEPS=true + MAKEPDB=./ext/cv2pdb.exe OPENSSL_INCLUDE=-I./ext/openssl-3.0.1/inc LUA_FLAGS=-DLUA_USE_APICHECK -DLUA_COMPAT_ALL LIBS=-L./ext/openssl-3.0.1/lib/mingw -lssl -lcrypto -lws2_32 -lcrypt32 -lcryptui @@ -160,10 +162,11 @@ ifeq "$(OS)" "visual" LUPREX_EXE=luprex.exe LUPREXLIB_DLL=luprexlib.dll LUPREXSTATIC_EXE=luprexstatic.exe - MAKEDEPS=g++ -Wall -std=c++17 -MMD -E -o COMPILE=CL $(OPT) /std:c++17 /EHsc /nologo /MD /TP /c /Fo: LINKDLL=CL $(OPT) /std:c++17 /EHsc /nologo /LDd /Fe: LINKEXE=CL $(OPT) /std:c++17 /EHsc /nologo /Fe: + MAKEDEPS=g++ -Wall -std=c++17 -MMD -E -o + MAKEPDB=true OPENSSL_INCLUDE=-I./ext/openssl-3.1.0/inc LUA_FLAGS=-DLUA_USE_APICHECK -DLUA_COMPAT_ALL 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 @@ -175,31 +178,37 @@ endif ## ####################################################################### -all: $(LUPREX_EXE) $(LUPREXSTATIC_EXE) $(LUPREXLIB_DLL) +all: build/$(OS)/$(LUPREX_EXE) build/$(OS)/$(LUPREXSTATIC_EXE) build/$(OS)/$(LUPREXLIB_DLL) -$(LUPREX_EXE): $(LUPREXLIB_DLL) $(OBJ_DRV) - $(LINKEXE) $@ $(OBJ_DRV) $(LIBS) +build/$(OS)/$(LUPREX_EXE): build/$(OS)/$(LUPREXLIB_DLL) $(OBJ_DRV) + $(LINKEXE) $@ $(OBJ_DRV) $(LIBS) + $(MAKEPDB) $@ -$(LUPREXSTATIC_EXE): $(OBJ_DRV) $(OBJ_ERIS) $(OBJ_CORE) +build/$(OS)/$(LUPREXSTATIC_EXE): $(OBJ_DRV) $(OBJ_ERIS) $(OBJ_CORE) $(LINKEXE) $@ $^ $(LIBS) + $(MAKEPDB) $@ -$(LUPREXLIB_DLL): $(OBJ_ERIS) $(OBJ_CORE) +build/$(OS)/$(LUPREXLIB_DLL): $(OBJ_ERIS) $(OBJ_CORE) $(LINKDLL) $@ $^ + $(MAKEPDB) $@ -obj/eris/%.obj: ext/eris-master/src/%.c +obj/$(OS)/eris/%.obj: ext/eris-master/src/%.c $(MAKEDEPS) $@d $(LUA_FLAGS) $< $(COMPILE) $@ $(LUA_FLAGS) $< -obj/core/%.obj: cpp/core/%.cpp +obj/$(OS)/core/%.obj: cpp/core/%.cpp $(MAKEDEPS) $@d -I./ext/eris-master/src -I./cpp/wrap -I./cpp/core $< $(COMPILE) $@ -I./ext/eris-master/src -I./cpp\wrap -I./cpp/core $< -obj/drv/%.obj: cpp/drv/%.cpp +obj/$(OS)/drv/%.obj: cpp/drv/%.cpp $(MAKEDEPS) $@d $(OPENSSL_INCLUDE) -I./src/drv $< $(COMPILE) $@ $(OPENSSL_INCLUDE) -I./src/drv $< clean: - rm -f luprex luprexstatic *.exe *.so *.dll *.ilk *.exp *.pdb *.lib obj/core/*.* obj/drv/*.* obj/eris/*.* + rm -f luprex* luprex*.* *.pdb build/*/* obj/*/*/* + +clean-os: + rm -f luprex* luprex*.* *.pdb build/$(OS)/* obj/$(OS)/*/* ####################################################################### ## diff --git a/luprex/cpp/drv/drvutil.cpp b/luprex/cpp/drv/drvutil.cpp index ece2406a..321adc65 100644 --- a/luprex/cpp/drv/drvutil.cpp +++ b/luprex/cpp/drv/drvutil.cpp @@ -154,7 +154,7 @@ static bool sbwrite_file(std::ostream *s, const char *fn) { std::string package_lua_source(const std::string &base, std::ostream *s) { std::string err; - std::string cfn = base + "/lua/control.lst"; + std::string cfn = base + "/../../lua/control.lst"; std::string ctrl = read_file(cfn.c_str(), err); if (!err.empty()) { return err; @@ -166,7 +166,7 @@ std::string package_lua_source(const std::string &base, std::ostream *s) { sbwrite_string(s, names[i]); } for (int i = 0; i < int(names.size()); i++) { - std::string lfn = base + "/lua/" + names[i]; + std::string lfn = base + "/../../lua/" + names[i]; if (!sbwrite_file(s, lfn.c_str())) { return std::string("Cannot read source file: ") + lfn; } diff --git a/luprex/obj/core/.gitkeep b/luprex/obj/linux/core/.gitkeep similarity index 100% rename from luprex/obj/core/.gitkeep rename to luprex/obj/linux/core/.gitkeep diff --git a/luprex/obj/drv/.gitkeep b/luprex/obj/linux/drv/.gitkeep similarity index 100% rename from luprex/obj/drv/.gitkeep rename to luprex/obj/linux/drv/.gitkeep diff --git a/luprex/obj/eris/.gitkeep b/luprex/obj/linux/eris/.gitkeep similarity index 100% rename from luprex/obj/eris/.gitkeep rename to luprex/obj/linux/eris/.gitkeep diff --git a/luprex/obj/mingw/core/.gitkeep b/luprex/obj/mingw/core/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/luprex/obj/mingw/drv/.gitkeep b/luprex/obj/mingw/drv/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/luprex/obj/mingw/eris/.gitkeep b/luprex/obj/mingw/eris/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/luprex/obj/visual/core/.gitkeep b/luprex/obj/visual/core/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/luprex/obj/visual/drv/.gitkeep b/luprex/obj/visual/drv/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/luprex/obj/visual/eris/.gitkeep b/luprex/obj/visual/eris/.gitkeep new file mode 100644 index 00000000..e69de29b