Allow cross-compilation from Linux to macOS

This commit is contained in:
heinrich5991 2017-10-25 16:57:25 +02:00
parent a38f0f7dac
commit ab2738ca1b
13 changed files with 112 additions and 52 deletions

View file

@ -85,7 +85,6 @@ function(set_extra_dirs_lib VARIABLE NAME)
set("${TYPE}_${VARIABLE}_LIBDIR" "${DIR}" PARENT_SCOPE) set("${TYPE}_${VARIABLE}_LIBDIR" "${DIR}" PARENT_SCOPE)
set("EXTRA_${VARIABLE}_LIBDIR" "${DIR}" PARENT_SCOPE) set("EXTRA_${VARIABLE}_LIBDIR" "${DIR}" PARENT_SCOPE)
endif() endif()
set("${TYPE}_${VARIABLE}_INCLUDEDIR" "ddnet-libs/${NAME}/include" PARENT_SCOPE)
endfunction() endfunction()
function(set_extra_dirs_include VARIABLE NAME LIBRARY) function(set_extra_dirs_include VARIABLE NAME LIBRARY)
@ -93,10 +92,16 @@ function(set_extra_dirs_include VARIABLE NAME LIBRARY)
set("HINTS_${VARIABLE}_INCLUDEDIR" PARENT_SCOPE) set("HINTS_${VARIABLE}_INCLUDEDIR" PARENT_SCOPE)
is_bundled(IS_BUNDLED "${LIBRARY}") is_bundled(IS_BUNDLED "${LIBRARY}")
if(IS_BUNDLED) if(IS_BUNDLED)
set("HINTS_${VARIABLE}_INCLUDEDIR" "ddnet-libs/${NAME}/include" PARENT_SCOPE) set("HINTS_${VARIABLE}_INCLUDEDIR" "ddnet-libs/${NAME}/include" "ddnet-libs/${NAME}/include/${TARGET_OS}" PARENT_SCOPE)
endif() endif()
endfunction() endfunction()
if(CMAKE_CROSSCOMPILING)
set(CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH NO_CMAKE_SYSTEM_PATH)
else()
set(CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH)
endif()
function(is_bundled VARIABLE PATH) function(is_bundled VARIABLE PATH)
if(PATH) if(PATH)
string(FIND "${PATH}" "${PROJECT_SOURCE_DIR}" LOCAL_PATH_POS) string(FIND "${PATH}" "${PROJECT_SOURCE_DIR}" LOCAL_PATH_POS)
@ -110,9 +115,11 @@ function(is_bundled VARIABLE PATH)
endif() endif()
endfunction() endfunction()
# Check for PkgConfig once so all the other `find_package` calls can do it if(NOT CMAKE_CROSSCOMPILING)
# quietly. # Check for PkgConfig once so all the other `find_package` calls can do it
find_package(PkgConfig) # quietly.
find_package(PkgConfig)
endif()
find_package(Curl) find_package(Curl)
find_package(Freetype) find_package(Freetype)
find_package(GTest) find_package(GTest)
@ -434,7 +441,7 @@ function(chash output_file)
DEPENDS scripts/cmd5.py ${ARGN} DEPENDS scripts/cmd5.py ${ARGN}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
) )
endfunction(chash) endfunction()
function(generate_source output_file script_parameter) function(generate_source output_file script_parameter)
add_custom_command(OUTPUT ${PROJECT_SOURCE_DIR}/${output_file} add_custom_command(OUTPUT ${PROJECT_SOURCE_DIR}/${output_file}
@ -446,7 +453,7 @@ function(generate_source output_file script_parameter)
datasrc/network.py datasrc/network.py
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
) )
endfunction(generate_source) endfunction()
file(MAKE_DIRECTORY "${PROJECT_SOURCE_DIR}/src/game/generated/") file(MAKE_DIRECTORY "${PROJECT_SOURCE_DIR}/src/game/generated/")
chash("src/game/generated/nethash.cpp" chash("src/game/generated/nethash.cpp"
@ -1111,6 +1118,7 @@ if(TARGET_OS AND TARGET_BITS)
endif() endif()
elseif(TARGET_OS STREQUAL "mac") elseif(TARGET_OS STREQUAL "mac")
set(CPACK_SYSTEM_NAME "osx") set(CPACK_SYSTEM_NAME "osx")
set(CPACK_GENERATOR DMG)
endif() endif()
endif() endif()

View file

@ -77,8 +77,8 @@ Download and install some version of [Microsoft Visual Studio](https://www.visua
Start CMake and select the source code folder (where DDNet resides, the directory with `CMakeLists.txt`). Additionally select a build folder, e.g. create a build subdirectory in the source code directory. Click "Configure" and select the Visual Studio generator (it should be pre-selected, so pressing "Finish" will suffice). After configuration finishes and the "Generate" reactivates, click it. When that finishes, click "Open Project". Visual Studio should open. You can compile the DDNet client by right-clicking the DDNet project (not the solution) and select "Select as StartUp project". Now you should be able to compile DDNet by clicking the green, triangular "Run" button. Start CMake and select the source code folder (where DDNet resides, the directory with `CMakeLists.txt`). Additionally select a build folder, e.g. create a build subdirectory in the source code directory. Click "Configure" and select the Visual Studio generator (it should be pre-selected, so pressing "Finish" will suffice). After configuration finishes and the "Generate" reactivates, click it. When that finishes, click "Open Project". Visual Studio should open. You can compile the DDNet client by right-clicking the DDNet project (not the solution) and select "Select as StartUp project". Now you should be able to compile DDNet by clicking the green, triangular "Run" button.
Cross-compiling to Windows x86/x86\_64 Cross-compiling on Linux to Windows x86/x86\_64
-------------------------------------- -----------------------------------------------
Install MinGW cross-compilers of the form `i686-w64-mingw32-gcc` (32 bit) or Install MinGW cross-compilers of the form `i686-w64-mingw32-gcc` (32 bit) or
`x86_64-w64-mingw32-gcc` (64 bit). This is probably the hard part. ;) `x86_64-w64-mingw32-gcc` (64 bit). This is probably the hard part. ;)
@ -86,6 +86,14 @@ Install MinGW cross-compilers of the form `i686-w64-mingw32-gcc` (32 bit) or
Then add `-DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mingw64.toolchain` to the Then add `-DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mingw64.toolchain` to the
**initial** CMake command line. **initial** CMake command line.
Cross-compiling on Linux to macOS
---------------------------------
Install [osxcross](https://github.com/tpoechtrager/osxcross), then add
`-DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/darwin.toolchain` and
`-DCMAKE_OSX_SYSROOT=/path/to/osxcross/target/SDK/MacOSX10.11.sdk/` to the
**initial** CMake command line.
Importing the official DDNet Database Importing the official DDNet Database
------------------------------------- -------------------------------------

View file

@ -12,4 +12,5 @@ ExternalProject_Add(googletest
BUILD_COMMAND "" BUILD_COMMAND ""
INSTALL_COMMAND "" INSTALL_COMMAND ""
TEST_COMMAND "" TEST_COMMAND ""
TLS_VERIFY ON
) )

View file

@ -1,16 +1,20 @@
find_package(PkgConfig QUIET) if(NOT CMAKE_CROSSCOMPILING)
pkg_check_modules(PC_CURL libcurl) find_package(PkgConfig QUIET)
pkg_check_modules(PC_CURL libcurl)
endif()
set_extra_dirs_lib(CURL curl) set_extra_dirs_lib(CURL curl)
find_library(CURL_LIBRARY find_library(CURL_LIBRARY
NAMES curl NAMES curl
HINTS ${HINTS_CURL_LIBDIR} ${PC_CURL_LIBDIR} ${PC_CURL_LIBRARY_DIRS} HINTS ${HINTS_CURL_LIBDIR} ${PC_CURL_LIBDIR} ${PC_CURL_LIBRARY_DIRS}
PATHS ${PATHS_CURL_LIBDIR} PATHS ${PATHS_CURL_LIBDIR}
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
) )
set_extra_dirs_include(CURL curl "${CURL_LIBRARY}") set_extra_dirs_include(CURL curl "${CURL_LIBRARY}")
find_path(CURL_INCLUDEDIR curl/curl.h find_path(CURL_INCLUDEDIR curl/curl.h
HINTS ${HINTS_CURL_INCLUDEDIR} ${PC_CURL_INCLUDEDIR} ${PC_CURL_INCLUDE_DIRS} HINTS ${HINTS_CURL_INCLUDEDIR} ${PC_CURL_INCLUDEDIR} ${PC_CURL_INCLUDE_DIRS}
PATHS ${PATHS_CURL_INCLUDEDIR} PATHS ${PATHS_CURL_INCLUDEDIR}
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
) )
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)

