diff --git a/.gitignore b/.gitignore index e2884f4b..4acf8d2e 100644 --- a/.gitignore +++ b/.gitignore @@ -83,7 +83,7 @@ docs/source/_build !/.vscode/extensions.json # Visual Studio CMake -src/out +/out .vs # cutter-deps diff --git a/cmake/BundledRizin.cmake b/cmake/BundledRizin.cmake index 97dd461b..8b21016c 100644 --- a/cmake/BundledRizin.cmake +++ b/cmake/BundledRizin.cmake @@ -14,6 +14,10 @@ else() set(MESON_OPTIONS "--prefix=${RIZIN_INSTALL_DIR}" --libdir=lib) endif() +if (CUTTER_ENABLE_PACKAGING) + list(APPEND MESON_OPTIONS "-Dportable=true") +endif() + find_program(MESON meson) if(NOT MESON) message(FATAL_ERROR "Failed to find meson, which is required to build bundled rizin") diff --git a/dist/CMakeLists.txt b/dist/CMakeLists.txt index 24a338be..66107fe3 100644 --- a/dist/CMakeLists.txt +++ b/dist/CMakeLists.txt @@ -22,7 +22,7 @@ if(WIN32) endif() if (CUTTER_PACKAGE_JSDEC AND CUTTER_ENABLE_DEPENDENCY_DOWNLOADS) install(CODE " - set(ENV{RZ_ALT_SRC_DIR} 1) + set(ENV{RZ_PREFIX} \"\${CMAKE_INSTALL_PREFIX}\") set(ENV{PATH} \"\${CMAKE_INSTALL_PREFIX};\$ENV{PATH}\") execute_process(COMMAND powershell \"${CMAKE_CURRENT_SOURCE_DIR}/bundle_jsdec.ps1\" \"\${CMAKE_INSTALL_PREFIX}\" WORKING_DIRECTORY ${CMAKE_BINARY_DIR} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d03c9490..0ff50cdc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -522,6 +522,10 @@ if(APPLE AND CUTTER_ENABLE_PACKAGING AND CUTTER_USE_BUNDLED_RIZIN) target_compile_definitions(Cutter PRIVATE MACOS_RZ_BUNDLED) endif() +if(CUTTER_ENABLE_PACKAGING) + target_compile_definitions(Cutter PRIVATE CUTTER_ENABLE_PACKAGING) +endif() + include(Translations) # Install files diff --git a/src/CutterApplication.cpp b/src/CutterApplication.cpp index 4f55c27c..428ee717 100644 --- a/src/CutterApplication.cpp +++ b/src/CutterApplication.cpp @@ -109,11 +109,6 @@ CutterApplication::CutterApplication(int &argc, char **argv) : QApplication(argc Python()->initialize(); #endif -#ifdef Q_OS_WIN - // Redefine rz_sys_prefix() behaviour - qputenv("RZ_ALT_SRC_DIR", "1"); -#endif - Core()->initialize(clOptions.enableRizinPlugins); Core()->setSettings(); Config()->loadInitial(); @@ -193,7 +188,7 @@ CutterApplication::CutterApplication(int &argc, char **argv) : QApplication(argc } #endif -#ifdef Q_OS_WIN +#if defined(Q_OS_WIN) && defined(CUTTER_ENABLE_PACKAGING) { # ifdef CUTTER_BUNDLE_JSDEC qputenv("JSDEC_HOME", "lib\\plugins\\jsdec"); diff --git a/src/core/Cutter.cpp b/src/core/Cutter.cpp index 9d201f96..86704804 100644 --- a/src/core/Cutter.cpp +++ b/src/core/Cutter.cpp @@ -183,6 +183,13 @@ CutterCore *CutterCore::instance() void CutterCore::initialize(bool loadPlugins) { + auto prefix = QDir(QCoreApplication::applicationDirPath()); + +#if defined(CUTTER_ENABLE_PACKAGING) && defined(Q_OS_WIN) + auto prefixBytes = prefix.absolutePath().toUtf8(); + rz_sys_prefix(prefixBytes.constData()); +#endif + rz_cons_new(); // initialize console core_ = rz_core_new(); rz_core_task_sync_begin(&core_->tasks); @@ -192,7 +199,6 @@ void CutterCore::initialize(bool loadPlugins) rz_event_hook(core_->analysis->ev, RZ_EVENT_ALL, cutterREventCallback, this); #if defined(APPIMAGE) || defined(MACOS_RZ_BUNDLED) - auto prefix = QDir(QCoreApplication::applicationDirPath()); # ifdef APPIMAGE // Executable is in appdir/bin prefix.cdUp(); @@ -203,8 +209,8 @@ void CutterCore::initialize(bool loadPlugins) prefix.cd("Resources"); qInfo() << "Setting Rizin prefix =" << prefix.absolutePath() << " for macOS Application Bundle."; -# endif setConfig("dir.prefix", prefix.absolutePath()); +# endif auto pluginsDir = prefix; if (pluginsDir.cd("share/rizin/plugins")) {