feat(windows): build support

This commit is contained in:
CLARATION committed 2026-06-20 23:18:52 -07:00
1 parent c0bc9ca3d4
commit 041b5b8504
7 files changed
+151 -42

No files matched your search

+111 -32
View File
@@ -14,7 +14,11 @@ set(CMAKE_OSX_ARCHITECTURES "arm64")
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13") set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(DEPS_PREFIX ${CMAKE_BINARY_DIR}/deps) if(MINGW)
set(DEPS_PREFIX /mingw64)
else()
set(DEPS_PREFIX ${CMAKE_SOURCE_DIR}/deps)
endif()
# ========================= # =========================
# wxWidgets # wxWidgets
@@ -82,6 +86,9 @@ if(APPLE AND WITH_GUI)
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/resources/Info.plist MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/resources/Info.plist
MACOSX_BUNDLE_ICON_FILE palera1n.icns MACOSX_BUNDLE_ICON_FILE palera1n.icns
) )
elseif(MINGW OR MSYS AND WITH_GUI)
set(APP_MANIFEST_RC ${CMAKE_SOURCE_DIR}/resources/app.rc)
add_executable(palera1n WIN32 ${SOURCES} ${APP_MANIFEST_RC})
else() else()
add_executable(palera1n ${SOURCES}) add_executable(palera1n ${SOURCES})
endif() endif()
@@ -119,13 +126,14 @@ if(WITH_GUI)
if(WITH_STATIC) if(WITH_STATIC)
include(ExternalProject) include(ExternalProject)
find_program(PKG_CONFIG_EXECUTABLE NAMES pkg-config REQUIRED) find_program(PKG_CONFIG_EXECUTABLE NAMES pkg-config)
set(PKG_ENV set(PKG_ENV
env env
PKG_CONFIG=${PKG_CONFIG_EXECUTABLE} PKG_CONFIG=${PKG_CONFIG_EXECUTABLE}
PKG_CONFIG_PATH=${DEPS_PREFIX}/lib/pkgconfig:${DEPS_PREFIX}/share/pkgconfig PKG_CONFIG_PATH=${DEPS_PREFIX}/lib/pkgconfig:${DEPS_PREFIX}/share/pkgconfig
PKG_CONFIG_LIBDIR=${DEPS_PREFIX}/lib/pkgconfig:${DEPS_PREFIX}/share/pkgconfig PKG_CONFIG_LIBDIR=${DEPS_PREFIX}/lib/pkgconfig:${DEPS_PREFIX}/share/pkgconfig
PKG_CONFIG_PATH_CUSTOM=${DEPS_PREFIX}/lib/pkgconfig:${DEPS_PREFIX}/share/pkgconfig
CPPFLAGS=-I${DEPS_PREFIX}/include CPPFLAGS=-I${DEPS_PREFIX}/include
LDFLAGS=-L${DEPS_PREFIX}/lib LDFLAGS=-L${DEPS_PREFIX}/lib
@@ -138,6 +146,22 @@ if(WITH_GUI)
mbedtls_LIBS=-lmbedtls\ -lmbedx509\ -lmbedcrypto mbedtls_LIBS=-lmbedtls\ -lmbedx509\ -lmbedcrypto
) )
if(MINGW OR MSYS)
set(IMD_AUTOTOOLS_ARGS
--disable-static
--enable-shared
)
else()
set(IMD_AUTOTOOLS_ARGS
--enable-static
--disable-shared
)
set(MBEDUTILS_ARGS
--with-mbedtls
)
endif()
if(NOT MINGW AND NOT MSYS)
# ========================= # =========================
# mbedTLS # mbedTLS
# ========================= # =========================
@@ -156,8 +180,9 @@ if(WITH_GUI)
INSTALL_DIR ${DEPS_PREFIX} INSTALL_DIR ${DEPS_PREFIX}
) )
endif()
if(LINUX) if(LINUX OR MINGW OR MSYS)
# ========================= # =========================
# libusb # libusb
# ========================= # =========================
@@ -168,6 +193,8 @@ if(WITH_GUI)
CONFIGURE_COMMAND CONFIGURE_COMMAND
${PKG_ENV} ${PKG_ENV}
sh
-l
./autogen.sh ./autogen.sh
--prefix=${DEPS_PREFIX} --prefix=${DEPS_PREFIX}
--disable-udev --disable-udev
@@ -188,10 +215,11 @@ if(WITH_GUI)
CONFIGURE_COMMAND CONFIGURE_COMMAND
${PKG_ENV} ${PKG_ENV}
sh
-l
./autogen.sh ./autogen.sh
--prefix=${DEPS_PREFIX} --prefix=${DEPS_PREFIX}
--enable-static ${IMD_AUTOTOOLS_ARGS}
--disable-shared
BUILD_COMMAND make -j BUILD_COMMAND make -j
INSTALL_COMMAND make install INSTALL_COMMAND make install
@@ -208,10 +236,11 @@ if(WITH_GUI)
CONFIGURE_COMMAND CONFIGURE_COMMAND
${PKG_ENV} ${PKG_ENV}
sh
-l
./autogen.sh ./autogen.sh
--prefix=${DEPS_PREFIX} --prefix=${DEPS_PREFIX}
--enable-static ${IMD_AUTOTOOLS_ARGS}
--disable-shared
BUILD_COMMAND make -j BUILD_COMMAND make -j
INSTALL_COMMAND make install INSTALL_COMMAND make install
@@ -230,10 +259,11 @@ if(WITH_GUI)
CONFIGURE_COMMAND CONFIGURE_COMMAND
${PKG_ENV} ${PKG_ENV}
sh
-l
./autogen.sh ./autogen.sh
--prefix=${DEPS_PREFIX} --prefix=${DEPS_PREFIX}
--enable-static ${IMD_AUTOTOOLS_ARGS}
--disable-shared
--without-systemd --without-systemd
BUILD_COMMAND make -j BUILD_COMMAND make -j
@@ -248,13 +278,16 @@ if(WITH_GUI)
# ========================= # =========================
set(LIBIMOBILEDEVICE_DEPS set(LIBIMOBILEDEVICE_DEPS
mbedtls_ep
libplist_ep libplist_ep
libusbmuxd_ep libusbmuxd_ep
limd_glue_ep limd_glue_ep
) )
if(LINUX) if(NOT MINGW AND NOT MSYS)
list(APPEND LIBIMOBILEDEVICE_DEPS mbedtls_ep)
endif()
if(LINUX OR MINGW OR MSYS)
list(APPEND LIBIMOBILEDEVICE_DEPS libusb_ep) list(APPEND LIBIMOBILEDEVICE_DEPS libusb_ep)
endif() endif()
@@ -263,13 +296,16 @@ if(WITH_GUI)
GIT_TAG ed0d66d0341562731bb19928dfe48155509fa7a7 GIT_TAG ed0d66d0341562731bb19928dfe48155509fa7a7
UPDATE_COMMAND "" UPDATE_COMMAND ""
PATCH_COMMAND patch -p1 < ${CMAKE_SOURCE_DIR}/patches/libimobiledevice/0001-include-windows-header.patch
CONFIGURE_COMMAND CONFIGURE_COMMAND
${PKG_ENV} ${PKG_ENV}
sh
-l
./autogen.sh ./autogen.sh
--prefix=${DEPS_PREFIX} --prefix=${DEPS_PREFIX}
--with-mbedtls ${MBEDUTILS_ARGS}
--enable-static ${IMD_AUTOTOOLS_ARGS}
--disable-shared
--disable-wireless-pairing --disable-wireless-pairing
BUILD_COMMAND make -j BUILD_COMMAND make -j
@@ -301,10 +337,11 @@ if(WITH_GUI)
CONFIGURE_COMMAND CONFIGURE_COMMAND
${PKG_ENV} ${PKG_ENV}
sh
-l
./autogen.sh ./autogen.sh
--prefix=${DEPS_PREFIX} --prefix=${DEPS_PREFIX}
--enable-static ${IMD_AUTOTOOLS_ARGS}
--disable-shared
BUILD_COMMAND make -j BUILD_COMMAND make -j
INSTALL_COMMAND make install INSTALL_COMMAND make install
@@ -313,7 +350,17 @@ if(WITH_GUI)
DEPENDS libplist_ep libusbmuxd_ep limd_glue_ep DEPENDS libplist_ep libusbmuxd_ep limd_glue_ep
) )
set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0") add_dependencies(palera1n
libplist_ep
limd_glue_ep
libusbmuxd_ep
libimobiledevice_ep
libirecovery_ep
)
if(NOT MINGW AND NOT MSYS)
add_dependencies(palera1n mbedtls_ep)
endif()
target_include_directories(palera1n PRIVATE target_include_directories(palera1n PRIVATE
${DEPS_PREFIX}/include ${DEPS_PREFIX}/include
@@ -331,23 +378,55 @@ if(WITH_GUI)
) )
endif() endif()
target_link_libraries(palera1n PRIVATE if(MINGW OR MSYS)
${DEPS_PREFIX}/lib/libimobiledevice-1.0.a
${DEPS_PREFIX}/lib/libirecovery-1.0.a
${DEPS_PREFIX}/lib/libusbmuxd-2.0.a
${DEPS_PREFIX}/lib/libplist-2.0.a
${DEPS_PREFIX}/lib/libimobiledevice-glue-1.0.a
${DEPS_PREFIX}/lib/libmbedtls.a
${DEPS_PREFIX}/lib/libmbedx509.a
${DEPS_PREFIX}/lib/libmbedcrypto.a
)
if(LINUX)
target_link_libraries(palera1n PRIVATE target_link_libraries(palera1n PRIVATE
${DEPS_PREFIX}/lib/libusb-1.0.a imobiledevice-1.0
irecovery-1.0
usbmuxd-2.0
plist-2.0
imobiledevice-glue-1.0
usb-1.0
) )
endif()
set(DLLS
libcrypto-3-x64.dll
libssl-3-x64.dll
libstdc++-6.dll
libgcc_s_seh-1.dll
libwinpthread-1.dll
libimobiledevice-1.0.dll
libimobiledevice-glue-1.0.dll
libirecovery-1.0.dll
libplist-2.0.dll
libusbmuxd-2.0.dll
libusb-1.0.dll
)
foreach(DLL ${DLLS})
add_custom_command(TARGET palera1n POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"C:/tools/msys64/mingw64/bin/${DLL}"
$<TARGET_FILE_DIR:palera1n>
)
endforeach()
else()
target_link_libraries(palera1n PRIVATE
${DEPS_PREFIX}/lib/libimobiledevice-1.0.a
${DEPS_PREFIX}/lib/libirecovery-1.0.a
${DEPS_PREFIX}/lib/libusbmuxd-2.0.a
${DEPS_PREFIX}/lib/libplist-2.0.a
${DEPS_PREFIX}/lib/libimobiledevice-glue-1.0.a
${DEPS_PREFIX}/lib/libmbedtls.a
${DEPS_PREFIX}/lib/libmbedx509.a
${DEPS_PREFIX}/lib/libmbedcrypto.a
)
if(LINUX)
target_link_libraries(palera1n PRIVATE
${DEPS_PREFIX}/lib/libusb-1.0.a
)
endif()
endif()
else() else()
find_package(PkgConfig REQUIRED) find_package(PkgConfig REQUIRED)
@@ -372,7 +451,7 @@ if(WITH_GUI)
target_compile_options(palera1n PRIVATE target_compile_options(palera1n PRIVATE
${IMD_CFLAGS_OTHER} ${IMD_CFLAGS_OTHER}
${IRECOVERY_INCLUDE_DIRS} ${IRECOVERY_CFLAGS_OTHER}
${PLIST_CFLAGS_OTHER} ${PLIST_CFLAGS_OTHER}
${USBMUXD_CFLAGS_OTHER} ${USBMUXD_CFLAGS_OTHER}
) )
+9 -1
View File
@@ -20,7 +20,7 @@ palera1n: payloads
-DCMAKE_BUILD_TYPE=$(BUILD_TYPE) \ -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) \
-DWITH_GUI=$(WITH_GUI) \ -DWITH_GUI=$(WITH_GUI) \
-DWITH_STATIC=$(WITH_STATIC) && \ -DWITH_STATIC=$(WITH_STATIC) && \
cmake --build build -- -j4 cmake --build build
palera1n_xcode: payloads palera1n_xcode: payloads
@cmake -S . -B build \ @cmake -S . -B build \
@@ -29,5 +29,13 @@ palera1n_xcode: payloads
-DWITH_GUI=$(WITH_GUI) \ -DWITH_GUI=$(WITH_GUI) \
-DWITH_STATIC=$(WITH_STATIC) -DWITH_STATIC=$(WITH_STATIC)
palera1n_mingw: payloads
@cmake -S . -B build \
-G "MinGW Makefiles" \
-DCMAKE_BUILD_TYPE=$(BUILD_TYPE) \
-DWITH_GUI=$(WITH_GUI) \
-DWITH_STATIC=$(WITH_STATIC) && \
cmake --build build
clean: clean:
@rm -rf build @rm -rf build
+6
View File
@@ -0,0 +1,6 @@
#include <windows.h>
MAINICON ICON "palera1n.ico"
#define RT_MANIFEST 24
1 RT_MANIFEST "palera1n.exe.manifest"
-9
View File
@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:application>
<asmv3:windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
+21
View File
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="*"
name="app"
type="win32"
/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

+4
View File
@@ -160,6 +160,10 @@ void MainFrame::UpdateDeviceState(const DeviceState& state)
bool PalerainApp::OnInit() bool PalerainApp::OnInit()
{ {
#ifdef _WIN32
wxTheApp->SetAppearance(wxApp::Appearance::Dark);
#endif
auto* frame = new MainFrame(); auto* frame = new MainFrame();
frame->Show(true); frame->Show(true);
return true; return true;