From 4f40f58f3100468791ce689bd0de9b132562be38 Mon Sep 17 00:00:00 2001 From: Jacker Date: Sun, 4 Feb 2024 00:34:01 +0200 Subject: [PATCH] cmake: cross compilation fixes --- CMakeLists.txt | 74 ++++++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 35 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 568928b5..7b0d4a24 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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= --openssldir= --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} )