View file

@ -1,11 +1,14 @@
find_package(PkgConfig QUIET) if(NOT CMAKE_CROSSCOMPILING)
pkg_check_modules(PC_FREETYPE freetype2) find_package(PkgConfig QUIET)
pkg_check_modules(PC_FREETYPE freetype2)
endif()
set_extra_dirs_lib(FREETYPE freetype) set_extra_dirs_lib(FREETYPE freetype)
find_library(FREETYPE_LIBRARY find_library(FREETYPE_LIBRARY
NAMES freetype NAMES freetype freetype.6
HINTS ${HINTS_FREETYPE_LIBDIR} ${PC_FREETYPE_LIBDIR} ${PC_FREETYPE_LIBRARY_DIRS} HINTS ${HINTS_FREETYPE_LIBDIR} ${PC_FREETYPE_LIBDIR} ${PC_FREETYPE_LIBRARY_DIRS}
PATHS ${PATHS_FREETYPE_LIBDIR} PATHS ${PATHS_FREETYPE_LIBDIR}
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
) )
set_extra_dirs_include(FREETYPE freetype "${FREETYPE_LIBRARY}") set_extra_dirs_include(FREETYPE freetype "${FREETYPE_LIBRARY}")
find_path(FREETYPE_INCLUDEDIR find_path(FREETYPE_INCLUDEDIR
@ -13,6 +16,7 @@ find_path(FREETYPE_INCLUDEDIR
PATH_SUFFIXES freetype2 PATH_SUFFIXES freetype2
HINTS ${HINTS_FREETYPE_INCLUDEDIR} ${PC_FREETYPE_INCLUDEDIR} ${PC_FREETYPE_INCLUDE_DIRS} HINTS ${HINTS_FREETYPE_INCLUDEDIR} ${PC_FREETYPE_INCLUDEDIR} ${PC_FREETYPE_INCLUDE_DIRS}
PATHS ${PATHS_FREETYPE_INCLUDEDIR} PATHS ${PATHS_FREETYPE_INCLUDEDIR}
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
) )
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)

