Skip to content

Commit c822303

Browse files
authored
Merge pull request #7546 from oltolm/cmake
cmake: fix generation of options.h
2 parents d80f05b + 60ccaf3 commit c822303

7 files changed

Lines changed: 398 additions & 63 deletions

File tree

CMakeLists.txt

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ add_option(WOLFSSL_ALPN
439439
"no" "yes;no")
440440

441441
if(WOLFSSL_ALPN)
442-
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_ALPN" "-DHAVE_TLS_EXTENSIONS")
442+
list(APPEND WOLFSSL_DEFINITIONS "-DHAVE_ALPN" "-DHAVE_TLS_EXTENSIONS")
443443
endif()
444444

445445
# altcertchains
@@ -2238,32 +2238,6 @@ endif()
22382238

22392239
file(REMOVE ${OPTION_FILE})
22402240

2241-
file(APPEND ${OPTION_FILE} "/* wolfssl options.h\n")
2242-
file(APPEND ${OPTION_FILE} " * generated from configure options\n")
2243-
file(APPEND ${OPTION_FILE} " *\n")
2244-
file(APPEND ${OPTION_FILE} " * Copyright (C) 2006-2023 wolfSSL Inc.\n")
2245-
file(APPEND ${OPTION_FILE} " *\n")
2246-
file(APPEND ${OPTION_FILE} " * This file is part of wolfSSL. (formerly known as CyaSSL)\n")
2247-
file(APPEND ${OPTION_FILE} " *\n")
2248-
file(APPEND ${OPTION_FILE} " */\n\n")
2249-
file(APPEND ${OPTION_FILE} "#ifndef WOLFSSL_OPTIONS_H\n")
2250-
file(APPEND ${OPTION_FILE} "#define WOLFSSL_OPTIONS_H\n\n\n")
2251-
file(APPEND ${OPTION_FILE} "#ifdef __cplusplus\n")
2252-
file(APPEND ${OPTION_FILE} "extern \"C\" {\n")
2253-
file(APPEND ${OPTION_FILE} "#endif\n\n")
2254-
2255-
add_to_options_file("${WOLFSSL_DEFINITIONS}" "${OPTION_FILE}")
2256-
# CMAKE_C_FLAGS is just a string of space-separated flags to pass to the C
2257-
# compiler. We need to replace those spaces with semicolons in order to treat it
2258-
# as a CMake list.
2259-
string(REPLACE " " ";" CMAKE_C_FLAGS_LIST "${CMAKE_C_FLAGS}")
2260-
add_to_options_file("${CMAKE_C_FLAGS_LIST}" "${OPTION_FILE}")
2261-
2262-
file(APPEND ${OPTION_FILE} "\n#ifdef __cplusplus\n")
2263-
file(APPEND ${OPTION_FILE} "}\n")
2264-
file(APPEND ${OPTION_FILE} "#endif\n\n\n")
2265-
file(APPEND ${OPTION_FILE} "#endif /* WOLFSSL_OPTIONS_H */\n\n")
2266-
22672241
####################################################
22682242
# Library Target
22692243
####################################################
@@ -2341,6 +2315,20 @@ if(WOLFSSL_ARIA)
23412315
message(STATUS "ARIA Check: WOLFSSL_LINK_LIBS = ${WOLFSSL_LINK_LIBS}")
23422316
endif()
23432317

2318+
foreach(DEF IN LISTS WOLFSSL_DEFINITIONS)
2319+
string(REGEX MATCH "^(-D)?([^=]+)(=(.*))?$" DEF_MATCH ${DEF})
2320+
if (DEFINED CMAKE_MATCH_4)
2321+
set(${CMAKE_MATCH_2} ${CMAKE_MATCH_4})
2322+
# message("set(${CMAKE_MATCH_2} ${CMAKE_MATCH_4})")
2323+
else()
2324+
set(${CMAKE_MATCH_2} 1)
2325+
# message("set(${CMAKE_MATCH_2} 1)")
2326+
endif()
2327+
endforeach()
2328+
2329+
# If new build options are added please update the cmake/options.h.in
2330+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/options.h.in ${OPTION_FILE})
2331+
23442332
set_target_properties(wolfssl
23452333
PROPERTIES
23462334
SOVERSION ${WOLFSSL_LIBRARY_VERSION_FIRST}

cmake/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ This directory contains some supplementary functions for the [CMakeLists.txt](..
44

55
See also cmake notes in the [INSTALL](../INSTALL) documentation file.
66

7-
7+
If new CMake build options are added `cmake/options.h.in` must also be updated.

cmake/functions.cmake

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -918,35 +918,6 @@ function(generate_lib_src_list LIB_SOURCES)
918918
set(LIB_SOURCES ${LIB_SOURCES} PARENT_SCOPE)
919919
endfunction()
920920

921-
function(add_to_options_file DEFINITIONS OPTION_FILE)
922-
list(REMOVE_DUPLICATES DEFINITIONS)
923-
foreach(DEF IN LISTS DEFINITIONS)
924-
if(DEF MATCHES "^-D")
925-
if(DEF MATCHES "^-D(N)?DEBUG(=.+)?")
926-
message("not outputting (N)DEBUG to ${OPTION_FILE}")
927-
endif()
928-
929-
# allow user to ignore system options
930-
if(DEF MATCHES "^-D_.*")
931-
file(APPEND ${OPTION_FILE} "#ifndef WOLFSSL_OPTIONS_IGNORE_SYS\n")
932-
endif()
933-
934-
string(REGEX REPLACE "^-D" "" DEF_NO_PREFIX ${DEF})
935-
string(REGEX REPLACE "=.*$" "" DEF_NO_EQUAL_NO_VAL ${DEF_NO_PREFIX})
936-
string(REPLACE "=" " " DEF_NO_EQUAL ${DEF_NO_PREFIX})
937-
938-
file(APPEND ${OPTION_FILE} "#undef ${DEF_NO_EQUAL_NO_VAL}\n")
939-
file(APPEND ${OPTION_FILE} "#define ${DEF_NO_EQUAL}\n")
940-
941-
if(DEF MATCHES "^-D_.*")
942-
file(APPEND ${OPTION_FILE} "#endif\n")
943-
endif()
944-
945-
file(APPEND ${OPTION_FILE} "\n")
946-
endif()
947-
endforeach()
948-
endfunction()
949-
950921
# Function: set_wolfssl_definitions
951922
# Parameter: SEARCH_VALUE The string to search for. (e.g. "WOLFSSL_SHA3")
952923
# Returns: RESULT

cmake/include.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@ EXTRA_DIST += cmake/README.md
22
EXTRA_DIST += cmake/Config.cmake.in
33
EXTRA_DIST += cmake/config.in
44
EXTRA_DIST += cmake/functions.cmake
5+
EXTRA_DIST += cmake/options.h.in
56
EXTRA_DIST += cmake/modules/FindARIA.cmake
67
EXTRA_DIST += cmake/modules/FindOQS.cmake

0 commit comments

Comments
 (0)