@@ -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 ()
@@ -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
110105target_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