View file

@ -1,16 +1,20 @@
find_package(PkgConfig QUIET) if(NOT CMAKE_CROSSCOMPILING)
pkg_check_modules(PC_GLEW libglew) find_package(PkgConfig QUIET)
pkg_check_modules(PC_GLEW libglew)
endif()
set_extra_dirs_lib(GLEW glew) set_extra_dirs_lib(GLEW glew)
find_library(GLEW_LIBRARY find_library(GLEW_LIBRARY
NAMES GLEW glew32 NAMES GLEW glew32
HINTS ${HINTS_GLEW_LIBDIR} ${PC_GLEW_LIBDIR} ${PC_GLEW_LIBRARY_DIRS} HINTS ${HINTS_GLEW_LIBDIR} ${PC_GLEW_LIBDIR} ${PC_GLEW_LIBRARY_DIRS}
PATHS ${PATHS_GLEW_LIBDIR} PATHS ${PATHS_GLEW_LIBDIR}
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
) )
set_extra_dirs_include(GLEW glew "${GLEW_LIBRARY}") set_extra_dirs_include(GLEW glew "${GLEW_LIBRARY}")
find_path(GLEW_INCLUDEDIR GL find_path(GLEW_INCLUDEDIR GL
HINTS ${HINTS_GLEW_INCLUDEDIR} ${PC_GLEW_INCLUDEDIR} ${PC_GLEW_INCLUDE_DIRS} HINTS ${HINTS_GLEW_INCLUDEDIR} ${PC_GLEW_INCLUDEDIR} ${PC_GLEW_INCLUDE_DIRS}
PATHS ${PATHS_GLEW_INCLUDEDIR} PATHS ${PATHS_GLEW_INCLUDEDIR}
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
) )
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)

View file

