Skip to content

Commit 6d75845

Browse files
authored
feat #42: support to build dylib for macos (#43)
1 parent 9bf8035 commit 6d75845

File tree

8 files changed

+63
-45
lines changed

8 files changed

+63
-45
lines changed

.github/workflows/ci-pr-on-main.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ jobs:
3838
-t ${{env.BUILD_TYPE}}
3939
-f ${{ steps.strings.outputs.build-dir }}
4040
-b ${{ steps.strings.outputs.build-output-dir }}
41-
-U ON
42-
-S ON
41+
-U
42+
-S
4343
4444
- name: Unit Test
4545
working-directory: ${{ steps.strings.outputs.build-dir }}/linux/x86_64/tests/unit_test
@@ -73,8 +73,8 @@ jobs:
7373
-t ${{env.BUILD_TYPE}}
7474
-f ${{ steps.strings.outputs.build-dir }}
7575
-b ${{ steps.strings.outputs.build-output-dir }}
76-
-U ON
77-
-S ON
76+
-U
77+
-S
7878
7979
- name: Unit Test
8080
working-directory: ${{ steps.strings.outputs.build-dir }}\\x64\\tests/unit_test
@@ -108,8 +108,8 @@ jobs:
108108
-t ${{env.BUILD_TYPE}}
109109
-f ${{ steps.strings.outputs.build-dir }}
110110
-b ${{ steps.strings.outputs.build-output-dir }}
111-
-U ON
112-
-S ON
111+
-U
112+
-S
113113
114114
- name: Unit Test
115115
working-directory: ${{ steps.strings.outputs.build-dir }}/macos/tests/unit_test

.github/workflows/custom-build.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,15 +176,21 @@ jobs:
176176
-f ${{ steps.strings.outputs.build-dir }}
177177
-b ${{ steps.strings.outputs.build-output-dir }}
178178
179-
- name: Build for macOS iOS and xrOS
180-
if: ${{ matrix.os == 'macos-latest' && (matrix.target_platform == 'macos' || matrix.target_platform == 'ios' || matrix.target_platform == 'xros') }}
179+
- name: Build for iOS and xrOS
180+
if: ${{ matrix.os == 'macos-latest' && (matrix.target_platform == 'ios' || matrix.target_platform == 'xros') }}
181181
run: >
182182
sh scripts/build.sh -p ${{ matrix.target_platform }}
183183
-v ${{ inputs.build_version }}
184184
-t ${{ inputs.build_type }}
185185
-f ${{ steps.strings.outputs.build-dir }}
186186
-b ${{ steps.strings.outputs.build-output-dir }}
187187
188+
- name: Build for macOS
189+
if: ${{ matrix.os == 'macos-latest' && (matrix.target_platform == 'macos') }}
190+
run: |
191+
sh scripts/build.sh -p ${{ matrix.target_platform }} -v ${{ inputs.build_version }} -t ${{ inputs.build_type }} -f ${{ steps.strings.outputs.build-dir }} -b ${{ steps.strings.outputs.build-output-dir }}
192+
sh scripts/build.sh -p ${{ matrix.target_platform }} -v ${{ inputs.build_version }} -t ${{ inputs.build_type }} -f ${{ steps.strings.outputs.build-dir }} -b ${{ steps.strings.outputs.build-output-dir }} --no-framework
193+
188194
- name: Upload artifacts
189195
if: ${{ inputs.upload_artifacts == true }}
190196
uses: actions/upload-artifact@v4

CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
3232

3333
# Name project traa.
3434
project(traa C CXX)
35-
message(STATUS "[TRAA] configuring...")
35+
if(NOT DEFINED TRAA_OPTION_VERSION OR TRAA_OPTION_VERSION STREQUAL "")
36+
set(TRAA_OPTION_VERSION "1.0.0")
37+
endif()
38+
message(STATUS "[TRAA] configuring ${TRAA_OPTION_VERSION}...")
3639

3740
# CMAKE_SYSTEM_NAME only be set after project defined.
3841
message(STATUS "[TRAA] current target system name ${CMAKE_SYSTEM_NAME}")
@@ -55,6 +58,7 @@ set(CMAKE_CXX_EXTENSIONS OFF)
5558
# Options
5659
option(TRAA_OPTION_ENABLE_UNIT_TEST "Enable unit test" OFF)
5760
option(TRAA_OPTION_ENABLE_SMOKE_TEST "Enable smoke test" OFF)
61+
option(TRAA_OPTION_NO_FRAMEWORK "Do not build framework for Apple platforms" OFF)
5862

