227 lines
5.8 KiB
Makefile
227 lines
5.8 KiB
Makefile
#######################################################################
|
|
##
|
|
## Auto detect Operating System
|
|
##
|
|
#######################################################################
|
|
|
|
ifneq "" "$(findstring -linux-,$(MAKE_HOST))"
|
|
OS=linux
|
|
else ifneq "" "$(VSINSTALLDIR)"
|
|
OS=visual
|
|
else ifneq "" "$(findstring cmd.exe,$(COMSPEC))"
|
|
OS=mingw
|
|
endif
|
|
|
|
ifeq "$(OS)" ""
|
|
$(error Cannot figure out which OS to build for."
|
|
endif
|
|
$(info Building for $(OS)...)
|
|
|
|
|
|
#######################################################################
|
|
##
|
|
## List of all OBJ files
|
|
##
|
|
#######################################################################
|
|
|
|
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_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_DRV=\
|
|
obj/drv/drvutil.obj\
|
|
obj/drv/sslutil.obj\
|
|
|
|
|
|
#######################################################################
|
|
##
|
|
## Make rules for linux
|
|
##
|
|
#######################################################################
|
|
|
|
|
|
ifeq "$(OS)" "linux"
|
|
|
|
OPT=-g -O0
|
|
GPP=g++ -Wall -fvisibility=hidden $(OPT) -std=c++17 -MMD
|
|
|
|
luprex: $(OBJ_DRV) driver-linux.o luprexlib.so
|
|
$(GPP) -o $@ $(OBJ_DRV) driver-linux.o -L./ext/openssl-linux -lssl -lcrypto -ldl
|
|
|
|
luprexlib.so: $(OBJ_ERIS) $(OBJ_CORE)
|
|
$(GPP) -export-dynamic -Wl,--no-allow-shlib-undefined -Wl,-z,defs -shared-o $@ $^
|
|
|
|
obj/eris/%.obj: ext/eris-master/src/%.c
|
|
$(GPP) -fPIC -DLUA_USE_APICHECK -DLUA_USE_POSIX -o $@ -c $<
|
|
|
|
obj/core/%.obj: cpp/core/%.cpp
|
|
$(GPP) -fPIC -I./ext/eris-master/src -I./cpp/wrap -I./cpp/core -o $@ -c $<
|
|
|
|
obj/drv/%.obj: cpp/drv/%.cpp
|
|
$(GPP) -I./ext -I./src/drv -o $@ -c $<
|
|
|
|
endif
|
|
|
|
|
|
#######################################################################
|
|
##
|
|
## Make rules for mingw
|
|
##
|
|
#######################################################################
|
|
|
|
ifeq "$(OS)" "mingw"
|
|
|
|
OPT=-g -O0
|
|
GPP=g++ -Wall -fvisibility=hidden $(OPT) -std=c++17 -MMD
|
|
|
|
luprex.exe: $(OBJ_DRV) driver-windows.o luprexlib.dll
|
|
$(GPP) -o $@ $(OBJ_DRV) driver-windows.o -L./ext/openssl-mingw -lssl -lcrypto -lws2_32 -lcrypt32 -lcryptui
|
|
ext/cv2pdb.exe luprex.exe
|
|
|
|
luprexlib.dll: $(OBJ_ERIS) $(OBJ_CORE)
|
|
$(GPP) -Wl,--no-allow-shlib-undefined -shared -o $@ $^
|
|
ext/cv2pdb.exe luprexlib.dll
|
|
|
|
obj/eris/%.obj: ext/eris-master/src/%.c
|
|
$(GPP) -fPIC -DLUA_USE_APICHECK -DLUA_COMPAT_ALL -o $@ -c $<
|
|
|
|
obj/core/%.obj: cpp/core/%.cpp
|
|
$(GPP) -fPIC -I./ext/eris-master/src -I./cpp/wrap -I./cpp/core -o $@ -c $<
|
|
|
|
obj/drv/%.obj: cpp/drv/%.cpp
|
|
$(GPP) -I./ext -I./src/drv -o $@ -c $<
|
|
|
|
endif
|
|
|
|
|
|
#######################################################################
|
|
##
|
|
## Make rules for visual
|
|
##
|
|
#######################################################################
|
|
|
|
ifeq "$(OS)" "visual"
|
|
|
|
OPT=/Od /Zi
|
|
MMD=g++ -Wall -std=c++17 -MMD -E
|
|
CL=CL $(OPT) /std:c++17 /EHsc /nologo /MD /TP /c
|
|
LINK=CL $(OPT) /std:c++17 /EHsc /nologo
|
|
OBJ_OS=obj/drv/driver-windows.obj
|
|
LIB_SSL=ext/openssl-3.1.0/lib/visual/libcrypto.lib ext/openssl-3.1.0/lib/visual/libssl.lib
|
|
LIB_WIN=ws2_32.lib crypt32.lib cryptui.lib user32.lib advapi32.lib
|
|
|
|
all: luprex.exe luprexlib.dll luprexstatic.exe
|
|
|
|
luprex.exe: luprexlib.dll $(OBJ_DRV) $(OBJ_OS)
|
|
$(LINK) /Fe: $@ $(OBJ_DRV) $(OBJ_OS) $(LIB_SSL) $(LIB_WIN)
|
|
|
|
luprexlib.dll: $(OBJ_ERIS) $(OBJ_CORE)
|
|
$(LINK) /LDd /Fe: $@ $^
|
|
|
|
luprexstatic.exe: $(OBJ_DRV) $(OBJ_OS) $(OBJ_ERIS) $(OBJ_CORE)
|
|
$(LINK) /Fe: $@ $(OBJ_DRV) $(OBJ_OS) $(OBJ_ERIS) $(OBJ_CORE) $(LIB_SSL) $(LIB_WIN)
|
|
|
|
obj/eris/%.obj: ext/eris-master/src/%.c
|
|
$(MMD) -DLUA_USE_APICHECK -DLUA_COMPAT_ALL -o $@d $<
|
|
$(CL) /DLUA_USE_APICHECK /DLUA_COMPAT_ALL /Fo: $@ $<
|
|
|
|
obj/core/%.obj: cpp/core/%.cpp
|
|
$(MMD) -I./ext/eris-master/src -I./cpp/wrap -I./cpp/core -o $@d $<
|
|
$(CL) /I./ext/eris-master/src /I./cpp\wrap /I./cpp/core /Fo: $@ $<
|
|
|
|
obj/drv/%.obj: cpp/drv/%.cpp
|
|
$(MMD) -I./ext/openssl-3.1.0/inc -I./src/drv -o $@d $<
|
|
$(CL) /I./ext/openssl-3.1.0/inc -I./src/drv /Fo: $@ $<
|
|
|
|
endif
|
|
|
|
|
|
#######################################################################
|
|
##
|
|
## Make Clean, deliberately OS independent
|
|
##
|
|
#######################################################################
|
|
|
|
clean:
|
|
rm -f luprex luprex.exe luprexlib.so luprexlib.dll luprexstatic luprexstatic.exe *.pdb obj/core/*.* obj/drv/*.* obj/eris/*.*
|
|
|
|
|
|
#######################################################################
|
|
##
|
|
## Automatically generated Make Dependencies
|
|
##
|
|
#######################################################################
|
|
|
|
-include $(OBJ_ERIS:%.obj=%.d)
|
|
-include $(OBJ_CORE:%.obj=%.d)
|
|
-include $(OBJ_DRV:%.obj=%.d)
|
|
|