mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 18:57:27 +02:00
cmake: out of source support
Add `WOLFSSL_BUILD_OUT_OF_TREE` option to force not changing the source tree. Also defaults to `CMAKE_DISABLE_SOURCE_CHANGES` to avoid failures
This commit is contained in:
@ -1683,7 +1683,22 @@ add_definitions("-DWOLFSSL_IGNORE_FILE_WARN")
|
|||||||
|
|
||||||
# Generate user options header
|
# Generate user options header
|
||||||
message("Generating user options header...")
|
message("Generating user options header...")
|
||||||
set(OPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/wolfssl/options.h")
|
if (${CMAKE_DISABLE_SOURCE_CHANGES})
|
||||||
|
set(WOLFSSL_BUILD_OUT_OF_TREE_DEFAULT "${CMAKE_DISABLE_SOURCE_CHANGES}")
|
||||||
|
else()
|
||||||
|
set(WOLFSSL_BUILD_OUT_OF_TREE_DEFAULT "no")
|
||||||
|
endif()
|
||||||
|
add_option("WOLFSSL_BUILD_OUT_OF_TREE"
|
||||||
|
"Don't generate files in the source tree (default: ${WOLFSSL_BUILD_OUT_OF_TREE_DEFAULT})"
|
||||||
|
"${WOLFSSL_BUILD_OUT_OF_TREE_DEFAULT}" "yes;no")
|
||||||
|
if (${WOLFSSL_BUILD_OUT_OF_TREE})
|
||||||
|
set(WOLFSSL_OUTPUT_BASE ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
else()
|
||||||
|
set(WOLFSSL_OUTPUT_BASE ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
endif()
|
||||||
|
set(OPTION_FILE "${WOLFSSL_OUTPUT_BASE}/wolfssl/options.h")
|
||||||
|
set(CYASSL_OPTION_FILE "${WOLFSSL_OUTPUT_BASE}/cyassl/options.h")
|
||||||
|
|
||||||
file(REMOVE ${OPTION_FILE})
|
file(REMOVE ${OPTION_FILE})
|
||||||
|
|
||||||
file(APPEND ${OPTION_FILE} "/* wolfssl options.h\n")
|
file(APPEND ${OPTION_FILE} "/* wolfssl options.h\n")
|
||||||
@ -1713,7 +1728,6 @@ file(APPEND ${OPTION_FILE} "#endif\n\n\n")
|
|||||||
file(APPEND ${OPTION_FILE} "#endif /* WOLFSSL_OPTIONS_H */\n\n")
|
file(APPEND ${OPTION_FILE} "#endif /* WOLFSSL_OPTIONS_H */\n\n")
|
||||||
|
|
||||||
# backwards compatibility for those who have included options or version
|
# backwards compatibility for those who have included options or version
|
||||||
set(CYASSL_OPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cyassl/options.h")
|
|
||||||
file(REMOVE ${CYASSL_OPTION_FILE})
|
file(REMOVE ${CYASSL_OPTION_FILE})
|
||||||
file(APPEND ${CYASSL_OPTION_FILE} "/* cyassl options.h\n")
|
file(APPEND ${CYASSL_OPTION_FILE} "/* cyassl options.h\n")
|
||||||
file(APPEND ${CYASSL_OPTION_FILE} " * generated from wolfssl/options.h\n")
|
file(APPEND ${CYASSL_OPTION_FILE} " * generated from wolfssl/options.h\n")
|
||||||
@ -1786,7 +1800,7 @@ if(WOLFSSL_EXAMPLES)
|
|||||||
target_link_libraries(client wolfssl)
|
target_link_libraries(client wolfssl)
|
||||||
set_property(TARGET client
|
set_property(TARGET client
|
||||||
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/examples/client)
|
${WOLFSSL_OUTPUT_BASE}/examples/client)
|
||||||
|
|
||||||
# Build wolfSSL server example
|
# Build wolfSSL server example
|
||||||
add_executable(server
|
add_executable(server
|
||||||
@ -1794,7 +1808,7 @@ if(WOLFSSL_EXAMPLES)
|
|||||||
target_link_libraries(server wolfssl)
|
target_link_libraries(server wolfssl)
|
||||||
set_property(TARGET server
|
set_property(TARGET server
|
||||||
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/examples/server)
|
${WOLFSSL_OUTPUT_BASE}/examples/server)
|
||||||
|
|
||||||
# Build echo client example
|
# Build echo client example
|
||||||
add_executable(echoclient
|
add_executable(echoclient
|
||||||
@ -1804,7 +1818,7 @@ if(WOLFSSL_EXAMPLES)
|
|||||||
target_link_libraries(echoclient wolfssl)
|
target_link_libraries(echoclient wolfssl)
|
||||||
set_property(TARGET echoclient
|
set_property(TARGET echoclient
|
||||||
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/examples/echoclient)
|
${WOLFSSL_OUTPUT_BASE}/examples/echoclient)
|
||||||
|
|
||||||
# Build echo server example
|
# Build echo server example
|
||||||
add_executable(echoserver
|
add_executable(echoserver
|
||||||
@ -1814,7 +1828,7 @@ if(WOLFSSL_EXAMPLES)
|
|||||||
target_link_libraries(echoserver wolfssl)
|
target_link_libraries(echoserver wolfssl)
|
||||||
set_property(TARGET echoserver
|
set_property(TARGET echoserver
|
||||||
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/examples/echoserver)
|
${WOLFSSL_OUTPUT_BASE}/examples/echoserver)
|
||||||
|
|
||||||
if(NOT WIN32)
|
if(NOT WIN32)
|
||||||
# Build TLS benchmark example
|
# Build TLS benchmark example
|
||||||
@ -1824,7 +1838,7 @@ if(WOLFSSL_EXAMPLES)
|
|||||||
target_link_libraries(tls_bench Threads::Threads)
|
target_link_libraries(tls_bench Threads::Threads)
|
||||||
set_property(TARGET tls_bench
|
set_property(TARGET tls_bench
|
||||||
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/examples/benchmark)
|
${WOLFSSL_OUTPUT_BASE}/examples/benchmark)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Build unit tests
|
# Build unit tests
|
||||||
@ -1843,7 +1857,7 @@ if(WOLFSSL_EXAMPLES)
|
|||||||
target_link_libraries(unit_test Threads::Threads)
|
target_link_libraries(unit_test Threads::Threads)
|
||||||
set_property(TARGET unit_test
|
set_property(TARGET unit_test
|
||||||
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/tests/)
|
${WOLFSSL_OUTPUT_BASE}/tests/)
|
||||||
set_property(TARGET unit_test
|
set_property(TARGET unit_test
|
||||||
PROPERTY RUNTIME_OUTPUT_NAME
|
PROPERTY RUNTIME_OUTPUT_NAME
|
||||||
unit.test)
|
unit.test)
|
||||||
@ -1876,7 +1890,7 @@ if(WOLFSSL_CRYPT_TESTS)
|
|||||||
target_link_libraries(wolfcrypttest wolfssl)
|
target_link_libraries(wolfcrypttest wolfssl)
|
||||||
set_property(TARGET wolfcrypttest
|
set_property(TARGET wolfcrypttest
|
||||||
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/wolfcrypt/test)
|
${WOLFSSL_OUTPUT_BASE}/wolfcrypt/test)
|
||||||
set_property(TARGET wolfcrypttest
|
set_property(TARGET wolfcrypttest
|
||||||
PROPERTY RUNTIME_OUTPUT_NAME
|
PROPERTY RUNTIME_OUTPUT_NAME
|
||||||
testwolfcrypt)
|
testwolfcrypt)
|
||||||
@ -1889,7 +1903,7 @@ if(WOLFSSL_CRYPT_TESTS)
|
|||||||
target_link_libraries(wolfcryptbench wolfssl)
|
target_link_libraries(wolfcryptbench wolfssl)
|
||||||
set_property(TARGET wolfcryptbench
|
set_property(TARGET wolfcryptbench
|
||||||
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/wolfcrypt/benchmark)
|
${WOLFSSL_OUTPUT_BASE}/wolfcrypt/benchmark)
|
||||||
set_property(TARGET wolfcryptbench
|
set_property(TARGET wolfcryptbench
|
||||||
PROPERTY RUNTIME_OUTPUT_NAME
|
PROPERTY RUNTIME_OUTPUT_NAME
|
||||||
benchmark)
|
benchmark)
|
||||||
@ -2038,6 +2052,14 @@ install(TARGETS wolfssl
|
|||||||
EXPORT wolfssl-targets
|
EXPORT wolfssl-targets
|
||||||
LIBRARY)
|
LIBRARY)
|
||||||
# Install the headers
|
# Install the headers
|
||||||
|
install(DIRECTORY ${WOLFSSL_OUTPUT_BASE}/wolfssl/
|
||||||
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wolfssl
|
||||||
|
FILES_MATCHING PATTERN "*.h"
|
||||||
|
REGEX ${EXCLUDED_HEADERS_REGEX} EXCLUDE)
|
||||||
|
install(DIRECTORY ${WOLFSSL_OUTPUT_BASE}/cyassl/
|
||||||
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/cyassl
|
||||||
|
FILES_MATCHING PATTERN "*.h"
|
||||||
|
REGEX ${EXCLUDED_HEADERS_REGEX} EXCLUDE)
|
||||||
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/wolfssl/
|
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/wolfssl/
|
||||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wolfssl
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wolfssl
|
||||||
FILES_MATCHING PATTERN "*.h"
|
FILES_MATCHING PATTERN "*.h"
|
||||||
|
Reference in New Issue
Block a user