5963
if(LINUX)
6064
# To enable x11 you have install x11 and x11-xext and x11-xcomposite development packages.

scripts/build.bat

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ goto:eof
6969
echo -s, --source-dir Source directory [default: current directory]
7070
echo -v, --version Version number [default: 0.0.1]
7171
echo -V, --verbose Verbose output
72-
echo -U, --unittest Build unit tests (ON/OFF) [default: OFF]
73-
echo -S, --smoketest Build smoke tests (ON/OFF) [default: OFF]
72+
echo -U, --unittest Build unit tests
73+
echo -S, --smoketest Build smoke tests
7474
echo -h, --help Show this help message
7575
exit 0
7676
goto:eof
@@ -121,17 +121,13 @@ goto:eof
121121
) else if "%arg%"=="--verbose" (
122122
set "VERBOSE=1"
123123
) else if "%arg%"=="-U" (
124-
set "BUILD_UNITTEST=%~1"
125-
shift
124+
set "BUILD_UNITTEST=ON"
126125
) else if "%arg%"=="--unittest" (
127-
set "BUILD_UNITTEST=%~1"
128-
shift
126+
set "BUILD_UNITTEST=ON"
129127
) else if "%arg%"=="-S" (
130-
set "BUILD_SMOKETEST=%~1"
131-
shift
128+
set "BUILD_SMOKETEST=ON"
132129
) else if "%arg%"=="--smoketest" (
133-
set "BUILD_SMOKETEST=%~1"
134-
shift
130+
set "BUILD_SMOKETEST=ON"
135131
) else if "%arg%"=="-h" (
136132
call :show_usage
137133
) else (

scripts/build.sh

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ BUILD_UNITTEST=OFF
1818
BUILD_SMOKETEST=OFF
1919
ANDROID_ABI="arm64-v8a,armeabi-v7a,x86,x86_64"
2020
TARGET_ARCH="x86_64"
21+
NO_FRAMEWORK=OFF
2122

2223
# cpu_features library on Android implements getauxval() for API level < 18, see cpu_features/src/hwcaps_linux_or_android.c
2324
# The implementation call dlopen() to load libc.so and then call dlsym() to get the address of getauxval().
@@ -45,13 +46,14 @@ show_usage() {
4546
echo " -b, --bin-folder Binary output folder [default: bin]"
4647
echo " -s, --source-dir Source directory [default: current directory]"
4748
echo " -v, --version Version of the build [default: 1.0.0]"
48-
echo " -U, --unittest Build unit tests (ON/OFF) [default: OFF]"
49-
echo " -S, --smoketest Build smoke tests (ON/OFF) [default: OFF]"
49+
echo " -U, --unittest Build unit tests"
50+
echo " -S, --smoketest Build smoke tests"
5051
echo " -A, --android-abi Android ABI [default: arm64-v8a,armeabi-v7a,x86,x86_64]"
5152
echo " -V, --verbose Verbose output"
5253
echo " -h, --help Show this help message"
5354
echo " -L, --api-level Android API level [default: 18]"
5455
echo " -a, --arch Target architecture for Linux (x86_64/aarch64_clang/aarch64_gnu) [default: x86_64]"
56+
echo " --no-framework Do not build framework for Apple platforms"
5557
}
5658

5759
# parse command line arguments
@@ -82,12 +84,12 @@ while [[ $# -gt 0 ]]; do
8284
shift 2
8385
;;
8486
-U|--unittest)
85-
BUILD_UNITTEST="$2"
86-
shift 2
87+
BUILD_UNITTEST="ON"
88+
shift
8789
;;
8890
-S|--smoketest)
89-
BUILD_SMOKETEST="$2"
90-
shift 2
91+
BUILD_SMOKETEST="ON"
92+
shift
9193
;;
9294
-A|--android-abi)
9395
ANDROID_ABI="$2"
@@ -109,6 +111,10 @@ while [[ $# -gt 0 ]]; do
109111
TARGET_ARCH="$2"
110112
shift 2
111113
;;
114+
--no-framework)
115+
NO_FRAMEWORK="ON"
116+
shift
117+
;;
112118
*)
113119
log "ERROR" "Unknown option: $1"
114120
show_usage
@@ -249,6 +255,7 @@ build() {
249255
-DTRAA_OPTION_ENABLE_UNIT_TEST="$BUILD_UNITTEST" \
250256
-DTRAA_OPTION_ENABLE_SMOKE_TEST="$BUILD_SMOKETEST" \
251257
-DTRAA_OPTION_VERSION="$VERSION" \
258+
-DTRAA_OPTION_NO_FRAMEWORK="$NO_FRAMEWORK" \
252259
-S "$SOURCE_DIR"
253260
;;
254261
"linux")

