DLL working under mingw
This commit is contained in:
@@ -9,8 +9,9 @@ ifneq "" "$(findstring -linux-,$(MAKE_HOST))"
|
|||||||
OS=linux
|
OS=linux
|
||||||
EXE=luprex
|
EXE=luprex
|
||||||
DLL=luprex.so
|
DLL=luprex.so
|
||||||
LIBS=-L./ext/openssl-mingw -lssl -lcrypto -ldl
|
LIBS=-L./ext/openssl-linux -lssl -lcrypto -ldl
|
||||||
LUAFLAGS=-DLUA_USE_APICHECK -DLUA_USE_POSIX
|
LUAFLAGS=-DLUA_USE_APICHECK -DLUA_USE_POSIX
|
||||||
|
LINKDLL=-export-dynamic -Wl,--no-allow-shlib-undefined -Wl,-z,defs -shared
|
||||||
OPT=-g -O0
|
OPT=-g -O0
|
||||||
|
|
||||||
else ifneq "" "$(findstring cmd.exe,$(COMSPEC))"
|
else ifneq "" "$(findstring cmd.exe,$(COMSPEC))"
|
||||||
@@ -20,6 +21,7 @@ else ifneq "" "$(findstring cmd.exe,$(COMSPEC))"
|
|||||||
DLL=luprex.dll
|
DLL=luprex.dll
|
||||||
LIBS=-L./ext/openssl-mingw -lssl -lcrypto -lws2_32 -lcrypt32 -lcryptui
|
LIBS=-L./ext/openssl-mingw -lssl -lcrypto -lws2_32 -lcrypt32 -lcryptui
|
||||||
LUAFLAGS=-DLUA_USE_APICHECK -DLUA_COMPAT_ALL
|
LUAFLAGS=-DLUA_USE_APICHECK -DLUA_COMPAT_ALL
|
||||||
|
LINKDLL=-Wl,--no-allow-shlib-undefined -shared
|
||||||
OPT=-g -O0
|
OPT=-g -O0
|
||||||
|
|
||||||
else
|
else
|
||||||
@@ -125,10 +127,10 @@ GPP=g++ -Wall -fvisibility=hidden $(OPT) -std=c++17 -MMD
|
|||||||
all: $(EXE) $(DLL)
|
all: $(EXE) $(DLL)
|
||||||
|
|
||||||
$(EXE): $(OBJ_DRV)
|
$(EXE): $(OBJ_DRV)
|
||||||
$(GPP) -o $@ $(OBJ_DRV) -L./ext/openssl-linux -lssl -lcrypto -ldl
|
$(GPP) -o $@ $(OBJ_DRV) $(LIBS)
|
||||||
|
|
||||||
$(DLL): $(OBJ_ERIS) $(OBJ_CORE)
|
$(DLL): $(OBJ_ERIS) $(OBJ_CORE)
|
||||||
$(GPP) -export-dynamic -Wl,--no-allow-shlib-undefined -Wl,-z,defs -shared -o $@ $^
|
$(GPP) $(LINKDLL) -o $@ $^
|
||||||
|
|
||||||
obj/eris/%.o: ext/eris-master/src/%.c
|
obj/eris/%.o: ext/eris-master/src/%.c
|
||||||
$(GPP) -fPIC $(LUAFLAGS) -o $@ -c $<
|
$(GPP) -fPIC $(LUAFLAGS) -o $@ -c $<
|
||||||
|
|||||||
@@ -270,17 +270,11 @@ static void ssl_load_certificate_authorities(SSL_CTX *ctx) {
|
|||||||
CertCloseStore(hStore, 0);
|
CertCloseStore(hStore, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load the DLL if it's not already loaded. Stores
|
|
||||||
// the handle in a global variable.
|
|
||||||
static void load_engine_dll() {
|
|
||||||
// Not actually implemented yet. Currently, the engine
|
|
||||||
// is linked right into the executable.
|
|
||||||
}
|
|
||||||
|
|
||||||
static void call_init_engine_wrapper(EngineWrapper *w) {
|
static void call_init_engine_wrapper(EngineWrapper *w) {
|
||||||
load_engine_dll();
|
HMODULE dll = LoadLibraryA(".\\luprex.dll");
|
||||||
|
assert(dll != nullptr);
|
||||||
using InitFn = void (*)(EngineWrapper *);
|
using InitFn = void (*)(EngineWrapper *);
|
||||||
InitFn initfn = (InitFn)GetProcAddress(GetModuleHandle(NULL), "init_engine_wrapper");
|
InitFn initfn = (InitFn)GetProcAddress(dll, "init_engine_wrapper");
|
||||||
assert(initfn != nullptr);
|
assert(initfn != nullptr);
|
||||||
initfn(w);
|
initfn(w);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user