Visual studio version is working

This commit is contained in:
2023-05-09 22:12:17 -04:00
parent 48628655fc
commit b42393bbac
5 changed files with 138 additions and 95 deletions

4
luprex/.gitignore vendored
View File

@@ -13,6 +13,10 @@ luprex
*.pdb *.pdb
*.so *.so
*.a *.a
*.lib
*.ilk
*.exp
*.pdb
obj/** obj/**
.vscode/** .vscode/**

View File

@@ -6,6 +6,8 @@
ifneq "" "$(findstring -linux-,$(MAKE_HOST))" ifneq "" "$(findstring -linux-,$(MAKE_HOST))"
OS=linux OS=linux
else ifneq "" "$(VSINSTALLDIR)"
OS=visual
else ifneq "" "$(findstring cmd.exe,$(COMSPEC))" else ifneq "" "$(findstring cmd.exe,$(COMSPEC))"
OS=mingw OS=mingw
endif endif
@@ -23,81 +25,80 @@ $(info Building for $(OS)...)
####################################################################### #######################################################################
OBJ_ERIS=\ OBJ_ERIS=\
obj/eris/lapi.o \ obj/eris/lapi.obj \
obj/eris/lcode.o \ obj/eris/lcode.obj \
obj/eris/lctype.o \ obj/eris/lctype.obj \
obj/eris/ldebug.o \ obj/eris/ldebug.obj \
obj/eris/ldo.o \ obj/eris/ldo.obj \
obj/eris/ldump.o \ obj/eris/ldump.obj \
obj/eris/lfunc.o \ obj/eris/lfunc.obj \
obj/eris/lgc.o \ obj/eris/lgc.obj \
obj/eris/llex.o \ obj/eris/llex.obj \
obj/eris/lmem.o \ obj/eris/lmem.obj \
obj/eris/lobject.o \ obj/eris/lobject.obj \
obj/eris/lopcodes.o \ obj/eris/lopcodes.obj \
obj/eris/lparser.o \ obj/eris/lparser.obj \
obj/eris/lstate.o \ obj/eris/lstate.obj \
obj/eris/lstring.o \ obj/eris/lstring.obj \
obj/eris/ltable.o \ obj/eris/ltable.obj \
obj/eris/ltm.o \ obj/eris/ltm.obj \
obj/eris/lundump.o \ obj/eris/lundump.obj \
obj/eris/lvm.o \ obj/eris/lvm.obj \
obj/eris/lzio.o \ obj/eris/lzio.obj \
obj/eris/lauxlib.o \ obj/eris/lauxlib.obj \
obj/eris/lbaselib.o \ obj/eris/lbaselib.obj \
obj/eris/lbitlib.o \ obj/eris/lbitlib.obj \
obj/eris/lcorolib.o \ obj/eris/lcorolib.obj \
obj/eris/ldblib.o \ obj/eris/ldblib.obj \
obj/eris/liolib.o \ obj/eris/liolib.obj \
obj/eris/lmathlib.o \ obj/eris/lmathlib.obj \
obj/eris/loslib.o \ obj/eris/loslib.obj \
obj/eris/lstrlib.o \ obj/eris/lstrlib.obj \
obj/eris/ltablib.o \ obj/eris/ltablib.obj \
obj/eris/loadlib.o \ obj/eris/loadlib.obj \
obj/eris/linit.o \ obj/eris/linit.obj \
obj/eris/eris.o \ obj/eris/eris.obj \
OBJ_CORE=\ OBJ_CORE=\
obj/core/invocation.o\ obj/core/invocation.obj\
obj/core/spookyv2.o\ obj/core/spookyv2.obj\
obj/core/eng-malloc.o\ obj/core/eng-malloc.obj\
obj/core/debugcollector.o\ obj/core/debugcollector.obj\
obj/core/drivenengine.o\ obj/core/drivenengine.obj\
obj/core/util.o\ obj/core/util.obj\
obj/core/luastack.o\ obj/core/luastack.obj\
obj/core/traceback.o\ obj/core/traceback.obj\
obj/core/planemap.o\ obj/core/planemap.obj\
obj/core/pprint.o\ obj/core/pprint.obj\
obj/core/luaconsole.o\ obj/core/luaconsole.obj\
obj/core/idalloc.o\ obj/core/idalloc.obj\
obj/core/globaldb.o\ obj/core/globaldb.obj\
obj/core/sched.o\ obj/core/sched.obj\
obj/core/http.o\ obj/core/http.obj\
obj/core/json.o\ obj/core/json.obj\
obj/core/table.o\ obj/core/table.obj\
obj/core/gui.o\ obj/core/gui.obj\
obj/core/luasnap.o\ obj/core/luasnap.obj\
obj/core/animqueue.o\ obj/core/animqueue.obj\
obj/core/streambuffer.o\ obj/core/streambuffer.obj\
obj/core/source.o\ obj/core/source.obj\
obj/core/world-core.o\ obj/core/world-core.obj\
obj/core/world-accessor.o\ obj/core/world-accessor.obj\
obj/core/world-difftab.o\ obj/core/world-difftab.obj\
obj/core/world-diffxmit.o\ obj/core/world-diffxmit.obj\
obj/core/world-pairtab.o\ obj/core/world-pairtab.obj\
obj/core/world-testing.o\ obj/core/world-testing.obj\
obj/core/textgame.o\ obj/core/textgame.obj\
obj/core/lpxserver.o\ obj/core/lpxserver.obj\
obj/core/lpxclient.o\ obj/core/lpxclient.obj\
obj/core/eng-tests.o\ obj/core/eng-tests.obj\
obj/core/printbuffer.o\ obj/core/printbuffer.obj\
obj/core/serializelua.o\ obj/core/serializelua.obj\
OBJ_DRV=\ OBJ_DRV=\
obj/drv/drvutil.o\ obj/drv/drvutil.obj\
obj/drv/sslutil.o\ obj/drv/sslutil.obj\
obj/drv/driver-$(OS).o\
####################################################################### #######################################################################
@@ -112,19 +113,19 @@ ifeq "$(OS)" "linux"
OPT=-g -O0 OPT=-g -O0
GPP=g++ -Wall -fvisibility=hidden $(OPT) -std=c++17 -MMD GPP=g++ -Wall -fvisibility=hidden $(OPT) -std=c++17 -MMD
luprex: $(OBJ_DRV) luprexlib.so luprex: $(OBJ_DRV) driver-linux.o luprexlib.so
$(GPP) -o $@ $(OBJ_DRV) -L./ext/openssl-linux -lssl -lcrypto -ldl $(GPP) -o $@ $(OBJ_DRV) driver-linux.o -L./ext/openssl-linux -lssl -lcrypto -ldl
luprexlib.so: $(OBJ_ERIS) $(OBJ_CORE) luprexlib.so: $(OBJ_ERIS) $(OBJ_CORE)
$(GPP) -export-dynamic -Wl,--no-allow-shlib-undefined -Wl,-z,defs -shared-o $@ $^ $(GPP) -export-dynamic -Wl,--no-allow-shlib-undefined -Wl,-z,defs -shared-o $@ $^
obj/eris/%.o: ext/eris-master/src/%.c obj/eris/%.obj: ext/eris-master/src/%.c
$(GPP) -fPIC -DLUA_USE_APICHECK -DLUA_USE_POSIX -o $@ -c $< $(GPP) -fPIC -DLUA_USE_APICHECK -DLUA_USE_POSIX -o $@ -c $<
obj/core/%.o: cpp/core/%.cpp obj/core/%.obj: cpp/core/%.cpp
$(GPP) -fPIC -I./ext/eris-master/src -I./cpp/wrap -I./cpp/core -o $@ -c $< $(GPP) -fPIC -I./ext/eris-master/src -I./cpp/wrap -I./cpp/core -o $@ -c $<
obj/drv/%.o: cpp/drv/%.cpp obj/drv/%.obj: cpp/drv/%.cpp
$(GPP) -I./ext -I./src/drv -o $@ -c $< $(GPP) -I./ext -I./src/drv -o $@ -c $<
endif endif
@@ -141,26 +142,67 @@ ifeq "$(OS)" "mingw"
OPT=-g -O0 OPT=-g -O0
GPP=g++ -Wall -fvisibility=hidden $(OPT) -std=c++17 -MMD GPP=g++ -Wall -fvisibility=hidden $(OPT) -std=c++17 -MMD
luprex.exe: $(OBJ_DRV) luprexlib.dll luprex.exe: $(OBJ_DRV) driver-windows.o luprexlib.dll
$(GPP) -o $@ $(OBJ_DRV) -L./ext/openssl-mingw -lssl -lcrypto -lws2_32 -lcrypt32 -lcryptui $(GPP) -o $@ $(OBJ_DRV) driver-windows.o -L./ext/openssl-mingw -lssl -lcrypto -lws2_32 -lcrypt32 -lcryptui
ext/cv2pdb.exe luprex.exe ext/cv2pdb.exe luprex.exe
luprexlib.dll: $(OBJ_ERIS) $(OBJ_CORE) luprexlib.dll: $(OBJ_ERIS) $(OBJ_CORE)
$(GPP) -Wl,--no-allow-shlib-undefined -shared -o $@ $^ $(GPP) -Wl,--no-allow-shlib-undefined -shared -o $@ $^
ext/cv2pdb.exe luprexlib.dll ext/cv2pdb.exe luprexlib.dll
obj/eris/%.o: ext/eris-master/src/%.c obj/eris/%.obj: ext/eris-master/src/%.c
$(GPP) -fPIC -DLUA_USE_APICHECK -DLUA_COMPAT_ALL -o $@ -c $< $(GPP) -fPIC -DLUA_USE_APICHECK -DLUA_COMPAT_ALL -o $@ -c $<
obj/core/%.o: cpp/core/%.cpp obj/core/%.obj: cpp/core/%.cpp
$(GPP) -fPIC -I./ext/eris-master/src -I./cpp/wrap -I./cpp/core -o $@ -c $< $(GPP) -fPIC -I./ext/eris-master/src -I./cpp/wrap -I./cpp/core -o $@ -c $<
obj/drv/%.o: cpp/drv/%.cpp obj/drv/%.obj: cpp/drv/%.cpp
$(GPP) -I./ext -I./src/drv -o $@ -c $< $(GPP) -I./ext -I./src/drv -o $@ -c $<
endif 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
####################################################################### #######################################################################
## ##
@@ -169,7 +211,7 @@ endif
####################################################################### #######################################################################
clean: clean:
rm -f luprex luprex.exe luprex.so luprexlib.dll *.pdb obj/core/*.* obj/drv/*.* obj/eris/*.* rm -f luprex luprex.exe luprexlib.so luprexlib.dll luprexstatic luprexstatic.exe *.pdb obj/core/*.* obj/drv/*.* obj/eris/*.*
####################################################################### #######################################################################
@@ -178,7 +220,7 @@ clean:
## ##
####################################################################### #######################################################################
-include $(OBJ_ERIS:%.o=%.d) -include $(OBJ_ERIS:%.obj=%.d)
-include $(OBJ_CORE:%.o=%.d) -include $(OBJ_CORE:%.obj=%.d)
-include $(OBJ_DRV:%.o=%.d) -include $(OBJ_DRV:%.obj=%.d)

View File

@@ -14,14 +14,6 @@
#include <charconv> #include <charconv>
#ifdef WIN32
#endif
#ifndef WIN32
#include <time.h>
#include <unistd.h>
#endif
namespace sv { namespace sv {
bool case_insensitive_eq(string_view s1, string_view s2) { bool case_insensitive_eq(string_view s1, string_view s2) {

View File

@@ -279,10 +279,14 @@ static void ssl_load_certificate_authorities(SSL_CTX *ctx) {
} }
static void call_init_engine_wrapper(EngineWrapper *w) { static void call_init_engine_wrapper(EngineWrapper *w) {
HMODULE dll = LoadLibraryA(".\\luprex.dll"); HMODULE exe = GetModuleHandleA(NULL);
assert(dll != nullptr);
using InitFn = void (*)(EngineWrapper *); using InitFn = void (*)(EngineWrapper *);
InitFn initfn = (InitFn)GetProcAddress(dll, "init_engine_wrapper"); InitFn initfn = (InitFn)GetProcAddress(exe, "init_engine_wrapper");
if (initfn == nullptr) {
HMODULE dll = LoadLibraryA(".\\luprexlib.dll");
assert(dll != nullptr);
initfn = (InitFn)GetProcAddress(dll, "init_engine_wrapper");
}
assert(initfn != nullptr); assert(initfn != nullptr);
initfn(w); initfn(w);
} }

View File

@@ -10,6 +10,7 @@
#include <iostream> #include <iostream>
#if defined(_WIN32) #if defined(_WIN32)
#include <windows.h>
#include <profileapi.h> #include <profileapi.h>
#elif defined(__linux__) #elif defined(__linux__)
#include <time.h> #include <time.h>