@@ -14,6 +14,7 @@ set(CMAKE_C_VISIBILITY_PRESET hidden)
1414set (CMAKE_VISIBILITY_INLINES_HIDDEN ON )
1515
1616option (FAKELINKER_INSTALL_PRIVATE_HEADERS "Install private header files for static linking" OFF )
17+ option (FAKELINKER_BUILD_SHARED_LIBRARY "Enable shared library build" ON )
1718
1819if (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" )
2526endif ()
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-
3528if (${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)
3730else ()
@@ -109,24 +102,35 @@ endif()
109102
110103target_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