updating with latest cmake
This commit is contained in:
54
cmake/FetchIperf3.cmake
Normal file
54
cmake/FetchIperf3.cmake
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
include(ExternalProject)
|
||||||
|
include(FetchContent)
|
||||||
|
|
||||||
|
find_program(MAKE NAMES make gmake nmake REQUIRED)
|
||||||
|
find_program(AUTORECONF NAMES autoreconf REQUIRED)
|
||||||
|
find_program(GIT NAMES git REQUIRED)
|
||||||
|
find_program(SH NAMES sh REQUIRED)
|
||||||
|
|
||||||
|
if(CMAKE_CROSSCOMPILING)
|
||||||
|
set(SYSROOT_FLAG --sysroot=${CMAKE_SYSROOT})
|
||||||
|
else()
|
||||||
|
set(SYSROOT_FLAG "")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
set(ENV{CC} "${CMAKE_C_COMPILER}")
|
||||||
|
set(ENV{CXX} "${CMAKE_CXX_COMPILER}")
|
||||||
|
set(ENV{LD} "${CMAKE_LINKER}")
|
||||||
|
|
||||||
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
||||||
|
set(ENV{CFLAGS} -g3)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
ExternalProject_Add(
|
||||||
|
iperf3
|
||||||
|
GIT_REPOSITORY https://github.com/esnet/iperf.git
|
||||||
|
GIT_TAG 3.18
|
||||||
|
GIT_SHALLOW TRUE
|
||||||
|
PREFIX ${FETCHCONTENT_BASE_DIR}
|
||||||
|
SOURCE_DIR ${FETCHCONTENT_BASE_DIR}/iperf3-src
|
||||||
|
BINARY_DIR ${FETCHCONTENT_BASE_DIR}/iperf3-build
|
||||||
|
STAMP_DIR ${FETCHCONTENT_BASE_DIR}/iperf3-subbuild/stamps
|
||||||
|
LOG_DIR ${FETCHCONTENT_BASE_DIR}/iperf3-subbuild/logs
|
||||||
|
TMP_DIR ${FETCHCONTENT_BASE_DIR}/iperf3-subbuild/tmp
|
||||||
|
CONFIGURE_COMMAND cd ${FETCHCONTENT_BASE_DIR}/iperf3-src && ./configure ${SYSROOT_FLAG}
|
||||||
|
--prefix=${FETCHCONTENT_BASE_DIR}/iperf3-build --with-openssl=${OPENSSL_ROOT_DIR}
|
||||||
|
BUILD_COMMAND ${MAKE} -C ${FETCHCONTENT_BASE_DIR}/iperf3-src
|
||||||
|
INSTALL_COMMAND ${MAKE} -C ${FETCHCONTENT_BASE_DIR}/iperf3-src install
|
||||||
|
UPDATE_COMMAND ""
|
||||||
|
PATCH_COMMAND ${SH} -c "cd ${FETCHCONTENT_BASE_DIR}/iperf3-src && ${GIT} apply --ignore-whitespace --verbose --reject ${PROJECT_SOURCE_DIR}/patches/*.patch")
|
||||||
|
|
||||||
|
add_dependencies(iperf3 OpenSSL::SSL OpenSSL::Crypto)
|
||||||
|
|
||||||
|
add_library(libiperf_static STATIC IMPORTED)
|
||||||
|
set_target_properties(libiperf_static PROPERTIES IMPORTED_LOCATION ${FETCHCONTENT_BASE_DIR}/iperf3-build/lib/libiperf.a
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES ${FETCHCONTENT_BASE_DIR}/iperf3-build/include/)
|
||||||
|
add_library(libiperf_shared SHARED IMPORTED)
|
||||||
|
set_target_properties(libiperf_shared PROPERTIES IMPORTED_LOCATION ${FETCHCONTENT_BASE_DIR}/iperf3-build/lib/libiperf.so
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES ${FETCHCONTENT_BASE_DIR}/iperf3-build/include/)
|
||||||
|
add_dependencies(libiperf_static iperf3)
|
||||||
|
add_dependencies(libiperf_shared iperf3)
|
||||||
|
|
||||||
|
file(MAKE_DIRECTORY ${FETCHCONTENT_BASE_DIR}/iperf3-build/include/ ${FETCHCONTENT_BASE_DIR}/iperf3-build/lib/)
|
||||||
|
|
||||||
@@ -5,7 +5,7 @@ set(BUILD_SHARED OFF CACHE STRING "" FORCE)
|
|||||||
|
|
||||||
FetchContent_Declare(
|
FetchContent_Declare(
|
||||||
libbacktrace
|
libbacktrace
|
||||||
GIT_REPOSITORY git@github.com:brenozd/libbacktrace.git
|
GIT_REPOSITORY https://github.com/brenozd/libbacktrace.git
|
||||||
GIT_TAG master
|
GIT_TAG master
|
||||||
GIT_SHALLOW TRUE
|
GIT_SHALLOW TRUE
|
||||||
OVERRIDE_FIND_PACKAGE)
|
OVERRIDE_FIND_PACKAGE)
|
||||||
|
|||||||
16
cmake/FetchLibpcap.cmake
Normal file
16
cmake/FetchLibpcap.cmake
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
include(FetchContent)
|
||||||
|
|
||||||
|
set(FETCHCONTENT_QUIET TRUE)
|
||||||
|
|
||||||
|
set(LIBPCAP_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
||||||
|
set(LIBPCAP_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
||||||
|
|
||||||
|
FetchContent_Declare(
|
||||||
|
libpcap
|
||||||
|
GIT_REPOSITORY https://github.com/the-tcpdump-group/libpcap.git
|
||||||
|
GIT_TAG libpcap-1.10.5
|
||||||
|
GIT_SHALLOW TRUE
|
||||||
|
OVERRIDE_FIND_PACKAGE)
|
||||||
|
|
||||||
|
FetchContent_MakeAvailable(libpcap)
|
||||||
|
|
||||||
110
cmake/FetchOpenSSL.cmake
Normal file
110
cmake/FetchOpenSSL.cmake
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
include(ExternalProject)
|
||||||
|
include(FetchContent)
|
||||||
|
|
||||||
|
set(OPENSSL_DESIRED_BRANCH "openssl-3.4")
|
||||||
|
set(OPENSSL_BUILD_DIR ${FETCHCONTENT_BASE_DIR}/openssl-build)
|
||||||
|
|
||||||
|
find_program(MAKE NAMES make gmake nmake REQUIRED)
|
||||||
|
find_program(AUTORECONF NAMES autoreconf REQUIRED)
|
||||||
|
|
||||||
|
if(CMAKE_CROSSCOMPILING)
|
||||||
|
set(OPENSSL_INSTALL_DIR ${CMAKE_SYSROOT})
|
||||||
|
set(SYSROOT_FLAG --sysroot=${CMAKE_SYSROOT})
|
||||||
|
else()
|
||||||
|
set(OPENSSL_INSTALL_DIR ${OPENSSL_BUILD_DIR})
|
||||||
|
set(SYSROOT_FLAG "")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
||||||
|
set(ENV{CFLAGS} -g3 -O0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(ENV{CC} "${CMAKE_C_COMPILER}")
|
||||||
|
set(ENV{CXX} "${CMAKE_CXX_COMPILER}")
|
||||||
|
set(ENV{LD} "${CMAKE_LINKER}")
|
||||||
|
|
||||||
|
# Configura flags de compilação se não passado
|
||||||
|
if(NOT DEFINED OPENSSL_CONFIGURE_FLAGS)
|
||||||
|
# Configura o target de acordo com o sistema (32-bit ou 64-bit)
|
||||||
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||||
|
message(STATUS "Detected 64-bit target system based on toolchain.")
|
||||||
|
set(OPENSSL_TARGET_CONFIG "linux-generic64" CACHE STRING "" FORCE)
|
||||||
|
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||||
|
message(STATUS "Detected 32-bit target system based on toolchain.")
|
||||||
|
set(OPENSSL_TARGET_CONFIG "linux-generic32" CACHE STRING "" FORCE)
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Unknown target architecture: pointer size is neither 4 nor 8.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(OPENSSL_CONFIGURE_FLAGS
|
||||||
|
${OPENSSL_TARGET_CONFIG}
|
||||||
|
no-async
|
||||||
|
no-dso
|
||||||
|
no-hw
|
||||||
|
no-engine
|
||||||
|
no-unit-test
|
||||||
|
${SYSROOT_FLAG})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
ExternalProject_Add(
|
||||||
|
openssl
|
||||||
|
GIT_REPOSITORY https://github.com/openssl/openssl.git
|
||||||
|
GIT_TAG ${OPENSSL_DESIRED_BRANCH}
|
||||||
|
GIT_SHALLOW TRUE
|
||||||
|
PREFIX ${FETCHCONTENT_BASE_DIR}
|
||||||
|
SOURCE_DIR ${FETCHCONTENT_BASE_DIR}/openssl-src
|
||||||
|
BINARY_DIR ${OPENSSL_BUILD_DIR}
|
||||||
|
STAMP_DIR ${FETCHCONTENT_BASE_DIR}/openssl-subbuild/stamps
|
||||||
|
LOG_DIR ${FETCHCONTENT_BASE_DIR}/openssl-subbuild/logs
|
||||||
|
TMP_DIR ${FETCHCONTENT_BASE_DIR}/openssl-subbuild/tmp
|
||||||
|
CONFIGURE_COMMAND
|
||||||
|
cd ${FETCHCONTENT_BASE_DIR}/openssl-src && ./Configure ${OPENSSL_CONFIGURE_FLAGS} --prefix=${OPENSSL_INSTALL_DIR}
|
||||||
|
--openssldir=${OPENSSL_SOURCE_DIR}
|
||||||
|
BUILD_COMMAND ${MAKE} -C ${FETCHCONTENT_BASE_DIR}/openssl-src
|
||||||
|
INSTALL_COMMAND ${MAKE} -C ${FETCHCONTENT_BASE_DIR}/openssl-src install_sw
|
||||||
|
UPDATE_COMMAND "")
|
||||||
|
|
||||||
|
file(MAKE_DIRECTORY ${OPENSSL_INSTALL_DIR}/include/ ${OPENSSL_INSTALL_DIR}/lib/)
|
||||||
|
|
||||||
|
if(OPENSSL_USE_STATIC_LIBS)
|
||||||
|
add_library(OpenSSL::SSL STATIC IMPORTED)
|
||||||
|
set_target_properties(OpenSSL::SSL PROPERTIES IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/libssl.a
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include)
|
||||||
|
|
||||||
|
add_library(OpenSSL::Crypto STATIC IMPORTED)
|
||||||
|
set_target_properties(OpenSSL::Crypto PROPERTIES IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/libcrypto.a
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include)
|
||||||
|
set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libcrypto.a)
|
||||||
|
set(OPENSSL_SSL_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libssl.a)
|
||||||
|
else()
|
||||||
|
# Se for dinâmico (compartilhado)
|
||||||
|
add_library(OpenSSL::SSL SHARED IMPORTED)
|
||||||
|
set_target_properties(OpenSSL::SSL PROPERTIES IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/libssl.so
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include)
|
||||||
|
|
||||||
|
add_library(OpenSSL::Crypto SHARED IMPORTED)
|
||||||
|
set_target_properties(OpenSSL::Crypto PROPERTIES IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/libcrypto.so
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include)
|
||||||
|
set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libcrypto.so)
|
||||||
|
set(OPENSSL_SSL_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libssl.so)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Adiciona dependências para garantir que as bibliotecas sejam compiladas antes
|
||||||
|
# do uso
|
||||||
|
add_dependencies(OpenSSL::SSL openssl)
|
||||||
|
add_dependencies(OpenSSL::Crypto openssl)
|
||||||
|
|
||||||
|
# Configura variáveis para que outros targets possam usar as bibliotecas do
|
||||||
|
# OpenSSL
|
||||||
|
set(OPENSSL_ROOT_DIR ${OPENSSL_INSTALL_DIR})
|
||||||
|
set(OPENSSL_INCLUDE_DIR ${OPENSSL_INSTALL_DIR}/include)
|
||||||
|
set(OPENSSL_LIBRARIES OpenSSL::SSL OpenSSL::Crypto)
|
||||||
|
|
||||||
|
# Strip out the "OpenSSL_" part and replace underscores with periods
|
||||||
|
string(REGEX REPLACE "^OpenSSL_" "" OPENSSL_FETCHED_VERSION "${OPENSSL_DESIRED_BRANCH}")
|
||||||
|
string(REPLACE "_" "." OPENSSL_FETCHED_VERSION "${OPENSSL_FETCHED_VERSION}")
|
||||||
|
string(REGEX REPLACE "[^0-9.]$" "" OPENSSL_FETCHED_VERSION "${OPENSSL_FETCHED_VERSION}")
|
||||||
|
|
||||||
|
set(OPENSSL_VERSION "${OPENSSL_FETCHED_VERSION}")
|
||||||
|
|
||||||
|
file(MAKE_DIRECTORY ${OPENSSL_INSTALL_DIR}/lib/ ${OPENSSL_INSTALL_DIR}/include/)
|
||||||
15
cmake/FetchXXHash.cmake
Normal file
15
cmake/FetchXXHash.cmake
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
include(FetchContent)
|
||||||
|
|
||||||
|
set(FETCHCONTENT_QUIET TRUE)
|
||||||
|
set(BUILD_SHARED_LIBS OFF CACHE STRING "" FORCE)
|
||||||
|
|
||||||
|
FetchContent_Declare(
|
||||||
|
xxhash
|
||||||
|
GIT_REPOSITORY https://github.com/Cyan4973/xxHash.git
|
||||||
|
GIT_TAG v0.8.3
|
||||||
|
GIT_SHALLOW TRUE
|
||||||
|
SOURCE_SUBDIR "cmake_unofficial/"
|
||||||
|
OVERRIDE_FIND_PACKAGE)
|
||||||
|
|
||||||
|
FetchContent_MakeAvailable(xxhash)
|
||||||
|
|
||||||
22
cmake/FetchZLog.cmake
Normal file
22
cmake/FetchZLog.cmake
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
include(FetchContent)
|
||||||
|
|
||||||
|
FetchContent_Declare(
|
||||||
|
zlog
|
||||||
|
GIT_REPOSITORY https://github.com/HardySimpson/zlog
|
||||||
|
GIT_TAG 1.2.18
|
||||||
|
GIT_SHALLOW TRUE
|
||||||
|
)
|
||||||
|
FetchContent_MakeAvailable(zlog)
|
||||||
|
|
||||||
|
# Install zlog automatically after build
|
||||||
|
set(zlog_INSTALL_DIR ${FETCHCONTENT_BASE_DIR}/zlog-install/)
|
||||||
|
add_custom_target(
|
||||||
|
zlog_copy_header ALL
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy ${zlog_SOURCE_DIR}/src/zlog.h ${zlog_BINARY_DIR}/include/zlog.h
|
||||||
|
DEPENDS zlog
|
||||||
|
COMMENT "Installing zlog into ${zlog_INSTALL_DIR}"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Add the install directory to include and link paths
|
||||||
|
target_include_directories(zlog_s PUBLIC ${zlog_BINARY_DIR}/include)
|
||||||
|
target_include_directories(zlog PUBLIC ${zlog_BINARY_DIR}/include)
|
||||||
@@ -1,172 +0,0 @@
|
|||||||
include(FetchContent)
|
|
||||||
|
|
||||||
# Verifica a instalação do OpenSSL no sistema
|
|
||||||
find_package(OpenSSL 1.0.2...1.1.1 QUIET)
|
|
||||||
|
|
||||||
if(OPENSSL_FOUND)
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Diretórios para baixar e instalar o OpenSSL
|
|
||||||
set(OPENSSL_SOURCE_DIR ${FETCHCONTENT_BASE_DIR}/openssl-src)
|
|
||||||
set(OPENSSL_DESIRED_BRANCH "OpenSSL_1_1_1w")
|
|
||||||
|
|
||||||
if(CMAKE_CROSSCOMPILING)
|
|
||||||
set(OPENSSL_INSTALL_DIR ${CMAKE_SYSROOT})
|
|
||||||
set(SYSROOT_FLAG --sysroot=${CMAKE_SYSROOT})
|
|
||||||
else()
|
|
||||||
set(OPENSSL_INSTALL_DIR ${FETCHCONTENT_BASE_DIR}/openssl-build)
|
|
||||||
set(SYSROOT_FLAG "")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Verifica se o OpenSSL já foi clonado e configura o repositório
|
|
||||||
if(EXISTS ${OPENSSL_SOURCE_DIR}/.git)
|
|
||||||
# Verifica a branch actual
|
|
||||||
execute_process(
|
|
||||||
COMMAND git -C ${OPENSSL_SOURCE_DIR} rev-parse --abbrev-ref HEAD
|
|
||||||
OUTPUT_VARIABLE CURRENT_BRANCH
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_QUIET ERROR_QUIET)
|
|
||||||
|
|
||||||
if(NOT "${CURRENT_BRANCH}" STREQUAL "${DESIRED_BRANCH}")
|
|
||||||
# Faz o checkout da branch desejada se necessário
|
|
||||||
execute_process(
|
|
||||||
COMMAND git -C ${OPENSSL_SOURCE_DIR} checkout ${DESIRED_BRANCH}
|
|
||||||
OUTPUT_QUIET
|
|
||||||
RESULT_VARIABLE CHECKOUT_STATUS)
|
|
||||||
if(NOT CHECKOUT_STATUS EQUAL 0)
|
|
||||||
message(
|
|
||||||
FATAL_ERROR "Failed to checkout branch ${DESIRED_BRANCH} in OpenSSL")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Atualiza o repositório para garantir que está na última versão
|
|
||||||
execute_process(
|
|
||||||
COMMAND git -C ${OPENSSL_SOURCE_DIR} pull origin ${DESIRED_BRANCH}
|
|
||||||
OUTPUT_QUIET
|
|
||||||
RESULT_VARIABLE PULL_STATUS)
|
|
||||||
if(NOT PULL_STATUS EQUAL 0)
|
|
||||||
message(
|
|
||||||
FATAL_ERROR
|
|
||||||
"Failed to pull latest changes for branch ${DESIRED_BRANCH} in OpenSSL"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
# Clona o repositório do OpenSSL se ele não existir
|
|
||||||
execute_process(
|
|
||||||
COMMAND git clone -b ${OPENSSL_DESIRED_BRANCH} --depth 1
|
|
||||||
https://github.com/openssl/openssl.git ${OPENSSL_SOURCE_DIR}
|
|
||||||
OUTPUT_QUIET
|
|
||||||
RESULT_VARIABLE CLONE_STATUS)
|
|
||||||
if(NOT CLONE_STATUS EQUAL 0)
|
|
||||||
message(FATAL_ERROR "Failed to clone OpenSSL")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
# Configura flags de compilação se não passado
|
|
||||||
if(NOT DEFINED OPENSSL_CONFIGURE_FLAGS)
|
|
||||||
# Configura o target de acordo com o sistema (32-bit ou 64-bit)
|
|
||||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
||||||
message(STATUS "Detected 64-bit target system based on toolchain.")
|
|
||||||
set(OPENSSL_TARGET_CONFIG
|
|
||||||
"linux-generic64"
|
|
||||||
CACHE STRING "" FORCE)
|
|
||||||
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
|
||||||
message(STATUS "Detected 32-bit target system based on toolchain.")
|
|
||||||
set(OPENSSL_TARGET_CONFIG
|
|
||||||
"linux-generic32"
|
|
||||||
CACHE STRING "" FORCE)
|
|
||||||
else()
|
|
||||||
message(
|
|
||||||
FATAL_ERROR "Unknown target architecture: pointer size is neither 4 nor 8.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_TARGET_CONFIG} no-async no-dso no-hw no-engine no-unit-test ${SYSROOT_FLAG})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
|
||||||
set(ENV{CFLAGS} -g3)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(ENV{CC} "${CMAKE_C_COMPILER}")
|
|
||||||
set(ENV{CXX} "${CMAKE_CXX_COMPILER}")
|
|
||||||
set(ENV{LD} "${CMAKE_LINKER}")
|
|
||||||
|
|
||||||
# Executa o script de configuração do OpenSSL durante a fase de configuração do
|
|
||||||
# CMake
|
|
||||||
execute_process(
|
|
||||||
COMMAND
|
|
||||||
./Configure ${OPENSSL_CONFIGURE_FLAGS} --prefix=${OPENSSL_INSTALL_DIR} --openssldir=${OPENSSL_SOURCE_DIR}
|
|
||||||
WORKING_DIRECTORY ${OPENSSL_SOURCE_DIR}
|
|
||||||
RESULT_VARIABLE CONFIGURE_STATUS)
|
|
||||||
|
|
||||||
if(NOT CONFIGURE_STATUS EQUAL 0)
|
|
||||||
message(FATAL_ERROR "Failed to configure OpenSSL")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Adiciona commandos personalizados de compilação para o OpenSSL
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT ${OPENSSL_INSTALL_DIR}/lib/libssl.a # Ou qualquer outro artefato
|
|
||||||
# importante (dinâmico ou estático)
|
|
||||||
COMMAND make clean depend
|
|
||||||
COMMAND make -j4 V=sc
|
|
||||||
COMMAND make install_sw
|
|
||||||
WORKING_DIRECTORY ${OPENSSL_SOURCE_DIR}
|
|
||||||
COMMENT "Building and installing OpenSSL")
|
|
||||||
|
|
||||||
# Define um alvo personalizado que depende da conclusão do build
|
|
||||||
add_custom_target(openssl ALL DEPENDS ${OPENSSL_INSTALL_DIR}/lib/libssl.a)
|
|
||||||
|
|
||||||
# Configura a vinculação de bibliotecas e a importação para OpenSSL (estático ou
|
|
||||||
# dinâmico)
|
|
||||||
if(OPENSSL_STATIC)
|
|
||||||
# Se for estático
|
|
||||||
add_library(OpenSSL::SSL STATIC IMPORTED)
|
|
||||||
set_target_properties(
|
|
||||||
OpenSSL::SSL
|
|
||||||
PROPERTIES IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/libssl.a
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include)
|
|
||||||
|
|
||||||
add_library(OpenSSL::Crypto STATIC IMPORTED)
|
|
||||||
set_target_properties(
|
|
||||||
OpenSSL::Crypto
|
|
||||||
PROPERTIES IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/libcrypto.a
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include)
|
|
||||||
set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libcrypto.a)
|
|
||||||
set(OPENSSL_SSL_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libssl.a)
|
|
||||||
else()
|
|
||||||
# Se for dinâmico (compartilhado)
|
|
||||||
add_library(OpenSSL::SSL SHARED IMPORTED)
|
|
||||||
set_target_properties(
|
|
||||||
OpenSSL::SSL
|
|
||||||
PROPERTIES IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/libssl.so
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include)
|
|
||||||
|
|
||||||
add_library(OpenSSL::Crypto SHARED IMPORTED)
|
|
||||||
set_target_properties(
|
|
||||||
OpenSSL::Crypto
|
|
||||||
PROPERTIES IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/libcrypto.so
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include)
|
|
||||||
set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libcrypto.so)
|
|
||||||
set(OPENSSL_SSL_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libssl.so)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Adiciona dependências para garantir que as bibliotecas sejam compiladas antes
|
|
||||||
# do uso
|
|
||||||
add_dependencies(OpenSSL::SSL openssl)
|
|
||||||
add_dependencies(OpenSSL::Crypto openssl)
|
|
||||||
|
|
||||||
# Configura variáveis para que outros targets possam usar as bibliotecas do
|
|
||||||
# OpenSSL
|
|
||||||
set(OPENSSL_ROOT_DIR ${OPENSSL_INSTALL_DIR})
|
|
||||||
set(OPENSSL_INCLUDE_DIR ${OPENSSL_INSTALL_DIR}/include)
|
|
||||||
set(OPENSSL_LIBRARIES OpenSSL::SSL OpenSSL::Crypto)
|
|
||||||
|
|
||||||
# Strip out the "OpenSSL_" part and replace underscores with periods
|
|
||||||
string(REGEX REPLACE "^OpenSSL_" "" OPENSSL_FETCHED_VERSION "${OPENSSL_DESIRED_BRANCH}")
|
|
||||||
string(REPLACE "_" "." OPENSSL_FETCHED_VERSION "${OPENSSL_FETCHED_VERSION}")
|
|
||||||
string(REGEX REPLACE "[^0-9.]$" "" OPENSSL_FETCHED_VERSION "${OPENSSL_FETCHED_VERSION}")
|
|
||||||
|
|
||||||
set(OPENSSL_VERSION "${OPENSSL_FETCHED_VERSION}")
|
|
||||||
|
|
||||||
file(MAKE_DIRECTORY ${OPENSSL_INSTALL_DIR}/lib/ ${OPENSSL_INSTALL_DIR}/include/)
|
|
||||||
@@ -2,30 +2,30 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
# Script to Bump Version Numbers and Update File metadata
|
# Script to Bump Version Numbers and Update File metadata
|
||||||
# This script updates the version numbers of a C/C++ project, specifically in `version.hpp` or `version.h`,
|
# This script updates the version numbers of a C/C++ project, specifically in `version.hpp` or `version.h`,
|
||||||
#and also updates information about compilation commits and build timestamps.
|
#and also updates information about compilation commits and build timestamps.
|
||||||
VERSION_FILE="$(find "$(pwd)" \( -iname "version.hpp" -o -iname "version.h" \))"
|
VERSION_FILE="$(find "$(pwd)" \( -iname "version.hpp" -o -iname "version.h" \) -not -path "$(pwd)/build/*")"
|
||||||
|
|
||||||
MAJOR=$(grep -oP '([a-zA-Z]*)_VERSION_MAJOR (\K[0-9]+)' "$VERSION_FILE")
|
MAJOR=$(grep -oP '([a-zA-Z]*)_VERSION_MAJOR (\K[0-9]+)' "$VERSION_FILE")
|
||||||
MINOR=$(grep -oP '([a-zA-Z]*)_VERSION_MINOR (\K[0-9]+)' "$VERSION_FILE")
|
MINOR=$(grep -oP '([a-zA-Z]*)_VERSION_MINOR (\K[0-9]+)' "$VERSION_FILE")
|
||||||
PATCH=$(grep -oP '([a-zA-Z]*)_VERSION_PATCH (\K[0-9]+)' "$VERSION_FILE")
|
PATCH=$(grep -oP '([a-zA-Z]*)_VERSION_PATCH (\K[0-9]+)' "$VERSION_FILE")
|
||||||
|
|
||||||
_bump_version() {
|
_bump_version() {
|
||||||
case "$1" in
|
case "$1" in
|
||||||
major)
|
major)
|
||||||
MAJOR=$((MAJOR + 1))
|
MAJOR=$((MAJOR + 1))
|
||||||
;;
|
;;
|
||||||
minor)
|
minor)
|
||||||
MINOR=$((MINOR + 1))
|
MINOR=$((MINOR + 1))
|
||||||
;;
|
;;
|
||||||
patch)
|
patch)
|
||||||
PATCH=$((PATCH + 1))
|
PATCH=$((PATCH + 1))
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unknown version semantic $1" >&2
|
echo "Unknown version semantic $1" >&2
|
||||||
exit 124
|
exit 124
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
# Atualizar versões
|
# Atualizar versões
|
||||||
@@ -39,6 +39,3 @@ COMMIT_HASH=$(git rev-parse HEAD)
|
|||||||
BUILD_TIMESTAMP=$(date +%s)
|
BUILD_TIMESTAMP=$(date +%s)
|
||||||
sed -i "s/\([a-zA-Z]\+\)_COMMIT_HASH \"[a-zA-Z0-9]\+\"/\1_COMMIT_HASH \"$COMMIT_HASH\"/" "$VERSION_FILE"
|
sed -i "s/\([a-zA-Z]\+\)_COMMIT_HASH \"[a-zA-Z0-9]\+\"/\1_COMMIT_HASH \"$COMMIT_HASH\"/" "$VERSION_FILE"
|
||||||
sed -i "s/\([a-zA-Z]\+\)_BUILD_TIMESTAMP [0-9]\+/\1_BUILD_TIMESTAMP $BUILD_TIMESTAMP/" "$VERSION_FILE"
|
sed -i "s/\([a-zA-Z]\+\)_BUILD_TIMESTAMP [0-9]\+/\1_BUILD_TIMESTAMP $BUILD_TIMESTAMP/" "$VERSION_FILE"
|
||||||
|
|
||||||
# Exibir versão atualizada
|
|
||||||
printf "%d.%d.%d" "$MAJOR" "$MINOR" "$PATCH"
|
|
||||||
|
|||||||
Reference in New Issue
Block a user