@ -1,50 +1,54 @@
find_program(MYSQL_CONFIG if(NOT CMAKE_CROSSCOMPILING)
NAMES mysql_config find_program(MYSQL_CONFIG
) NAMES mysql_config
if(MYSQL_CONFIG)
exec_program(${MYSQL_CONFIG}
ARGS --include
OUTPUT_VARIABLE MY_TMP
) )
string(REGEX REPLACE "-I([^ ]*)( .*)?" "\\1" MY_TMP "${MY_TMP}") if(MYSQL_CONFIG)
exec_program(${MYSQL_CONFIG}
ARGS --include
OUTPUT_VARIABLE MY_TMP
)
set(MYSQL_CONFIG_INCLUDE_DIR ${MY_TMP} CACHE FILEPATH INTERNAL) string(REGEX REPLACE "-I([^ ]*)( .*)?" "\\1" MY_TMP "${MY_TMP}")
exec_program(${MYSQL_CONFIG} set(MYSQL_CONFIG_INCLUDE_DIR ${MY_TMP} CACHE FILEPATH INTERNAL)
ARGS --libs_r
OUTPUT_VARIABLE MY_TMP
)
set(MYSQL_CONFIG_LIBRARIES "") exec_program(${MYSQL_CONFIG}
ARGS --libs_r
OUTPUT_VARIABLE MY_TMP
)
string(REGEX MATCHALL "-l[^ ]*" MYSQL_LIB_LIST "${MY_TMP}") set(MYSQL_CONFIG_LIBRARIES "")
foreach(LIB ${MYSQL_LIB_LIST})
string(REGEX REPLACE "[ ]*-l([^ ]*)" "\\1" LIB "${LIB}")
list(APPEND MYSQL_CONFIG_LIBRARIES "${LIB}")
endforeach(LIB ${MYSQL_LIBS})
set(MYSQL_CONFIG_LIBRARY_PATH "") string(REGEX MATCHALL "-l[^ ]*" MYSQL_LIB_LIST "${MY_TMP}")
foreach(LIB ${MYSQL_LIB_LIST})
string(REGEX REPLACE "[ ]*-l([^ ]*)" "\\1" LIB "${LIB}")
list(APPEND MYSQL_CONFIG_LIBRARIES "${LIB}")
endforeach()
string(REGEX MATCHALL "-L[^ ]*" MYSQL_LIBDIR_LIST "${MY_TMP}") set(MYSQL_CONFIG_LIBRARY_PATH "")
foreach(LIB ${MYSQL_LIBDIR_LIST})
string(REGEX REPLACE "[ ]*-L([^ ]*)" "\\1" LIB "${LIB}") string(REGEX MATCHALL "-L[^ ]*" MYSQL_LIBDIR_LIST "${MY_TMP}")
list(APPEND MYSQL_CONFIG_LIBRARY_PATH "${LIB}") foreach(LIB ${MYSQL_LIBDIR_LIST})
endforeach(LIB ${MYSQL_LIBS}) string(REGEX REPLACE "[ ]*-L([^ ]*)" "\\1" LIB "${LIB}")
endif(MYSQL_CONFIG) list(APPEND MYSQL_CONFIG_LIBRARY_PATH "${LIB}")
endforeach()
endif()
endif()
set_extra_dirs_lib(MYSQL mysql) set_extra_dirs_lib(MYSQL mysql)
find_library(MYSQL_LIBRARY find_library(MYSQL_LIBRARY
NAMES "mysqlclient" "mysqlclient_r" "mariadbclient" NAMES "mysqlclient" "mysqlclient_r" "mariadbclient"
HINTS ${HINTS_MYSQL_LIBDIR} ${MYSQL_CONFIG_LIBRARY_PATH} HINTS ${HINTS_MYSQL_LIBDIR} ${MYSQL_CONFIG_LIBRARY_PATH}
PATHS ${PATHS_MYSQL_LIBDIR} PATHS ${PATHS_MYSQL_LIBDIR}
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
) )
set_extra_dirs_include(MYSQL mysql "${MYSQL_LIBRARY}") set_extra_dirs_include(MYSQL mysql "${MYSQL_LIBRARY}")
find_path(MYSQL_INCLUDEDIR find_path(MYSQL_INCLUDEDIR
NAMES "mysql.h" NAMES "mysql.h"
HINTS ${HINTS_MYSQL_INCLUDEDIR} ${MYSQL_CONFIG_INCLUDE_DIR} HINTS ${HINTS_MYSQL_INCLUDEDIR} ${MYSQL_CONFIG_INCLUDE_DIR}
PATHS ${PATHS_MYSQL_INCLUDEDIR} PATHS ${PATHS_MYSQL_INCLUDEDIR}
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
) )
set_extra_dirs_lib(MYSQL_CPPCONN mysql) set_extra_dirs_lib(MYSQL_CPPCONN mysql)
@ -52,12 +56,14 @@ find_library(MYSQL_CPPCONN_LIBRARY
NAMES "mysqlcppconn" "mysqlcppconn-static" NAMES "mysqlcppconn" "mysqlcppconn-static"
HINTS ${HINTS_MYSQL_CPPCONN_LIBDIR} ${MYSQL_CONFIG_LIBRARY_PATH} HINTS ${HINTS_MYSQL_CPPCONN_LIBDIR} ${MYSQL_CONFIG_LIBRARY_PATH}
PATHS ${PATHS_MYSQL_CPPCONN_LIBDIR} PATHS ${PATHS_MYSQL_CPPCONN_LIBDIR}
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
) )
set_extra_dirs_include(MYSQL_CPPCONN mysql "${MYSQL_CPPCONN_LIBRARY}") set_extra_dirs_include(MYSQL_CPPCONN mysql "${MYSQL_CPPCONN_LIBRARY}")
find_path(MYSQL_CPPCONN_INCLUDEDIR find_path(MYSQL_CPPCONN_INCLUDEDIR
NAMES "mysql_connection.h" NAMES "mysql_connection.h"
HINTS ${HINTS_MYSQL_CPPCONN_INCLUDEDIR} ${MYSQL_CONFIG_INCLUDE_DIR} HINTS ${HINTS_MYSQL_CPPCONN_INCLUDEDIR} ${MYSQL_CONFIG_INCLUDE_DIR}
PATHS ${PATHS_MYSQL_CPPCONN_INCLUDEDIR} PATHS ${PATHS_MYSQL_CPPCONN_INCLUDEDIR}
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
) )
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)

