Skip to content

Commit b9261ff

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

File tree

1 file changed

+28
-24
lines changed

1 file changed

+28
-24
lines changed

library/src/main/cpp/CMakeLists.txt

Lines changed: 28 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()
@@ -109,24 +102,35 @@ endif()
109102

110103
target_link_libraries(fakelinker_static ${log-lib})
111104

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-
)
105+
if(${CMAKE_ANDROID_ARCH_ABI} STREQUAL "arm64-v8a" OR ${CMAKE_ANDROID_ARCH_ABI} STREQUAL "x86_64")
106+
target_compile_definitions(fakelinker_static PUBLIC USE_RELA)
107+
else()
108+
target_compile_definitions(fakelinker_static PUBLIC __work_around_b_24465209__)
109+
endif()
123110

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-
)
111+
if(FAKELINKER_BUILD_SHARED_LIBRARY)
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+
)
123+
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+
)
128+
install(TARGETS fakelinker
129+
EXPORT fakelinker
130+
)
131+
endif()
128132

129-
install(TARGETS fakelinker fakelinker_static
133+
install(TARGETS fakelinker_static
130134
EXPORT fakelinker
131135
)
132136

0 commit comments

Comments
 (0)