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_SOURCE_DIR ${CMAKE_BINARY_DIR}/deps_curl/openssl-src)
set(OPENSSL_INSTALL_DIR ${CMAKE_BINARY_DIR}/INSTALL) 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_INCLUDE_DIR ${OPENSSL_INSTALL_DIR}/include)
set(OPENSSL_TAG OpenSSL_1_1_1n) set(OPENSSL_TAG OpenSSL_1_1_1n)
set(OPENSSL_USE_STATIC_LIBS TRUE)
find_program(PERL_EXECUTABLE perl) find_program(PERL_EXECUTABLE perl)
if (NOT PERL_EXECUTABLE) if (NOT PERL_EXECUTABLE)
@@ -56,6 +58,13 @@ if (APPLE)
USES_TERMINAL_INSTALL TRUE USES_TERMINAL_INSTALL TRUE
) )
else () 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( ExternalProject_Add(
OpenSSL OpenSSL
PREFIX ${OPENSSL_SOURCE_DIR} PREFIX ${OPENSSL_SOURCE_DIR}
@@ -71,13 +80,19 @@ else ()
USES_TERMINAL_BUILD TRUE USES_TERMINAL_BUILD TRUE
USES_TERMINAL_INSTALL 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) list(APPEND CMAKE_PREFIX_PATH ${CURL_INSTALL_DIR})
set(OPENSSL_ROOT_DIR ${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( ExternalProject_Add(
curl curl
DEPENDS OpenSSL DEPENDS ${CURL_DEPDENDENCY_TARGETS}
GIT_REPOSITORY ${CURL_REPO} GIT_REPOSITORY ${CURL_REPO}
GIT_TAG ${CURL_GIT_TAG} GIT_TAG ${CURL_GIT_TAG}
GIT_SHALLOW TRUE GIT_SHALLOW TRUE
@@ -99,4 +114,7 @@ else ()
USES_TERMINAL_BUILD TRUE USES_TERMINAL_BUILD TRUE
USES_TERMINAL_INSTALL TRUE USES_TERMINAL_INSTALL TRUE
) )
else ()
message("CURL is alredy built")
endif ()
endif () endif ()

View File

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