View file

@ -1,17 +1,21 @@
find_package(PkgConfig QUIET) if(NOT CMAKE_CROSSCOMPILING)
pkg_check_modules(PC_OGG ogg) find_package(PkgConfig QUIET)
pkg_check_modules(PC_OGG ogg)
endif()
set_extra_dirs_lib(OGG opus) set_extra_dirs_lib(OGG opus)
find_library(OGG_LIBRARY find_library(OGG_LIBRARY
NAMES ogg NAMES ogg
HINTS ${HINTS_OGG_LIBDIR} ${PC_OGG_LIBDIR} ${PC_OGG_LIBRARY_DIRS} HINTS ${HINTS_OGG_LIBDIR} ${PC_OGG_LIBDIR} ${PC_OGG_LIBRARY_DIRS}
PATHS ${PATHS_OGG_LIBDIR} PATHS ${PATHS_OGG_LIBDIR}
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
) )
set_extra_dirs_include(OGG opus "${OGG_LIBRARY}") set_extra_dirs_include(OGG opus "${OGG_LIBRARY}")
find_path(OGG_INCLUDEDIR ogg.h find_path(OGG_INCLUDEDIR ogg.h
PATH_SUFFIXES ogg PATH_SUFFIXES ogg
HINTS ${HINTS_OGG_INCLUDEDIR} ${PC_OGG_INCLUDEDIR} ${PC_OGG_INCLUDE_DIRS} HINTS ${HINTS_OGG_INCLUDEDIR} ${PC_OGG_INCLUDEDIR} ${PC_OGG_INCLUDE_DIRS}
PATHS ${PATHS_OGG_INCLUDEDIR} PATHS ${PATHS_OGG_INCLUDEDIR}
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
) )
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)

View file

@ -1,17 +1,21 @@
find_package(PkgConfig QUIET) if(NOT CMAKE_CROSSCOMPILING)
pkg_check_modules(PC_OPUS opus) find_package(PkgConfig QUIET)
pkg_check_modules(PC_OPUS opus)
endif()
set_extra_dirs_lib(OPUS opus) set_extra_dirs_lib(OPUS opus)
find_library(OPUS_LIBRARY find_library(OPUS_LIBRARY
NAMES opus NAMES opus
HINTS ${HINTS_OPUS_LIBDIR} ${PC_OPUS_LIBDIR} ${PC_OPUS_LIBRARY_DIRS} HINTS ${HINTS_OPUS_LIBDIR} ${PC_OPUS_LIBDIR} ${PC_OPUS_LIBRARY_DIRS}
PATHS ${PATHS_OPUS_LIBDIR} PATHS ${PATHS_OPUS_LIBDIR}
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
) )
set_extra_dirs_include(OPUS opus "${OPUS_LIBRARY}") set_extra_dirs_include(OPUS opus "${OPUS_LIBRARY}")
find_path(OPUS_INCLUDEDIR opus.h find_path(OPUS_INCLUDEDIR opus.h
PATH_SUFFIXES opus PATH_SUFFIXES opus
HINTS ${HINTS_OPUS_INCLUDEDIR} ${PC_OPUS_INCLUDEDIR} ${PC_OPUS_INCLUDE_DIRS} HINTS ${HINTS_OPUS_INCLUDEDIR} ${PC_OPUS_INCLUDEDIR} ${PC_OPUS_INCLUDE_DIRS}
PATHS ${PATHS_OPUS_INCLUDEDIR} PATHS ${PATHS_OPUS_INCLUDEDIR}
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
) )
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)

