cmake: cross compilation fixes

This commit is contained in:
Jacker 2024-02-04 00:34:01 +02:00
parent f3371620e6
commit 4f40f58f31
No known key found for this signature in database
GPG key ID: 1ACCC1587C75F319

View file

@ -374,6 +374,15 @@ if (FEATURE_SSL AND BUNDLED_OPENSSL AND (BUILD_CLIENT OR BUILD_SERVER))
set(OPENSSL_BUNDLED_LIBRARY "${LIBS_BINARY_DIR}/openssl/${openssl_lib_folder}/libssl.a" "${LIBS_BINARY_DIR}/openssl/${openssl_lib_folder}/libcrypto.a")
if(CMAKE_CROSSCOMPILING AND CMAKE_C_COMPILER_ID STREQUAL "GNU")
string(REGEX REPLACE "gcc$" "" COMPILER_PREFIX "${CMAKE_C_COMPILER}")
if(COMPILER_PREFIX)
SET(OPENSSL_BUILD ${OPENSSL_BUILD} --sysroot=${CMAKE_SYSROOT} --cross-compile-prefix=${COMPILER_PREFIX})
else()
SET(OPENSSL_BUILD ${OPENSSL_BUILD} --sysroot=${CMAKE_SYSROOT})
endif()
endif()
# FIXME:
# check all the locations of the files (runtime files?!)
# and enable ssl in CURL
@ -382,7 +391,7 @@ if (FEATURE_SSL AND BUNDLED_OPENSSL AND (BUILD_CLIENT OR BUILD_SERVER))
DOWNLOAD_DIR ${LIBS_DOWNLOAD_DIR}
URL https://github.com/openssl/openssl/releases/download/openssl-3.2.0/openssl-3.2.0.tar.gz
URL_HASH MD5=7903549a14abebc5c323ce4e85f2cbb2
PREFIX ${OPENSSL_PREFIX}
PREFIX ${OPENSSL_PREFIX}
CONFIGURE_COMMAND ${OPENSSL_BUILD} --prefix=<INSTALL_DIR>
--openssldir=<INSTALL_DIR> --libdir=${openssl_lib_folder}
BUILD_COMMAND ${MAKE} -j ${LIBS_COMPILE_FLAGS}
@ -392,11 +401,11 @@ if (FEATURE_SSL AND BUNDLED_OPENSSL AND (BUILD_CLIENT OR BUILD_SERVER))
)
# also generates libcrypto.a
set(OPENSSL_BUNDLED_INCLUDE_DIR "${LIBS_BINARY_DIR}/openssl/include")
set(OPENSSL_BUNDLED_INCLUDE_DIR "${OPENSSL_PREFIX}/include")
add_dependencies(bundled_openssl_int bundled_openssl)
target_link_libraries(bundled_openssl_int INTERFACE ${OPENSSL_BUNDLED_LIBRARY})
target_include_directories(bundled_openssl_int INTERFACE "${LIBS_BINARY_DIR}/openssl/include")
target_include_directories(bundled_openssl_int INTERFACE "${OPENSSL_PREFIX}/include")
endif()
else()
add_custom_target(bundled_openssl)
@ -419,7 +428,7 @@ if(BUNDLED_CURL AND (BUILD_CLIENT OR BUILD_SERVER))
-DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON -DCURL_DISABLE_TELNET=ON -DCURL_DISABLE_DICT=ON
-DCURL_DISABLE_FILE=ON -DCURL_DISABLE_TFTP=ON -DCURL_DISABLE_RTSP=ON -DCURL_DISABLE_POP3=ON
-DCURL_DISABLE_IMAP=ON -DCURL_DISABLE_SMTP=ON -DCURL_DISABLE_GOPHER=ON -DENABLE_UNIX_SOCKETS=ON
-DCMAKE_INSTALL_PREFIX=${LIBS_BINARY_DIR}/curl)
)
set(binary_dir "${LIBS_BINARY_DIR}/curl")
if (WIN32)
@ -462,13 +471,9 @@ if(BUNDLED_CURL AND (BUILD_CLIENT OR BUILD_SERVER))
# -DHTTP_ONLY=ON
ExternalProject_Add(bundled_curl
DEPENDS bundled_wolfssl bundled_openssl
DOWNLOAD_DIR ${LIBS_DOWNLOAD_DIR}
URL ${CURL_DOWNLOAD_URL}
URL_HASH ${CURL_DOWNLOAD_HASH}
SOURCE_DIR "${LIBS_DOWNLOAD_SRC_DIR}/curl"
PREFIX ${LIBS_BINARY_DIR}/curl
BINARY_DIR ${binary_dir}
BUILD_BYPRODUCTS ${_CURL_OUTPUT}
CMAKE_ARGS ${CURL_CMAKE_ARGS}
)
@ -505,12 +510,9 @@ if(BUNDLED_CURL AND (BUILD_CLIENT OR BUILD_SERVER))
# -DHTTP_ONLY=ON
ExternalProject_Add(bundled_curl
DEPENDS bundled_wolfssl bundled_openssl
DOWNLOAD_DIR ${LIBS_DOWNLOAD_DIR}
URL ${CURL_DOWNLOAD_URL}
URL_HASH ${CURL_DOWNLOAD_HASH}
SOURCE_DIR "${LIBS_DOWNLOAD_SRC_DIR}/curl"
PREFIX ${LIBS_BINARY_DIR}/curl
BINARY_DIR ${binary_dir}
BUILD_BYPRODUCTS ${_CURL_OUTPUT}
CMAKE_ARGS ${CURL_CMAKE_ARGS}
)
@ -535,7 +537,12 @@ if(BUNDLED_CURL AND (BUILD_CLIENT OR BUILD_SERVER))
-DCMAKE_INCLUDE_PATH=${LIBS_BINARY_DIR}/wolfssl/include
)
elseif(BUNDLED_OPENSSL)
list(APPEND CURL_CMAKE_ARGS -DOPENSSL_ROOT_DIR=${OPENSSL_PREFIX} -DCURL_USE_OPENSSL=ON -DCURL_USE_WOLFSSL=OFF)
if (CMAKE_CROSSCOMPILING AND CMAKE_SYSROOT)
file(RELATIVE_PATH OPENSSL_FIXED_PREFIX ${CMAKE_SYSROOT} ${OPENSSL_PREFIX})
else()
set(OPENSSL_FIXED_PREFIX ${OPENSSL_PREFIX})
endif()
list(APPEND CURL_CMAKE_ARGS -DOPENSSL_ROOT_DIR=${OPENSSL_PREFIX} -DOPENSSL_USE_STATIC_LIBS=ON -DCURL_USE_OPENSSL=ON -DCURL_USE_WOLFSSL=OFF)
else()
message(WARNING "Using system OpenSSL")
list(APPEND CURL_CMAKE_ARGS -DCURL_USE_OPENSSL=ON -DCURL_USE_WOLFSSL=OFF)
@ -547,12 +554,9 @@ if(BUNDLED_CURL AND (BUILD_CLIENT OR BUILD_SERVER))
ExternalProject_Add(bundled_curl
DEPENDS bundled_wolfssl bundled_openssl
DOWNLOAD_DIR ${LIBS_DOWNLOAD_DIR}
URL ${CURL_DOWNLOAD_URL}
URL_HASH ${CURL_DOWNLOAD_HASH}
SOURCE_DIR "${LIBS_DOWNLOAD_SRC_DIR}/curl"
PREFIX ${LIBS_BINARY_DIR}/curl
BINARY_DIR ${binary_dir}
BUILD_BYPRODUCTS ${_CURL_OUTPUT}
CMAKE_ARGS ${CURL_CMAKE_ARGS}
)
@ -570,7 +574,7 @@ endif()
#-----------------------------------------------------------------
if(BUNDLED_OPENAL AND BUILD_CLIENT)
add_library(bundled_openal_int INTERFACE)
set(binary_dir "${LIBS_BINARY_DIR}/openal")
set(binary_dir "${LIBS_BINARY_DIR}/openal")
if (WIN32)
if(MSVC)
@ -583,11 +587,11 @@ if(BUNDLED_OPENAL AND BUILD_CLIENT)
etl_setup_cmake_args(BUNDLED_OPENAL_CMAKE_ARGS
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
-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
-DALSOFT_TESTS=OFF -DALSOFT_CONFIG=OFF -DALSOFT_HRTF_DEFS=OFF -DALSOFT_AMBDEC_PRESETS=OFF
)
ExternalProject_Add(bundled_openal
PREFIX ${binary_dir}
PREFIX ${binary_dir}
URL ${CMAKE_CURRENT_LIST_DIR}/openal
BUILD_BYPRODUCTS ${_OPENAL_OUTPUT}
CMAKE_ARGS ${BUNDLED_OPENAL_CMAKE_ARGS}
@ -605,8 +609,8 @@ if(BUNDLED_OPENAL AND BUILD_CLIENT)
-DALSOFT_CONFIG=OFF -DALSOFT_HRTF_DEFS=OFF -DALSOFT_AMBDEC_PRESETS=OFF -DALSOFT_BACKEND_SNDIO=OFF
)
ExternalProject_Add(bundled_openal
PREFIX ${binary_dir}
URL ${CMAKE_CURRENT_LIST_DIR}/openal
PREFIX ${binary_dir}
URL ${CMAKE_CURRENT_LIST_DIR}/openal
BUILD_BYPRODUCTS ${OPENAL_BUNDLED_LIBRARIES}
CMAKE_ARGS ${BUNDLED_OPENAL_CMAKE_ARGS}
)
@ -630,7 +634,7 @@ if(BUNDLED_OGG_VORBIS AND BUILD_CLIENT)
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
PREFIX ${LIBS_BINARY_DIR}/ogg
PREFIX ${LIBS_BINARY_DIR}/ogg
URL ${CMAKE_CURRENT_LIST_DIR}/ogg
BUILD_BYPRODUCTS ${OGG_BUNDLED_LIBRARIES}
CMAKE_ARGS ${BUNDLED_OGG_CMAKE_ARGS}
@ -649,7 +653,7 @@ if(BUNDLED_OGG_VORBIS AND BUILD_CLIENT)
ExternalProject_Add(bundled_ogg_vorbis
DEPENDS bundled_ogg
PREFIX ${LIBS_BINARY_DIR}/vorbis
PREFIX ${LIBS_BINARY_DIR}/vorbis
URL ${CMAKE_CURRENT_LIST_DIR}/vorbis
BUILD_BYPRODUCTS ${VORBIS_BUNDLED_LIBRARIES}
CMAKE_ARGS ${BUNDLED_OGG_VORBIS_CMAKE_ARGS}
@ -798,7 +802,7 @@ if(BUNDLED_OGG_VORBIS AND BUILD_CLIENT)
set(OGG_BUNDLED_LIBRARIES "${CMAKE_CURRENT_BINARY_DIR}/libs/ogg/lib/libogg.a")
ExternalProject_Add(
bundled_ogg
PREFIX ${LIBS_BINARY_DIR}/ogg
PREFIX ${LIBS_BINARY_DIR}/ogg
URL ${CMAKE_CURRENT_LIST_DIR}/ogg
PATCH_COMMAND autoreconf -fiv
BUILD_BYPRODUCTS ${OGG_BUNDLED_LIBRARIES}
@ -821,7 +825,7 @@ if(BUNDLED_OGG_VORBIS AND BUILD_CLIENT)
ExternalProject_Add(
bundled_ogg_vorbis
DEPENDS bundled_ogg
PREFIX ${LIBS_BINARY_DIR}/vorbis
PREFIX ${LIBS_BINARY_DIR}/vorbis
URL ${CMAKE_CURRENT_LIST_DIR}/vorbis
#PATCH_COMMAND ./autogen.sh
BUILD_BYPRODUCTS ${OGG_VORBIS_BUNDLED_LIBRARIES}
@ -853,7 +857,7 @@ if(BUNDLED_LUA AND BUILD_MOD)
add_library(bundled_lua_int INTERFACE)
target_compile_definitions(bundled_lua_int INTERFACE BUNDLED_LUA)
if (WIN32 OR APPLE)
if (WIN32 OR APPLE OR CMAKE_CROSSCOMPILING)
set(LUA_LIB "${CMAKE_CURRENT_LIST_DIR}/lua/src")
FILE(GLOB LUA_LIB_SRC ${LUA_LIB}/*.c)
@ -934,7 +938,7 @@ if(BUNDLED_SDL AND BUILD_CLIENT)
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)
-DSDL_SHARED=OFF -DSDL_SNDIO=OFF -DSDL_LIBC=ON -DSDL_PIPEWIRE=OFF -DSDL_JACK=OFF)
# Bye bye X11
if(APPLE)
@ -962,7 +966,7 @@ if(BUNDLED_SDL AND BUILD_CLIENT)
ExternalProject_Add(bundled_sdl
URL https://github.com/libsdl-org/SDL/archive/release-2.26.4.tar.gz
URL_HASH MD5=8b79847e3bd0f279e242d7fccb272f93
PREFIX ${LIBS_BINARY_DIR}/sdl2
PREFIX ${LIBS_BINARY_DIR}/sdl2
PATCH_COMMAND ${SDL_PATCH_COMMAND}
BUILD_BYPRODUCTS ${_SDL_OUTPUT}
CMAKE_ARGS ${SDL_CMAKE_ARGS}
@ -1070,12 +1074,12 @@ if(BUNDLED_JPEG AND BUILD_CLIENT)
check_include_file(stddef.h HAVE_STDDEF_H)
check_include_file(stdlib.h HAVE_STDLIB_H)
# Set SIZEOF_SIZE_T @SIZE_T@ for 64 or 32 bit
if(ETL_64BITS)
set(SIZEOF_SIZE_T 8)
else()
set(SIZEOF_SIZE_T 4)
endif()
# Set SIZEOF_SIZE_T @SIZE_T@ for 64 or 32 bit
if(ETL_64BITS)
set(SIZEOF_SIZE_T 8)
else()
set(SIZEOF_SIZE_T 4)
endif()
set(binary_dir "${LIBS_BINARY_DIR}/jpegturbo")
@ -1170,7 +1174,7 @@ if(BUNDLED_FREETYPE AND BUILD_CLIENT)
endif()
etl_find_lib_path(BUNDLED_FREETYPE_LIBRARIES _FREETYPE_OUTPUT)
etl_setup_cmake_args(BUNDLED_FREETYPE_CMAKE_ARGS
etl_setup_cmake_args(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
@ -1178,7 +1182,7 @@ if(BUNDLED_FREETYPE AND BUILD_CLIENT)
ExternalProject_Add(bundled_freetype
URL ${CMAKE_CURRENT_LIST_DIR}/freetype
PREFIX ${binary_dir}
PREFIX ${binary_dir}
BUILD_BYPRODUCTS ${_FREETYPE_OUTPUT}
CMAKE_ARGS ${BUNDLED_FREETYPE_CMAKE_ARGS}
)