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:
parent
5d0654ee56
commit
a7cc438c9c
@ -1683,7 +1683,22 @@ add_definitions("-DWOLFSSL_IGNORE_FILE_WARN")
|
||||
|
||||
# Generate 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(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")
|
||||
|
||||
# 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(APPEND ${CYASSL_OPTION_FILE} "/* cyassl 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)
|
||||
set_property(TARGET client
|
||||
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/examples/client)
|
||||
${WOLFSSL_OUTPUT_BASE}/examples/client)
|
||||
|
||||
# Build wolfSSL server example
|
||||
add_executable(server
|
||||
@ -1794,7 +1808,7 @@ if(WOLFSSL_EXAMPLES)
|
||||
target_link_libraries(server wolfssl)
|
||||
set_property(TARGET server
|
||||
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/examples/server)
|
||||
${WOLFSSL_OUTPUT_BASE}/examples/server)
|
||||
|
||||
# Build echo client example
|
||||
add_executable(echoclient
|
||||
@ -1804,7 +1818,7 @@ if(WOLFSSL_EXAMPLES)
|
||||
target_link_libraries(echoclient wolfssl)
|
||||
set_property(TARGET echoclient
|
||||
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/examples/echoclient)
|
||||
${WOLFSSL_OUTPUT_BASE}/examples/echoclient)
|
||||
|
||||
# Build echo server example
|
||||
add_executable(echoserver
|
||||
@ -1814,7 +1828,7 @@ if(WOLFSSL_EXAMPLES)
|
||||
target_link_libraries(echoserver wolfssl)
|
||||
set_property(TARGET echoserver
|
||||
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/examples/echoserver)
|
||||
${WOLFSSL_OUTPUT_BASE}/examples/echoserver)
|
||||
|
||||
if(NOT WIN32)
|
||||
# Build TLS benchmark example
|
||||
@ -1824,7 +1838,7 @@ if(WOLFSSL_EXAMPLES)
|
||||
target_link_libraries(tls_bench Threads::Threads)
|
||||
set_property(TARGET tls_bench
|
||||
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/examples/benchmark)
|
||||
${WOLFSSL_OUTPUT_BASE}/examples/benchmark)
|
||||
endif()
|
||||
|
||||
# Build unit tests
|
||||
@ -1843,7 +1857,7 @@ if(WOLFSSL_EXAMPLES)
|
||||
target_link_libraries(unit_test Threads::Threads)
|
||||
set_property(TARGET unit_test
|
||||
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/tests/)
|
||||
${WOLFSSL_OUTPUT_BASE}/tests/)
|
||||
set_property(TARGET unit_test
|
||||
PROPERTY RUNTIME_OUTPUT_NAME
|
||||
unit.test)
|
||||
@ -1876,7 +1890,7 @@ if(WOLFSSL_CRYPT_TESTS)
|
||||
target_link_libraries(wolfcrypttest wolfssl)
|
||||
set_property(TARGET wolfcrypttest
|
||||
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/wolfcrypt/test)
|
||||
${WOLFSSL_OUTPUT_BASE}/wolfcrypt/test)
|
||||
set_property(TARGET wolfcrypttest
|
||||
PROPERTY RUNTIME_OUTPUT_NAME
|
||||
testwolfcrypt)
|
||||
@ -1889,7 +1903,7 @@ if(WOLFSSL_CRYPT_TESTS)
|
||||
target_link_libraries(wolfcryptbench wolfssl)
|
||||
set_property(TARGET wolfcryptbench
|
||||
PROPERTY RUNTIME_OUTPUT_DIRECTORY
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/wolfcrypt/benchmark)
|
||||
${WOLFSSL_OUTPUT_BASE}/wolfcrypt/benchmark)
|
||||
set_property(TARGET wolfcryptbench
|
||||
PROPERTY RUNTIME_OUTPUT_NAME
|
||||
benchmark)
|
||||
@ -2038,6 +2052,14 @@ install(TARGETS wolfssl
|
||||
EXPORT wolfssl-targets
|
||||
LIBRARY)
|
||||
# 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/
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wolfssl
|
||||
FILES_MATCHING PATTERN "*.h"
|
||||
|
Loading…
x
Reference in New Issue
Block a user