cmake: pass the current toolchains properties to the sub-projects

This commit is contained in:
Jacker 2024-01-24 21:55:58 +02:00
parent 4d90a3eb09
commit b05981e27c
No known key found for this signature in database
GPG key ID: 1ACCC1587C75F319

View file

@ -17,6 +17,21 @@ if (APPLE)
string(REPLACE ";" "$<SEMICOLON>" CMAKE_OSX_ARCHITECTURES_ "${CMAKE_OSX_ARCHITECTURES}")
endif()
if (ANDROID)
get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
foreach(dir ${dirs})
message(INFO "Adding include dir='${dir}'")
list(APPEND CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES ${dir})
list(APPEND CMAKE_C_STANDARD_INCLUDE_DIRECTORIES ${dir})
endforeach()
endif()
if (CMAKE_INSTALL_LIBDIR)
set(LIBS_LIB_DIR ${CMAKE_INSTALL_LIBDIR})
else()
set(LIBS_LIB_DIR lib)
endif()
# Force the BUNDLED_<name> to OFF if the FEATURE_<name> is OFF. No more unwanted stuff being built.
get_cmake_property(_variableNames VARIABLES)
list (SORT _variableNames)
@ -91,6 +106,87 @@ function(etl_find_lib_path list _out)
endwhile()
endfunction()
# ensure that all the required flags get passed to the sub-projects
# these include the msvc runtime, apple architechtures and android toolchain flags
function(etl_setup_cmake_args _list)
if (NOT ${_list})
set(${_list} "" PARENT_SCOPE)
endif()
list(APPEND ${_list} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG} -DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE})
if (APPLE)
list(APPEND ${_list} -DCMAKE_OSX_DEPLOYMENT_TARGET="${CMAKE_OSX_DEPLOYMENT_TARGET}"
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_})
endif()
if (MSVC)
list(APPEND ${_list} -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded$<$<CONFIG:Debug>:Debug>)
endif()
if (CMAKE_C_STANDARD_INCLUDE_DIRECTORIES)
list(APPEND ${_list} -DCMAKE_C_STANDARD_INCLUDE_DIRECTORIES=${CMAKE_C_STANDARD_INCLUDE_DIRECTORIES})
endif()
if (CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES)
list(APPEND ${_list} -DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=${CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES})
endif()
# Stuff that configures the Android toolchain file (needs to be kept up to date)
if (ANDROID)
if (ANDROID_TOOLCHAIN)
list(APPEND ${_list} -DANDROID_TOOLCHAIN=${ANDROID_TOOLCHAIN})
endif()
if (ANDROID_ABI)
list(APPEND ${_list} -DANDROID_ABI=${ANDROID_ABI})
endif()
if (ANDROID_PLATFORM)
list(APPEND ${_list} -DANDROID_PLATFORM=${ANDROID_PLATFORM})
endif()
if (ANDROID_STL)
list(APPEND ${_list} -DANDROID_STL=${ANDROID_STL})
endif()
if (ANDROID_PIE)
list(APPEND ${_list} -DANDROID_PIE=${ANDROID_PIE})
endif()
if (ANDROID_CPP_FEATURES)
list(APPEND ${_list} -DANDROID_CPP_FEATURES=${ANDROID_CPP_FEATURES})
endif()
if (ANDROID_ALLOW_UNDEFINED_SYMBOLS)
list(APPEND ${_list} -DANDROID_ALLOW_UNDEFINED_SYMBOLS=${ANDROID_ALLOW_UNDEFINED_SYMBOLS})
endif()
if (ANDROID_ARM_MODE)
list(APPEND ${_list} -DANDROID_ARM_MODE=${ANDROID_ARM_MODE})
endif()
if (ANDROID_DISABLE_FORMAT_STRING_CHECKS)
list(APPEND ${_list} -DANDROID_DISABLE_FORMAT_STRING_CHECKS=${ANDROID_DISABLE_FORMAT_STRING_CHECKS})
endif()
if (ANDROID_CCACHE)
list(APPEND ${_list} -DANDROID_CCACHE=${ANDROID_CCACHE})
endif()
endif()
if (CMAKE_TOOLCHAIN_FILE)
# list(APPEND ${_list} -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${CMAKE_TOOLCHAIN_FILE})
list(APPEND ${_list} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE})
endif()
if (ARGC GREATER 1)
list(APPEND ${_list} ${ARGN})
endif()
set(${_list} ${${_list}} PARENT_SCOPE)
endfunction()
if(UNIX)
if(CROSS_COMPILE32)
@ -143,6 +239,15 @@ if(FEATURE_SSL AND BUNDLED_WOLFSSL AND (BUILD_CLIENT OR BUILD_SERVER))
#endif()
etl_find_lib_path(WOLFSSL_BUNDLED_LIBRARY _WOLFSSL_OUTPUT)
etl_setup_cmake_args(wolfssl_cmake_args
-DWOLFSSL_EXAMPLES=OFF -DWOLFSSL_CRYPT_TESTS=OFF -DWOLFSSL_OCSP=yes
-DWOLFSSL_OPENSSLEXTRA=yes -DWOLFSSL_FAST_MATH=OFF -DWOLFSSL_HARDEN=yes
-DWOLFSSL_OPENSSL_EXTRA=yes -DBUILD_PWDBASED=yes -DWOLFSSL_PWDBASED=yes
-DBUILD_CRL=yes -DWOLFSSL_DES3=yes -DWOLFSSL_TLSX=yes -DWOLFSSL_CHACHA=OFF
-DBUILD_SHARED_LIBS=OFF -DWOLFSSL_CURL=yes -DWOLFSSL_OPENSSLALL=yes
-DWOLFSSL_ASIO=yes -DWOLFSSL_CRL=yes
-DCMAKE_INSTALL_PREFIX=${LIBS_BINARY_DIR}/wolfssl
)
ExternalProject_Add(bundled_wolfssl
DOWNLOAD_DIR ${LIBS_DOWNLOAD_DIR}
@ -152,19 +257,7 @@ if(FEATURE_SSL AND BUNDLED_WOLFSSL AND (BUILD_CLIENT OR BUILD_SERVER))
BINARY_DIR ${LIBS_BINARY_DIR}/wolfssl
BUILD_BYPRODUCTS ${_WOLFSSL_OUTPUT}
PREFIX ${LIBS_BINARY_DIR}/wolfssl
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
-DCMAKE_C_FLAGS=${WOLFSSL_FLAGS} -DCMAKE_OSX_DEPLOYMENT_TARGET="${CMAKE_OSX_DEPLOYMENT_TARGET}"
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_}
-DWOLFSSL_EXAMPLES=OFF -DWOLFSSL_CRYPT_TESTS=OFF -DWOLFSSL_OCSP=yes
-DWOLFSSL_OPENSSLEXTRA=yes -DWOLFSSL_FAST_MATH=OFF -DWOLFSSL_HARDEN=yes
-DWOLFSSL_OPENSSL_EXTRA=yes -DBUILD_PWDBASED=yes -DWOLFSSL_PWDBASED=yes
-DBUILD_CRL=yes -DWOLFSSL_DES3=yes -DWOLFSSL_TLSX=yes -DWOLFSSL_CHACHA=OFF
-DBUILD_SHARED_LIBS=OFF -DWOLFSSL_CURL=yes -DWOLFSSL_OPENSSLALL=yes
-DWOLFSSL_ASIO=yes -DWOLFSSL_CRL=yes
# -DCMAKE_POLICY_DEFAULT_CMP0091=NEW # This is just for MSCV
-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded$<$<CONFIG:Debug>:Debug> # No more patching needed!
-DCMAKE_INSTALL_PREFIX=${LIBS_BINARY_DIR}/wolfssl
CMAKE_ARGS ${wolfssl_cmake_args}
)
set_target_properties(bundled_wolfssl PROPERTIES FOLDER ${BUNDLED_TARGETS_FOLDER})
@ -295,9 +388,7 @@ if(BUNDLED_CURL AND (BUILD_CLIENT OR BUILD_SERVER))
set(CURL_DOWNLOAD_URL "https://github.com/curl/curl/releases/download/curl-8_5_0/curl-8.5.0.tar.gz")
set(CURL_DOWNLOAD_HASH "MD5=0bc69288b20ae165ff4b7d6d7bbe70d2")
set(CURL_CMAKE_ARGS
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
etl_setup_cmake_args(CURL_CMAKE_ARGS
-DBUILD_CURL_EXE=OFF -DBUILD_SHARED_LIBS=OFF -DENABLE_ARES=OFF -DENABLE_THREADED_RESOLVER=ON
-DENABLE_CURLDEBUG=OFF -DBUILD_TESTING=OFF -DENABLE_IPV6=ON -DENABLE_MANUAL=OFF -DCURL_USE_LIBPSL=OFF
-DUSE_NGHTTP2=OFF -DCURL_WINDOWS_SSPI=OFF -DCURL_ZLIB=AUTO -DCMAKE_USE_GSSAPI=OFF
@ -368,7 +459,6 @@ if(BUNDLED_CURL AND (BUILD_CLIENT OR BUILD_SERVER))
target_include_directories(bundled_curl_int INTERFACE "${LIBS_BINARY_DIR}/curl/include")
elseif (APPLE)
list(APPEND CURL_CMAKE_ARGS -DCMAKE_OSX_DEPLOYMENT_TARGET="${CMAKE_OSX_DEPLOYMENT_TARGET}" -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_})
if(BUNDLED_WOLFSSL)
include(CheckTypeSize)
check_type_size("long long" SIZEOF_LONG_LONG)
@ -469,17 +559,18 @@ if(BUNDLED_OPENAL AND BUILD_CLIENT)
endif()
etl_find_lib_path(OPENAL_BUNDLED_LIBRARIES _OPENAL_OUTPUT)
etl_setup_cmake_args(BUNDLED_OPENAL_CMAKE_ARGS
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR}/openal
-DLIBTYPE=STATIC -DFORCE_STATIC_VCRT=ON
-DALSOFT_UTILS=OFF -DALSOFT_NO_CONFIG_UTIL=ON -DALSOFT_EXAMPLES=OFF -DALSOFT_TESTS=OFF
-DALSOFT_CONFIG=OFF -DALSOFT_HRTF_DEFS=OFF -DALSOFT_AMBDEC_PRESETS=OFF
)
ExternalProject_Add(bundled_openal
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/openal
BINARY_DIR ${binary_dir}
BUILD_BYPRODUCTS ${_OPENAL_OUTPUT}
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR}/openal
-DLIBTYPE=STATIC -DFORCE_STATIC_VCRT=ON
-DALSOFT_UTILS=OFF -DALSOFT_NO_CONFIG_UTIL=ON -DALSOFT_EXAMPLES=OFF -DALSOFT_TESTS=OFF
-DALSOFT_CONFIG=OFF -DALSOFT_HRTF_DEFS=OFF -DALSOFT_AMBDEC_PRESETS=OFF
CMAKE_ARGS ${BUNDLED_OPENAL_CMAKE_ARGS}
INSTALL_COMMAND ""
)
set_target_properties(bundled_openal PROPERTIES FOLDER ${BUNDLED_TARGETS_FOLDER})
@ -490,16 +581,16 @@ if(BUNDLED_OPENAL AND BUILD_CLIENT)
target_compile_definitions(bundled_openal_int INTERFACE AL_LIBTYPE_STATIC)
elseif(UNIX)
set(OPENAL_BUNDLED_LIBRARIES "${CMAKE_CURRENT_BINARY_DIR}/libs/openal/libopenal.a")
etl_setup_cmake_args(BUNDLED_OPENAL_CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR}/openal -DLIBTYPE=STATIC
-DALSOFT_UTILS=OFF -DALSOFT_NO_CONFIG_UTIL=ON -DALSOFT_EXAMPLES=OFF -DALSOFT_TESTS=OFF
-DALSOFT_CONFIG=OFF -DALSOFT_HRTF_DEFS=OFF -DALSOFT_AMBDEC_PRESETS=OFF -DALSOFT_BACKEND_SNDIO=OFF
)
ExternalProject_Add(bundled_openal
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/openal
BINARY_DIR ${LIBS_BINARY_DIR}/openal
BUILD_BYPRODUCTS ${OPENAL_BUNDLED_LIBRARIES}
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR}/openal
-DCMAKE_OSX_DEPLOYMENT_TARGET="${CMAKE_OSX_DEPLOYMENT_TARGET}" -DLIBTYPE=STATIC
-DALSOFT_UTILS=OFF -DALSOFT_NO_CONFIG_UTIL=ON -DALSOFT_EXAMPLES=OFF -DALSOFT_TESTS=OFF
-DALSOFT_CONFIG=OFF -DALSOFT_HRTF_DEFS=OFF -DALSOFT_AMBDEC_PRESETS=OFF -DALSOFT_BACKEND_SNDIO=OFF
CMAKE_ARGS ${BUNDLED_OPENAL_CMAKE_ARGS}
INSTALL_COMMAND ""
)
ExternalProject_Get_Property(bundled_openal binary_dir)
@ -521,15 +612,12 @@ if(BUNDLED_OGG_VORBIS AND BUILD_CLIENT)
if (APPLE)
set(OGG_BUNDLED_LIBRARIES "${LIBS_BINARY_DIR}/ogg/lib/libogg${CMAKE_STATIC_LIBRARY_SUFFIX}")
etl_setup_cmake_args(BUNDLED_OGG_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBS_BINARY_DIR}/ogg)
ExternalProject_Add(bundled_ogg
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/ogg
BINARY_DIR ${LIBS_BINARY_DIR}/ogg
BUILD_BYPRODUCTS ${OGG_BUNDLED_LIBRARIES}
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_OSX_DEPLOYMENT_TARGET="${CMAKE_OSX_DEPLOYMENT_TARGET}"
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_}
-DCMAKE_INSTALL_PREFIX=${LIBS_BINARY_DIR}/ogg
CMAKE_ARGS ${BUNDLED_OGG_CMAKE_ARGS}
)
add_dependencies(bundled_ogg_full bundled_ogg)
@ -537,17 +625,18 @@ if(BUNDLED_OGG_VORBIS AND BUILD_CLIENT)
target_link_libraries(bundled_ogg_full INTERFACE "${OGG_BUNDLED_LIBRARIES}")
set(VORBIS_BUNDLED_LIBRARIES "${LIBS_BINARY_DIR}/vorbis/lib/libvorbis${CMAKE_STATIC_LIBRARY_SUFFIX}" "${LIBS_BINARY_DIR}/vorbis/lib/libvorbisfile${CMAKE_STATIC_LIBRARY_SUFFIX}")
etl_setup_cmake_args(BUNDLED_OGG_VORBIS_CMAKE_ARGS
-DCMAKE_LIBRARY_PATH=${LIBS_BINARY_DIR}/ogg
-DOGG_ROOT=${LIBS_BINARY_DIR}/ogg
-DCMAKE_INSTALL_PREFIX=${LIBS_BINARY_DIR}/vorbis
)
ExternalProject_Add(bundled_ogg_vorbis
DEPENDS bundled_ogg
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/vorbis
BINARY_DIR ${LIBS_BINARY_DIR}/vorbis
BUILD_BYPRODUCTS ${VORBIS_BUNDLED_LIBRARIES}
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_OSX_DEPLOYMENT_TARGET="${CMAKE_OSX_DEPLOYMENT_TARGET}"
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_} -DCMAKE_LIBRARY_PATH=${LIBS_BINARY_DIR}/ogg
-DOGG_ROOT=${LIBS_BINARY_DIR}/ogg
-DCMAKE_INSTALL_PREFIX=${LIBS_BINARY_DIR}/vorbis
CMAKE_ARGS ${BUNDLED_OGG_VORBIS_CMAKE_ARGS}
)
add_dependencies(bundled_ogg_full bundled_ogg_vorbis)
@ -817,22 +906,22 @@ if(BUNDLED_SDL AND BUILD_CLIENT)
set(SDL2_BUNDLED_LIBRARIES ${SDL2_BUNDLED_LIBRARIES} optimized "${LIBS_BINARY_DIR}/sdl2/lib/${CMAKE_STATIC_LIBRARY_PREFIX}SDL2-static${CMAKE_STATIC_LIBRARY_SUFFIX}" debug "${LIBS_BINARY_DIR}/sdl2/lib/${CMAKE_STATIC_LIBRARY_PREFIX}SDL2-staticd${CMAKE_STATIC_LIBRARY_SUFFIX}")
else()
set(SDL2_BUNDLED_LIBRARIES ${SDL2_BUNDLED_LIBRARIES} optimized "${LIBS_BINARY_DIR}/sdl2/lib/${CMAKE_STATIC_LIBRARY_PREFIX}SDL2${CMAKE_STATIC_LIBRARY_SUFFIX}" debug "${LIBS_BINARY_DIR}/sdl2/lib/${CMAKE_STATIC_LIBRARY_PREFIX}SDL2d${CMAKE_STATIC_LIBRARY_SUFFIX}")
endif()
else()
set(SDL2_BUNDLED_LIBRARIES optimized "${LIBS_BINARY_DIR}/sdl2/${CMAKE_INSTALL_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}SDL2${CMAKE_STATIC_LIBRARY_SUFFIX}" debug "${LIBS_BINARY_DIR}/sdl2/${CMAKE_INSTALL_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}SDL2d${CMAKE_STATIC_LIBRARY_SUFFIX}")
endif()
elseif (ANDROID)
set(SDL2_BUNDLED_LIBRARIES "${LIBS_BINARY_DIR}/sdl2/${LIBS_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}SDL2${CMAKE_STATIC_LIBRARY_SUFFIX}")
else()
set(SDL2_BUNDLED_LIBRARIES optimized "${LIBS_BINARY_DIR}/sdl2/${LIBS_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}SDL2${CMAKE_STATIC_LIBRARY_SUFFIX}" debug "${LIBS_BINARY_DIR}/sdl2/${LIBS_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}SDL2d${CMAKE_STATIC_LIBRARY_SUFFIX}")
endif()
set(SDL_CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}
-DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE} -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_OSX_DEPLOYMENT_TARGET="${CMAKE_OSX_DEPLOYMENT_TARGET}"
-DSDL_RENDER_D3D=OFF -DSDL_RENDER_METAL=OFF -DSDL_RENDER=OFF
-DSDL_DUMMYVIDEO=OFF -DSDL_OPENGL=ON -DSDL_VULKAN=OFF
-DSDL_KMSDRM=OFF
-DSDL_SHARED=OFF -DSDL_SNDIO=OFF -DSDL_LIBC=ON
-DCMAKE_INSTALL_PREFIX=${LIBS_BINARY_DIR}/sdl2)
etl_setup_cmake_args(SDL_CMAKE_ARGS
-DSDL_RENDER_D3D=OFF -DSDL_RENDER_METAL=OFF -DSDL_RENDER=OFF
-DSDL_DUMMYVIDEO=OFF -DSDL_OPENGL=ON -DSDL_VULKAN=OFF -DSDL_KMSDRM=OFF
-DSDL_SHARED=OFF -DSDL_SNDIO=OFF -DSDL_LIBC=ON
-DCMAKE_INSTALL_PREFIX=${LIBS_BINARY_DIR}/sdl2)
# Bye bye X11
if(APPLE)
set(SDL_CMAKE_ARGS ${SDL_CMAKE_ARGS} -DSDL_VIDEO_X11=OFF -DSDL_X11=OFF -DSDL_VIDEO_X11_XINPUT=OFF -DSDL_WAYLAND=OFF -DSDL_OPENGLES=OFF -DSDL_METAL=OFF -DSDL_COCOA=ON -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_})
set(SDL_CMAKE_ARGS ${SDL_CMAKE_ARGS} -DSDL_VIDEO_X11=OFF -DSDL_X11=OFF -DSDL_VIDEO_X11_XINPUT=OFF -DSDL_WAYLAND=OFF -DSDL_OPENGLES=OFF -DSDL_METAL=OFF -DSDL_COCOA=ON)
elseif(UNIX AND NOT APPLE)
# Wayland requires OpenglES support so that's why its enabled here.
set(SDL_CMAKE_ARGS ${SDL_CMAKE_ARGS} -DSDL_X11=ON -DSDL_VIDEO_X11=ON -DSDL_VIDEO_X11_XINPUT=ON -DSDL_WAYLAND=ON -DSDL_OPENGLES=ON)
@ -929,10 +1018,11 @@ if(BUNDLED_MINIZIP AND (BUILD_CLIENT OR BUILD_SERVER))
add_library(bundled_minizip STATIC ${MINIZIP_LIB_SRC} ${MINIZIP_LIB_HEADERS})
target_include_directories(bundled_minizip PUBLIC "${CMAKE_CURRENT_LIST_DIR}/minizip")
if(APPLE)
if(APPLE OR ANDROID)
# The ioapi requires this since OSX already uses 64 fileapi (there is no fseek64 etc)
# the same for Android and most BSD's
target_compile_definitions(bundled_minizip PUBLIC USE_FILE32API)
endif(APPLE)
endif()
if(BUNDLED_ZLIB)
target_link_libraries(bundled_minizip bundled_zlib)
@ -989,17 +1079,17 @@ if(BUNDLED_JPEG AND BUILD_CLIENT)
configure_file(${JPEG_LIB}/jconfigint.h.cmake ${JPEG_LIB}/jconfigint.h)
etl_find_lib_path(JPEG_BUNDLED_LIBRARIES _JPEG_OUTPUT)
etl_setup_cmake_args(bundled_jpeg_cmake_args
-DENABLE_SHARED=OFF -DENABLE_STATIC=ON -DREQUIRE_SIMD=OFF -DWITH_12BIT=OFF
-DWITH_ARITH_DEC=ON -DWITH_ARITH_ENC=ON -DWITH_JAVA=OFF -DWITH_JPEG7=OFF -DWITH_JPEG8=ON
-DWITH_MEM_SRCDST=ON -DWITH_SIMD=OFF -DWITH_TURBOJPEG=ON
)
ExternalProject_Add(bundled_jpeg
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/jpegturbo
BINARY_DIR ${LIBS_BINARY_DIR}/jpegturbo
BUILD_BYPRODUCTS ${_JPEG_OUTPUT}
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DENABLE_SHARED=OFF -DENABLE_STATIC=ON -DREQUIRE_SIMD=OFF -DWITH_12BIT=OFF
-DWITH_ARITH_DEC=ON -DWITH_ARITH_ENC=ON -DWITH_JAVA=OFF -DWITH_JPEG7=OFF -DWITH_JPEG8=ON
-DWITH_MEM_SRCDST=ON -DWITH_SIMD=OFF -DWITH_TURBOJPEG=ON
-DCMAKE_OSX_DEPLOYMENT_TARGET="${CMAKE_OSX_DEPLOYMENT_TARGET}" -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_}
CMAKE_ARGS ${bundled_jpeg_cmake_args}
INSTALL_COMMAND ""
)
set_target_properties(bundled_jpeg PROPERTIES FOLDER ${BUNDLED_TARGETS_FOLDER})
@ -1020,6 +1110,8 @@ if(BUNDLED_PNG AND BUILD_CLIENT)
set(PNG_BUNDLED_LIBRARIES optimized "${binary_dir}/Release/libpng16_static${CMAKE_STATIC_LIBRARY_SUFFIX}" debug "${binary_dir}/Debug/libpng16_staticd${CMAKE_STATIC_LIBRARY_SUFFIX}")
elseif(MSVC)
set(PNG_BUNDLED_LIBRARIES optimized "${binary_dir}/libpng16_static${CMAKE_STATIC_LIBRARY_SUFFIX}" debug "${binary_dir}/libpng16_staticd${CMAKE_STATIC_LIBRARY_SUFFIX}")
elseif(ANDROID)
set(PNG_BUNDLED_LIBRARIES optimized "${binary_dir}/libpng16${CMAKE_STATIC_LIBRARY_SUFFIX}" debug "${binary_dir}/libpng16d${CMAKE_STATIC_LIBRARY_SUFFIX}")
else()
set(PNG_BUNDLED_LIBRARIES "${binary_dir}/libpng${CMAKE_STATIC_LIBRARY_SUFFIX}")
endif()
@ -1036,17 +1128,17 @@ if(BUNDLED_PNG AND BUILD_CLIENT)
endif()
etl_find_lib_path(PNG_BUNDLED_LIBRARIES _PNG_OUTPUT)
etl_setup_cmake_args(bundled_png_cmake_args
-DPNG_SHARED=OFF -DPNG_STATIC=ON -DPNG_BUILD_ZLIB=ON -DZLIB_INCLUDE_DIRS=${ZLIB_INCLUDE_DIR}
-DPNG_TESTS=OFF -DPNG_FRAMEWORK=OFF -DPNG_DEBUG=OFF -DPNG_HARDWARE_OPTIMIZATIONS=${PNG_OPTIMIZATION} -DAWK=OFF
)
ExternalProject_Add(bundled_png
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/libpng
BINARY_DIR ${LIBS_BINARY_DIR}/libpng
BUILD_BYPRODUCTS ${_PNG_OUTPUT}
PREFIX ${LIBS_BINARY_DIR}/libpng
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DPNG_SHARED=OFF -DPNG_STATIC=ON -DPNG_BUILD_ZLIB=ON -DZLIB_INCLUDE_DIRS=${ZLIB_INCLUDE_DIR}
-DPNG_TESTS=OFF -DPNG_FRAMEWORK=OFF -DPNG_DEBUG=OFF -DPNG_HARDWARE_OPTIMIZATIONS=${PNG_OPTIMIZATION} -DAWK=OFF
-DCMAKE_OSX_DEPLOYMENT_TARGET="${CMAKE_OSX_DEPLOYMENT_TARGET}" -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_}
CMAKE_ARGS ${bundled_png_cmake_args}
INSTALL_COMMAND ""
)
set_target_properties(bundled_png PROPERTIES FOLDER ${BUNDLED_TARGETS_FOLDER})
@ -1072,18 +1164,17 @@ if(BUNDLED_FREETYPE AND BUILD_CLIENT)
endif()
etl_find_lib_path(BUNDLED_FREETYPE_LIBRARIES _FREETYPE_OUTPUT)
etl_find_lib_path(BUNDLED_FREETYPE_CMAKE_ARGS
DCMAKE_DISABLE_FIND_PACKAGE_ZLIB=ON -DCMAKE_DISABLE_FIND_PACKAGE_BZip2=ON -DCMAKE_DISABLE_FIND_PACKAGE_PNG=ON
-DCMAKE_DISABLE_FIND_PACKAGE_HarfBuzz=ON -DCMAKE_DISABLE_FIND_PACKAGE_BrotliDec=ON
-DFT_WITH_ZLIB=OFF -DFT_WITH_BZIP2=OFF -DFT_WITH_PNG=OFF -DFT_WITH_HARFBUZZ=OFF -DFT_WITH_BROTLI=OFF -DDISABLE_FORCE_DEBUG_POSTFIX=ON
)
ExternalProject_Add(bundled_freetype
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/freetype
BINARY_DIR ${binary_dir}
BUILD_BYPRODUCTS ${_FREETYPE_OUTPUT}
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_OSX_DEPLOYMENT_TARGET="${CMAKE_OSX_DEPLOYMENT_TARGET}"
-DCMAKE_DISABLE_FIND_PACKAGE_ZLIB=ON -DCMAKE_DISABLE_FIND_PACKAGE_BZip2=ON -DCMAKE_DISABLE_FIND_PACKAGE_PNG=ON
-DCMAKE_DISABLE_FIND_PACKAGE_HarfBuzz=ON -DCMAKE_DISABLE_FIND_PACKAGE_BrotliDec=ON
-DFT_WITH_ZLIB=OFF -DFT_WITH_BZIP2=OFF -DFT_WITH_PNG=OFF -DFT_WITH_HARFBUZZ=OFF -DFT_WITH_BROTLI=OFF -DDISABLE_FORCE_DEBUG_POSTFIX=ON
-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_}
CMAKE_ARGS ${BUNDLED_FREETYPE_CMAKE_ARGS}
INSTALL_COMMAND ""
)
set_target_properties(bundled_freetype PROPERTIES FOLDER ${BUNDLED_TARGETS_FOLDER})