diff --git a/CMakeLists.txt b/CMakeLists.txt index fea6217..0aea0ea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -153,7 +153,7 @@ elseif(LINUX) list(APPEND MAIN_HEADERS src/xdg-user-dir-lookup.h) elseif(BSD) find_package(PkgConfig REQUIRED) - pkg_check_modules(LINUXPKGS REQUIRED gtk+-3.0) + pkg_check_modules(LINUXPKGS REQUIRED gtk+-3.0 libxfconf-0) include_directories(${LINUXPKGS_INCLUDE_DIRS}) add_compile_options(${LINUXPKGS_CFLAGS_OTHER}) list(APPEND PLATFORM_LIBRARIES ${LINUXPKGS_LDFLAGS}) @@ -421,7 +421,7 @@ find_package(Ruby 3.0 REQUIRED COMPONENTS Development) pkg_check_modules(VORBISFILE REQUIRED vorbisfile) find_package_handle_standard_args(pixman-1 DEFAULT_MSG PIXMAN_LIBRARY PIXMAN_INCLUDE_DIR) mark_as_advanced(PIXMAN_INCLUDE_DIR PIXMAN_LIBRARY) -find_package(OpenSSL CONFIG REQUIRED COMPONENTS Crypto) +find_package(OpenSSL REQUIRED COMPONENTS Crypto) pkg_check_modules(SIGC2 REQUIRED sigc++-2.0) target_compile_definitions(${PROJECT_NAME} PRIVATE ${DEFINES}) diff --git a/binding-mri/binding-mri.cpp b/binding-mri/binding-mri.cpp index d484746..7b7b5f0 100644 --- a/binding-mri/binding-mri.cpp +++ b/binding-mri/binding-mri.cpp @@ -398,7 +398,7 @@ static void runCustomScript(const std::string &filename){ std::string scriptData; if (!readFileSDL(filename.c_str(), scriptData)){ - crash(Exception::NoFileError, false, "Unable to open %s", filename); + crash(Exception::NoFileError, false, "Unable to open %s", filename.c_str()); return; } @@ -430,7 +430,7 @@ static void runRMXPScripts(BacktraceData &btData){ try{ scriptArray = kernelLoadDataInt(scriptPack.c_str(), false); }catch (const Exception &e){ - crash(Exception::IOError, false ,"Failed to read script data: %s", e.msg); + crash(Exception::IOError, false, "Failed to read script data: %s", e.msg.c_str()); return; } diff --git a/binding-mri/binding-util.h b/binding-mri/binding-util.h index 8964139..d549bc1 100644 --- a/binding-mri/binding-util.h +++ b/binding-mri/binding-util.h @@ -26,6 +26,7 @@ //костыль ебаный сука #undef snprintf #undef inline +#undef close #include "exception.h" diff --git a/binding-mri/journal-binding.cpp b/binding-mri/journal-binding.cpp index 0f84e1a..ce91ace 100644 --- a/binding-mri/journal-binding.cpp +++ b/binding-mri/journal-binding.cpp @@ -19,7 +19,7 @@ #include #include #include - #ifdef OS_LINUX + #ifdef __linux__ #include #endif #include @@ -164,7 +164,7 @@ void journalBindingInit(){ mutex = SDL_CreateMutex(); SDL_memset((char*)lang_buffer, 0, BUFFER_SIZE); lang_buffer[0] = '_'; -#if defined __linux +#ifdef unix_like mkfifo(PIPE_PATH.c_str(), 0666); atexit(cleanup_pipe); #endif diff --git a/binding-mri/niko-binding.cpp b/binding-mri/niko-binding.cpp index ec8e169..33e0d8e 100644 --- a/binding-mri/niko-binding.cpp +++ b/binding-mri/niko-binding.cpp @@ -19,7 +19,7 @@ #include #include #include - #ifdef OS_LINUX + #ifdef __linux__ #include #endif #include diff --git a/binding-mri/screen-binding.cpp b/binding-mri/screen-binding.cpp index 92c2551..cbcd18e 100644 --- a/binding-mri/screen-binding.cpp +++ b/binding-mri/screen-binding.cpp @@ -6,6 +6,10 @@ #include "sharedstate.h" #include "pipe.h" +#if defined __FreeBSD__ || defined __DragonFly__ +#include +#endif + static Pipe ipc; static void start(){ @@ -29,10 +33,19 @@ static void start(){ #else #if defined unix_like char path[PATH_MAX]; - ssize_t len = readlink("/proc/self/exe", path, PATH_MAX); - if (len == -1) - rb_raise(rb_eRuntimeError, "Cannot determine path of running executable"); - std::string exename = std::string(path, len); + std::string exename; + #if defined __FreeBSD__ || defined __DragonFly__ + int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1}; + size_t size = sizeof(path); + if (sysctl(mib, 4, path, &size, NULL, 0) != 0) + rb_raise(rb_eRuntimeError, "Cannot determine path of running executable"); + exename = std::string(path); + #else + ssize_t len = readlink("/proc/self/exe", path, PATH_MAX); + if (len == -1) + rb_raise(rb_eRuntimeError, "Cannot determine path of running executable"); + exename = std::string(path, len); + #endif #else #endif diff --git a/src/main.cpp b/src/main.cpp index 1cc9657..b7f7036 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -284,7 +284,7 @@ int main(int argc, char *argv[]){ if (!conf.gameFolder.empty()){ if (chdir(conf.gameFolder.c_str()) != 0){ - crash(Exception::SDLError, false, "Unable to switch into gameFolder %s", conf.gameFolder); + crash(Exception::SDLError, false, "Unable to switch into gameFolder %s", conf.gameFolder.c_str()); return 0; } } diff --git a/src/meow.cpp b/src/meow.cpp index 35caba2..f6eea92 100644 --- a/src/meow.cpp +++ b/src/meow.cpp @@ -24,6 +24,9 @@ #include #undef vsnprintf #undef snprintf +#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) || defined(__NetBSD__) +#define BOOST_STACKTRACE_GNU_SOURCE_NOT_REQUIRED +#endif #include #include #include diff --git a/src/modloader.cpp b/src/modloader.cpp index 9507b56..17d488f 100644 --- a/src/modloader.cpp +++ b/src/modloader.cpp @@ -17,7 +17,6 @@ #include #include #include -#include #include #include #include diff --git a/src/xdg-user-dir-lookup.c b/src/xdg-user-dir-lookup.c index 85e7df1..ebf99f8 100644 --- a/src/xdg-user-dir-lookup.c +++ b/src/xdg-user-dir-lookup.c @@ -27,6 +27,7 @@ #include "xdg-user-dir-lookup.h" +#include #include #include /**