Skip to content

Commit ba9a700

Browse files
authored
[k2] make it possible to use -fvisibility=hidden flag (#1410)
1 parent 613ec3c commit ba9a700

11 files changed

Lines changed: 42 additions & 18 deletions

File tree

cmake/init-compilation-flags.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ endif()
1919

2020
if(COMPILE_RUNTIME_LIGHT)
2121
set(REQUIRED_CMAKE_CXX_STANDARD 23)
22+
if(RUNTIME_LIGHT_HIDDEN_VISIBILITY)
23+
set(RUNTIME_LIGHT_VISIBILITY -fvisibility=hidden)
24+
else()
25+
set(RUNTIME_LIGHT_VISIBILITY -fvisibility=default)
26+
endif()
2227
else()
2328
set(REQUIRED_CMAKE_CXX_STANDARD 17)
2429
endif()

cmake/init-compilation-options.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,8 @@ cmake_print_variables(KPHP_CUSTOM_CMAKE)
3636

3737
option(COMPILE_RUNTIME_LIGHT "Compile runtime-light (it require c++20)" OFF)
3838
cmake_print_variables(COMPILE_RUNTIME_LIGHT)
39+
40+
include(CMakeDependentOption)
41+
42+
cmake_dependent_option(RUNTIME_LIGHT_HIDDEN_VISIBILITY "Enable -fvisibility=hidden for runtime-light" OFF COMPILE_RUNTIME_LIGHT OFF)
43+
cmake_print_variables(RUNTIME_LIGHT_HIDDEN_VISIBILITY)

cmake/popular-common.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ endif()
4848

4949
if(COMPILE_RUNTIME_LIGHT)
5050
vk_add_library_pic(light-common-pic OBJECT ${LIGHT_COMMON_SOURCES})
51-
target_compile_options(light-common-pic PUBLIC -stdlib=libc++)
51+
target_compile_options(light-common-pic PUBLIC -stdlib=libc++ ${RUNTIME_LIGHT_VISIBILITY})
5252
target_link_options(light-common-pic PUBLIC -stdlib=libc++)
5353
endif()
5454

cmake/utils.cmake

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -261,27 +261,35 @@ function(get_submodule_version SUBMODULE_PATH RESULT_VAR)
261261
endfunction()
262262

263263
function(make_third_party_configuration PIC_ENABLED PROJECT_GENERIC_NAME PROJECT_GENERIC_NAMESPACE OUT_PROJECT_NAME OUT_TARGET_NAME OUT_EXTRA_COMPILE_FLAGS OUT_NAMESPACE OUT_LIB_SPECIFIER)
264+
set(EXTRA_COMPILE_FLAGS "")
265+
264266
if(PIC_ENABLED)
265267
set(${OUT_PROJECT_NAME} "${PROJECT_GENERIC_NAME}${PIC_LIBRARY_SUFFIX}" PARENT_SCOPE)
266268
set(${OUT_TARGET_NAME} ${PROJECT_GENERIC_NAMESPACE}::${PIC_NAMESPACE}::${PROJECT_GENERIC_NAME} PARENT_SCOPE)
267269
if(APPLE)
268-
set(${OUT_EXTRA_COMPILE_FLAGS} "-fPIC --sysroot ${CMAKE_OSX_SYSROOT}" PARENT_SCOPE)
270+
set(EXTRA_COMPILE_FLAGS "-fPIC --sysroot ${CMAKE_OSX_SYSROOT}")
269271
else()
270-
set(${OUT_EXTRA_COMPILE_FLAGS} "-fPIC" PARENT_SCOPE)
272+
set(EXTRA_COMPILE_FLAGS "-fPIC")
271273
endif()
272274
set(${OUT_NAMESPACE} ${PIC_NAMESPACE} PARENT_SCOPE)
273275
set(${OUT_LIB_SPECIFIER} ${PIC_LIBRARY_SPECIFIER} PARENT_SCOPE)
274276
else()
275277
set(${OUT_PROJECT_NAME} "${PROJECT_GENERIC_NAME}${NO_PIC_LIBRARY_SUFFIX}" PARENT_SCOPE)
276278
set(${OUT_TARGET_NAME} ${PROJECT_GENERIC_NAMESPACE}::${NO_PIC_NAMESPACE}::${PROJECT_GENERIC_NAME} PARENT_SCOPE)
277279
if(APPLE)
278-
set(${OUT_EXTRA_COMPILE_FLAGS} "-fno-pic --sysroot ${CMAKE_OSX_SYSROOT}" PARENT_SCOPE)
280+
set(EXTRA_COMPILE_FLAGS "-fno-pic --sysroot ${CMAKE_OSX_SYSROOT}")
279281
else()
280-
set(${OUT_EXTRA_COMPILE_FLAGS} "-fno-pic -static" PARENT_SCOPE)
282+
set(EXTRA_COMPILE_FLAGS "-fno-pic -static")
281283
endif()
282284
set(${OUT_NAMESPACE} ${NO_PIC_NAMESPACE} PARENT_SCOPE)
283285
set(${OUT_LIB_SPECIFIER} ${NO_PIC_LIBRARY_SPECIFIER} PARENT_SCOPE)
284286
endif()
287+
288+
if(COMPILE_RUNTIME_LIGHT)
289+
set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} ${RUNTIME_LIGHT_VISIBILITY}")
290+
endif()
291+
292+
set(${OUT_EXTRA_COMPILE_FLAGS} ${EXTRA_COMPILE_FLAGS} PARENT_SCOPE)
285293
endfunction()
286294

