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:
106
3rdParty/curl/ext/CMakeLists.txt
vendored
106
3rdParty/curl/ext/CMakeLists.txt
vendored
@@ -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,47 +58,63 @@ if (APPLE)
|
||||
USES_TERMINAL_INSTALL TRUE
|
||||
)
|
||||
else ()
|
||||
ExternalProject_Add(
|
||||
OpenSSL
|
||||
PREFIX ${OPENSSL_SOURCE_DIR}
|
||||
GIT_REPOSITORY ${OPENSSL_REPO}
|
||||
GIT_TAG ${OPENSSL_TAG}
|
||||
GIT_SHALLOW TRUE
|
||||
CONFIGURE_COMMAND ${PERL_EXECUTABLE} ${OPENSSL_PERL_CONFIGURE_COMMAND} --prefix=${OPENSSL_INSTALL_DIR} --openssldir=${OPENSSL_INSTALL_DIR}
|
||||
BUILD_COMMAND ${OPENSSL_MAKE_COMMAND}
|
||||
INSTALL_COMMAND ${OPENSSL_MAKE_COMMAND} install
|
||||
INSTALL_DIR ${OPENSSL_INSTALL_DIR}
|
||||
USES_TERMINAL_DOWNLOAD TRUE
|
||||
USES_TERMINAL_CONFIGURE TRUE
|
||||
USES_TERMINAL_BUILD TRUE
|
||||
USES_TERMINAL_INSTALL TRUE
|
||||
)
|
||||
|
||||
ExternalProject_Get_Property(OpenSSL INSTALL_DIR)
|
||||
set(OPENSSL_ROOT_DIR ${INSTALL_DIR})
|
||||
|
||||
ExternalProject_Add(
|
||||
curl
|
||||
DEPENDS OpenSSL
|
||||
GIT_REPOSITORY ${CURL_REPO}
|
||||
GIT_TAG ${CURL_GIT_TAG}
|
||||
GIT_SHALLOW TRUE
|
||||
SOURCE_DIR ${CMAKE_BINARY_DIR}/curl
|
||||
BINARY_DIR ${CMAKE_BINARY_DIR}/curl-build
|
||||
CMAKE_GENERATOR ${CMAKE_GENERATOR}
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE}
|
||||
-DCMAKE_BUILD_TYPE:STRING=Release
|
||||
-DCURL_USE_OPENSSL:BOOL=ON
|
||||
-DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR}
|
||||
-DOPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR}
|
||||
-DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/INSTALL
|
||||
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}/curl-build --config Release
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} --install ${CMAKE_BINARY_DIR}/curl-build --config Release
|
||||
USES_TERMINAL_DOWNLOAD TRUE
|
||||
USES_TERMINAL_CONFIGURE TRUE
|
||||
USES_TERMINAL_BUILD TRUE
|
||||
USES_TERMINAL_INSTALL TRUE
|
||||
)
|
||||
endif ()
|
||||
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}
|
||||
GIT_REPOSITORY ${OPENSSL_REPO}
|
||||
GIT_TAG ${OPENSSL_TAG}
|
||||
GIT_SHALLOW TRUE
|
||||
CONFIGURE_COMMAND ${PERL_EXECUTABLE} ${OPENSSL_PERL_CONFIGURE_COMMAND} --prefix=${OPENSSL_INSTALL_DIR} --openssldir=${OPENSSL_INSTALL_DIR}
|
||||
BUILD_COMMAND ${OPENSSL_MAKE_COMMAND}
|
||||
INSTALL_COMMAND ${OPENSSL_MAKE_COMMAND} install
|
||||
INSTALL_DIR ${OPENSSL_INSTALL_DIR}
|
||||
USES_TERMINAL_DOWNLOAD TRUE
|
||||
USES_TERMINAL_CONFIGURE TRUE
|
||||
USES_TERMINAL_BUILD TRUE
|
||||
USES_TERMINAL_INSTALL TRUE
|
||||
)
|
||||
else ()
|
||||
set(CURL_DEPDENDENCY_TARGETS OpenSSL::SSL OpenSSL::Crypto)
|
||||
message("OpenSSL is already built")
|
||||
endif()
|
||||
|
||||
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 ${CURL_DEPDENDENCY_TARGETS}
|
||||
GIT_REPOSITORY ${CURL_REPO}
|
||||
GIT_TAG ${CURL_GIT_TAG}
|
||||
GIT_SHALLOW TRUE
|
||||
SOURCE_DIR ${CMAKE_BINARY_DIR}/curl
|
||||
BINARY_DIR ${CMAKE_BINARY_DIR}/curl-build
|
||||
CMAKE_GENERATOR ${CMAKE_GENERATOR}
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE}
|
||||
-DCMAKE_BUILD_TYPE:STRING=Release
|
||||
-DCURL_USE_OPENSSL:BOOL=ON
|
||||
-DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR}
|
||||
-DOPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR}
|
||||
-DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/INSTALL
|
||||
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL
|
||||
BUILD_COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}/curl-build --config Release
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} --install ${CMAKE_BINARY_DIR}/curl-build --config Release
|
||||
USES_TERMINAL_DOWNLOAD TRUE
|
||||
USES_TERMINAL_CONFIGURE TRUE
|
||||
USES_TERMINAL_BUILD TRUE
|
||||
USES_TERMINAL_INSTALL TRUE
|
||||
)
|
||||
else ()
|
||||
message("CURL is alredy built")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
@@ -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)
|
||||
@@ -62,27 +62,20 @@ endif ()
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user