From 2ad918fed0da53153e11d46f9994aef96e9ab742 Mon Sep 17 00:00:00 2001 From: Curve Date: Thu, 6 Apr 2023 17:59:02 +0200 Subject: [PATCH 01/21] fix: add missing includes --- shims/old-linux-polyfill.c | 1 + src/common.h | 2 ++ 2 files changed, 3 insertions(+) diff --git a/shims/old-linux-polyfill.c b/shims/old-linux-polyfill.c index 4387da6..ff723bc 100644 --- a/shims/old-linux-polyfill.c +++ b/shims/old-linux-polyfill.c @@ -1,4 +1,5 @@ #include +#include #include ssize_t getrandom(void *buf, size_t buflen, unsigned int flags) { diff --git a/src/common.h b/src/common.h index 3053b68..a5a184a 100644 --- a/src/common.h +++ b/src/common.h @@ -19,5 +19,7 @@ typedef struct timeval TIMEVAL; typedef int BOOL; #ifdef __cplusplus +#include +#include using std::min; #endif \ No newline at end of file From 546295ab6cb234c896be63d976397c96e00fcca7 Mon Sep 17 00:00:00 2001 From: Curve Date: Thu, 6 Apr 2023 17:59:20 +0200 Subject: [PATCH 02/21] fix: use socketlen for addrlen --- makefiles/rewrite_altserver_source.py | 1 + 1 file changed, 1 insertion(+) diff --git a/makefiles/rewrite_altserver_source.py b/makefiles/rewrite_altserver_source.py index 13de09c..32213fd 100644 --- a/makefiles/rewrite_altserver_source.py +++ b/makefiles/rewrite_altserver_source.py @@ -12,6 +12,7 @@ content = re.sub(br'\n(std::string StringFromWideString.*?\n\{[\s\S]+?\})', br'/*\1*/', content) content = re.sub(br'\n(std::wstring WideStringFromString.*?\n\{[\s\S]+?\})', br'/*\1*/', content) content = content.replace(b'std::wstring', b'std::string') +content = content.replace(b'int addrlen', b'socklen_t addrlen') content = content.replace(b'std::string_convert', b'std::wstring_convert') content = content.replace(b'boost/filesystem.hpp', b'filesystem') From 51d171871235b8b5d2eea61dd4bfcfd02d71237b Mon Sep 17 00:00:00 2001 From: Curve Date: Thu, 6 Apr 2023 17:59:34 +0200 Subject: [PATCH 03/21] chore: update gitignore --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 9d1f8dd..f6abb76 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ /build *.o -.vscode \ No newline at end of file +.cache +.vscode +upstream_patched \ No newline at end of file From 8f0827dabec5eecb660dbf6402ef7efb9d8c8596 Mon Sep 17 00:00:00 2001 From: Curve Date: Thu, 6 Apr 2023 17:59:57 +0200 Subject: [PATCH 04/21] feat: initial cmake support This is absolutely fucked lmfao --- CMakeLists.txt | 187 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..a93ffc6 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,187 @@ +cmake_minimum_required(VERSION 3.24) +project(altserver-linux VERSION 2.0) + +# ------------------------------------------------------------------------------------------------------------------------------- +# Patch upstream AltServer sources files +# ------------------------------------------------------------------------------------------------------------------------------- + +file(COPY "upstream_repo/" DESTINATION "${CMAKE_SOURCE_DIR}/upstream_patched/") +file(GLOB to_patch "upstream_repo/AltServer/*.c*" "upstream_repo/AltServer/*.h*") + +foreach(file ${to_patch}) + execute_process( + COMMAND python3 makefiles/rewrite_altserver_source.py "${file}" + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + OUTPUT_VARIABLE patched + ) + + string(REPLACE "upstream_repo" "upstream_patched" patched_file "${file}") + file(WRITE "${patched_file}" "${patched}") + + message(STATUS "[altserver] Patched: ${file}") +endforeach() + +set_source_files_properties(${to_patch} PROPERTIES LANGUAGE CXX) +file(REMOVE "${CMAKE_SOURCE_DIR}/upstream_patched/AltServer/AltServer.cpp") +file(REMOVE "${CMAKE_SOURCE_DIR}/upstream_patched/AltServer/WiredConnection.cpp") +file(REMOVE "${CMAKE_SOURCE_DIR}/upstream_patched/AltServer/AnisetteDataManager.cpp") + +# ------------------------------------------------------------------------------------------------------------------------------- +# Patch upstream AltSign sources files +# ------------------------------------------------------------------------------------------------------------------------------- + +file(GLOB to_patch "upstream_repo/AltSign/*.c*" "upstream_repo/AltSign/*.h*") + +foreach(file ${to_patch}) + execute_process( + COMMAND python3 makefiles/AltSign-build/rewrite_altsign_source.py "${file}" + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + OUTPUT_VARIABLE patched + ) + + string(REPLACE "upstream_repo" "upstream_patched" patched_file "${file}") + file(WRITE "${patched_file}" "${patched}") + + message(STATUS "[altserver] Patched: ${file}") +endforeach() + + +set_source_files_properties(${to_patch} PROPERTIES LANGUAGE CXX) +file(REMOVE "${CMAKE_SOURCE_DIR}/upstream_patched/AltServer/AltServer.cpp") +file(REMOVE "${CMAKE_SOURCE_DIR}/upstream_patched/AltServer/WiredConnection.cpp") +file(REMOVE "${CMAKE_SOURCE_DIR}/upstream_patched/AltServer/AnisetteDataManager.cpp") + +# ------------------------------------------------------------------------------------------------------------------------------- +# Patch ldid source files +# ------------------------------------------------------------------------------------------------------------------------------- + +file(GLOB to_patch "upstream_patched/ldid/*.c*" "upstream_patched/ldid/*.h*") + +foreach(file ${to_patch}) + execute_process( + COMMAND python3 makefiles/AltSign-build/rewrite_ldid_source.py "${file}" + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + OUTPUT_VARIABLE patched + ) + + string(REPLACE "upstream_repo" "upstream_patched" patched_file "${file}") + file(WRITE "${patched_file}" "${patched}") + + message(STATUS "[altserver] Patched: ${file}") +endforeach() + +# ------------------------------------------------------------------------------------------------------------------------------- +# Setup executable +# ------------------------------------------------------------------------------------------------------------------------------- + +add_executable(${PROJECT_NAME}) +add_definitions(-w) + +target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17) +set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 17 CXX_EXTENSIONS OFF CXX_STANDARD_REQUIRED ON) + +# ------------------------------------------------------------------------------------------------------------------------------- +# Setup Third Party Libraries +# ------------------------------------------------------------------------------------------------------------------------------- + +# This is really bad +add_definitions(-include "${CMAKE_SOURCE_DIR}/makefiles/dnssd_loader-build/config.h" -include "${CMAKE_SOURCE_DIR}/makefiles/libimobiledevice-build/config.h") + +file(GLOB dnssd_src "libraries/dnssd_loader/*.c*") +set_source_files_properties(${dnssd_src} PROPERTIES LANGUAGE CXX) +target_sources(${PROJECT_NAME} PRIVATE ${dnssd_src}) +target_include_directories(${PROJECT_NAME} PRIVATE "libraries/dnssd_loader") + +file(GLOB libmobile_src "libraries/libimobiledevice/src/*.c*" "libraries/libimobiledevice/common/*.c*") +set_source_files_properties(${libmobile_src} PROPERTIES LANGUAGE C) +target_sources(${PROJECT_NAME} PRIVATE ${libmobile_src}) +target_include_directories(${PROJECT_NAME} PRIVATE "libraries/libimobiledevice/") +target_include_directories(${PROJECT_NAME} PRIVATE "libraries/libimobiledevice/include") + +file(GLOB libmobile_glue_src "libraries/libimobiledevice-glue/src/*.c") +set_source_files_properties(${libmobile_glue_src} PROPERTIES LANGUAGE C) +target_sources(${PROJECT_NAME} PRIVATE ${libmobile_glue_src}) +target_include_directories(${PROJECT_NAME} PRIVATE "libraries/libimobiledevice-glue/include") + +file(GLOB libplist_c_src "libraries/libplist/src/*.c" "libraries/libplist/libcnary/*.c") +list(FILTER libplist_c_src EXCLUDE REGEX "cnary\.c") +set_source_files_properties(${libplist_c_src} PROPERTIES LANGUAGE C) +target_sources(${PROJECT_NAME} PRIVATE ${libplist_c_src}) + +file(GLOB libplist_src "libraries/libplist/src/*.cpp" "libraries/libplist/libcnary/*.cpp") +set_source_files_properties(${libplist_src} PROPERTIES LANGUAGE CXX) +target_sources(${PROJECT_NAME} PRIVATE ${libplist_src}) + +target_include_directories(${PROJECT_NAME} PRIVATE "libraries/libplist/src") +target_include_directories(${PROJECT_NAME} PRIVATE "libraries/libplist/include") +target_include_directories(${PROJECT_NAME} PRIVATE "libraries/libplist/libcnary/include") + +file(GLOB libusbmuxd_src "libraries/libusbmuxd/src/*.c") +set_source_files_properties(${libusbmuxd_src} PROPERTIES LANGUAGE C) +target_sources(${PROJECT_NAME} PRIVATE ${libusbmuxd_src}) +target_include_directories(${PROJECT_NAME} PRIVATE "libraries/libusbmuxd/include") +target_include_directories(${PROJECT_NAME} PRIVATE "upstream_patched/libusbmuxd/common") + +file(GLOB ldid_cpp_src "upstream_patched/ldid/*.cpp") #"upstream_patched/ldid2/*.cpp") +set_source_files_properties(${ldid_cpp_src} PROPERTIES LANGUAGE CXX) +target_sources(${PROJECT_NAME} PRIVATE ${ldid_cpp_src}) + +file(GLOB ldid_src "upstream_patched/ldid/*.c") #"upstream_patched/ldid2/*.c") +set_source_files_properties(${ldid_src} PROPERTIES LANGUAGE C) +target_sources(${PROJECT_NAME} PRIVATE ${ldid_src}) +target_include_directories(${PROJECT_NAME} PRIVATE "upstream_patched/ldid") #"upstream_patched/ldid2") + +file(GLOB minizip_src "upstream_patched/AltSign/Dependencies/minizip/*.c") +list(FILTER minizip_src EXCLUDE REGEX "win|miniunz|minizip\.c") +set_source_files_properties(${minizip_src} PROPERTIES LANGUAGE C) +target_sources(${PROJECT_NAME} PRIVATE ${minizip_src}) +target_include_directories(${PROJECT_NAME} PRIVATE "upstream_patched/AltSign/Dependencies/minizip") + +file(GLOB corecrypto_src "upstream_patched/AltSign/Dependencies/corecrypto/*.c") +set_source_files_properties(${corecrypto_src} PROPERTIES LANGUAGE C) +target_sources(${PROJECT_NAME} PRIVATE ${corecrypto_src}) +target_include_directories(${PROJECT_NAME} PRIVATE "upstream_patched/AltSign/Dependencies/") + +# ------------------------------------------------------------------------------------------------------------------------------- +# Setup Upstream Dependencies +# ------------------------------------------------------------------------------------------------------------------------------- + +find_package(ZLIB REQUIRED) +find_package(Boost REQUIRED) + +target_include_directories(${PROJECT_NAME} PRIVATE ${Boost_INCLUDE_DIRS}) +target_link_libraries(${PROJECT_NAME} PRIVATE ${Boost_LIBRARIES} ZLIB::ZLIB corecrypto_static uuid) + +include(FetchContent) + +FetchContent_Declare(cpprestsdk GIT_REPOSITORY "https://github.com/microsoft/cpprestsdk" GIT_TAG "2.10.18") + +FetchContent_MakeAvailable(cpprestsdk) +target_link_libraries(${PROJECT_NAME} PRIVATE cpprest) + +# ------------------------------------------------------------------------------------------------------------------------------- +# Setup Shims +# ------------------------------------------------------------------------------------------------------------------------------- + +# This is really bad +add_definitions(-fpermissive -include "${CMAKE_SOURCE_DIR}/src/common.h" -include "${CMAKE_SOURCE_DIR}/shims/windows_shim.h") + +target_sources(${PROJECT_NAME} PRIVATE "shims/old-linux-polyfill.c" "shims/windows_shim.cpp") +target_include_directories(${PROJECT_NAME} PRIVATE "src" "shims") + +# ------------------------------------------------------------------------------------------------------------------------------- +# Setup Upstream Project +# ------------------------------------------------------------------------------------------------------------------------------- + +file(GLOB upstream_src "upstream_patched/AltServer/*.c*" "upstream_patched/AltSign/*.c*") +set_source_files_properties(${upstream_src} PROPERTIES LANGUAGE CXX) + +target_include_directories(${PROJECT_NAME} PRIVATE "upstream_patched/AltServer" "upstream_patched/AltSign") +target_sources(${PROJECT_NAME} PRIVATE ${upstream_src}) + +# ------------------------------------------------------------------------------------------------------------------------------- +# Setup Altserver-Linux +# ------------------------------------------------------------------------------------------------------------------------------- + +file(GLOB src "src/*.cpp") +target_sources(${PROJECT_NAME} PRIVATE ${src}) \ No newline at end of file From b07aef3846b74c6e1f4822dd24c814ee77a20cba Mon Sep 17 00:00:00 2001 From: Curve Date: Thu, 6 Apr 2023 23:27:27 +0200 Subject: [PATCH 05/21] refactor: clean up cmakelists --- .gitmodules | 3 - CMakeLists.txt | 186 +++--------------- cmake/AltServer/CMakeLists.txt | 35 ++++ cmake/AltSign/CMakeLists.txt | 41 ++++ cmake/CoreCrypto/CMakeLists.txt | 21 ++ cmake/ldid/CMakeLists.txt | 25 +++ cmake/libimobiledevice-glue/CMakeLists.txt | 19 ++ cmake/libimobiledevice/CMakeLists.txt | 26 +++ cmake/libplist/CMakeLists.txt | 26 +++ cmake/libusbmuxd/CMakeLists.txt | 25 +++ cmake/minizip/CMakeLists.txt | 26 +++ cmake/patch.cmake | 35 ++++ .../config.h => config/dnssd.h | 0 .../config.h => config/libimobiledevice.h | 7 +- libraries/dnssd_loader/CMakeLists.txt | 18 ++ libraries/ideviceinstaller | 1 - makefiles/AltSign-build/AltSign-files.mak | 1 - makefiles/AltSign-build/AltSign.mak | 83 -------- makefiles/AltWindowsShim.mak | 8 - .../dnssd_loader-build/dnssd_loader-files.mak | 2 - makefiles/dnssd_loader-build/dnssd_loader.mak | 36 ---- makefiles/libimobiledevice-build/config.h_bak | 45 ----- .../libimobiledevice-files.mak | 8 - .../libimobiledevice.mak | 49 ----- makefiles/main.mak | 9 - .../altserver.py | 0 .../altsign.py | 0 .../rewrite_ldid_source.py => patches/ldid.py | 0 28 files changed, 328 insertions(+), 407 deletions(-) create mode 100644 cmake/AltServer/CMakeLists.txt create mode 100644 cmake/AltSign/CMakeLists.txt create mode 100644 cmake/CoreCrypto/CMakeLists.txt create mode 100644 cmake/ldid/CMakeLists.txt create mode 100644 cmake/libimobiledevice-glue/CMakeLists.txt create mode 100644 cmake/libimobiledevice/CMakeLists.txt create mode 100644 cmake/libplist/CMakeLists.txt create mode 100644 cmake/libusbmuxd/CMakeLists.txt create mode 100644 cmake/minizip/CMakeLists.txt create mode 100644 cmake/patch.cmake rename makefiles/dnssd_loader-build/config.h => config/dnssd.h (100%) rename makefiles/libimobiledevice-build/config.h => config/libimobiledevice.h (99%) create mode 100644 libraries/dnssd_loader/CMakeLists.txt delete mode 160000 libraries/ideviceinstaller delete mode 100644 makefiles/AltSign-build/AltSign-files.mak delete mode 100644 makefiles/AltSign-build/AltSign.mak delete mode 100644 makefiles/AltWindowsShim.mak delete mode 100644 makefiles/dnssd_loader-build/dnssd_loader-files.mak delete mode 100644 makefiles/dnssd_loader-build/dnssd_loader.mak delete mode 100644 makefiles/libimobiledevice-build/config.h_bak delete mode 100644 makefiles/libimobiledevice-build/libimobiledevice-files.mak delete mode 100644 makefiles/libimobiledevice-build/libimobiledevice.mak delete mode 100644 makefiles/main.mak rename makefiles/rewrite_altserver_source.py => patches/altserver.py (100%) rename makefiles/AltSign-build/rewrite_altsign_source.py => patches/altsign.py (100%) rename makefiles/AltSign-build/rewrite_ldid_source.py => patches/ldid.py (100%) diff --git a/.gitmodules b/.gitmodules index e87767b..8d8ae94 100644 --- a/.gitmodules +++ b/.gitmodules @@ -12,9 +12,6 @@ [submodule "libraries/libimobiledevice"] path = libraries/libimobiledevice url = https://github.com/libimobiledevice/libimobiledevice -[submodule "libraries/ideviceinstaller"] - path = libraries/ideviceinstaller - url = https://github.com/libimobiledevice/ideviceinstaller [submodule "libraries/libimobiledevice-glue"] path = libraries/libimobiledevice-glue url = https://github.com/libimobiledevice/libimobiledevice-glue diff --git a/CMakeLists.txt b/CMakeLists.txt index a93ffc6..2a636cf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,187 +1,61 @@ -cmake_minimum_required(VERSION 3.24) +cmake_minimum_required(VERSION 3.12) project(altserver-linux VERSION 2.0) -# ------------------------------------------------------------------------------------------------------------------------------- -# Patch upstream AltServer sources files -# ------------------------------------------------------------------------------------------------------------------------------- - -file(COPY "upstream_repo/" DESTINATION "${CMAKE_SOURCE_DIR}/upstream_patched/") -file(GLOB to_patch "upstream_repo/AltServer/*.c*" "upstream_repo/AltServer/*.h*") - -foreach(file ${to_patch}) - execute_process( - COMMAND python3 makefiles/rewrite_altserver_source.py "${file}" - WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} - OUTPUT_VARIABLE patched - ) - - string(REPLACE "upstream_repo" "upstream_patched" patched_file "${file}") - file(WRITE "${patched_file}" "${patched}") - - message(STATUS "[altserver] Patched: ${file}") -endforeach() - -set_source_files_properties(${to_patch} PROPERTIES LANGUAGE CXX) -file(REMOVE "${CMAKE_SOURCE_DIR}/upstream_patched/AltServer/AltServer.cpp") -file(REMOVE "${CMAKE_SOURCE_DIR}/upstream_patched/AltServer/WiredConnection.cpp") -file(REMOVE "${CMAKE_SOURCE_DIR}/upstream_patched/AltServer/AnisetteDataManager.cpp") +set(ALTSERVER_DIR "${CMAKE_CURRENT_SOURCE_DIR}") # ------------------------------------------------------------------------------------------------------------------------------- -# Patch upstream AltSign sources files +# Options # ------------------------------------------------------------------------------------------------------------------------------- -file(GLOB to_patch "upstream_repo/AltSign/*.c*" "upstream_repo/AltSign/*.h*") - -foreach(file ${to_patch}) - execute_process( - COMMAND python3 makefiles/AltSign-build/rewrite_altsign_source.py "${file}" - WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} - OUTPUT_VARIABLE patched - ) - - string(REPLACE "upstream_repo" "upstream_patched" patched_file "${file}") - file(WRITE "${patched_file}" "${patched}") - - message(STATUS "[altserver] Patched: ${file}") -endforeach() - - -set_source_files_properties(${to_patch} PROPERTIES LANGUAGE CXX) -file(REMOVE "${CMAKE_SOURCE_DIR}/upstream_patched/AltServer/AltServer.cpp") -file(REMOVE "${CMAKE_SOURCE_DIR}/upstream_patched/AltServer/WiredConnection.cpp") -file(REMOVE "${CMAKE_SOURCE_DIR}/upstream_patched/AltServer/AnisetteDataManager.cpp") +option(altserver_cli "Wether or not to build the cli" ON) # ------------------------------------------------------------------------------------------------------------------------------- -# Patch ldid source files +# Patch upstream project # ------------------------------------------------------------------------------------------------------------------------------- -file(GLOB to_patch "upstream_patched/ldid/*.c*" "upstream_patched/ldid/*.h*") - -foreach(file ${to_patch}) - execute_process( - COMMAND python3 makefiles/AltSign-build/rewrite_ldid_source.py "${file}" - WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} - OUTPUT_VARIABLE patched - ) +include(cmake/patch.cmake) - string(REPLACE "upstream_repo" "upstream_patched" patched_file "${file}") - file(WRITE "${patched_file}" "${patched}") +patch_prepare() - message(STATUS "[altserver] Patched: ${file}") -endforeach() +patch(altserver PATTERN "AltServer/*.[ch]*" EXCLUDE_PATTERN "AltServer/AltServer.cpp" "AltServer/WiredConnection.cpp" "AltServer/AnisetteDataManager.cpp") +patch(altsign PATTERN "AltSign/*.[ch]*") +patch(ldid PATTERN "ldid/*.[ch]*") # ------------------------------------------------------------------------------------------------------------------------------- -# Setup executable +# Compile options # ------------------------------------------------------------------------------------------------------------------------------- -add_executable(${PROJECT_NAME}) -add_definitions(-w) - -target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17) -set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 17 CXX_EXTENSIONS OFF CXX_STANDARD_REQUIRED ON) +add_definitions(-w) # Ouch, we need this because cpprestsdk might cause fat errors otherwise. # ------------------------------------------------------------------------------------------------------------------------------- -# Setup Third Party Libraries +# Force Include some shims # ------------------------------------------------------------------------------------------------------------------------------- # This is really bad -add_definitions(-include "${CMAKE_SOURCE_DIR}/makefiles/dnssd_loader-build/config.h" -include "${CMAKE_SOURCE_DIR}/makefiles/libimobiledevice-build/config.h") - -file(GLOB dnssd_src "libraries/dnssd_loader/*.c*") -set_source_files_properties(${dnssd_src} PROPERTIES LANGUAGE CXX) -target_sources(${PROJECT_NAME} PRIVATE ${dnssd_src}) -target_include_directories(${PROJECT_NAME} PRIVATE "libraries/dnssd_loader") - -file(GLOB libmobile_src "libraries/libimobiledevice/src/*.c*" "libraries/libimobiledevice/common/*.c*") -set_source_files_properties(${libmobile_src} PROPERTIES LANGUAGE C) -target_sources(${PROJECT_NAME} PRIVATE ${libmobile_src}) -target_include_directories(${PROJECT_NAME} PRIVATE "libraries/libimobiledevice/") -target_include_directories(${PROJECT_NAME} PRIVATE "libraries/libimobiledevice/include") - -file(GLOB libmobile_glue_src "libraries/libimobiledevice-glue/src/*.c") -set_source_files_properties(${libmobile_glue_src} PROPERTIES LANGUAGE C) -target_sources(${PROJECT_NAME} PRIVATE ${libmobile_glue_src}) -target_include_directories(${PROJECT_NAME} PRIVATE "libraries/libimobiledevice-glue/include") - -file(GLOB libplist_c_src "libraries/libplist/src/*.c" "libraries/libplist/libcnary/*.c") -list(FILTER libplist_c_src EXCLUDE REGEX "cnary\.c") -set_source_files_properties(${libplist_c_src} PROPERTIES LANGUAGE C) -target_sources(${PROJECT_NAME} PRIVATE ${libplist_c_src}) - -file(GLOB libplist_src "libraries/libplist/src/*.cpp" "libraries/libplist/libcnary/*.cpp") -set_source_files_properties(${libplist_src} PROPERTIES LANGUAGE CXX) -target_sources(${PROJECT_NAME} PRIVATE ${libplist_src}) - -target_include_directories(${PROJECT_NAME} PRIVATE "libraries/libplist/src") -target_include_directories(${PROJECT_NAME} PRIVATE "libraries/libplist/include") -target_include_directories(${PROJECT_NAME} PRIVATE "libraries/libplist/libcnary/include") - -file(GLOB libusbmuxd_src "libraries/libusbmuxd/src/*.c") -set_source_files_properties(${libusbmuxd_src} PROPERTIES LANGUAGE C) -target_sources(${PROJECT_NAME} PRIVATE ${libusbmuxd_src}) -target_include_directories(${PROJECT_NAME} PRIVATE "libraries/libusbmuxd/include") -target_include_directories(${PROJECT_NAME} PRIVATE "upstream_patched/libusbmuxd/common") - -file(GLOB ldid_cpp_src "upstream_patched/ldid/*.cpp") #"upstream_patched/ldid2/*.cpp") -set_source_files_properties(${ldid_cpp_src} PROPERTIES LANGUAGE CXX) -target_sources(${PROJECT_NAME} PRIVATE ${ldid_cpp_src}) - -file(GLOB ldid_src "upstream_patched/ldid/*.c") #"upstream_patched/ldid2/*.c") -set_source_files_properties(${ldid_src} PROPERTIES LANGUAGE C) -target_sources(${PROJECT_NAME} PRIVATE ${ldid_src}) -target_include_directories(${PROJECT_NAME} PRIVATE "upstream_patched/ldid") #"upstream_patched/ldid2") - -file(GLOB minizip_src "upstream_patched/AltSign/Dependencies/minizip/*.c") -list(FILTER minizip_src EXCLUDE REGEX "win|miniunz|minizip\.c") -set_source_files_properties(${minizip_src} PROPERTIES LANGUAGE C) -target_sources(${PROJECT_NAME} PRIVATE ${minizip_src}) -target_include_directories(${PROJECT_NAME} PRIVATE "upstream_patched/AltSign/Dependencies/minizip") - -file(GLOB corecrypto_src "upstream_patched/AltSign/Dependencies/corecrypto/*.c") -set_source_files_properties(${corecrypto_src} PROPERTIES LANGUAGE C) -target_sources(${PROJECT_NAME} PRIVATE ${corecrypto_src}) -target_include_directories(${PROJECT_NAME} PRIVATE "upstream_patched/AltSign/Dependencies/") +add_definitions(-include "${ALTSERVER_DIR}/src/common.h" -include "${ALTSERVER_DIR}/shims/windows_shim.h") # ------------------------------------------------------------------------------------------------------------------------------- -# Setup Upstream Dependencies +# Setup Dependencies # ------------------------------------------------------------------------------------------------------------------------------- -find_package(ZLIB REQUIRED) -find_package(Boost REQUIRED) +# This is also pretty bad practice imo, but exporting all of the defines into cmake would also be retarded +add_definitions(-include "${ALTSERVER_DIR}/config/libimobiledevice.h" -include "${ALTSERVER_DIR}/config/dnssd.h") -target_include_directories(${PROJECT_NAME} PRIVATE ${Boost_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE ${Boost_LIBRARIES} ZLIB::ZLIB corecrypto_static uuid) - -include(FetchContent) - -FetchContent_Declare(cpprestsdk GIT_REPOSITORY "https://github.com/microsoft/cpprestsdk" GIT_TAG "2.10.18") - -FetchContent_MakeAvailable(cpprestsdk) -target_link_libraries(${PROJECT_NAME} PRIVATE cpprest) +add_subdirectory(cmake/AltSign) +add_subdirectory(cmake/AltServer) # ------------------------------------------------------------------------------------------------------------------------------- -# Setup Shims +# Setup Executable # ------------------------------------------------------------------------------------------------------------------------------- -# This is really bad -add_definitions(-fpermissive -include "${CMAKE_SOURCE_DIR}/src/common.h" -include "${CMAKE_SOURCE_DIR}/shims/windows_shim.h") - -target_sources(${PROJECT_NAME} PRIVATE "shims/old-linux-polyfill.c" "shims/windows_shim.cpp") -target_include_directories(${PROJECT_NAME} PRIVATE "src" "shims") - -# ------------------------------------------------------------------------------------------------------------------------------- -# Setup Upstream Project -# ------------------------------------------------------------------------------------------------------------------------------- - -file(GLOB upstream_src "upstream_patched/AltServer/*.c*" "upstream_patched/AltSign/*.c*") -set_source_files_properties(${upstream_src} PROPERTIES LANGUAGE CXX) - -target_include_directories(${PROJECT_NAME} PRIVATE "upstream_patched/AltServer" "upstream_patched/AltSign") -target_sources(${PROJECT_NAME} PRIVATE ${upstream_src}) - -# ------------------------------------------------------------------------------------------------------------------------------- -# Setup Altserver-Linux -# ------------------------------------------------------------------------------------------------------------------------------- +if (altserver_cli) + add_executable(${PROJECT_NAME}) + target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17) + set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 17 CXX_EXTENSIONS OFF CXX_STANDARD_REQUIRED ON) + + add_subdirectory(cmake/libusbmuxd) + target_link_libraries(${PROJECT_NAME} PRIVATE ${Boost_LIBRARIES} uuid usbmuxd::usbmuxd altserver::altserver altsign::altsign) -file(GLOB src "src/*.cpp") -target_sources(${PROJECT_NAME} PRIVATE ${src}) \ No newline at end of file + file(GLOB src "src/*.cpp") + target_sources(${PROJECT_NAME} PRIVATE ${src}) +endif() diff --git a/cmake/AltServer/CMakeLists.txt b/cmake/AltServer/CMakeLists.txt new file mode 100644 index 0000000..3f28c3a --- /dev/null +++ b/cmake/AltServer/CMakeLists.txt @@ -0,0 +1,35 @@ +cmake_minimum_required(VERSION 3.1) +project(altserver LANGUAGES CXX) + +# ------------------------------------------------------------------------------------------------------------------------------- +# Setup library +# ------------------------------------------------------------------------------------------------------------------------------- + +file(GLOB src "${ALTSERVER_DIR}/upstream_patched/AltServer/*.c*") + +add_library(${PROJECT_NAME} ${c_src} ${src}) +add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) + +target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17) +set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 17 CXX_EXTENSIONS OFF CXX_STANDARD_REQUIRED ON) + +# -------------------------------------------------------------------------------------------------------- +# Use shims +# -------------------------------------------------------------------------------------------------------- + +file(GLOB shims "${ALTSERVER_DIR}/shims/*.c*") +target_sources(${PROJECT_NAME} PRIVATE ${shims}) + +# -------------------------------------------------------------------------------------------------------- +# Include directories +# -------------------------------------------------------------------------------------------------------- + +target_include_directories(${PROJECT_NAME} PRIVATE "${ALTSERVER_DIR}/shims") +target_include_directories(${PROJECT_NAME} PUBLIC "${ALTSERVER_DIR}/upstream_patched/AltServer") + +# -------------------------------------------------------------------------------------------------------- +# Link required libraries +# -------------------------------------------------------------------------------------------------------- + +add_subdirectory("${ALTSERVER_DIR}/libraries/dnssd_loader" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}") +target_link_libraries(${PROJECT_NAME} PUBLIC dnssd::dnssd altsign::altsign) \ No newline at end of file diff --git a/cmake/AltSign/CMakeLists.txt b/cmake/AltSign/CMakeLists.txt new file mode 100644 index 0000000..84f682f --- /dev/null +++ b/cmake/AltSign/CMakeLists.txt @@ -0,0 +1,41 @@ +cmake_minimum_required(VERSION 3.1) +project(altsign LANGUAGES CXX) + +# ------------------------------------------------------------------------------------------------------------------------------- +# Setup library +# ------------------------------------------------------------------------------------------------------------------------------- + +file(GLOB src "${ALTSERVER_DIR}/upstream_patched/AltSign/*.c*") + +add_library(${PROJECT_NAME} ${c_src} ${src}) +add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) + +target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17) +set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 17 CXX_EXTENSIONS OFF CXX_STANDARD_REQUIRED ON) + +# -------------------------------------------------------------------------------------------------------- +# Include directories +# -------------------------------------------------------------------------------------------------------- + +target_include_directories(${PROJECT_NAME} PUBLIC "${ALTSERVER_DIR}/shims") +target_include_directories(${PROJECT_NAME} PUBLIC "${ALTSERVER_DIR}/upstream_patched/AltSign") + +# -------------------------------------------------------------------------------------------------------- +# Link required libraries +# -------------------------------------------------------------------------------------------------------- + +find_package(Boost REQUIRED) +target_link_libraries(${PROJECT_NAME} PUBLIC ${Boost_LIBRARIES}) +target_include_directories(${PROJECT_NAME} PRIVATE ${Boost_INCLUDE_DIRS}) + +include(FetchContent) + +FetchContent_Declare(cpprestsdk GIT_REPOSITORY "https://github.com/microsoft/cpprestsdk" GIT_TAG "2.10.18") +FetchContent_MakeAvailable(cpprestsdk) + +add_subdirectory(../ldid "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_ldid") +add_subdirectory(../minizip "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_minizip") +add_subdirectory(../libplist "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_libplist") +add_subdirectory(../CoreCrypto "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_corecrypto") + +target_link_libraries(${PROJECT_NAME} PUBLIC plist::plist ldid::ldid minizip::minizip corecrypto::corecrypto cpprest) \ No newline at end of file diff --git a/cmake/CoreCrypto/CMakeLists.txt b/cmake/CoreCrypto/CMakeLists.txt new file mode 100644 index 0000000..670d803 --- /dev/null +++ b/cmake/CoreCrypto/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.1) +project(corecrypto LANGUAGES C) + +# ------------------------------------------------------------------------------------------------------------------------------- +# Setup library +# ------------------------------------------------------------------------------------------------------------------------------- + +add_library(${PROJECT_NAME} INTERFACE) +add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) + +# -------------------------------------------------------------------------------------------------------- +# Include directories +# -------------------------------------------------------------------------------------------------------- + +target_include_directories(${PROJECT_NAME} INTERFACE "${ALTSERVER_DIR}/upstream_patched/AltSign/Dependencies/") + +# -------------------------------------------------------------------------------------------------------- +# Link required libraries +# -------------------------------------------------------------------------------------------------------- + +target_link_libraries(${PROJECT_NAME} INTERFACE corecrypto_static) \ No newline at end of file diff --git a/cmake/ldid/CMakeLists.txt b/cmake/ldid/CMakeLists.txt new file mode 100644 index 0000000..5778254 --- /dev/null +++ b/cmake/ldid/CMakeLists.txt @@ -0,0 +1,25 @@ +cmake_minimum_required(VERSION 3.1) +project(ldid) + +# ------------------------------------------------------------------------------------------------------------------------------- +# Setup library +# ------------------------------------------------------------------------------------------------------------------------------- + +file(GLOB c_src "${ALTSERVER_DIR}/upstream_patched/ldid/*.c") +set_source_files_properties(${c_src} PROPERTIES LANGUAGE C) + +file(GLOB src "${ALTSERVER_DIR}/upstream_patched/ldid/*.cpp") +set_source_files_properties(${src} PROPERTIES LANGUAGE CXX) + +add_library(${PROJECT_NAME} ${c_src} ${src}) +add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) + +target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17) +set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 17 CXX_EXTENSIONS OFF CXX_STANDARD_REQUIRED ON) + +# -------------------------------------------------------------------------------------------------------- +# Include directories +# -------------------------------------------------------------------------------------------------------- + +target_include_directories(${PROJECT_NAME} PRIVATE "${ALTSERVER_DIR}/shims") +target_include_directories(${PROJECT_NAME} PUBLIC "${ALTSERVER_DIR}/upstream_patched/ldid") \ No newline at end of file diff --git a/cmake/libimobiledevice-glue/CMakeLists.txt b/cmake/libimobiledevice-glue/CMakeLists.txt new file mode 100644 index 0000000..94fb0fa --- /dev/null +++ b/cmake/libimobiledevice-glue/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.1) +project(imobiledevice-glue LANGUAGES C) + +# ------------------------------------------------------------------------------------------------------------------------------- +# Setup library +# ------------------------------------------------------------------------------------------------------------------------------- + +set(ROOT "${ALTSERVER_DIR}/libraries/libimobiledevice-glue") +file(GLOB src "${ROOT}/src/*.c" "${ROOT}/common/*.c") + +add_library(${PROJECT_NAME} ${src}) +add_library(imobiledevice::glue ALIAS ${PROJECT_NAME}) + +# -------------------------------------------------------------------------------------------------------- +# Include directories +# -------------------------------------------------------------------------------------------------------- + +target_include_directories(${PROJECT_NAME} PRIVATE "${ROOT}") +target_include_directories(${PROJECT_NAME} PUBLIC "${ROOT}/include") \ No newline at end of file diff --git a/cmake/libimobiledevice/CMakeLists.txt b/cmake/libimobiledevice/CMakeLists.txt new file mode 100644 index 0000000..a41b795 --- /dev/null +++ b/cmake/libimobiledevice/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.1) +project(imobiledevice LANGUAGES C) + +# ------------------------------------------------------------------------------------------------------------------------------- +# Setup library +# ------------------------------------------------------------------------------------------------------------------------------- + +set(ROOT "${ALTSERVER_DIR}/libraries/libimobiledevice") +file(GLOB src "${ROOT}/src/*.c" "${ROOT}/common/*.c") + +add_library(${PROJECT_NAME} ${src}) +add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) + +# -------------------------------------------------------------------------------------------------------- +# Include directories +# -------------------------------------------------------------------------------------------------------- + +target_include_directories(${PROJECT_NAME} PRIVATE "${ROOT}") +target_include_directories(${PROJECT_NAME} PUBLIC "${ROOT}/include" "${ROOT}/common") + +# -------------------------------------------------------------------------------------------------------- +# Link required libraries +# -------------------------------------------------------------------------------------------------------- + +add_subdirectory(../libimobiledevice-glue "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}") +target_link_libraries(${PROJECT_NAME} PUBLIC imobiledevice::glue) \ No newline at end of file diff --git a/cmake/libplist/CMakeLists.txt b/cmake/libplist/CMakeLists.txt new file mode 100644 index 0000000..ada43ad --- /dev/null +++ b/cmake/libplist/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.1) +project(plist) + +# ------------------------------------------------------------------------------------------------------------------------------- +# Setup library +# ------------------------------------------------------------------------------------------------------------------------------- + +set(ROOT "${ALTSERVER_DIR}/libraries/libplist") + +file(GLOB c_src "${ROOT}/src/*.c" "${ROOT}/libcnary/*.c") +list(FILTER c_src EXCLUDE REGEX "cnary\.c") +set_source_files_properties(${c_src} PROPERTIES LANGUAGE C) + +file(GLOB src "${ROOT}/src/*.cpp" "${ROOT}/libcnary/*.cpp") +set_source_files_properties(${src} PROPERTIES LANGUAGE CXX) + +add_library(${PROJECT_NAME} ${c_src} ${src}) +add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) + +# -------------------------------------------------------------------------------------------------------- +# Include directories +# -------------------------------------------------------------------------------------------------------- + +target_include_directories(${PROJECT_NAME} PRIVATE "${ROOT}/src") +target_include_directories(${PROJECT_NAME} PUBLIC "${ROOT}/include") +target_include_directories(${PROJECT_NAME} PUBLIC "${ROOT}/libcnary/include") \ No newline at end of file diff --git a/cmake/libusbmuxd/CMakeLists.txt b/cmake/libusbmuxd/CMakeLists.txt new file mode 100644 index 0000000..5874861 --- /dev/null +++ b/cmake/libusbmuxd/CMakeLists.txt @@ -0,0 +1,25 @@ +cmake_minimum_required(VERSION 3.1) +project(usbmuxd LANGUAGES C) + +# ------------------------------------------------------------------------------------------------------------------------------- +# Setup library +# ------------------------------------------------------------------------------------------------------------------------------- + +set(ROOT "${ALTSERVER_DIR}/libraries/libusbmuxd") + +file(GLOB src "${ROOT}/src/*.c") +add_library(${PROJECT_NAME} ${src}) +add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) + +# -------------------------------------------------------------------------------------------------------- +# Include directories +# -------------------------------------------------------------------------------------------------------- + +target_include_directories(${PROJECT_NAME} PUBLIC "${ROOT}/include") + +# -------------------------------------------------------------------------------------------------------- +# Link required libraries +# -------------------------------------------------------------------------------------------------------- + +add_subdirectory(../libimobiledevice "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}") +target_link_libraries(${PROJECT_NAME} PUBLIC imobiledevice::imobiledevice) \ No newline at end of file diff --git a/cmake/minizip/CMakeLists.txt b/cmake/minizip/CMakeLists.txt new file mode 100644 index 0000000..e50f7ba --- /dev/null +++ b/cmake/minizip/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.1) +project(minizip LANGUAGES C) + +# ------------------------------------------------------------------------------------------------------------------------------- +# Setup library +# ------------------------------------------------------------------------------------------------------------------------------- + +file(GLOB src "${ALTSERVER_DIR}/upstream_patched/AltSign/Dependencies/minizip/*.c") +list(FILTER src EXCLUDE REGEX "win|miniunz|minizip\.c") + + +add_library(${PROJECT_NAME} ${src}) +add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) + +# -------------------------------------------------------------------------------------------------------- +# Include directories +# -------------------------------------------------------------------------------------------------------- + +target_include_directories(${PROJECT_NAME} PUBLIC "${ALTSERVER_DIR}/upstream_patched/AltSign/Dependencies/minizip") + +# -------------------------------------------------------------------------------------------------------- +# Link required libraries +# -------------------------------------------------------------------------------------------------------- + +find_package(ZLIB REQUIRED) +target_link_libraries(${PROJECT_NAME} PUBLIC ZLIB::ZLIB) \ No newline at end of file diff --git a/cmake/patch.cmake b/cmake/patch.cmake new file mode 100644 index 0000000..e33f092 --- /dev/null +++ b/cmake/patch.cmake @@ -0,0 +1,35 @@ +macro(patch_prepare) + file(COPY "${ALTSERVER_DIR}/upstream_repo/" DESTINATION "${ALTSERVER_DIR}/upstream_patched/") +endmacro() + +macro(patch) + set(argn_list "${ARGN}") + list(POP_FRONT argn_list PATCH) + + cmake_parse_arguments("ARG" "" "PATCH;PATTERN" "EXCLUDE_PATTERN" ${ARGN}) + + file(GLOB to_patch "${ALTSERVER_DIR}/upstream_repo/${ARG_PATTERN}") + + foreach(file ${to_patch}) + execute_process( + COMMAND python3 "${ALTSERVER_DIR}/patches/${PATCH}.py" "${file}" + WORKING_DIRECTORY "${ALTSERVER_DIR}" + OUTPUT_VARIABLE patched + ) + + string(REPLACE "upstream_repo" "upstream_patched" patched_file "${file}") + file(WRITE "${patched_file}" "${patched}") + + message(STATUS "[altserver] Patched: ${file}") + endforeach() + + file(GLOB to_remove "${ALTSERVER_DIR}/upstream_patched/${ARG_EXCLUDE_PATTERN}") + + foreach(pattern ${ARG_EXCLUDE_PATTERN}) + file(GLOB to_remove "${ALTSERVER_DIR}/upstream_patched/${pattern}") + foreach(file ${to_remove}) + file(REMOVE "${file}") + message(STATUS "[altserver] Removed: ${file}") + endforeach() + endforeach() +endmacro() \ No newline at end of file diff --git a/makefiles/dnssd_loader-build/config.h b/config/dnssd.h similarity index 100% rename from makefiles/dnssd_loader-build/config.h rename to config/dnssd.h diff --git a/makefiles/libimobiledevice-build/config.h b/config/libimobiledevice.h similarity index 99% rename from makefiles/libimobiledevice-build/config.h rename to config/libimobiledevice.h index 1e7828c..9a7e277 100644 --- a/makefiles/libimobiledevice-build/config.h +++ b/config/libimobiledevice.h @@ -78,8 +78,6 @@ /* Define to 1 if you have the `strndup' function. */ #define HAVE_STRNDUP 1 - - /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 @@ -148,7 +146,6 @@ /* Define if you have inotify support (linux only) */ #define HAVE_INOTIFY 1 - /* Define if you have program_invocation_short_name */ #define HAVE_PROGRAM_INVOCATION_SHORT_NAME 1 @@ -174,10 +171,8 @@ to 0 otherwise. */ #define HAVE_MALLOC 1 - - /* Name of package */ -//#define PACKAGE "AltServer-Linux" +// #define PACKAGE "AltServer-Linux" /* Define to the full name of this package. */ #define PACKAGE_NAME "AltServer-Linux" diff --git a/libraries/dnssd_loader/CMakeLists.txt b/libraries/dnssd_loader/CMakeLists.txt new file mode 100644 index 0000000..592e10b --- /dev/null +++ b/libraries/dnssd_loader/CMakeLists.txt @@ -0,0 +1,18 @@ +cmake_minimum_required(VERSION 3.1) +project(dnssd LANGUAGES CXX) + +# ------------------------------------------------------------------------------------------------------------------------------- +# Setup library +# ------------------------------------------------------------------------------------------------------------------------------- + +add_library(${PROJECT_NAME} "dnssd_loader.cpp") +add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) + +target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17) +set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 17 CXX_EXTENSIONS OFF CXX_STANDARD_REQUIRED ON) + +# -------------------------------------------------------------------------------------------------------- +# Include directories +# -------------------------------------------------------------------------------------------------------- + +target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") \ No newline at end of file diff --git a/libraries/ideviceinstaller b/libraries/ideviceinstaller deleted file mode 160000 index 534ddef..0000000 --- a/libraries/ideviceinstaller +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 534ddefac4b7118bd4781cd91f8781d8727ff49a diff --git a/makefiles/AltSign-build/AltSign-files.mak b/makefiles/AltSign-build/AltSign-files.mak deleted file mode 100644 index 9361b8c..0000000 --- a/makefiles/AltSign-build/AltSign-files.mak +++ /dev/null @@ -1 +0,0 @@ -altsign_include := -I$(BUILD_DIR)/AltSign_patched \ No newline at end of file diff --git a/makefiles/AltSign-build/AltSign.mak b/makefiles/AltSign-build/AltSign.mak deleted file mode 100644 index 827df93..0000000 --- a/makefiles/AltSign-build/AltSign.mak +++ /dev/null @@ -1,83 +0,0 @@ -CC := clang -CXX := clang++ - -ROOT_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(ROOT_DIR)/../main.mak - -ALTSIGN_ROOT := $(UPSTREAM_DIR)/AltSign -ALTSIGN_NEWROOT := $(BUILD_DIR)/AltSign_patched -MINIZIP_ROOT := $(UPSTREAM_DIR)/AltSign/Dependencies/minizip -LDID_ROOT := $(UPSTREAM_DIR)/ldid -LDID_NEWROOT := $(BUILD_DIR)/ldid_patched - -include $(MAIN_DIR)/makefiles/AltWindowsShim.mak - -CFLAGS += -I$(ALTSIGN_ROOT) -I$(MINIZIP_ROOT) -I$(LDID_ROOT) -mno-sse -#CFLAGS += -DLDID_NOTOOLS # will lose some symbol if enable this - -CXXFLAGS = $(CFLAGS) -std=c++17 - -altsign_orifiles := $(wildcard $(ALTSIGN_ROOT)/*.*) -altsign_newfiles := $(altsign_orifiles:$(ALTSIGN_ROOT)/%=$(ALTSIGN_NEWROOT)/%) - -$(ALTSIGN_NEWROOT)/%: $(ALTSIGN_ROOT)/% - mkdir -p `dirname "$@"` - python3 $(ROOT_DIR)/rewrite_altsign_source.py "$<" > $@ - -$(altsign_newfiles) : $(altsign_orifiles) -altsign_src := $(filter %.cpp,$(altsign_newfiles)) - - -ldid_orifiles := $(LDID_ROOT)/ldid.cpp $(LDID_ROOT)/lookup2.c -ldid_newfiles := $(ldid_orifiles:$(LDID_ROOT)/%=$(LDID_NEWROOT)/%) - -$(LDID_NEWROOT)/%: $(LDID_ROOT)/% - mkdir -p `dirname "$@"` - python3 $(ROOT_DIR)/rewrite_ldid_source.py "$<" > $@ - -$(ldid_newfiles) : $(ldid_orifiles) -ldid_src := $(ldid_newfiles) - - -preprocess : $(altsign_newfiles) $(ldid_newfiles) -.PHONY : preprocess - -minizip_src := $(MINIZIP_ROOT)/ioapi.c $(MINIZIP_ROOT)/zip.c $(MINIZIP_ROOT)/unzip.c - -objs += $(altsign_src:$(BUILD_DIR)/%=$(BUILD_DIR)/objs/%.o) -objs += $(ldid_src:$(BUILD_DIR)/%=$(BUILD_DIR)/objs/%.o) -objs += $(minizip_src:$(MAIN_DIR)/%=$(BUILD_DIR)/objs/%.o) - -#ldid/%.o : CC := gcc -#ldid/%.o : CXX := g++ - -$(BUILD_DIR)/objs/%.c.o : $(BUILD_DIR)/%.c - mkdir -p $(@D) - $(CC) $(CFLAGS) $(EXTRA_FLAGS) -o $@ -c $< - -$(BUILD_DIR)/objs/%.cpp.o : $(BUILD_DIR)/%.cpp - mkdir -p $(@D) - $(CXX) $(CXXFLAGS) $(EXTRA_FLAGS) -o $@ -c $< - -$(BUILD_DIR)/objs/%.c.o : $(MAIN_DIR)/%.c - mkdir -p $(@D) - $(CC) $(CFLAGS) $(EXTRA_FLAGS) -o $@ -c $< - -$(BUILD_DIR)/objs/%.cpp.o : $(MAIN_DIR)/%.cpp - mkdir -p $(@D) - $(CXX) $(CXXFLAGS) $(EXTRA_FLAGS) -o $@ -c $< - -#python3 $(ROOT_DIR)/rewrite_altsign_source.py "$<" | $(CC) -x c -I`dirname $<` $(CFLAGS) $(EXTRA_FLAGS) -o $@ -c - -#python3 $(ROOT_DIR)/rewrite_altsign_source.py "$<" | $(CXX) -x c++ -I`dirname $<` $(CXXFLAGS) $(EXTRA_FLAGS) -o $@ -c - - -$(BUILD_DIR)/AltSign.a : $(objs) - ar rcs $@ $^ - -clean:: - rm -rf $(ALTSIGN_NEWROOT) - rm -f $(objs) AltSign.a - -all :: preprocess $(BUILD_DIR)/AltSign.a -.PHONY : all - -.DEFAULT_GOAL := all diff --git a/makefiles/AltWindowsShim.mak b/makefiles/AltWindowsShim.mak deleted file mode 100644 index 21ae02a..0000000 --- a/makefiles/AltWindowsShim.mak +++ /dev/null @@ -1,8 +0,0 @@ -_ROOT_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(_ROOT_DIR)/main.mak - -SHIM_DIR := $(MAIN_DIR)/shims - -CFLAGS += -I$(SHIM_DIR) -include windows_shim.h - -shim_src := $(wildcard $(SHIM_DIR)/*.cpp) $(wildcard $(SHIM_DIR)/*.c) \ No newline at end of file diff --git a/makefiles/dnssd_loader-build/dnssd_loader-files.mak b/makefiles/dnssd_loader-build/dnssd_loader-files.mak deleted file mode 100644 index 184161e..0000000 --- a/makefiles/dnssd_loader-build/dnssd_loader-files.mak +++ /dev/null @@ -1,2 +0,0 @@ -dnssd_loader_src := $(wildcard $(LIB_DIR)/dnssd_loader/*.c) $(wildcard $(LIB_DIR)/dnssd_loader/*.cpp) -dnssd_loader_include := -I$(LIB_DIR)/dnssd_loader diff --git a/makefiles/dnssd_loader-build/dnssd_loader.mak b/makefiles/dnssd_loader-build/dnssd_loader.mak deleted file mode 100644 index 6f47bee..0000000 --- a/makefiles/dnssd_loader-build/dnssd_loader.mak +++ /dev/null @@ -1,36 +0,0 @@ -ROOT_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(ROOT_DIR)/../main.mak - -%.c.o : %.c - $(CC) $(CFLAGS) $(EXTRA_FLAGS) -o $@ -c $< - -%.cpp.o : %.cpp - $(CXX) $(CXXFLAGS) $(EXTRA_FLAGS) -o $@ -c $< - -CFLAGS += -DHAVE_CONFIG_H -DDEBUG -O0 -g - - -$(BUILD_DIR)/objs/%.c.o : $(MAIN_DIR)/%.c - mkdir -p $(@D) - $(CC) $(CFLAGS) $(EXTRA_FLAGS) -o $@ -c $< - -$(BUILD_DIR)/objs/%.cpp.o : $(MAIN_DIR)/%.cpp - mkdir -p $(@D) - $(CXX) $(CXXFLAGS) $(EXTRA_FLAGS) -o $@ -c $< - -include $(ROOT_DIR)/dnssd_loader-files.mak - -dnssd_loader_obj := $(dnssd_loader_src:$(MAIN_DIR)/%=$(BUILD_DIR)/objs/%.o) -$(dnssd_loader_obj) : EXTRA_FLAGS := -I$(ROOT_DIR) $(dnssd_loader_include) -$(BUILD_DIR)/dnssd_loader.a : $(dnssd_loader_obj) - ar rcs $@ $^ - -clean:: - rm -f $(dnssd_loader_obj) - rm -f $(BUILD_DIR)/dnssd_loader.a -.PHONY : clean - -all :: $(BUILD_DIR)/dnssd_loader.a -.PHONY : all - -.DEFAULT_GOAL := all diff --git a/makefiles/libimobiledevice-build/config.h_bak b/makefiles/libimobiledevice-build/config.h_bak deleted file mode 100644 index 3e47e73..0000000 --- a/makefiles/libimobiledevice-build/config.h_bak +++ /dev/null @@ -1,45 +0,0 @@ -#define HAVE_ASPRINTF 1 -#define HAVE_DIRENT_D_TYPE 1 -#define HAVE_DLFCN_H 1 -#define HAVE_FVISIBILITY 1 -#define HAVE_GCRYPT_H 1 -#define HAVE_GETIFADDRS 1 -#define HAVE_GMTIME_R 1 -#define HAVE_INTTYPES_H 1 -#define HAVE_LOCALTIME_R 1 -#define HAVE_MALLOC 1 -#define HAVE_MEMMEM 1 -#define HAVE_MEMORY_H 1 -#define HAVE_OPENSSL 1 -#define HAVE_PTHREAD 1 -#define HAVE_PTHREAD_CANCEL 1 -#define HAVE_PTHREAD_PRIO_INHERIT 1 -#define HAVE_REALLOC 1 -#define HAVE_SLEEP 1 -#define HAVE_STDINT_H 1 -#define HAVE_STDLIB_H 1 -#define HAVE_STPCPY 1 -#define HAVE_STPNCPY 1 -#define HAVE_STRCASECMP 1 -#define HAVE_STRDUP 1 -#define HAVE_STRERROR 1 -#define HAVE_STRINGS_H 1 -#define HAVE_STRING_H 1 -#define HAVE_STRNDUP 1 -#define HAVE_STRPTIME 1 -#define HAVE_SYS_STAT_H 1 -#define HAVE_SYS_TYPES_H 1 -#define HAVE_TIMEGM 1 -#define HAVE_TM_TM_GMTOFF 1 -#define HAVE_TM_TM_ZONE 1 -#define HAVE_UNISTD_H 1 -#define HAVE_VASPRINTF 1 -#define PACKAGE_STRING "jitterbug 1.0" -#define __BIG_ENDIAN 4321 -#define __LITTLE_ENDIAN 1234 - -#ifdef __BYTE_ORDER -#undef __BYTE_ORDER -#endif -#define __BYTE_ORDER 1234 - diff --git a/makefiles/libimobiledevice-build/libimobiledevice-files.mak b/makefiles/libimobiledevice-build/libimobiledevice-files.mak deleted file mode 100644 index ddadbdd..0000000 --- a/makefiles/libimobiledevice-build/libimobiledevice-files.mak +++ /dev/null @@ -1,8 +0,0 @@ -libimobiledevice_src += $(wildcard $(LIB_DIR)/libimobiledevice/src/*.c) $(wildcard $(LIB_DIR)/libimobiledevice/common/*.c) -libimobiledevice_src += $(wildcard $(LIB_DIR)/libimobiledevice-glue/src/*.c) -libimobiledevice_src += $(wildcard $(LIB_DIR)/libusbmuxd/src/*.c) -libimobiledevice_src += $(wildcard $(LIB_DIR)/libusbmuxd/common/*.c) -libimobiledevice_include := -I$(LIB_DIR)/libimobiledevice/include -I$(LIB_DIR)/libimobiledevice-glue/include -I$(LIB_DIR)/libimobiledevice -I$(LIB_DIR)/libusbmuxd/include - -libplist_include := -I$(LIB_DIR)/libplist/include -libplist_src := $(wildcard $(LIB_DIR)/libplist/src/*.c) $(LIB_DIR)/libplist/libcnary/node.c $(LIB_DIR)/libplist/libcnary/node_list.c \ No newline at end of file diff --git a/makefiles/libimobiledevice-build/libimobiledevice.mak b/makefiles/libimobiledevice-build/libimobiledevice.mak deleted file mode 100644 index e28f3b7..0000000 --- a/makefiles/libimobiledevice-build/libimobiledevice.mak +++ /dev/null @@ -1,49 +0,0 @@ -ROOT_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(ROOT_DIR)/../main.mak - -%.c.o : %.c - $(CC) $(CFLAGS) $(EXTRA_FLAGS) -o $@ -c $< - -%.cpp.o : %.cpp - $(CXX) $(CXXFLAGS) $(EXTRA_FLAGS) -o $@ -c $< - -CFLAGS += -DHAVE_CONFIG_H -DDEBUG -O0 -g - - -$(BUILD_DIR)/objs/%.c.o : $(MAIN_DIR)/%.c - mkdir -p $(@D) - $(CC) $(CFLAGS) $(EXTRA_FLAGS) -o $@ -c $< - -$(BUILD_DIR)/objs/%.cpp.o : $(MAIN_DIR)/%.cpp - mkdir -p $(@D) - $(CXX) $(CXXFLAGS) $(EXTRA_FLAGS) -o $@ -c $< - -include $(ROOT_DIR)/libimobiledevice-files.mak - -libimobiledevice_obj := $(libimobiledevice_src:$(MAIN_DIR)/%=$(BUILD_DIR)/objs/%.o) -$(libimobiledevice_obj) : EXTRA_FLAGS := -I$(ROOT_DIR) $(libimobiledevice_include) $(libplist_include) -I$(LIB_DIR)/libimobiledevice/common -I$(LIB_DIR)/libusbmuxd/common -$(BUILD_DIR)/libimobiledevice.a : $(libimobiledevice_obj) - ar rcs $@ $^ - -libplist_obj := $(libplist_src:$(MAIN_DIR)/%=$(BUILD_DIR)/objs/%.o) -$(libplist_obj) : EXTRA_FLAGS := -I$(ROOT_DIR) $(libplist_include) -I$(LIB_DIR)/libplist/libcnary/include -I$(LIB_DIR)/libplist/src -$(BUILD_DIR)/libplist.a : $(libplist_obj) - ar rcs $@ $^ - - -#allsrc += $(libimobiledevice_src) -#allsrc += $(libplist_src) -#allobj = $(addsuffix .o, $(allsrc)) - - -clean:: - rm -f $(libimobiledevice_obj) - rm -f $(libplist_obj) - rm -f $(BUILD_DIR)/libplist.a $(BUILD_DIR)/libimobiledevice.a -.PHONY : clean - -all :: $(BUILD_DIR)/libplist.a -all :: $(BUILD_DIR)/libimobiledevice.a -.PHONY : all - -.DEFAULT_GOAL := all diff --git a/makefiles/main.mak b/makefiles/main.mak deleted file mode 100644 index 44c1123..0000000 --- a/makefiles/main.mak +++ /dev/null @@ -1,9 +0,0 @@ -cur_dir := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -MAIN_DIR := $(dir $(abspath $(cur_dir))) -MAIN_DIR := $(MAIN_DIR:/=) - -BUILD_DIR := $(CURDIR) - -UPSTREAM_DIR := $(MAIN_DIR)/upstream_repo - -LIB_DIR := $(MAIN_DIR)/libraries diff --git a/makefiles/rewrite_altserver_source.py b/patches/altserver.py similarity index 100% rename from makefiles/rewrite_altserver_source.py rename to patches/altserver.py diff --git a/makefiles/AltSign-build/rewrite_altsign_source.py b/patches/altsign.py similarity index 100% rename from makefiles/AltSign-build/rewrite_altsign_source.py rename to patches/altsign.py diff --git a/makefiles/AltSign-build/rewrite_ldid_source.py b/patches/ldid.py similarity index 100% rename from makefiles/AltSign-build/rewrite_ldid_source.py rename to patches/ldid.py From 442d7931051d5fe7fb9636aa1fcaf9e0a4c96ee2 Mon Sep 17 00:00:00 2001 From: Curve Date: Fri, 7 Apr 2023 00:31:48 +0200 Subject: [PATCH 06/21] refactor: define sources in add_executable --- CMakeLists.txt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2a636cf..7ebf892 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.12) -project(altserver-linux VERSION 2.0) +project(altserver-linux VERSION 0.0.5) set(ALTSERVER_DIR "${CMAKE_CURRENT_SOURCE_DIR}") @@ -49,13 +49,12 @@ add_subdirectory(cmake/AltServer) # ------------------------------------------------------------------------------------------------------------------------------- if (altserver_cli) - add_executable(${PROJECT_NAME}) + file(GLOB src "src/*.cpp") + add_executable(${PROJECT_NAME} ${src}) + target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17) set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 17 CXX_EXTENSIONS OFF CXX_STANDARD_REQUIRED ON) add_subdirectory(cmake/libusbmuxd) - target_link_libraries(${PROJECT_NAME} PRIVATE ${Boost_LIBRARIES} uuid usbmuxd::usbmuxd altserver::altserver altsign::altsign) - - file(GLOB src "src/*.cpp") - target_sources(${PROJECT_NAME} PRIVATE ${src}) + target_link_libraries(${PROJECT_NAME} PUBLIC usbmuxd uuid altserver altsign ${Boost_LIBRARIES} ) endif() From 1ec9b5643ce71e11bbb671739141208cb985e623 Mon Sep 17 00:00:00 2001 From: Curve Date: Fri, 7 Apr 2023 00:32:11 +0200 Subject: [PATCH 07/21] refactor(cmake): define libraries as static --- cmake/AltServer/CMakeLists.txt | 2 +- cmake/AltSign/CMakeLists.txt | 2 +- cmake/ldid/CMakeLists.txt | 2 +- cmake/libimobiledevice-glue/CMakeLists.txt | 2 +- cmake/libimobiledevice/CMakeLists.txt | 2 +- cmake/libplist/CMakeLists.txt | 2 +- cmake/libusbmuxd/CMakeLists.txt | 2 +- cmake/minizip/CMakeLists.txt | 2 +- libraries/dnssd_loader/CMakeLists.txt | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cmake/AltServer/CMakeLists.txt b/cmake/AltServer/CMakeLists.txt index 3f28c3a..76d111f 100644 --- a/cmake/AltServer/CMakeLists.txt +++ b/cmake/AltServer/CMakeLists.txt @@ -7,7 +7,7 @@ project(altserver LANGUAGES CXX) file(GLOB src "${ALTSERVER_DIR}/upstream_patched/AltServer/*.c*") -add_library(${PROJECT_NAME} ${c_src} ${src}) +add_library(${PROJECT_NAME} STATIC ${c_src} ${src}) add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17) diff --git a/cmake/AltSign/CMakeLists.txt b/cmake/AltSign/CMakeLists.txt index 84f682f..fba0fa2 100644 --- a/cmake/AltSign/CMakeLists.txt +++ b/cmake/AltSign/CMakeLists.txt @@ -7,7 +7,7 @@ project(altsign LANGUAGES CXX) file(GLOB src "${ALTSERVER_DIR}/upstream_patched/AltSign/*.c*") -add_library(${PROJECT_NAME} ${c_src} ${src}) +add_library(${PROJECT_NAME} STATIC ${c_src} ${src}) add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17) diff --git a/cmake/ldid/CMakeLists.txt b/cmake/ldid/CMakeLists.txt index 5778254..f6751da 100644 --- a/cmake/ldid/CMakeLists.txt +++ b/cmake/ldid/CMakeLists.txt @@ -11,7 +11,7 @@ set_source_files_properties(${c_src} PROPERTIES LANGUAGE C) file(GLOB src "${ALTSERVER_DIR}/upstream_patched/ldid/*.cpp") set_source_files_properties(${src} PROPERTIES LANGUAGE CXX) -add_library(${PROJECT_NAME} ${c_src} ${src}) +add_library(${PROJECT_NAME} STATIC ${c_src} ${src}) add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17) diff --git a/cmake/libimobiledevice-glue/CMakeLists.txt b/cmake/libimobiledevice-glue/CMakeLists.txt index 94fb0fa..ff69110 100644 --- a/cmake/libimobiledevice-glue/CMakeLists.txt +++ b/cmake/libimobiledevice-glue/CMakeLists.txt @@ -8,7 +8,7 @@ project(imobiledevice-glue LANGUAGES C) set(ROOT "${ALTSERVER_DIR}/libraries/libimobiledevice-glue") file(GLOB src "${ROOT}/src/*.c" "${ROOT}/common/*.c") -add_library(${PROJECT_NAME} ${src}) +add_library(${PROJECT_NAME} STATIC ${src}) add_library(imobiledevice::glue ALIAS ${PROJECT_NAME}) # -------------------------------------------------------------------------------------------------------- diff --git a/cmake/libimobiledevice/CMakeLists.txt b/cmake/libimobiledevice/CMakeLists.txt index a41b795..113f00f 100644 --- a/cmake/libimobiledevice/CMakeLists.txt +++ b/cmake/libimobiledevice/CMakeLists.txt @@ -8,7 +8,7 @@ project(imobiledevice LANGUAGES C) set(ROOT "${ALTSERVER_DIR}/libraries/libimobiledevice") file(GLOB src "${ROOT}/src/*.c" "${ROOT}/common/*.c") -add_library(${PROJECT_NAME} ${src}) +add_library(${PROJECT_NAME} STATIC ${src}) add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) # -------------------------------------------------------------------------------------------------------- diff --git a/cmake/libplist/CMakeLists.txt b/cmake/libplist/CMakeLists.txt index ada43ad..a3c63ee 100644 --- a/cmake/libplist/CMakeLists.txt +++ b/cmake/libplist/CMakeLists.txt @@ -14,7 +14,7 @@ set_source_files_properties(${c_src} PROPERTIES LANGUAGE C) file(GLOB src "${ROOT}/src/*.cpp" "${ROOT}/libcnary/*.cpp") set_source_files_properties(${src} PROPERTIES LANGUAGE CXX) -add_library(${PROJECT_NAME} ${c_src} ${src}) +add_library(${PROJECT_NAME} STATIC ${c_src} ${src}) add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) # -------------------------------------------------------------------------------------------------------- diff --git a/cmake/libusbmuxd/CMakeLists.txt b/cmake/libusbmuxd/CMakeLists.txt index 5874861..8fac728 100644 --- a/cmake/libusbmuxd/CMakeLists.txt +++ b/cmake/libusbmuxd/CMakeLists.txt @@ -8,7 +8,7 @@ project(usbmuxd LANGUAGES C) set(ROOT "${ALTSERVER_DIR}/libraries/libusbmuxd") file(GLOB src "${ROOT}/src/*.c") -add_library(${PROJECT_NAME} ${src}) +add_library(${PROJECT_NAME} STATIC ${src}) add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) # -------------------------------------------------------------------------------------------------------- diff --git a/cmake/minizip/CMakeLists.txt b/cmake/minizip/CMakeLists.txt index e50f7ba..982aff6 100644 --- a/cmake/minizip/CMakeLists.txt +++ b/cmake/minizip/CMakeLists.txt @@ -9,7 +9,7 @@ file(GLOB src "${ALTSERVER_DIR}/upstream_patched/AltSign/Dependencies/minizip/*. list(FILTER src EXCLUDE REGEX "win|miniunz|minizip\.c") -add_library(${PROJECT_NAME} ${src}) +add_library(${PROJECT_NAME} STATIC ${src}) add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) # -------------------------------------------------------------------------------------------------------- diff --git a/libraries/dnssd_loader/CMakeLists.txt b/libraries/dnssd_loader/CMakeLists.txt index 592e10b..767bd72 100644 --- a/libraries/dnssd_loader/CMakeLists.txt +++ b/libraries/dnssd_loader/CMakeLists.txt @@ -5,7 +5,7 @@ project(dnssd LANGUAGES CXX) # Setup library # ------------------------------------------------------------------------------------------------------------------------------- -add_library(${PROJECT_NAME} "dnssd_loader.cpp") +add_library(${PROJECT_NAME} STATIC "dnssd_loader.cpp") add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17) From 3075c22139f058fc8c252c135debb9109cbc6284 Mon Sep 17 00:00:00 2001 From: Curve Date: Fri, 7 Apr 2023 00:32:44 +0200 Subject: [PATCH 08/21] docs(readme): update build instructions, usage --- README.md | 86 ++++++++++++++++++++++++++----------------------------- 1 file changed, 41 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index 345d77c..e0f0ee4 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,33 @@ # AltServer-Linux + AltServer for AltStore, but on-device ## Usage -- Install IPA: `./AltServer -u [UDID] -a [AppleID account] -p [AppleID password] [ipaPath.ipa]` -- Running as AltServer Daemon: `./AltServer` -- Full usage (maybe outdated, refer to `./AltServer -h` for the newest): -``` -Usage: AltServer-Linux options [ ipa-file ] - -h --help Display this usage information. - -u --udid UDID Device's UDID, only needed when installing IPA. - -a --appleID AppleID Apple ID to sign the ipa, only needed when installing IPA. - -p --password passwd Password of Apple ID, only needed when installing IPA. - -d --debug Print debug output, can be used several times to increase debug level. +- ๐Ÿ“ฆ Install IPA + ```bash + ./AltServer -u [UDID] -a [AppleID account] -p [AppleID password] [ipaPath.ipa] + ``` + +- โžฐ Running as AltServer Daemon + ```bash + ./AltServer + ``` + +- ๐Ÿงช Full Usage + ```bash + Usage: AltServer-Linux options [ ipa-file ] + -h --help Display this usage information. + -u --udid UDID Device's UDID, only needed when installing IPA. + -a --appleID AppleID Apple ID to sign the ipa, only needed when installing IPA. + -p --password passwd Password of Apple ID, only needed when installing IPA. + -d --debug Print debug output, can be used several times to increase debug level. -The following environment var can be set for some special situation: - - ALTSERVER_ANISETTE_SERVER: Set to custom anisette server URL - if not set, the default one: https://armconverter.com/anisette/irGb3Quww8zrhgqnzmrx, is used - - ALTSERVER_NO_SUBSCRIBE: (*unused*) Please enable this for usbmuxd server that do not correctly usbmuxd_listen interfaces -``` + The following environment var can be set for some special situation: + - ALTSERVER_ANISETTE_SERVER: Set to custom anisette server URL + if not set, the default one: https://armconverter.com/anisette/irGb3Quww8zrhgqnzmrx, is used + - ALTSERVER_NO_SUBSCRIBE: (*unused*) Please enable this for usbmuxd server that do not correctly usbmuxd_listen interfaces + ``` ## Download @@ -36,38 +45,25 @@ The following environment var can be set for some special situation: ---- -## Advanced: Build Instruction (check Github Actions if you cannot build) +## Advanced: Build Instructions +> If you have issues with building you may want to checkout the build workflow -- Preparation: `git clone --recursive https://github.com/NyaMisty/AltServer-Linux` +> **Note** +> The following build instructions apply to archlinux only, but should be roughly the same on other distros. -- Install dependencies (see notes below): corecrypto_static, cpprestsdk static lib, boost static lib - -- Build: - ``` - cd AltServer-Linux - mkdir build - make -f ../Makefile -j3 - ls AltServer-* +- ๐Ÿšง Install Build Dependencies + ```bash + yay -S boost clang cmake ninja git libcorecrypto-git zlib ``` -- My own build note for you - ``` - 1. Run alpine docker (change --platform to corresponding architecture you want): - docker run --platform=linux/arm/v7 --name altserver-builder-alpine-armv7 -it alpine:3.15 - 2. Install dependencies: - apk add zsh git curl wget g++ clang boost-static ninja boost-dev cmake make sudo bash vim libressl-dev util-linux-dev zlib-dev zlib-static - 3. Install corecrypto - download corecrypto from apple website, unzip corecrypto.zip; cd corecrypto; mkdir build; cd build; CC=clang CXX=clang++ cmake ..; - vim CMakeFiles/Makefile2, delete line starts with "all: corecrypto_perf/....." and "all: corecrypto_test/.....", then make; make install - 4. Install cpprestsdk - git clone --recursive https://github.com/microsoft/cpprestsdk; cd cpprestsdk; mkdir build; cmake -DBUILD_SHARED_LIBS=0 ..; make; make install - (if you're compiling for armv7, you have to grep -Wcast-align, and remove it, or the compiling would fail) - 5. Install libzip - git clone https://github.com/nih-at/libzip; cd libzip; mkdir build; cd build; cmake -DBUILD_SHARED_LIBS=0 ..; make; make install - 6. Compile AltServer-Linux - git clone --recursive https://github.com/NyaMisty/AltServer-Linux - cd AltServer-Linux - make -f ../Makefile -j3 - (if you're compiling for ARM, i.e. armv7 or aarch64, you'll have to remove the -mno-default flag in Makefile) +- ๐Ÿ“ฆ Grab the source + ```bash + git clone --recursive https://github.com/NyaMisty/AltServer-Linux + cd AltServer-Linux + ```` - ``` +- ๐Ÿ—๏ธ Build + ```bash + mkdir build && cd build + cmake .. && cmake --build . --config Release + ``` \ No newline at end of file From 70ece7a7f2492d356926a81dc993135ace82377b Mon Sep 17 00:00:00 2001 From: Curve Date: Fri, 7 Apr 2023 00:37:22 +0200 Subject: [PATCH 09/21] refactor: update build workflow --- .github/workflows/build.yml | 174 ++++------------------------- .github/workflows/build_docker.yml | 37 ------ buildenv/Dockerfile | 29 ----- buildenv/build_docker.sh | 11 -- 4 files changed, 24 insertions(+), 227 deletions(-) delete mode 100644 .github/workflows/build_docker.yml delete mode 100644 buildenv/Dockerfile delete mode 100644 buildenv/build_docker.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 58ec01d..870dd3d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,161 +1,35 @@ -name: Build AltServer - on: - push: workflow_dispatch: - inputs: - sync_upstream: - required: false - default: false - debug_enabled: - description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)' - required: false - default: false - repository_dispatch: - - schedule: - - cron: "0 */4 * * *" # min hour day week year - - -env: - REGISTRY: ghcr.io + push: + branches: ["**"] + paths-ignore: + - "**/*.md" +name: Build Binary jobs: - check: - runs-on: ubuntu-latest - name: "Check Upstream Updates" - steps: - - name: Checkout - uses: actions/checkout@v2 - with: - fetch-depth: 0 - submodules: recursive - - - name: Check If Need Checking - id: needCheck - if: ${{ github.event_name == 'schedule' || ( github.event_name == 'workflow_dispatch' && github.event.inputs.sync_upstream ) }} - run: | - echo "needCheck=1" >> $GITHUB_ENV - - - name: Check Upstream Version - id: check - run: | - if [[ "$needCheck" == 1 ]]; then - echo "Checking changes in upstream_repo..." - - current_upstream=$(git ls-tree HEAD upstream_repo | awk '{ print $3 }') - echo "Current Upstream Commit: $current_upstream" - - git submodule update --remote -- upstream_repo - new_upstream=$( cd upstream_repo; git show -s --format=%H ) - echo "New Upstream Commit: $new_upstream" - - git reset --hard - git submodule update --init - if [[ "$current_upstream" != "$new_upstream" ]]; then - echo "Upstream got new commits, go updating!" - echo "::set-output name=updated::1" - else - echo "Upstream no change~" - echo "::set-output name=updated::0" - fi - else - echo "Needn't to check changes, directly return~" - echo "::set-output name=updated::0" - fi - - - uses: gautamkrishnar/keepalive-workflow@master - with: - commit_message: "[proj] keepalive-workflow auto commit" - outputs: - updated: ${{ steps.check.outputs.updated }} - build: - needs: [check] + runs-on: ubuntu-latest + container: greyltc/archlinux-aur:paru strategy: + fail-fast: false matrix: - builder: [ghcr.io/nyamisty/altserver_builder_alpine_armv7, ghcr.io/nyamisty/altserver_builder_alpine_aarch64, ghcr.io/nyamisty/altserver_builder_alpine_amd64, ghcr.io/nyamisty/altserver_builder_alpine_i386] - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - with: - fetch-depth: 0 - submodules: recursive - - name: Do Submodule Update - if: ${{ needs.check.outputs.updated == '1' }} - run: - git submodule update --remote -- upstream_repo - - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: Log in to the Container registry - uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Prepare build - run: mkdir /tmp/build_output - - name: Build - run: | - image=${{ matrix.builder }} - docker pull $image - docker run -v ${PWD}:/workdir -w /workdir $image bash -c 'mkdir build; cd build; make -f ../Makefile -j3' - cp build/AltServer-* /tmp/build_output; chmod +x /tmp/build_output/* - sudo rm -rf build - git clean -fdX - - name: Upload to github artifact - uses: NyaMisty/upload-artifact-as-is@master - with: - path: /tmp/build_output + language: ["cpp"] - release: - runs-on: ubuntu-latest - if: ${{ startsWith(github.ref, 'refs/tags/') }} - needs: [build] - name: "release" - steps: - - name: "Create artifact directory" - run: | - mkdir -p build_output - - name: "Download all artifacts" - uses: actions/download-artifact@v2 - with: - path: build_output - - name: "Rearrange artifacts" - run: | - find build_output - mkdir -p build_release - mv build_output/*/* build_release - ls build_release - if [ "$(ls -A build_release)" ]; then exit 0; else exit 1; fi - - name: Release - uses: softprops/action-gh-release@v1 - with: - files: build_release/* - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - update_submodule: - runs-on: ubuntu-latest - needs: [check, build] - if: ${{ needs.check.outputs.updated == '1' }} steps: - name: Checkout - uses: actions/checkout@v2 - with: - fetch-depth: 0 - submodules: recursive - - name: Commit Submodule Update - run: | - git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" - git config --local user.name "github-actions[bot]" - git submodule update --remote -- upstream_repo - git commit -m "[server] Sync Upstream Repo commit" upstream_repo - - name: Push changes - uses: ad-m/github-push-action@master + uses: actions/checkout@v3 + + - name: Install build dependencies + run: "paru --noconfirm -Syu base-devel cmake clang ninja git make boost libcorecrypto-git zlib" + + - name: Compile + run: > + mkdir build && cd build + && cmake .. && cmake --build . --config Release + + - name: Upload Artifact + uses: actions/upload-artifact@v3 with: - github_token: ${{ secrets.GITHUB_TOKEN }} - branch: ${{ github.ref }} - \ No newline at end of file + name: build + path: | + build/ \ No newline at end of file diff --git a/.github/workflows/build_docker.yml b/.github/workflows/build_docker.yml deleted file mode 100644 index befdc6a..0000000 --- a/.github/workflows/build_docker.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Build buildenv Docker - -on: - workflow_dispatch: - -env: - REGISTRY: ghcr.io - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - with: - ref: master # set the branch to merge to - fetch-depth: 0 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - #- - # uses: docker/setup-buildx-action@v1 - # id: buildx - # with: - # install: true - - - name: Available platforms - run: echo ${{ steps.buildx.outputs.platforms }} - - name: Log in to the Container registry - uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Build & Push Dockers - run: cd ./buildenv && bash ./build_docker.sh - diff --git a/buildenv/Dockerfile b/buildenv/Dockerfile deleted file mode 100644 index 20c0458..0000000 --- a/buildenv/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -ARG IMAGE=arm64v8/alpine:3.15 - -FROM $IMAGE - -RUN apk add zsh git curl wget g++ clang boost-static ninja boost-dev cmake make sudo bash vim libressl-dev util-linux-dev zlib-dev zlib-static - -RUN mkdir /buildenv - -WORKDIR /buildenv - -RUN curl -JO 'https://developer.apple.com/file/?file=security&agree=Yes' -H 'Referer: https://developer.apple.com/security/' && unzip corecrypto.zip -WORKDIR /buildenv/corecrypto -RUN mkdir build; cd build; CC=clang CXX=clang++ cmake ..; -WORKDIR /buildenv/corecrypto/build -RUN sed -i -E 's|^(all: CMakeFiles\/corecrypto_perf)|#\1|' CMakeFiles/Makefile2; sed -i -E 's|^(all: CMakeFiles\/corecrypto_test)|#\1|' CMakeFiles/Makefile2 -RUN make -j6; make install - -WORKDIR /buildenv - -RUN git clone --recursive https://github.com/microsoft/cpprestsdk; -WORKDIR /buildenv/cpprestsdk -RUN sed -i 's|-Wcast-align||' "./Release/CMakeLists.txt" -RUN mkdir build; cd build; cmake -DBUILD_SHARED_LIBS=0 ..; make -j6; make install - -WORKDIR /buildenv/ - -RUN git clone https://github.com/nih-at/libzip && cd libzip; mkdir build; cd build; cmake -DBUILD_SHARED_LIBS=0 ..; make -j6; make install - - diff --git a/buildenv/build_docker.sh b/buildenv/build_docker.sh deleted file mode 100644 index d2d8d36..0000000 --- a/buildenv/build_docker.sh +++ /dev/null @@ -1,11 +0,0 @@ -docker build --build-arg IMAGE=arm32v7/alpine:3.15 -t ghcr.io/nyamisty/altserver_builder_alpine_armv7 . -docker push ghcr.io/nyamisty/altserver_builder_alpine_armv7 - -docker build --build-arg IMAGE=arm64v8/alpine:3.15 -t ghcr.io/nyamisty/altserver_builder_alpine_aarch64 . -docker push ghcr.io/nyamisty/altserver_builder_alpine_aarch64 - -docker build --build-arg IMAGE=amd64/alpine:3.15 -t ghcr.io/nyamisty/altserver_builder_alpine_amd64 . -docker push ghcr.io/nyamisty/altserver_builder_alpine_amd64 - -docker build --build-arg IMAGE=i386/alpine:3.15 -t ghcr.io/nyamisty/altserver_builder_alpine_i386 . -docker push ghcr.io/nyamisty/altserver_builder_alpine_i386 From e077b8022ec5d96da450122dec0ddb529b3c8ff4 Mon Sep 17 00:00:00 2001 From: Curve Date: Fri, 7 Apr 2023 00:42:49 +0200 Subject: [PATCH 10/21] fix(build-workflow): use `aur-install` --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 870dd3d..56bf0a7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,8 +20,8 @@ jobs: uses: actions/checkout@v3 - name: Install build dependencies - run: "paru --noconfirm -Syu base-devel cmake clang ninja git make boost libcorecrypto-git zlib" - + run: "paru --noconfirm -Syu base-devel cmake clang ninja git make boost zlib && aur-install libcorecrypto-git" + - name: Compile run: > mkdir build && cd build From 525f7c4022e980b421d0884a200a0018e5b1fb3f Mon Sep 17 00:00:00 2001 From: Curve Date: Fri, 7 Apr 2023 00:45:13 +0200 Subject: [PATCH 11/21] fix(build-workflow): recursive checkout --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 56bf0a7..60dbe3e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,6 +18,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v3 + with: + submodules: recursive - name: Install build dependencies run: "paru --noconfirm -Syu base-devel cmake clang ninja git make boost zlib && aur-install libcorecrypto-git" From 0b1325cc0a4538d03e08cec1109b03e20e57d07f Mon Sep 17 00:00:00 2001 From: Curve Date: Fri, 7 Apr 2023 13:19:14 +0200 Subject: [PATCH 12/21] refactor(cmake): add_subdirectory at top-level, fix build dependencies --- .github/workflows/build.yml | 4 ++-- CMakeLists.txt | 8 ++++++++ cmake/AltServer/CMakeLists.txt | 3 +-- cmake/AltSign/CMakeLists.txt | 5 ----- cmake/ldid/CMakeLists.txt | 8 +++++++- cmake/libimobiledevice-glue/CMakeLists.txt | 8 +++++++- cmake/libimobiledevice/CMakeLists.txt | 3 +-- cmake/libusbmuxd/CMakeLists.txt | 1 - 8 files changed, 26 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 60dbe3e..a2a9c67 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,12 +22,12 @@ jobs: submodules: recursive - name: Install build dependencies - run: "paru --noconfirm -Syu base-devel cmake clang ninja git make boost zlib && aur-install libcorecrypto-git" + run: "paru --noconfirm -Syu base-devel cmake clang ninja git make boost zlib python3 avahi && aur-install libcorecrypto-git" - name: Compile run: > mkdir build && cd build - && cmake .. && cmake --build . --config Release + && cmake -GNinja .. && cmake --build . --config Release -- -j 8 - name: Upload Artifact uses: actions/upload-artifact@v3 diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ebf892..0ab8ac8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,14 @@ add_definitions(-include "${ALTSERVER_DIR}/src/common.h" -include "${ALTSERVER_D # This is also pretty bad practice imo, but exporting all of the defines into cmake would also be retarded add_definitions(-include "${ALTSERVER_DIR}/config/libimobiledevice.h" -include "${ALTSERVER_DIR}/config/dnssd.h") +add_subdirectory(cmake/ldid) +add_subdirectory(cmake/minizip) +add_subdirectory(cmake/libplist) +add_subdirectory(cmake/CoreCrypto) +add_subdirectory(libraries/dnssd_loader) +add_subdirectory(cmake/libimobiledevice) +add_subdirectory(cmake/libimobiledevice-glue) + add_subdirectory(cmake/AltSign) add_subdirectory(cmake/AltServer) diff --git a/cmake/AltServer/CMakeLists.txt b/cmake/AltServer/CMakeLists.txt index 76d111f..3048637 100644 --- a/cmake/AltServer/CMakeLists.txt +++ b/cmake/AltServer/CMakeLists.txt @@ -31,5 +31,4 @@ target_include_directories(${PROJECT_NAME} PUBLIC "${ALTSERVER_DIR}/upstream_pat # Link required libraries # -------------------------------------------------------------------------------------------------------- -add_subdirectory("${ALTSERVER_DIR}/libraries/dnssd_loader" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}") -target_link_libraries(${PROJECT_NAME} PUBLIC dnssd::dnssd altsign::altsign) \ No newline at end of file +target_link_libraries(${PROJECT_NAME} PUBLIC imobiledevice::imobiledevice dnssd::dnssd altsign::altsign) \ No newline at end of file diff --git a/cmake/AltSign/CMakeLists.txt b/cmake/AltSign/CMakeLists.txt index fba0fa2..02f569d 100644 --- a/cmake/AltSign/CMakeLists.txt +++ b/cmake/AltSign/CMakeLists.txt @@ -33,9 +33,4 @@ include(FetchContent) FetchContent_Declare(cpprestsdk GIT_REPOSITORY "https://github.com/microsoft/cpprestsdk" GIT_TAG "2.10.18") FetchContent_MakeAvailable(cpprestsdk) -add_subdirectory(../ldid "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_ldid") -add_subdirectory(../minizip "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_minizip") -add_subdirectory(../libplist "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_libplist") -add_subdirectory(../CoreCrypto "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_corecrypto") - target_link_libraries(${PROJECT_NAME} PUBLIC plist::plist ldid::ldid minizip::minizip corecrypto::corecrypto cpprest) \ No newline at end of file diff --git a/cmake/ldid/CMakeLists.txt b/cmake/ldid/CMakeLists.txt index f6751da..900c1da 100644 --- a/cmake/ldid/CMakeLists.txt +++ b/cmake/ldid/CMakeLists.txt @@ -22,4 +22,10 @@ set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 17 CXX_EXTENSIONS # -------------------------------------------------------------------------------------------------------- target_include_directories(${PROJECT_NAME} PRIVATE "${ALTSERVER_DIR}/shims") -target_include_directories(${PROJECT_NAME} PUBLIC "${ALTSERVER_DIR}/upstream_patched/ldid") \ No newline at end of file +target_include_directories(${PROJECT_NAME} PUBLIC "${ALTSERVER_DIR}/upstream_patched/ldid") + +# -------------------------------------------------------------------------------------------------------- +# Link required libraries +# -------------------------------------------------------------------------------------------------------- + +target_link_libraries(${PROJECT_NAME} PUBLIC plist::plist) \ No newline at end of file diff --git a/cmake/libimobiledevice-glue/CMakeLists.txt b/cmake/libimobiledevice-glue/CMakeLists.txt index ff69110..5eed9ad 100644 --- a/cmake/libimobiledevice-glue/CMakeLists.txt +++ b/cmake/libimobiledevice-glue/CMakeLists.txt @@ -16,4 +16,10 @@ add_library(imobiledevice::glue ALIAS ${PROJECT_NAME}) # -------------------------------------------------------------------------------------------------------- target_include_directories(${PROJECT_NAME} PRIVATE "${ROOT}") -target_include_directories(${PROJECT_NAME} PUBLIC "${ROOT}/include") \ No newline at end of file +target_include_directories(${PROJECT_NAME} PUBLIC "${ROOT}/include") + +# -------------------------------------------------------------------------------------------------------- +# Link required libraries +# -------------------------------------------------------------------------------------------------------- + +target_link_libraries(${PROJECT_NAME} PUBLIC plist::plist) \ No newline at end of file diff --git a/cmake/libimobiledevice/CMakeLists.txt b/cmake/libimobiledevice/CMakeLists.txt index 113f00f..5510505 100644 --- a/cmake/libimobiledevice/CMakeLists.txt +++ b/cmake/libimobiledevice/CMakeLists.txt @@ -22,5 +22,4 @@ target_include_directories(${PROJECT_NAME} PUBLIC "${ROOT}/include" "${ROOT}/com # Link required libraries # -------------------------------------------------------------------------------------------------------- -add_subdirectory(../libimobiledevice-glue "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}") -target_link_libraries(${PROJECT_NAME} PUBLIC imobiledevice::glue) \ No newline at end of file +target_link_libraries(${PROJECT_NAME} PUBLIC imobiledevice::glue usbmuxd::usbmuxd) \ No newline at end of file diff --git a/cmake/libusbmuxd/CMakeLists.txt b/cmake/libusbmuxd/CMakeLists.txt index 8fac728..57e1cbf 100644 --- a/cmake/libusbmuxd/CMakeLists.txt +++ b/cmake/libusbmuxd/CMakeLists.txt @@ -21,5 +21,4 @@ target_include_directories(${PROJECT_NAME} PUBLIC "${ROOT}/include") # Link required libraries # -------------------------------------------------------------------------------------------------------- -add_subdirectory(../libimobiledevice "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}") target_link_libraries(${PROJECT_NAME} PUBLIC imobiledevice::imobiledevice) \ No newline at end of file From 4913201675bbb2c3b178f53ef9bdff937ba2dad8 Mon Sep 17 00:00:00 2001 From: Curve Date: Fri, 7 Apr 2023 13:33:11 +0200 Subject: [PATCH 13/21] docs(readme): update dependencies --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e0f0ee4..6d107db 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ AltServer for AltStore, but on-device - ๐Ÿšง Install Build Dependencies ```bash - yay -S boost clang cmake ninja git libcorecrypto-git zlib + yay -S boost clang cmake ninja git libcorecrypto-git zlib python3 avahi ``` - ๐Ÿ“ฆ Grab the source From 158222cdb025646ee476ec2dfc8134b902cfd94b Mon Sep 17 00:00:00 2001 From: Curve Date: Fri, 7 Apr 2023 13:41:45 +0200 Subject: [PATCH 14/21] docs(readme): minor changes --- README.md | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 6d107db..6980816 100644 --- a/README.md +++ b/README.md @@ -31,19 +31,25 @@ AltServer for AltStore, but on-device ## Download -- Precompiled static binary can be downloaded in Release ( also have a look at pre-release ;) ) -- Nightly version is available as Github Actions artifacts - -## TODO / Special Features -- [x] Track upstream (AltServer-Windows) develop branch (i.e. Beta version) -- [x] Support Offline Anisette Data Generation (i.e. without Sideloadly) - - Finsihed, please run [alt_anisette_server](https://hub.docker.com/r/nyamisty/alt_anisette_server) & use `ALTSERVER_ANISETTE_SERVER` to specify custom server URL -- [x] Support Wi-Fi Refresh - - [netmuxd](https://github.com/jkcoxson/netmuxd) now supports network devices (needs version > v0.1.1, be sure to check pre-release) - - Download `netmuxd`, stop the original `usbmuxd`, and run `netmuxd` before running `AltServer-Linux` - - ~If netmuxd does not work, please try using special env var `ALTSERVER_NO_SUBSCRIBE`. Enabling this would disable **auto-refresh when plugged-in** of USB devices~ - ----- +- [Github Release](https://github.com/NyaMisty/AltServer-Linux/releases) +- Nightly Builds are available as [Workflow Artifacts](https://github.com/NyaMisty/AltServer-Linux/actions) + +--- + +# Offline Anisette + +Offline Anisette Data Generation (i.e. with Sideloadly) is supported. +Run [alt_anisette_server](https://hub.docker.com/r/nyamisty/alt_anisette_server) and specify the custom server url through the environment variable `ALTSERVER_ANISETTE_SERVER`. + +# Wi-Fi Refresh + +[netmuxd](https://github.com/jkcoxson/netmuxd) supports network devices since versions `>0.1.1`. + +To use netmuxd stop the original `usbmuxd` and run `netmuxd` before starting altserver. + +> ~~If netmuxd does not work, please try using special env var `ALTSERVER_NO_SUBSCRIBE`. Enabling this would disable **auto-refresh when plugged-in** of USB devices~~ + +--- ## Advanced: Build Instructions > If you have issues with building you may want to checkout the build workflow From 2bf8dacbaa21e130ebc573814499a984d0c9aa59 Mon Sep 17 00:00:00 2001 From: Curve Date: Fri, 7 Apr 2023 13:48:44 +0200 Subject: [PATCH 15/21] refactor(workflows): static cpprestsdk --- .github/workflows/build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a2a9c67..2a486a1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,11 +27,12 @@ jobs: - name: Compile run: > mkdir build && cd build - && cmake -GNinja .. && cmake --build . --config Release -- -j 8 + && cmake -GNinja -DBUILD_SHARED_LIBS=OFF .. && cmake --build . --config Release -- -j 8 - name: Upload Artifact uses: actions/upload-artifact@v3 with: name: build path: | - build/ \ No newline at end of file + build/ + !build/_deps \ No newline at end of file From 69bf19fe8945cb362f3b59e31941da13cbce7241 Mon Sep 17 00:00:00 2001 From: Curve Date: Fri, 7 Apr 2023 13:59:23 +0200 Subject: [PATCH 16/21] refactor(build-workflow): also ignore cmake folder --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2a486a1..24c48df 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,4 +35,5 @@ jobs: name: build path: | build/ + !build/cmake !build/_deps \ No newline at end of file From df25ebfebdae75bc11aba3e46f33264a8f579b8b Mon Sep 17 00:00:00 2001 From: Curve Date: Fri, 7 Apr 2023 14:00:11 +0200 Subject: [PATCH 17/21] fix(cmakelists): typo --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ab8ac8..7ae89d3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ set(ALTSERVER_DIR "${CMAKE_CURRENT_SOURCE_DIR}") # Options # ------------------------------------------------------------------------------------------------------------------------------- -option(altserver_cli "Wether or not to build the cli" ON) +option(altserver_cli "Whether or not to build the cli" ON) # ------------------------------------------------------------------------------------------------------------------------------- # Patch upstream project From d8a6455a85118265962692f3cb8b05f6ede3934d Mon Sep 17 00:00:00 2001 From: Curve Date: Fri, 7 Apr 2023 14:21:32 +0200 Subject: [PATCH 18/21] chore: delete left-over makefile --- Makefile | 130 ------------------------------------------------------- 1 file changed, 130 deletions(-) delete mode 100644 Makefile diff --git a/Makefile b/Makefile deleted file mode 100644 index 0d3ce07..0000000 --- a/Makefile +++ /dev/null @@ -1,130 +0,0 @@ -PROGRAM := AltServer - -ARCH := $(shell gcc -dumpmachine | cut -d- -f 1) - -PROGRAM := $(PROGRAM)-$(ARCH) - -CFLAGS := -DDEBUG -O0 -g - -ifeq ($(ARCH),i386) -CFLAGS += -mno-default -endif - -ifeq ($(ARCH),i686) -CFLAGS += -mno-default -endif - -CXXFLAGS = $(CFLAGS) -std=c++17 - -CFLAGS += -DNO_USBMUXD_STUB - -ROOT_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -include $(ROOT_DIR)/makefiles/main.mak - -$(BUILD_DIR)/libimobiledevice.a $(BUILD_DIR)/libplist.a : - $(MAKE) -f $(ROOT_DIR)/makefiles/libimobiledevice-build/libimobiledevice.mak -lib_libimobiledevice: $(BUILD_DIR)/libimobiledevice.a $(BUILD_DIR)/libplist.a -lib_libimobiledevice_clean : - $(MAKE) -f $(ROOT_DIR)/makefiles/libimobiledevice-build/libimobiledevice.mak clean -.PHONY: $(BUILD_DIR)/libimobiledevice.a $(BUILD_DIR)/libplist.a lib_libimobiledevice lib_libimobiledevice_clean - -$(BUILD_DIR)/AltSign.a: - $(MAKE) -f $(ROOT_DIR)/makefiles/AltSign-build/AltSign.mak EXTRA_FLAGS=$(libplist_include) -lib_AltSign : $(BUILD_DIR)/AltSign.a $(BUILD_DIR)/libplist.a -lib_AltSign_clean : - $(MAKE) -f $(ROOT_DIR)/makefiles/AltSign-build/AltSign.mak clean -.PHONY: $(BUILD_DIR)/AltSign.a $(BUILD_DIR)/libplist.a lib_AltSign lib_AltSign_clean - -$(BUILD_DIR)/dnssd_loader.a: - $(MAKE) -f $(ROOT_DIR)/makefiles/dnssd_loader-build/dnssd_loader.mak -lib_dnssd_loader : $(BUILD_DIR)/dnssd_loader.a -lib_dnssd_loader_clean : - $(MAKE) -f $(ROOT_DIR)/makefiles/dnssd_loader-build/dnssd_loader.mak clean -.PHONY: $(BUILD_DIR)/dnssd_loader.a lib_dnssd_loader lib_dnssd_loader_clean - - -include $(ROOT_DIR)/makefiles/libimobiledevice-build/libimobiledevice-files.mak -include $(ROOT_DIR)/makefiles/AltSign-build/AltSign-files.mak -include $(ROOT_DIR)/makefiles/dnssd_loader-build/dnssd_loader-files.mak - -#libimobiledevice_include := -I$(LIB_DIR)/libimobiledevice/include -I$(LIB_DIR)/libimobiledevice -I$(LIB_DIR)/libusbmuxd/include -#libplist_include := -I$(LIB_DIR)/libplist/include -#altsign_include := -I$(BUILD_DIR)/AltSign_patched - -#INC_CFLAGS := -Ilibraries -INC_CFLAGS += $(libimobiledevice_include) -INC_CFLAGS += $(libplist_include) -INC_CFLAGS += $(altsign_include) -INC_CFLAGS += $(dnssd_loader_include) - -include $(ROOT_DIR)/makefiles/AltWindowsShim.mak - -main_srcroot := $(UPSTREAM_DIR)/AltServer -main_override_srcroot := $(ROOT_DIR)/src -main_override_src := $(wildcard $(main_override_srcroot)/*.cpp) - -main_orisrc := $(wildcard $(main_srcroot)/*.cpp) $(wildcard $(main_srcroot)/*.c) - -main_orisrc := $(filter-out $(main_srcroot)/AltServer.cpp, $(main_orisrc)) -main_orisrc := $(filter-out $(main_override_src:$(main_override_srcroot)/%=$(main_srcroot)/%), $(main_orisrc)) -#main_orisrc := $(filter-out $(main_srcroot)/AltServerApp.cpp, $(main_orisrc)) -#main_orisrc := $(filter-out $(main_srcroot)/AnisetteDataManager.cpp, $(main_orisrc)) - -#$(BUILD_DIR)/objs/%.c.o : $(BUILD_DIR)/%.c -# python3 $(ROOT_DIR)/makefiles/AltSign-build/rewrite_altserver_source.py "$<" | $(CC) -x c -I`dirname $<` $(CFLAGS) $(EXTRA_FLAGS) -o $@ -c - -# #$(CC) $(CFLAGS) $(EXTRA_FLAGS) -o $@ -c $< -# -#$(BUILD_DIR)/objs/%.cpp.o : $(BUILD_DIR)/%.cpp -# python3 $(ROOT_DIR)/makefiles/AltSign-build/rewrite_altserver_source.py "$<" | $(CXX) -x c++ -I`dirname $<` $(CXXFLAGS) $(EXTRA_FLAGS) -o $@ -c - -# #$(CXX) $(CXXFLAGS) $(EXTRA_FLAGS) -o $@ -c $< - -main_patched_root := $(BUILD_DIR)/AltServer_patched -main_orifiles := $(wildcard $(main_srcroot)/*.*) -main_newfiles := $(main_orifiles:$(main_srcroot)/%=$(main_patched_root)/%) - -$(main_patched_root)/%: $(main_srcroot)/% - mkdir -p `dirname "$@"` - python3 $(ROOT_DIR)/makefiles/rewrite_altserver_source.py "$<" > $@ - -$(main_newfiles) : $(main_orifiles) - -preprocess : $(main_newfiles) -.PHONY : preprocess - - -$(BUILD_DIR)/objs/%.c.o : $(BUILD_DIR)/%.c - mkdir -p $(@D) - $(CC) $(CFLAGS) $(EXTRA_FLAGS) -o $@ -c $< - -$(BUILD_DIR)/objs/%.cpp.o : $(BUILD_DIR)/%.cpp - mkdir -p $(@D) - $(CXX) $(CXXFLAGS) $(EXTRA_FLAGS) -o $@ -c $< - -$(BUILD_DIR)/objs/%.c.o : $(ROOT_DIR)/%.c - mkdir -p $(@D) - $(CC) $(CFLAGS) $(EXTRA_FLAGS) -o $@ -c $< - -$(BUILD_DIR)/objs/%.cpp.o : $(ROOT_DIR)/%.cpp - mkdir -p $(@D) - $(CXX) $(CXXFLAGS) $(EXTRA_FLAGS) -o $@ -c $< - -main_newsrc := $(main_orisrc:$(main_srcroot)/%=$(main_patched_root)/%) -#main_objs = $(main_orisrc:$(UPSTREAM_DIR)/%=$(BUILD_DIR)/objs/%.o) - -main_objs = $(main_newsrc:$(BUILD_DIR)/%=$(BUILD_DIR)/objs/%.o) $(main_override_src:$(ROOT_DIR)/%=$(BUILD_DIR)/objs/%.o) $(shim_src:$(MAIN_DIR)/%=$(BUILD_DIR)/objs/%.o) - -$(main_objs) : lib_AltSign lib_libimobiledevice lib_dnssd_loader - -$(main_objs) : EXTRA_FLAGS := -I$(main_patched_root) -I$(ROOT_DIR)/src -fpermissive -include "common.h" $(INC_CFLAGS) - -LDFLAGS = -static -lssl -lcrypto -lpthread -lcorecrypto_static -lzip -lm -lz -lcpprest -lboost_system -lboost_filesystem -lstdc++ -lssl -lcrypto -luuid - -$(BUILD_DIR)/$(PROGRAM):: $(main_objs) $(BUILD_DIR)/libimobiledevice.a $(BUILD_DIR)/AltSign.a $(BUILD_DIR)/libplist.a $(BUILD_DIR)/dnssd_loader.a - $(CC) -o $@ $^ $(LDFLAGS) - -.PHONY: clean all -clean:: lib_libimobiledevice_clean lib_AltSign_clean lib_dnssd_loader_clean - rm -f $(main_objs) $(BUILD_DIR)/$(PROGRAM) - -all:: preprocess $(BUILD_DIR)/$(PROGRAM) -.DEFAULT_GOAL := all From fa40581b20e7c35798252eceaa4589722c06f0e8 Mon Sep 17 00:00:00 2001 From: Curve Date: Fri, 7 Apr 2023 14:32:50 +0200 Subject: [PATCH 19/21] feat: sync with latest develop --- cmake/libimobiledevice/CMakeLists.txt | 3 ++- shims/windows_shim.h | 1 + upstream_repo | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/cmake/libimobiledevice/CMakeLists.txt b/cmake/libimobiledevice/CMakeLists.txt index 5510505..2c1d6ba 100644 --- a/cmake/libimobiledevice/CMakeLists.txt +++ b/cmake/libimobiledevice/CMakeLists.txt @@ -15,7 +15,8 @@ add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) # Include directories # -------------------------------------------------------------------------------------------------------- -target_include_directories(${PROJECT_NAME} PRIVATE "${ROOT}") +target_include_directories(${PROJECT_NAME} PUBLIC "${ROOT}") +target_include_directories(${PROJECT_NAME} PUBLIC "${ALTSERVER_DIR}/libraries") target_include_directories(${PROJECT_NAME} PUBLIC "${ROOT}/include" "${ROOT}/common") # -------------------------------------------------------------------------------------------------------- diff --git a/shims/windows_shim.h b/shims/windows_shim.h index dfc70fc..3a5b2f7 100644 --- a/shims/windows_shim.h +++ b/shims/windows_shim.h @@ -21,6 +21,7 @@ typedef struct timeval TIMEVAL; #ifdef __cplusplus #include +#include #include extern std::string StringFromWideString(std::string wideString); extern std::string WideStringFromString(std::string string); diff --git a/upstream_repo b/upstream_repo index 071b1dd..2ef20b3 160000 --- a/upstream_repo +++ b/upstream_repo @@ -1 +1 @@ -Subproject commit 071b1dda13ff4d3623b1e3680ec93dd670ecaf45 +Subproject commit 2ef20b38db9c0aa097481d23750113ab47d8da76 From 7e601b62154ed5a9a28261bac967745b7676b908 Mon Sep 17 00:00:00 2001 From: Curve Date: Fri, 7 Apr 2023 14:56:30 +0200 Subject: [PATCH 20/21] fix(imobiledevice): link openssl --- cmake/libimobiledevice/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/libimobiledevice/CMakeLists.txt b/cmake/libimobiledevice/CMakeLists.txt index 2c1d6ba..9f48dac 100644 --- a/cmake/libimobiledevice/CMakeLists.txt +++ b/cmake/libimobiledevice/CMakeLists.txt @@ -23,4 +23,5 @@ target_include_directories(${PROJECT_NAME} PUBLIC "${ROOT}/include" "${ROOT}/com # Link required libraries # -------------------------------------------------------------------------------------------------------- -target_link_libraries(${PROJECT_NAME} PUBLIC imobiledevice::glue usbmuxd::usbmuxd) \ No newline at end of file +find_package(OpenSSL REQUIRED) +target_link_libraries(${PROJECT_NAME} PUBLIC imobiledevice::glue usbmuxd::usbmuxd OpenSSL::SSL) \ No newline at end of file From 05a1e5a6a7846ef85b4f4ff57ac2ce24e5151559 Mon Sep 17 00:00:00 2001 From: Curve Date: Fri, 7 Apr 2023 15:02:10 +0200 Subject: [PATCH 21/21] docs(readme): link aur package --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6980816..ca8c701 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,7 @@ AltServer for AltStore, but on-device ## Download - [Github Release](https://github.com/NyaMisty/AltServer-Linux/releases) +- [altserver-linux-curve-git AUR](https://aur.archlinux.org/packages/altserver-linux-curve-git) - Nightly Builds are available as [Workflow Artifacts](https://github.com/NyaMisty/AltServer-Linux/actions) ---