include headers files in solution, get rid of some dlls and switch to static libs instead, fix building curl and openssl from sources on every cmake configuration

This commit is contained in:
ohyzha
2024-07-09 10:53:24 +03:00
parent 268be2ca60
commit 6d527279bc
2 changed files with 72 additions and 61 deletions

View File

@@ -12,8 +12,10 @@ endif ()
set(OPENSSL_SOURCE_DIR ${CMAKE_BINARY_DIR}/deps_curl/openssl-src)
set(OPENSSL_INSTALL_DIR ${CMAKE_BINARY_DIR}/INSTALL)
set(CURL_INSTALL_DIR ${OPENSSL_INSTALL_DIR})
set(OPENSSL_INCLUDE_DIR ${OPENSSL_INSTALL_DIR}/include)
set(OPENSSL_TAG OpenSSL_1_1_1n)
set(OPENSSL_USE_STATIC_LIBS TRUE)
find_program(PERL_EXECUTABLE perl)
if (NOT PERL_EXECUTABLE)
@@ -56,6 +58,13 @@ if (APPLE)
USES_TERMINAL_INSTALL TRUE
)
else ()
set(OPENSSL_ROOT_DIR ${OPENSSL_INSTALL_DIR})
set(CURL_DEPDENDENCY_TARGETS "")
find_package(OpenSSL QUIET)
if(NOT OpenSSL_FOUND)
message("OpenSSL not found. Building OpenSSL from sources...")
set(CURL_DEPDENDENCY_TARGETS OpenSSL)
ExternalProject_Add(
OpenSSL
PREFIX ${OPENSSL_SOURCE_DIR}
@@ -71,13 +80,19 @@ else ()
USES_TERMINAL_BUILD TRUE
USES_TERMINAL_INSTALL TRUE
)
else ()
set(CURL_DEPDENDENCY_TARGETS OpenSSL::SSL OpenSSL::Crypto)
message("OpenSSL is already built")
endif()
ExternalProject_Get_Property(OpenSSL INSTALL_DIR)
set(OPENSSL_ROOT_DIR ${INSTALL_DIR})
list(APPEND CMAKE_PREFIX_PATH ${CURL_INSTALL_DIR})
find_package(CURL QUIET)
if (NOT CURL_FOUND)
message("CURL not found. Building CURL from sources...")
# set(BUILD_SHARED_LIBS OFF) set(BUILD_STATIC_LIBS ON)
ExternalProject_Add(
curl
DEPENDS OpenSSL
DEPENDS ${CURL_DEPDENDENCY_TARGETS}
GIT_REPOSITORY ${CURL_REPO}
GIT_TAG ${CURL_GIT_TAG}
GIT_SHALLOW TRUE
@@ -99,4 +114,7 @@ else ()
USES_TERMINAL_BUILD TRUE
USES_TERMINAL_INSTALL TRUE
)
else ()
message("CURL is alredy built")
endif ()
endif ()

View File

@@ -37,8 +37,8 @@ if(IOS)
file(GLOB_RECURSE resources CONFIGURE_DEPENDS "openVulkanoCpp/*.storyboard" "openVulkanoCpp/*.xib")
add_executable(openVulkanoCpp examples/main.m ${resources})
else()
file(GLOB_RECURSE sources CONFIGURE_DEPENDS "openVulkanoCpp/*.c" "openVulkanoCpp/*.cpp" "examples/*.cpp")
add_executable(openVulkanoCpp examples/main.cpp ${resources})
file(GLOB_RECURSE sources CONFIGURE_DEPENDS "openVulkanoCpp/*.h" "openVulkanoCpp/*.c" "openVulkanoCpp/*.hpp" "openVulkanoCpp/*.cpp" "examples/*.hpp" "examples/*.cpp")
add_executable(openVulkanoCpp examples/main.cpp)
endif()
FilterPlatformPaths(sources)
SetWarningSettings(openVulkanoCpp)
@@ -63,26 +63,19 @@ if (WIN32)
# Ws2
target_link_libraries(openVulkanoCpp PRIVATE Ws2_32)
file(GLOB_RECURSE DLLS "${CMAKE_BINARY_DIR}/*.dll")
if (CMAKE_BUILD_TYPE STREQUAL "Release")
set(EXE_OUTPUT_DIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}" )
elseif (CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
set(EXE_OUTPUT_DIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL}" )
elseif (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
set(EXE_OUTPUT_DIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO}" )
elseif (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(EXE_OUTPUT_DIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}" )
else ()
set(EXE_OUTPUT_DIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" )
endif()
# grabs libcurl.dll libssl-1_1-x64.dll libcrypto-1_1-x64.dll
# TODO: statically link libcurl and it's dependencies
file(GLOB_RECURSE DLLS "${CMAKE_BINARY_DIR}/deps_curl/INSTALL/bin/*.dll")
foreach(DLL ${DLLS})
add_custom_command(TARGET openVulkanoCpp POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${DLL} ${EXE_OUTPUT_DIR}
${DLL} $<TARGET_FILE_DIR:openVulkanoCpp>
)
endforeach()
set(CURL_STATIC_LIBS ${CMAKE_BINARY_DIR}/deps_curl/deps_curl)
file(GLOB_RECURSE LIBS "${CURL_STATIC_LIBS}/*.lib")
target_link_libraries(openVulkanoCpp PRIVATE ${LIBS})
endif ()
SetupVulkan(openVulkanoCpp)