####################################################################### ## ## Auto detect Operating System ## ####################################################################### ifneq "" "$(findstring -linux-,$(MAKE_HOST))" OS=linux 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.o \ obj/eris/lcode.o \ obj/eris/lctype.o \ obj/eris/ldebug.o \ obj/eris/ldo.o \ obj/eris/ldump.o \ obj/eris/lfunc.o \ obj/eris/lgc.o \ obj/eris/llex.o \ obj/eris/lmem.o \ obj/eris/lobject.o \ obj/eris/lopcodes.o \ obj/eris/lparser.o \ obj/eris/lstate.o \ obj/eris/lstring.o \ obj/eris/ltable.o \ obj/eris/ltm.o \ obj/eris/lundump.o \ obj/eris/lvm.o \ obj/eris/lzio.o \ obj/eris/lauxlib.o \ obj/eris/lbaselib.o \ obj/eris/lbitlib.o \ obj/eris/lcorolib.o \ obj/eris/ldblib.o \ obj/eris/liolib.o \ obj/eris/lmathlib.o \ obj/eris/loslib.o \ obj/eris/lstrlib.o \ obj/eris/ltablib.o \ obj/eris/loadlib.o \ obj/eris/linit.o \ obj/eris/eris.o \ OBJ_CORE=\ obj/core/invocation.o\ obj/core/spookyv2.o\ obj/core/eng-malloc.o\ obj/core/debugcollector.o\ obj/core/drivenengine.o\ obj/core/util.o\ obj/core/luastack.o\ obj/core/traceback.o\ obj/core/planemap.o\ obj/core/pprint.o\ obj/core/luaconsole.o\ obj/core/idalloc.o\ obj/core/globaldb.o\ obj/core/sched.o\ obj/core/http.o\ obj/core/json.o\ obj/core/table.o\ obj/core/gui.o\ obj/core/luasnap.o\ obj/core/animqueue.o\ obj/core/streambuffer.o\ obj/core/source.o\ obj/core/world-core.o\ obj/core/world-accessor.o\ obj/core/world-difftab.o\ obj/core/world-diffxmit.o\ obj/core/world-pairtab.o\ obj/core/world-testing.o\ obj/core/textgame.o\ obj/core/lpxserver.o\ obj/core/lpxclient.o\ obj/core/eng-tests.o\ obj/core/printbuffer.o\ obj/core/serializelua.o\ OBJ_DRV=\ obj/drv/drvutil.o\ obj/drv/sslutil.o\ obj/drv/driver-$(OS).o\ ####################################################################### ## ## Make rules for linux ## ####################################################################### ifeq "$(OS)" "linux" OPT=-g -O0 GPP=g++ -Wall -fvisibility=hidden $(OPT) -std=c++17 -MMD luprex: $(OBJ_DRV) luprexlib.so $(GPP) -o $@ $(OBJ_DRV) -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/%.o: ext/eris-master/src/%.c $(GPP) -fPIC -DLUA_USE_APICHECK -DLUA_USE_POSIX -o $@ -c $< obj/core/%.o: cpp/core/%.cpp $(GPP) -fPIC -I./ext/eris-master/src -I./cpp/wrap -I./cpp/core -o $@ -c $< obj/drv/%.o: 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) luprexlib.dll $(GPP) -o $@ $(OBJ_DRV) -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/%.o: ext/eris-master/src/%.c $(GPP) -fPIC -DLUA_USE_APICHECK -DLUA_COMPAT_ALL -o $@ -c $< obj/core/%.o: cpp/core/%.cpp $(GPP) -fPIC -I./ext/eris-master/src -I./cpp/wrap -I./cpp/core -o $@ -c $< obj/drv/%.o: cpp/drv/%.cpp $(GPP) -I./ext -I./src/drv -o $@ -c $< endif ####################################################################### ## ## Make Clean, deliberately OS independent ## ####################################################################### clean: rm -f luprex luprex.exe luprex.so luprexlib.dll *.pdb obj/core/*.* obj/drv/*.* obj/eris/*.* ####################################################################### ## ## Automatically generated Make Dependencies ## ####################################################################### -include $(OBJ_ERIS:%.o=%.d) -include $(OBJ_CORE:%.o=%.d) -include $(OBJ_DRV:%.o=%.d)