Make it build under linux again

This commit is contained in:
2023-05-09 18:43:40 -04:00
parent c879fd21bb
commit 6c8ceeb039
5 changed files with 54 additions and 35 deletions

View File

@@ -97,6 +97,7 @@ OBJ_CORE=\
OBJ_DRV=\
obj/drv/driver.obj\
obj/drv/drvutil.obj\
obj/drv/sslutil.obj\
@@ -112,13 +113,20 @@ ifeq "$(OS)" "linux"
OPT=-g -O0
GPP=g++ -Wall -fvisibility=hidden $(OPT) -std=c++17 -MMD
LIB_SSL=-L./ext/openssl-3.0.1/lib/linux -lssl -lcrypto
LIB_OS=-ldl
luprex: $(OBJ_DRV) driver-linux.o luprexlib.so
$(GPP) -o $@ $(OBJ_DRV) driver-linux.o -L./ext/openssl-linux -lssl -lcrypto -ldl
all: luprex luprexlib.so luprexstatic
luprex: $(OBJ_DRV) luprexlib.so
$(GPP) $(OBJ_DRV) $(LIB_SSL) $(LIB_OS) -o $@
luprexlib.so: $(OBJ_ERIS) $(OBJ_CORE)
$(GPP) -export-dynamic -Wl,--no-allow-shlib-undefined -Wl,-z,defs -shared -o $@ $^
luprexstatic: $(OBJ_DRV) $(OBJ_ERIS) $(OBJ_CORE)
$(GPP) $(OBJ_DRV) $(OBJ_ERIS) $(OBJ_CORE) $(LIB_SSL) $(LIB_OS) -o $@
obj/eris/%.obj: ext/eris-master/src/%.c
$(GPP) -fPIC -DLUA_USE_APICHECK -DLUA_USE_POSIX -o $@ -c $<
@@ -178,35 +186,41 @@ 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
LIB_OS=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)
luprex.exe: luprexlib.dll $(OBJ_DRV)
$(LINK) /Fe: $@ $(OBJ_DRV) $(LIB_SSL) $(LIB_OS)
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)
luprexstatic.exe: $(OBJ_DRV) $(OBJ_ERIS) $(OBJ_CORE)
$(LINK) /Fe: $@ $(OBJ_DRV) $(OBJ_ERIS) $(OBJ_CORE) $(LIB_SSL) $(LIB_OS)
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: $@ $<
$(GPCL) -DLUA_USE_APICHECK -DLUA_COMPAT_ALL -o $@d $<
$(VCCL) /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: $@ $<
$(GPCL) -I./ext/eris-master/src -I./cpp/wrap -I./cpp/core -o $@d $<
$(VCCL) /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: $@ $<
$(GPCL) -I./ext/openssl-3.1.0/inc -I./src/drv -o $@d $<
$(VCCL) /I./ext/openssl-3.1.0/inc -I./src/drv /Fo: $@ $<
endif
#######################################################################
##
## Common Make Rules
##
#######################################################################
#######################################################################
##

View File

@@ -221,9 +221,12 @@ static int console_read(char *bytes, int nbytes) {
static void call_init_engine_wrapper(EngineWrapper *w) {
using InitFn = void (*)(EngineWrapper *);
void *dll_handle = dlopen("./luprex.so", RTLD_NOW | RTLD_LOCAL);
InitFn initfn = (InitFn)dlsym(nullptr, "init_engine_wrapper");
if (initfn == nullptr) {
void *dll_handle = dlopen("./luprexlib.so", RTLD_NOW | RTLD_LOCAL);
assert(dll_handle != nullptr);
InitFn initfn = (InitFn)dlsym(dll_handle, "init_engine_wrapper");
initfn = (InitFn)dlsym(dll_handle, "init_engine_wrapper");
}
assert(initfn != nullptr);
initfn(w);
}
@@ -242,16 +245,9 @@ static void disable_randomization(int argc, char *argv[]) {
}
}
#include "driver-common.cpp"
int main(int argc, char **argv)
{
static void os_initialize(int argc, char **argv) {
disable_randomization(argc, argv);
enable_tty_raw();
assert(OPENSSL_init_ssl(0, NULL) == 1);
sslutil::clear_all_errors();
Driver driver;
return driver.drive(argc, argv);
}

View File

@@ -291,14 +291,7 @@ static void call_init_engine_wrapper(EngineWrapper *w) {
initfn(w);
}
#include "driver-common.cpp"
int main(int argc, char **argv)
{
void os_initialize(int argc, char **argv) {
init_winsock();
assert(OPENSSL_init_ssl(0, NULL) == 1);
sslutil::clear_all_errors();
Driver driver;
return driver.drive(argc, argv);
}

View File

@@ -1,3 +1,10 @@
#if defined(__linux__)
#include "driver-linux.cpp"
#elif defined(WIN32)
#include "driver-windows.cpp"
#endif
#define POLLVEC_SIZE (DRV_MAX_CHAN + 1)
#define MAX_BIO_BUFFER (128 * 1024)
@@ -628,3 +635,12 @@ class Driver {
return 0;
}
};
int main(int argc, char **argv) {
os_initialize(argc, argv);
assert(OPENSSL_init_ssl(0, NULL) == 1);
sslutil::clear_all_errors();
Driver driver;
return driver.drive(argc, argv);
}

BIN
luprex/luprexstatic Executable file

Binary file not shown.