src/main/CMakeLists.txt

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ endif()
6969
# add compile definitions
7070
target_compile_definitions(${TRAA_LIBRARY_MAIN} PUBLIC TRAA_EXPORT)
7171
set_target_properties(${TRAA_LIBRARY_MAIN} PROPERTIES
72-
VERSION "${TRAA_VERSION_SHORT}"
73-
SOVERSION "${TRAA_VERSION_SHORT}"
72+
VERSION "${TRAA_OPTION_VERSION}"
73+
SOVERSION "${TRAA_OPTION_VERSION}"
7474
PUBLIC_HEADER "${TRAA_LIBRARY_PUBLIC_HEADER_FILES}"
7575
ARCHIVE_OUTPUT_DIRECTORY "${TRAA_ARCHIVE_OUTPUT_DIRECTORY}"
7676
LIBRARY_OUTPUT_DIRECTORY "${TRAA_ARCHIVE_OUTPUT_DIRECTORY}"
@@ -86,26 +86,35 @@ if(APPLE)
8686
target_link_libraries(${TRAA_LIBRARY_MAIN} PRIVATE "${TRAA_LIBRARY_FRAMEWORKS}")
8787

8888
set_target_properties(${TRAA_LIBRARY_MAIN} PROPERTIES
89-
FRAMEWORK TRUE
90-
FRAMEWORK_VERSION A
91-
MACOSX_FRAMEWORK_IDENTIFIER "${TRAA_LIBRARY_IDENTIFIER}"
92-
MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${TRAA_VERSION_SHORT}"
93-
MACOSX_FRAMEWORK_BUNDLE_VERSION "${TRAA_VERSION_SHORT}"
89+
XCODE_ATTRIBUTE_ENABLE_BITCODE "NO"
9490
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "${TRAA_LIBRARY_IDENTIFIER}"
9591
LINK_FLAGS "-Wl ${TRAA_LIBRARY_FRAMEWORKS_FOLDERS} -rpath @loader_path"
9692
)
9793

98-
set_target_properties(${TRAA_LIBRARY_MAIN} PROPERTIES XCODE_ATTRIBUTE_ENABLE_BITCODE "NO")
99-
94+
if(NOT TRAA_OPTION_NO_FRAMEWORK)
95+
set_target_properties(${TRAA_LIBRARY_MAIN} PROPERTIES
96+
FRAMEWORK TRUE
97+
FRAMEWORK_VERSION A
98+
MACOSX_FRAMEWORK_IDENTIFIER "${TRAA_LIBRARY_IDENTIFIER}"
99+
MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${TRAA_OPTION_VERSION}"
100+
MACOSX_FRAMEWORK_BUNDLE_VERSION "${TRAA_OPTION_VERSION}"
101+
)
102+
103+
set(TRAA_LIBRARY_TRUELY_OUTPUT_FILE "${TRAA_LIBRARY_MAIN_OUTPUT_NAME}.framework/${TRAA_LIBRARY_MAIN_OUTPUT_NAME}")
104+
set(TRAA_LIBRARY_TRUELY_OUTPUT_FILE_DSYM "${TRAA_LIBRARY_MAIN_OUTPUT_NAME}.framework.dSYM")
105+
else()
106+
set(TRAA_LIBRARY_TRUELY_OUTPUT_FILE "lib${TRAA_LIBRARY_MAIN_OUTPUT_NAME}.${TRAA_OPTION_VERSION}.dylib")
107+
set(TRAA_LIBRARY_TRUELY_OUTPUT_FILE_DSYM "${TRAA_LIBRARY_TRUELY_OUTPUT_FILE}.dSYM")
108+
endif()
100109

101110
# dsymutil to generate dsym file
102111
add_custom_command(
103112
TARGET ${TRAA_LIBRARY_MAIN}
104113
POST_BUILD
105114
COMMAND dsymutil
106-
"${TRAA_ARCHIVE_OUTPUT_DIRECTORY}/${TRAA_LIBRARY_MAIN_OUTPUT_NAME}.framework/${TRAA_LIBRARY_MAIN_OUTPUT_NAME}"
115+
"${TRAA_ARCHIVE_OUTPUT_DIRECTORY}/${TRAA_LIBRARY_TRUELY_OUTPUT_FILE}"
107116
"-o"
108-
"${TRAA_ARCHIVE_OUTPUT_DIRECTORY}/${TRAA_LIBRARY_MAIN_OUTPUT_NAME}.framework.dSYM"
117+
"${TRAA_ARCHIVE_OUTPUT_DIRECTORY}/${TRAA_LIBRARY_TRUELY_OUTPUT_FILE_DSYM}"
109118
COMMENT "Generate dsym file done on final binary."
110119
)
111120

@@ -114,7 +123,7 @@ if(APPLE)
114123
TARGET ${TRAA_LIBRARY_MAIN}
115124
POST_BUILD
116125
COMMAND strip -r -S -x
117-
"${TRAA_ARCHIVE_OUTPUT_DIRECTORY}/${TRAA_LIBRARY_MAIN_OUTPUT_NAME}.framework/${TRAA_LIBRARY_MAIN_OUTPUT_NAME}"
126+
"${TRAA_ARCHIVE_OUTPUT_DIRECTORY}/${TRAA_LIBRARY_TRUELY_OUTPUT_FILE}"
118127
COMMENT "Strip debug and local symbols done on final binary."
119128
)
120129
elseif(WIN32)