View file

@ -1,17 +1,21 @@
find_package(PkgConfig QUIET) if(NOT CMAKE_CROSSCOMPILING)
pkg_check_modules(PC_OPUSFILE opusfile) find_package(PkgConfig QUIET)
pkg_check_modules(PC_OPUSFILE opusfile)
endif()
set_extra_dirs_lib(OPUSFILE opus) set_extra_dirs_lib(OPUSFILE opus)
find_library(OPUSFILE_LIBRARY find_library(OPUSFILE_LIBRARY
NAMES opusfile NAMES opusfile
HINTS ${HINTS_OPUSFILE_LIBDIR} ${PC_OPUSFILE_LIBDIR} ${PC_OPUSFILE_LIBRARY_DIRS} HINTS ${HINTS_OPUSFILE_LIBDIR} ${PC_OPUSFILE_LIBDIR} ${PC_OPUSFILE_LIBRARY_DIRS}
PATHS ${PATHS_OPUSFILE_LIBDIR} PATHS ${PATHS_OPUSFILE_LIBDIR}
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
) )
set_extra_dirs_include(OPUSFILE opus "${OPUSFILE_LIBRARY}") set_extra_dirs_include(OPUSFILE opus "${OPUSFILE_LIBRARY}")
find_path(OPUSFILE_INCLUDEDIR opusfile.h find_path(OPUSFILE_INCLUDEDIR opusfile.h
PATH_SUFFIXES opus PATH_SUFFIXES opus
HINTS ${HINTS_OPUSFILE_INCLUDEDIR} ${PC_OPUSFILE_INCLUDEDIR} ${PC_OPUSFILE_INCLUDE_DIRS} HINTS ${HINTS_OPUSFILE_INCLUDEDIR} ${PC_OPUSFILE_INCLUDEDIR} ${PC_OPUSFILE_INCLUDE_DIRS}
PATHS ${PATHS_OPUSFILE_INCLUDEDIR} PATHS ${PATHS_OPUSFILE_INCLUDEDIR}
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
) )
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)

View file

@ -1,12 +1,16 @@
find_package(PkgConfig QUIET) if(NOT CMAKE_CROSSCOMPILING)
pkg_check_modules(PC_SDL2 sdl2) find_package(PkgConfig QUIET)
pkg_check_modules(PC_SDL2 sdl2)
endif()
set_extra_dirs_lib(SDL2 sdl) set_extra_dirs_lib(SDL2 sdl)
find_library(SDL2_LIBRARY find_library(SDL2_LIBRARY
NAMES SDL2 NAMES SDL2
HINTS ${HINTS_SDL2_LIBDIR} ${PC_SDL2_LIBDIR} ${PC_SDL2_LIBRARY_DIRS} HINTS ${HINTS_SDL2_LIBDIR} ${PC_SDL2_LIBDIR} ${PC_SDL2_LIBRARY_DIRS}
PATHS ${PATHS_SDL2_LIBDIR} PATHS ${PATHS_SDL2_LIBDIR}
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
) )
set(CMAKE_FIND_FRAMEWORK FIRST)
set_extra_dirs_include(SDL2 sdl "${SDL2_LIBRARY}") set_extra_dirs_include(SDL2 sdl "${SDL2_LIBRARY}")
# Looking for 'SDL.h' directly might accidently find a SDL instead of SDL 2 # Looking for 'SDL.h' directly might accidently find a SDL instead of SDL 2
# installation. Look for a header file only present in SDL 2 instead. # installation. Look for a header file only present in SDL 2 instead.

View file

@ -0,0 +1,9 @@
set(CMAKE_SYSTEM_NAME Darwin)
set(CMAKE_C_COMPILER o64-clang)
set(CMAKE_CXX_COMPILER o64-clang++)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

@ -1 +1 @@
Subproject commit 9abb67a94170fbf177b1d22ca180c96bd065cab1 Subproject commit fd5c2cd28c8e92e2b4b2f63f0ad2c02b837699fe