Files
integration/luprex/Makefile

212 lines
5.7 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=visual
else ifneq "" "$(findstring cmd.exe,$(COMSPEC))"
OS=mingw
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
#######################################################################
##
## List of all OBJ files
##
#######################################################################
2023-02-20 17:53:18 -05:00
2023-02-14 14:05:45 -05:00
OBJ_ERIS=\
2023-05-09 22:12:17 -04:00
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 \
2023-02-14 14:05:45 -05:00
OBJ_CORE=\
2023-05-09 22:12:17 -04:00
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\
2023-02-14 14:05:45 -05:00
2023-02-14 14:05:45 -05:00
OBJ_DRV=\
2023-05-09 18:43:40 -04:00
obj/drv/driver.obj\
2023-05-09 22:12:17 -04:00
obj/drv/drvutil.obj\
obj/drv/sslutil.obj\
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
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
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
endif
#######################################################################
##
## Make rules for mingw
##
#######################################################################
ifeq "$(OS)" "mingw"
OPT=-g -O0
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
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
endif
2023-05-09 22:12:17 -04:00
#######################################################################
##
## Make rules for visual
##
#######################################################################
ifeq "$(OS)" "visual"
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
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:
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
2023-05-09 22:14:29 -04:00
endif
#######################################################################
##
## Make Rules
##
#######################################################################
2023-05-09 22:12:17 -04:00
all: $(LUPREX_EXE) $(LUPREXSTATIC_EXE) $(LUPREXLIB_DLL)
2023-05-09 22:12:17 -04:00
$(LUPREX_EXE): $(LUPREXLIB_DLL) $(OBJ_DRV)
$(LINKEXE) $@ $(OBJ_DRV) $(LIBS)
2023-05-09 22:12:17 -04:00
$(LUPREXSTATIC_EXE): $(OBJ_DRV) $(OBJ_ERIS) $(OBJ_CORE)
$(LINKEXE) $@ $^ $(LIBS)
2023-05-09 18:43:40 -04:00
$(LUPREXLIB_DLL): $(OBJ_ERIS) $(OBJ_CORE)
$(LINKDLL) $@ $^
2023-05-09 22:12:17 -04:00
obj/eris/%.obj: ext/eris-master/src/%.c
$(MAKEDEPS) $@d $(LUA_FLAGS) $<
$(COMPILE) $@ $(LUA_FLAGS) $<
2023-05-09 22:12:17 -04:00
obj/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 $<
2023-05-09 22:12:17 -04:00
obj/drv/%.obj: cpp/drv/%.cpp
$(MAKEDEPS) $@d $(OPENSSL_INCLUDE) -I./src/drv $<
$(COMPILE) $@ $(OPENSSL_INCLUDE) -I./src/drv $<
2023-02-21 15:28:45 -05:00
clean:
rm -f luprex luprexstatic *.exe *.so *.dll *.ilk *.exp *.pdb *.lib obj/core/*.* obj/drv/*.* obj/eris/*.*
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