tests/smoke_test/CMakeLists.txt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,10 @@ if(APPLE)
5757
target_link_libraries(${TRAA_SMOKE_TEST} PRIVATE "${TRAA_LIBRARY_FRAMEWORKS}")
5858

5959
set_target_properties(${TRAA_SMOKE_TEST} PROPERTIES
60-
FRAMEWORK TRUE
61-
FRAMEWORK_VERSION A
6260
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_HOME_DIRECTORY}/src/base/devices/screen/test/simple_window/mac/info.plist"
6361
MACOSX_FRAMEWORK_IDENTIFIER "${TRAA_SMOKE_TEST_IDENTIFIER}"
64-
MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${TRAA_VERSION_SHORT}"
65-
MACOSX_FRAMEWORK_BUNDLE_VERSION "${TRAA_VERSION_SHORT}"
62+
MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${TRAA_OPTION_VERSION}"
63+
MACOSX_FRAMEWORK_BUNDLE_VERSION "${TRAA_OPTION_VERSION}"
6664
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "${TRAA_SMOKE_TEST_IDENTIFIER}"
6765
CXX_VISIBILITY_PRESET hidden
6866
LINK_FLAGS "-Wl ${TRAA_SMOKE_TEST_FRAMEWORKS_FOLDERS} -rpath @loader_path"

tests/unit_test/CMakeLists.txt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,12 +168,10 @@ if(APPLE)
168168
target_link_libraries(${TRAA_UNIT_TEST} PRIVATE "${TRAA_LIBRARY_FRAMEWORKS}")
169169

170170
set_target_properties(${TRAA_UNIT_TEST} PROPERTIES
171-
FRAMEWORK TRUE
172-
FRAMEWORK_VERSION A
173171
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_HOME_DIRECTORY}/src/base/devices/screen/test/simple_window/mac/info.plist"
174172
MACOSX_FRAMEWORK_IDENTIFIER "${TRAA_UNIT_TEST_IDENTIFIER}"
175-
MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${TRAA_VERSION_SHORT}"
176-
MACOSX_FRAMEWORK_BUNDLE_VERSION "${TRAA_VERSION_SHORT}"
173+
MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${TRAA_OPTION_VERSION}"
174+
MACOSX_FRAMEWORK_BUNDLE_VERSION "${TRAA_OPTION_VERSION}"
177175
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "${TRAA_UNIT_TEST_IDENTIFIER}"
178176
CXX_VISIBILITY_PRESET hidden
179177
LINK_FLAGS "-Wl ${TRAA_UNIT_TEST_FRAMEWORKS_FOLDERS} -rpath @loader_path"

0 commit comments

Comments
 (0)