forked from bitcoin-core/secp256k1
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
90 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
include_guard(GLOBAL) | ||
|
||
function(indent_message header content indent_num) | ||
if(indent_num GREATER 0) | ||
string(REPEAT " " ${indent_num} indentation) | ||
string(REPEAT "." ${indent_num} tail) | ||
string(REGEX REPLACE "${tail}$" "" header "${header}") | ||
endif() | ||
message("${indentation}${header} ${content}") | ||
endfunction() | ||
|
||
# Print tools' flags on best-effort. Include the abstracted | ||
# CMake flags that we touch ourselves. | ||
function(print_flags_per_config config indent_num) | ||
string(TOUPPER "${config}" config_uppercase) | ||
|
||
string(STRIP "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${config_uppercase}}" c_language_flags) | ||
string(STRIP "${c_language_flags} ${CMAKE_C${CMAKE_C_STANDARD}_STANDARD_COMPILE_OPTION}" c_compiler_flags) | ||
get_target_property(pic secp256k1 POSITION_INDEPENDENT_CODE) | ||
if(pic AND CMAKE_C_COMPILE_OPTIONS_PIC) | ||
string(APPEND c_compiler_flags " ${CMAKE_C_COMPILE_OPTIONS_PIC}") | ||
endif() | ||
if(CMAKE_C_COMPILE_OPTIONS_VISIBILITY AND CMAKE_C_VISIBILITY_PRESET) | ||
string(APPEND c_compiler_flags " ${CMAKE_C_COMPILE_OPTIONS_VISIBILITY}${CMAKE_C_VISIBILITY_PRESET}") | ||
endif() | ||
get_directory_property(compile_options COMPILE_OPTIONS) | ||
list(JOIN compile_options " " compile_options) | ||
string(STRIP "${c_compiler_flags} ${compile_options}" c_compiler_flags) | ||
string(STRIP "${c_compiler_flags} ${SECP256K1_APPEND_CFLAGS}" c_compiler_flags) | ||
indent_message("C compiler flags ......................" "${c_compiler_flags}" ${indent_num}) | ||
|
||
if(BUILD_SHARED_LIBS) | ||
string(STRIP "${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_${config_uppercase}}" linker_flags) | ||
if(NOT MSVC) | ||
string(STRIP "${c_language_flags} ${linker_flags}" linker_flags) | ||
endif() | ||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux") | ||
string(STRIP "${CMAKE_SHARED_LIBRARY_C_FLAGS} ${linker_flags}" linker_flags) | ||
get_target_property(soversion secp256k1 SOVERSION) | ||
string(STRIP "${linker_flags} ${CMAKE_SHARED_LIBRARY_SONAME_C_FLAG}${PROJECT_NAME}.so.${soversion}" linker_flags) | ||
endif() | ||
if(APPLE) | ||
get_target_property(compatibility_version secp256k1 MACHO_COMPATIBILITY_VERSION) | ||
if(compatibility_version) | ||
string(STRIP "${linker_flags} ${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}${compatibility_version}" linker_flags) | ||
endif() | ||
get_target_property(current_version secp256k1 MACHO_CURRENT_VERSION) | ||
if(compatibility_version) | ||
string(STRIP "${linker_flags} ${CMAKE_C_OSX_CURRENT_VERSION_FLAG}${current_version}" linker_flags) | ||
endif() | ||
endif() | ||
indent_message("Linker flags .........................." "${linker_flags}" ${indent_num}) | ||
else() | ||
string(REGEX REPLACE "(^| )<[^ ]*>( |$)" "" archiver_options "${CMAKE_C_ARCHIVE_CREATE}") | ||
string(STRIP "${archiver_options} ${CMAKE_STATIC_LINKER_FLAGS}" archiver_options) | ||
string(STRIP "${archiver_options} ${CMAKE_STATIC_LINKER_FLAGS_${config_uppercase}}" archiver_options) | ||
indent_message("Archiver options ......................" "${archiver_options}" ${indent_num}) | ||
endif() | ||
endfunction() | ||
|
||
function(flags_summary) | ||
get_property(is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) | ||
if(is_multi_config) | ||
list(JOIN CMAKE_CONFIGURATION_TYPES ", " configs) | ||
message("Available build configurations ........ ${configs}") | ||
if(CMAKE_GENERATOR MATCHES "Visual Studio") | ||
set(default_config "Debug") | ||
else() | ||
list(GET CMAKE_CONFIGURATION_TYPES 0 default_config) | ||
endif() | ||
message("Default build configuration ........... ${default_config}") | ||
foreach(config IN LISTS CMAKE_CONFIGURATION_TYPES) | ||
message("") | ||
message("'${config}' build configuration:") | ||
print_flags_per_config("${config}" 2) | ||
endforeach() | ||
else() | ||
message("CMAKE_BUILD_TYPE ...................... ${CMAKE_BUILD_TYPE}") | ||
print_flags_per_config("${CMAKE_BUILD_TYPE}" 0) | ||
endif() | ||
message("") | ||
message([=[ | ||
NOTE: The summary above may not exactly match the final applied build flags | ||
if any additional CMAKE_* or environment variables have been modified. | ||
To see the exact flags applied, build with the --verbose option. | ||
]=]) | ||
endfunction() |