Skip to content

Commit adb1ddf

Browse files
Merge pull request #40 from WorldObservationLog/dev
merge dev branch
2 parents 1dac7bb + 7e77458 commit adb1ddf

15 files changed

Lines changed: 326 additions & 3635 deletions

File tree

.dockerignore

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
.editorconfig
2+
.env
3+
.git
4+
.gitattributes
5+
.github
6+
.gitignore
7+
.gitmodules
8+
.vscode
9+
Dockerfile
10+
README.md
11+
build

.env.example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
USERNAME=
2+
PASSWORD=

.github/workflows/build.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ jobs:
4141
path: |
4242
rootfs
4343
wrapper
44+
wrapper-rootless
45+
compose.yaml
46+
entrypoint.sh
4447
Dockerfile
4548
4649
- name: Create Release Zip File

.gitignore

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -86,16 +86,14 @@ dkms.conf
8686
*.exe
8787
*.out
8888
*.app
89-
wrapper
9089

91-
# Directory skeleton is preserved, but whatever files are generated
92-
# are confidential and should not be leaked, thus ignore them.
9390
rootfs/
94-
95-
# CMake related cruft
96-
CMakeCache.txt
97-
CMakeFiles/
91+
.vscode/
92+
wrapper
93+
rootfs/system/bin/linker64
9894
build/
99-
100-
# Android SDK
10195
android-ndk-r23b/
96+
97+
# Enviroment Variables
98+
.env
99+
!.env.example

CMakeLists.txt

Lines changed: 62 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,72 @@
11
cmake_minimum_required(VERSION 3.25)
22

3-
project(wrapper)
4-
include(ExternalProject)
5-
63
set(CMAKE_C_STANDARD 99)
74
set(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")
107
set(TOOLCHAIN "${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64")
118

129
set(CMAKE_C_COMPILER "${TOOLCHAIN}/bin/x86_64-linux-android22-clang")
1310
set(CMAKE_CXX_COMPILER "${TOOLCHAIN}/bin/x86_64-linux-android22-clang++")
1411
set(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+
1641
set(CMDLINE_SOURCE cmdline.c)
1742
set(HANDLE_SOURCE main.cpp)
18-
set(CJSON_SOURCE cjson/cjson.c)
1943
set(MAIN_SOURCE main.c)
2044
set(WRAPPER_SOURCE wrapper.c)
45+
set(WRAPPER_ROOTLESS_SOURCE wrapper-rootless.c)
2146

2247
add_library(cmdline_object OBJECT ${CMDLINE_SOURCE})
2348
add_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

2856
set_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

4876
get_target_property(MAIN_COMPILE_DEFINITIONS main COMPILE_DEFINITIONS)
4977
if(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")
5681
else()
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")
5984
endif()
6085

61-
link_directories(${CMAKE_SOURCE_DIR}/rootfs/system/lib64)
62-
6386
ExternalProject_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+
)

Dockerfile

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,45 @@
1-
FROM debian:stable-slim
1+
ARG BUILD_PLATFORM=linux/amd64
2+
ARG RUNTIME_PLATFORM=linux/amd64
23

3-
ENV args=""
4+
FROM --platform=${BUILD_PLATFORM} debian:13.2 AS build
5+
ARG TARGET_ARCH=amd64
6+
ARG NDK_VERSION=23
7+
8+
SHELL ["/bin/bash", "-c"]
9+
10+
RUN \
11+
--mount=type=cache,target=/var/lib/apt,sharing=locked \
12+
--mount=type=cache,target=/var/cache/apt,sharing=locked \
13+
apt-get update && apt-get install -y \
14+
build-essential \
15+
cmake \
16+
unzip \
17+
git \
18+
lsb-release \
19+
gnupg \
20+
aria2
21+
22+
WORKDIR /app
23+
RUN bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"
24+
RUN aria2c -o android-ndk-r${NDK_VERSION}b-linux.zip https://dl.google.com/android/repository/android-ndk-r${NDK_VERSION}b-linux.zip
25+
RUN unzip -q -d ~ android-ndk-r${NDK_VERSION}b-linux.zip
26+
RUN rm android-ndk-r${NDK_VERSION}b-linux.zip
27+
COPY ./ ./
28+
29+
WORKDIR /app
30+
RUN mkdir build
31+
WORKDIR /app/build
32+
RUN cmake -DTARGET_ARCH=${TARGET_ARCH} ..
33+
RUN make -j$(nproc)
34+
35+
FROM --platform=${RUNTIME_PLATFORM} debian:13.2
436

5-
COPY ./rootfs /app/rootfs
6-
COPY ./wrapper /app
737
WORKDIR /app
38+
COPY --from=build /app/wrapper /app/wrapper
39+
COPY --from=build /app/rootfs /app/rootfs
40+
COPY entrypoint.sh /app/entrypoint.sh
41+
RUN chmod +x /app/entrypoint.sh
842

9-
CMD ["bash", "-c", "/app/wrapper $args"]
43+
CMD ["/app/entrypoint.sh"]
1044

1145
EXPOSE 10020 20020 30020

0 commit comments

Comments
 (0)