Skip to content

Commit 2cb9844

Browse files
feat: add shared library build option configuration
1 parent d1a5d94 commit 2cb9844

File tree

1 file changed

+30
-24
lines changed

1 file changed

+30
-24
lines changed

library/src/main/cpp/CMakeLists.txt

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ set(CMAKE_C_VISIBILITY_PRESET hidden)
1414
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
1515

1616
option(FAKELINKER_INSTALL_PRIVATE_HEADERS "Install private header files for static linking" OFF)
17+
option(FAKELINKER_BUILD_SHARED_LIBRARY "Enable shared library build" ON)
1718

1819
if(NOT ${CMAKE_BUILD_TYPE} STREQUAL "Debug")
1920
set(CMAKE_BUILD_TYPE "Release")
@@ -24,14 +25,6 @@ if(${CMAKE_BUILD_TYPE} STREQUAL "Release")
2425
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Os -fomit-frame-pointer")
2526
endif()
2627

27-
if(${CMAKE_ANDROID_ARCH_ABI} STREQUAL "arm64-v8a" OR ${CMAKE_ANDROID_ARCH_ABI} STREQUAL "x86_64")
28-
add_compile_definitions(USE_RELA)
29-
set(MODULE_SUFFIX "64")
30-
else()
31-
add_compile_definitions(__work_around_b_24465209__)
32-
set(MODULE_SUFFIX "32")
33-
endif()
34-
3528
if(${CMAKE_ANDROID_ARCH_ABI} STREQUAL "arm64-v8a" OR ${CMAKE_ANDROID_ARCH_ABI} STREQUAL "armeabi-v7a")
3629
set(NEON_SRC linker/linker_gnu_hash_neon.cpp)
3730
else()
@@ -65,6 +58,7 @@ set(FAKE_LINKER_SRC
6558
linker/linker_main.cpp
6659
linker/linker_globals.cpp
6760
linker/linker_namespaces.cpp
61+
linker/linker_relocate.cpp
6862
linker/linker_soinfo.cpp
6963
linker/linker_util.cpp
7064
linker/linker_common_types.cpp
@@ -76,6 +70,7 @@ set(FAKE_LINKER_SRC
7670
linker/linker_mapped_file_fragment.cpp
7771
linker/linker_note_gnu_property.cpp
7872
linker/linker_symbol.cpp
73+
linker/linker_tls.cpp
7974
${NEON_SRC}
8075

8176
# JNI Hook
@@ -109,24 +104,35 @@ endif()
109104

110105
target_link_libraries(fakelinker_static ${log-lib})
111106

112-
add_library(fakelinker SHARED
113-
linker/linker_dynamic.cpp
114-
)
115-
target_link_libraries(fakelinker PRIVATE
116-
fakelinker_static
117-
${log}
118-
)
119-
target_include_directories(fakelinker PUBLIC
120-
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
121-
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/fakelinker>
122-
)
107+
if(${CMAKE_ANDROID_ARCH_ABI} STREQUAL "arm64-v8a" OR ${CMAKE_ANDROID_ARCH_ABI} STREQUAL "x86_64")
108+
target_compile_definitions(fakelinker_static PUBLIC USE_RELA)
109+
else()
110+
target_compile_definitions(fakelinker_static PUBLIC __work_around_b_24465209__)
111+
endif()
123112

124-
set_target_properties(fakelinker PROPERTIES
125-
LINK_FLAGS_RELEASE
126-
"${LINK_FLAGS} -Wl,--gc-sections,-s,--version-script=\"${CMAKE_CURRENT_SOURCE_DIR}/symbol.map.txt\""
127-
)
113+
if(FAKELINKER_BUILD_SHARED_LIBRARY)
114+
add_library(fakelinker SHARED
115+
linker/linker_dynamic.cpp
116+
)
117+
target_link_libraries(fakelinker PRIVATE
118+
fakelinker_static
119+
${log}
120+
)
121+
target_include_directories(fakelinker PUBLIC
122+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
123+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/fakelinker>
124+
)
125+
126+
set_target_properties(fakelinker PROPERTIES
127+
LINK_FLAGS_RELEASE
128+
"${LINK_FLAGS} -Wl,--gc-sections,-s,--version-script=\"${CMAKE_CURRENT_SOURCE_DIR}/symbol.map.txt\""
129+
)
130+
install(TARGETS fakelinker
131+
EXPORT fakelinker
132+
)
133+
endif()
128134

129-
install(TARGETS fakelinker fakelinker_static
135+
install(TARGETS fakelinker_static
130136
EXPORT fakelinker
131137
)
132138

0 commit comments

Comments
 (0)