11cmake_minimum_required (VERSION 3.25 )
22
3- project (wrapper)
4- include (ExternalProject )
5-
63set (CMAKE_C_STANDARD 99)
74set (CMAKE_CXX_STANDARD 11)
85
9- set (ANDROID_NDK_PATH "${CMAKE_CURRENT_SOURCE_DIR } /android-ndk-r23b" CACHE PATH "Android NDK toolchain directory " )
6+ set (ANDROID_NDK_PATH "${CMAKE_CURRENT_SOURCE_DIR } /android-ndk-r23b" CACHE PATH "NDK Path " )
107set (TOOLCHAIN "${ANDROID_NDK_PATH} /toolchains/llvm/prebuilt/linux-x86_64" )
118
129set (CMAKE_C_COMPILER "${TOOLCHAIN} /bin/x86_64-linux-android22-clang" )
1310set (CMAKE_CXX_COMPILER "${TOOLCHAIN} /bin/x86_64-linux-android22-clang++" )
1411set (C_COMPILER "${TOOLCHAIN} /bin/clang" )
1512
13+ project (wrapper LANGUAGES C CXX )
14+
15+ include (FetchContent )
16+ include (ExternalProject )
17+
18+ FetchContent_Declare (
19+ cjson
20+ GIT_REPOSITORY https://github.com/DaveGamble/cJSON.git
21+ GIT_TAG v1.7.19
22+ )
23+ set (ENABLE_CJSON_TEST OFF CACHE BOOL "" FORCE )
24+ set (ENABLE_CJSON_UTILS OFF CACHE BOOL "" FORCE )
25+ set (ENABLE_TARGET_EXPORT OFF CACHE BOOL "" FORCE )
26+ set (ENABLE_CUSTOM_COMPILER_FLAGS OFF CACHE BOOL "" FORCE )
27+
28+ set (BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE )
29+
30+ FetchContent_MakeAvailable (cjson)
31+
32+ FetchContent_Declare (
33+ dobby
34+ GIT_REPOSITORY https://github.com/BepInEx/Dobby.git
35+ GIT_TAG master
36+ )
37+ set (DOBBY_BUILD_TEST OFF CACHE BOOL "" FORCE )
38+ set (DOBBY_GENERATE_SHARED OFF CACHE BOOL "" FORCE )
39+ FetchContent_MakeAvailable (dobby)
40+
1641set (CMDLINE_SOURCE cmdline.c)
1742set (HANDLE_SOURCE main.cpp)
18- set (CJSON_SOURCE cjson/cjson.c)
1943set (MAIN_SOURCE main.c)
2044set (WRAPPER_SOURCE wrapper.c)
45+ set (WRAPPER_ROOTLESS_SOURCE wrapper-rootless.c)
2146
2247add_library (cmdline_object OBJECT ${CMDLINE_SOURCE} )
2348add_library (handle_object OBJECT ${HANDLE_SOURCE} )
24- add_library (cjson_object OBJECT ${CJSON_SOURCE} )
2549
26- add_executable (main ${MAIN_SOURCE} $<TARGET_OBJECTS :cmdline_object > $<TARGET_OBJECTS :handle_object > $<TARGET_OBJECTS :cjson_object >)
50+ add_executable (main ${MAIN_SOURCE} $<TARGET_OBJECTS :cmdline_object > $<TARGET_OBJECTS :handle_object >)
51+
52+ target_include_directories (main PRIVATE ${cjson_SOURCE_DIR } )
53+ target_link_libraries (main PRIVATE cjson )
54+ target_link_libraries (main PRIVATE dobby )
2755
2856set_target_properties (main PROPERTIES
29- COMPILE_DEFINITIONS "MyRelease"
57+ # COMPILE_DEFINITIONS "MyRelease"
3058 RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR } /rootfs/system/bin"
3159)
3260
33- find_library (ANDROIDAPPMUSIC_LIB androidappmusic PATHS ${CMAKE_SOURCE_DIR } /rootfs/system/lib64 )
34- find_library (STORESERVICESCORE_LIB storeservicescore PATHS ${CMAKE_SOURCE_DIR } /rootfs/system/lib64 )
35- find_library (MEDIAPLATFORM_LIB mediaplatform PATHS ${CMAKE_SOURCE_DIR } /rootfs/system/lib64 )
36- find_library (CXX_SHARED_LIB c++_shared PATHS ${CMAKE_SOURCE_DIR } /rootfs/system/lib64 )
37- find_library (CURL_SHARED_LIB curl PATHS ${CMAKE_SOURCE_DIR } /rootfs/system/lib64 )
38- find_library (LOG_SHARED_LIB log PATHS ${CMAKE_SOURCE_DIR } /rootfs/system/lib64 )
61+ set (SYSTEM_LIB_DIR "${CMAKE_SOURCE_DIR } /rootfs/system/lib64" )
62+ find_library (ANDROIDAPPMUSIC_LIB androidappmusic PATHS ${SYSTEM_LIB_DIR} )
63+ find_library (STORESERVICESCORE_LIB storeservicescore PATHS ${SYSTEM_LIB_DIR} )
64+ find_library (MEDIAPLATFORM_LIB mediaplatform PATHS ${SYSTEM_LIB_DIR} )
65+ find_library (CXX_SHARED_LIB c++_shared PATHS ${SYSTEM_LIB_DIR} )
66+ find_library (CURL_SHARED_LIB curl PATHS ${SYSTEM_LIB_DIR} )
67+ find_library (LOG_SHARED_LIB log PATHS ${SYSTEM_LIB_DIR} )
3968
40- # Link libraries
41- target_link_libraries (main
69+ target_link_libraries (main PRIVATE
4270 ${CXX_SHARED_LIB}
4371 ${ANDROIDAPPMUSIC_LIB}
4472 ${STORESERVICESCORE_LIB}
@@ -47,26 +75,32 @@ target_link_libraries(main
4775
4876get_target_property (MAIN_COMPILE_DEFINITIONS main COMPILE_DEFINITIONS )
4977if (NOT "MyRelease" IN_LIST MAIN_COMPILE_DEFINITIONS)
50- target_link_libraries (main
51- ${LOG_SHARED_LIB}
52- ${CURL_SHARED_LIB}
53- )
54- set (CMAKE_C_FLAGS "-Werror -g" )
55- set (CMAKE_CXX_FLAGS "-Werror -g" )
78+ target_link_libraries (main PRIVATE ${LOG_SHARED_LIB} ${CURL_SHARED_LIB} )
79+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS } -Werror -g" )
80+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS } -Werror -g" )
5681else ()
57- set (CMAKE_C_FLAGS "-Wall -Werror" )
58- set (CMAKE_CXX_FLAGS "-Wall -Werror" )
82+ set (CMAKE_C_FLAGS "${ CMAKE_C_FLAGS } -Wall -Werror" )
83+ set (CMAKE_CXX_FLAGS "${ CMAKE_CXX_FLAGS } -Wall -Werror" )
5984endif ()
6085
61- link_directories (${CMAKE_SOURCE_DIR } /rootfs/system/lib64 )
62-
6386ExternalProject_Add (
64- wrapper
65- PREFIX ${CMAKE_BINARY_DIR }
87+ wrapper_exe
88+ PREFIX ${CMAKE_BINARY_DIR } /wrapper_build
6689 SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR }
6790 CONFIGURE_COMMAND ""
6891 BUILD_COMMAND ${C_COMPILER} -O3 -Wall -o wrapper ${WRAPPER_SOURCE} ${CMAKE_CURRENT_SOURCE_DIR } /cmdline.c
6992 BUILD_IN_SOURCE 1
7093 INSTALL_COMMAND ""
7194 DEPENDS main
7295)
96+
97+ ExternalProject_Add (
98+ wrapper_rootless_exe
99+ PREFIX ${CMAKE_BINARY_DIR } /wrapper_build
100+ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR }
101+ CONFIGURE_COMMAND ""
102+ BUILD_COMMAND ${C_COMPILER} -O3 -Wall -o wrapper ${WRAPPER_ROOTLESS_SOURCE} ${CMAKE_CURRENT_SOURCE_DIR } /cmdline.c
103+ BUILD_IN_SOURCE 1
104+ INSTALL_COMMAND ""
105+ DEPENDS main
106+ )
0 commit comments