287295
function(check_python_package PACKAGE_NAME)

common/unicode/unicode.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ vk_add_library_no_pic(unicode-no-pic OBJECT ${UNICODE_SOURCES} ${AUTO_DIR}/commo
4646
vk_add_library_pic(unicode-pic OBJECT ${UNICODE_SOURCES} ${AUTO_DIR}/common/unicode-utils-auto.h)
4747

4848
if (COMPILE_RUNTIME_LIGHT)
49-
target_compile_options(unicode-pic PUBLIC -stdlib=libc++)
49+
target_compile_options(unicode-pic PUBLIC -stdlib=libc++ ${RUNTIME_LIGHT_VISIBILITY})
5050
target_link_options(unicode-pic PUBLIC -stdlib=libc++)
5151
endif()
5252

compiler/code-gen/files/init-scripts.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,8 +286,8 @@ void ComponentInfoFile::compile(CodeGenerator &W) const {
286286
G->settings().get_version();
287287
W << OpenFile("image_info.cpp");
288288
W << ExternInclude(G->settings().runtime_headers.get());
289-
W << "const ImageInfo *k2_describe() " << BEGIN << "static ImageInfo imageInfo {\"" << G->settings().k2_component_name.get() << "\"" << ","
290-
<< G->settings().build_timestamp.get() << ","
289+
W << "__attribute__((visibility(\"default\"))) const ImageInfo *k2_describe() " << BEGIN << "static ImageInfo imageInfo {\""
290+
<< G->settings().k2_component_name.get() << "\"" << "," << G->settings().build_timestamp.get() << ","
291291
<< "K2_PLATFORM_HEADER_H_VERSION, "
292292
<< "{}," // todo:k2 add commit hash
293293
<< "{}," // todo:k2 add compiler hash?

compiler/compiler-settings.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,10 @@ void CompilerSettings::init() {
336336
if (is_k2_mode) {
337337
// for now k2-component must be compiled with clang and statically linked libc++
338338
ss << " -stdlib=libc++";
339+
// TODO support hidden visibility for k2-lib
340+
if (!dynamic_incremental_linkage.get() && mode.get() != "k2-lib") {
341+
ss << " -fvisibility=hidden";
342+
}
339343
} else {
340344
// default value is false
341345
// when we build using full runtime, we should force to use runtime as static lib

runtime-common/runtime-common.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ vk_add_library_no_pic(runtime-common-no-pic OBJECT ${RUNTIME_COMMON_SRC})
1414
vk_add_library_pic(runtime-common-pic OBJECT ${RUNTIME_COMMON_SRC})
1515

1616
if(COMPILE_RUNTIME_LIGHT)
17-
target_compile_options(runtime-common-pic PUBLIC -stdlib=libc++)
17+
target_compile_options(runtime-common-pic PUBLIC -stdlib=libc++ ${RUNTIME_LIGHT_VISIBILITY})
1818
endif()
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
vk_add_library_pic(libc-alloc-wrapper-pic ${RUNTIME_LIGHT_DIR}/allocator-wrapper/libc-alloc-wrapper.cpp)
2-
target_compile_options(libc-alloc-wrapper-pic PUBLIC -stdlib=libc++)
2+
target_compile_options(libc-alloc-wrapper-pic PUBLIC -stdlib=libc++ ${RUNTIME_LIGHT_VISIBILITY})

runtime-light/runtime-light.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ include(${THIRD_PARTY_DIR}/pcre2-cmake/pcre2.cmake)
33

44
# =================================================================================================
55

6-
set(RUNTIME_LIGHT_COMPILE_FLAGS -O3 -stdlib=libc++)
6+
set(RUNTIME_LIGHT_COMPILE_FLAGS -stdlib=libc++ ${RUNTIME_LIGHT_VISIBILITY})
77

88
set(RUNTIME_LIGHT_PLATFORM_SPECIFIC_LINK_FLAGS)
99
if(APPLE)

0 commit comments

Comments
 (0)