mirror of
https://github.com/ddnet/ddnet.git
synced 2024-09-20 01:24:18 +00:00
Merge #4455
4455: Support native arm64, universal binaries on macOS r=heinrich5991 a=def- untested ## Checklist - [ ] Tested the change ingame - [ ] Provided screenshots if it is a visual change - [ ] Tested in combination with possibly related configuration options - [ ] Written a unit test if it works standalone, system.c especially - [ ] Considered possible null pointers and out of bounds array indexing - [ ] Changed no physics that affect existing maps - [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional) Co-authored-by: def <dennis@felsin9.de>
This commit is contained in:
commit
61432c9813
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -8,6 +8,7 @@ docs/
|
|||
bundle/
|
||||
!/other/bundle/
|
||||
|
||||
.DS_Store
|
||||
.ninja_deps
|
||||
.ninja_log
|
||||
CMakeCache.txt
|
||||
|
@ -92,6 +93,7 @@ tags
|
|||
*.dll
|
||||
*.dmg
|
||||
*.dtb
|
||||
*.dylib
|
||||
*.exe
|
||||
*.filters
|
||||
*.lnk
|
||||
|
@ -115,3 +117,4 @@ tags
|
|||
*.user
|
||||
*.vcxproj
|
||||
*.zip
|
||||
/SDL2.framework
|
||||
|
|
|
@ -324,6 +324,20 @@ set(TARGETS_LINK) # Targets with a linking stage.
|
|||
# DEPENDENCIES
|
||||
########################################################################
|
||||
|
||||
if((CMAKE_OSX_ARCHITECTURES STREQUAL "arm64;x86_64" OR CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64;arm64") AND TARGET_OS STREQUAL "mac")
|
||||
set(FAT ON)
|
||||
else()
|
||||
set(FAT OFF)
|
||||
endif()
|
||||
|
||||
if(FAT)
|
||||
set(LIB_DIR "${TARGET_OS}/libfat")
|
||||
elseif(TARGET_CPU_ARCHITECTURE STREQUAL "arm" OR TARGET_CPU_ARCHITECTURE STREQUAL "arm64")
|
||||
set(LIB_DIR "${TARGET_OS}/lib${TARGET_CPU_ARCHITECTURE}")
|
||||
else()
|
||||
set(LIB_DIR "${TARGET_OS}/lib${TARGET_BITS}")
|
||||
endif()
|
||||
|
||||
function(set_extra_dirs_lib VARIABLE NAME)
|
||||
set("PATHS_${VARIABLE}_LIBDIR" PARENT_SCOPE)
|
||||
set("HINTS_${VARIABLE}_LIBDIR" PARENT_SCOPE)
|
||||
|
@ -333,11 +347,7 @@ function(set_extra_dirs_lib VARIABLE NAME)
|
|||
set(TYPE PATHS)
|
||||
endif()
|
||||
if(TARGET_BITS AND TARGET_OS)
|
||||
if(TARGET_CPU_ARCHITECTURE STREQUAL "arm" OR TARGET_CPU_ARCHITECTURE STREQUAL "arm64")
|
||||
set(DIR "ddnet-libs/${NAME}/${TARGET_OS}/lib${TARGET_CPU_ARCHITECTURE}")
|
||||
else()
|
||||
set(DIR "ddnet-libs/${NAME}/${TARGET_OS}/lib${TARGET_BITS}")
|
||||
endif()
|
||||
set(DIR "ddnet-libs/${NAME}/${LIB_DIR}")
|
||||
set("${TYPE}_${VARIABLE}_LIBDIR" "${DIR}" PARENT_SCOPE)
|
||||
set("EXTRA_${VARIABLE}_LIBDIR" "${DIR}" PARENT_SCOPE)
|
||||
endif()
|
||||
|
@ -453,7 +463,7 @@ message(STATUS "******** DDNet ********")
|
|||
if(NOT TARGET_OS STREQUAL "mac")
|
||||
message(STATUS "Target OS: ${TARGET_OS} ${TARGET_BITS}bit")
|
||||
else()
|
||||
message(STATUS "Target OS: ${TARGET_OS} ${TARGET_BITS}bit (SDK: ${CMAKE_OSX_SYSROOT})")
|
||||
message(STATUS "Target OS: ${TARGET_OS} ${TARGET_BITS}bit (SDK: ${CMAKE_OSX_SYSROOT}, architectures: ${CMAKE_OSX_ARCHITECTURES})")
|
||||
endif()
|
||||
message(STATUS "Compiler: ${CMAKE_CXX_COMPILER}")
|
||||
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
|
||||
|
@ -1385,7 +1395,7 @@ set(EXPECTED_DATA
|
|||
set_glob(DATA GLOB_RECURSE "frag;json;map;otf;png;rules;ttf;txt;vert;wv" data ${EXPECTED_DATA})
|
||||
|
||||
########################################################################
|
||||
# COPY DATA AND DLLS
|
||||
# COPY DATA AND SHARED LIBS
|
||||
########################################################################
|
||||
|
||||
foreach(datafile ${DATA})
|
||||
|
@ -1406,6 +1416,9 @@ set(COPY_FILES
|
|||
)
|
||||
file(COPY ${COPY_FILES} DESTINATION .)
|
||||
|
||||
set(COPY_DIRS ${SDL2_COPY_DIRS})
|
||||
file(COPY ${COPY_DIRS} DESTINATION .)
|
||||
|
||||
########################################################################
|
||||
# CODE GENERATION
|
||||
########################################################################
|
||||
|
@ -2408,7 +2421,11 @@ endfunction()
|
|||
set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
|
||||
set(CPACK_GENERATOR TGZ TXZ)
|
||||
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
|
||||
set(CPACK_STRIP_FILES TRUE)
|
||||
if(TARGET_OS STREQUAL "mac")
|
||||
set(CPACK_STRIP_FILES FALSE)
|
||||
else()
|
||||
set(CPACK_STRIP_FILES TRUE)
|
||||
endif()
|
||||
set(CPACK_COMPONENTS_ALL portable)
|
||||
set(CPACK_SOURCE_GENERATOR ZIP TGZ TBZ2 TXZ)
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
|
||||
|
@ -2503,7 +2520,10 @@ set(CPACK_TARGETS
|
|||
if(STEAMAPI_KIND STREQUAL SHARED)
|
||||
list(APPEND CPACK_TARGETS ${TARGET_STEAMAPI})
|
||||
endif()
|
||||
set(CPACK_DIRS data)
|
||||
set(CPACK_DIRS
|
||||
data
|
||||
${COPY_DIRS}
|
||||
)
|
||||
set(CPACK_FILES
|
||||
license.txt
|
||||
storage.cfg
|
||||
|
@ -2573,6 +2593,12 @@ if(CLIENT AND (DMGTOOLS_FOUND OR HDIUTIL))
|
|||
foreach(dir ${DMG_MKDIRS})
|
||||
list(APPEND DMG_MKDIR_COMMANDS COMMAND ${CMAKE_COMMAND} -E make_directory ${DMG_TMPDIR}/${dir})
|
||||
endforeach()
|
||||
|
||||
set(DMG_DISCORD_COPY_COMMAND)
|
||||
if(NOT FAT AND NOT TARGET_CPU_ARCHITECTURE STREQUAL "arm" AND NOT TARGET_CPU_ARCHITECTURE STREQUAL "arm64")
|
||||
set(DMG_DISCORD_COPY_COMMAND COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/discord/${LIB_DIR}/discord_game_sdk.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/)
|
||||
endif()
|
||||
|
||||
add_custom_command(OUTPUT ${CPACK_PACKAGE_FILE_NAME}.dmg
|
||||
COMMAND ${CMAKE_COMMAND} -E remove_directory ${DMG_TMPDIR}
|
||||
${DMG_MKDIR_COMMANDS}
|
||||
|
@ -2582,38 +2608,18 @@ if(CLIENT AND (DMGTOOLS_FOUND OR HDIUTIL))
|
|||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/other/icons/${TARGET_CLIENT}.icns ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Resources/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy bundle/client/Info.plist ${PROJECT_SOURCE_DIR}/other/bundle/client/PkgInfo ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${TARGET_CLIENT}> ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/MacOS/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/ddnet-libs/sdl/mac/lib64/SDL2.framework ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/SDL2.framework
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/discord/mac/lib64/discord_game_sdk.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/freetype/mac/lib64/libfreetype.6.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/ffmpeg/mac/lib64/libavcodec.58.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/ffmpeg/mac/lib64/libavformat.58.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/ffmpeg/mac/lib64/libavutil.56.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/ffmpeg/mac/lib64/libswresample.3.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/ffmpeg/mac/lib64/libswscale.5.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/websockets/mac/lib64/libwebsockets.18.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/ddnet-libs/sdl/${LIB_DIR}/SDL2.framework ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/SDL2.framework
|
||||
${DMG_DISCORD_COPY_COMMAND}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/freetype/${LIB_DIR}/libfreetype.6.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/ffmpeg/${LIB_DIR}/libavcodec.58.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/ffmpeg/${LIB_DIR}/libavformat.58.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/ffmpeg/${LIB_DIR}/libavutil.56.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/ffmpeg/${LIB_DIR}/libswresample.3.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/ffmpeg/${LIB_DIR}/libswscale.5.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/websockets/${LIB_DIR}/libwebsockets.18.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/libsteam_api.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/
|
||||
COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/scripts/darwin_strip_rpath.py ${CMAKE_OTOOL} ${CMAKE_INSTALL_NAME_TOOL} ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/MacOS/${TARGET_CLIENT}
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -add_rpath @loader_path/../Frameworks ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/MacOS/${TARGET_CLIENT}
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -add_rpath @loader_path/../Frameworks ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/libavcodec.58.dylib
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -add_rpath @loader_path/../Frameworks ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/libavformat.58.dylib
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -add_rpath @loader_path/../Frameworks ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/libswscale.5.dylib
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -add_rpath @loader_path/../Frameworks ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/libswresample.3.dylib
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change /usr/local/lib/libavcodec.58.dylib @rpath/libavcodec.58.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/MacOS/${TARGET_CLIENT}
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change /usr/local/lib/libavcodec.58.dylib @rpath/libavcodec.58.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/libavformat.58.dylib
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change /usr/local/lib/libavformat.58.dylib @rpath/libavformat.58.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/MacOS/${TARGET_CLIENT}
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change /usr/local/lib/libavutil.56.dylib @rpath/libavutil.56.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/MacOS/${TARGET_CLIENT}
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change /usr/local/lib/libavutil.56.dylib @rpath/libavutil.56.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/libavcodec.58.dylib
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change /usr/local/lib/libavutil.56.dylib @rpath/libavutil.56.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/libavformat.58.dylib
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change /usr/local/lib/libavutil.56.dylib @rpath/libavutil.56.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/libswscale.5.dylib
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change /usr/local/lib/libavutil.56.dylib @rpath/libavutil.56.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/libswresample.3.dylib
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change /usr/local/lib/libswscale.5.dylib @rpath/libswscale.5.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/MacOS/${TARGET_CLIENT}
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change /usr/local/lib/libswresample.3.dylib @rpath/libswresample.3.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/MacOS/${TARGET_CLIENT}
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change /usr/local/lib/libfreetype.6.dylib @rpath/libfreetype.6.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/MacOS/${TARGET_CLIENT}
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change /usr/local/lib/libSDL2-2.0.0.dylib @rpath/SDL2.framework/Versions/A/SDL2 ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/MacOS/${TARGET_CLIENT}
|
||||
# TODO: Cleaner solution than hardcoding paths
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change /home/deen/isos/ddnet/debian6/mac64/libwebsockets-4.2/lib/libwebsockets.18.dylib @rpath/libwebsockets.18.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/MacOS/${TARGET_CLIENT}
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change ${PROJECT_BINARY_DIR}/libsteam_api.dylib @rpath/libsteam_api.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/MacOS/${TARGET_CLIENT}
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change ${PROJECT_BINARY_DIR}/libsteam_api.dylib @rpath/libsteam_api.dylib ${DMG_TMPDIR}/${TARGET_CLIENT}.app/Contents/Frameworks/libsteam_api.dylib
|
||||
|
||||
# SERVER
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/data/maps ${DMG_TMPDIR}/${TARGET_SERVER}.app/Contents/Resources/data/maps
|
||||
|
@ -2621,12 +2627,10 @@ if(CLIENT AND (DMGTOOLS_FOUND OR HDIUTIL))
|
|||
COMMAND ${CMAKE_COMMAND} -E copy bundle/server/Info.plist ${PROJECT_SOURCE_DIR}/other/bundle/server/PkgInfo ${DMG_TMPDIR}/${TARGET_SERVER}.app/Contents/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${TARGET_SERVER}> $<TARGET_FILE:${TARGET_SERVER_LAUNCHER}> ${DMG_TMPDIR}/${TARGET_SERVER}.app/Contents/MacOS/
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${DMG_TMPDIR}/${TARGET_SERVER}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/sqlite3/mac/lib64/libsqlite3.0.dylib ${DMG_TMPDIR}/${TARGET_SERVER}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/websockets/mac/lib64/libwebsockets.18.dylib ${DMG_TMPDIR}/${TARGET_SERVER}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/sqlite3/${LIB_DIR}/libsqlite3.0.dylib ${DMG_TMPDIR}/${TARGET_SERVER}.app/Contents/Frameworks/
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/ddnet-libs/websockets/${LIB_DIR}/libwebsockets.18.dylib ${DMG_TMPDIR}/${TARGET_SERVER}.app/Contents/Frameworks/
|
||||
COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/scripts/darwin_strip_rpath.py ${CMAKE_OTOOL} ${CMAKE_INSTALL_NAME_TOOL} ${DMG_TMPDIR}/${TARGET_SERVER}.app/Contents/MacOS/${TARGET_SERVER}
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -add_rpath @loader_path/../Frameworks ${DMG_TMPDIR}/${TARGET_SERVER}.app/Contents/MacOS/${TARGET_SERVER}
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change /usr/local/lib/libsqlite3.0.dylib @rpath/libsqlite3.0.dylib ${DMG_TMPDIR}/${TARGET_SERVER}.app/Contents/MacOS/${TARGET_SERVER}
|
||||
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change /home/deen/isos/ddnet/debian6/mac64/libwebsockets-4.2/lib/libwebsockets.18.dylib @rpath/libwebsockets.18.dylib ${DMG_TMPDIR}/${TARGET_SERVER}.app/Contents/MacOS/${TARGET_SERVER}
|
||||
|
||||
# DMG
|
||||
COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/scripts/dmg.py create ${DMG_PARAMS} ${CPACK_PACKAGE_FILE_NAME}.dmg ${CPACK_PACKAGE_FILE_NAME} ${DMG_TMPDIR}
|
||||
|
@ -2668,7 +2672,9 @@ foreach(ext zip tar.gz tar.xz)
|
|||
endforeach()
|
||||
foreach(target ${CPACK_TARGETS})
|
||||
list(APPEND COPY_TARGET_COMMANDS COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${target}> ${TMPDIR}/)
|
||||
list(APPEND STRIP_TARGET_COMMANDS COMMAND strip -s ${TMPDIR}/$<TARGET_FILE_NAME:${target}>)
|
||||
if(NOT TARGET_OS STREQUAL "mac")
|
||||
list(APPEND STRIP_TARGET_COMMANDS COMMAND strip -s ${TMPDIR}/$<TARGET_FILE_NAME:${target}>)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(ext STREQUAL zip)
|
||||
|
|
|
@ -12,35 +12,35 @@ endif()
|
|||
|
||||
set_extra_dirs_lib(FFMPEG ffmpeg)
|
||||
find_library(AVCODEC_LIBRARY
|
||||
NAMES avcodec libavcodec avcodec.58
|
||||
NAMES avcodec.58 avcodec libavcodec
|
||||
HINTS ${HINTS_FFMPEG_LIBDIR} ${PC_AVCODEC_LIBRARY_DIRS}
|
||||
PATHS ${PATHS_AVCODEC_LIBDIR}
|
||||
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
|
||||
)
|
||||
|
||||
find_library(AVFORMAT_LIBRARY
|
||||
NAMES avformat libavformat avformat.58
|
||||
NAMES avformat.58 avformat libavformat
|
||||
HINTS ${HINTS_FFMPEG_LIBDIR} ${PC_AVFORMAT_LIBRARY_DIRS}
|
||||
PATHS ${PATHS_AVFORMAT_LIBDIR}
|
||||
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
|
||||
)
|
||||
|
||||
find_library(AVUTIL_LIBRARY
|
||||
NAMES avutil libavutil avutil.56
|
||||
NAMES avutil.56 avutil libavutil
|
||||
HINTS ${HINTS_FFMPEG_LIBDIR} ${PC_AVUTIL_LIBRARY_DIRS}
|
||||
PATHS ${PATHS_AVUTIL_LIBDIR}
|
||||
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
|
||||
)
|
||||
|
||||
find_library(SWSCALE_LIBRARY
|
||||
NAMES swscale libswscale swscale.5
|
||||
NAMES swscale.5 swscale libswscale
|
||||
HINTS ${HINTS_FFMPEG_LIBDIR} ${PC_SWSCALE_LIBRARY_DIRS}
|
||||
PATHS ${PATHS_SWSCALE_LIBDIR}
|
||||
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
|
||||
)
|
||||
|
||||
find_library(SWRESAMPLE_LIBRARY
|
||||
NAMES swresample libswresample swresample.3
|
||||
NAMES swresample.3 swresample libswresample
|
||||
HINTS ${HINTS_FFMPEG_LIBDIR} ${PC_SWRESAMPLE_LIBRARY_DIRS}
|
||||
PATHS ${PATHS_SWRESAMPLE_LIBDIR}
|
||||
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
|
||||
|
@ -146,14 +146,23 @@ set(FFMPEG_INCLUDE_DIRS
|
|||
)
|
||||
|
||||
is_bundled(FFMPEG_BUNDLED "${AVCODEC_LIBRARY}")
|
||||
if(FFMPEG_BUNDLED AND TARGET_OS STREQUAL "windows")
|
||||
set(FFMPEG_COPY_FILES
|
||||
"${EXTRA_FFMPEG_LIBDIR}/avcodec-58.dll"
|
||||
"${EXTRA_FFMPEG_LIBDIR}/avformat-58.dll"
|
||||
"${EXTRA_FFMPEG_LIBDIR}/avutil-56.dll"
|
||||
"${EXTRA_FFMPEG_LIBDIR}/swresample-3.dll"
|
||||
"${EXTRA_FFMPEG_LIBDIR}/swscale-5.dll"
|
||||
)
|
||||
else()
|
||||
set(FFMPEG_COPY_FILES)
|
||||
set(FFMPEG_COPY_FILES)
|
||||
if(FFMPEG_BUNDLED)
|
||||
if(TARGET_OS STREQUAL "windows")
|
||||
set(FFMPEG_COPY_FILES
|
||||
"${EXTRA_FFMPEG_LIBDIR}/avcodec-58.dll"
|
||||
"${EXTRA_FFMPEG_LIBDIR}/avformat-58.dll"
|
||||
"${EXTRA_FFMPEG_LIBDIR}/avutil-56.dll"
|
||||
"${EXTRA_FFMPEG_LIBDIR}/swresample-3.dll"
|
||||
"${EXTRA_FFMPEG_LIBDIR}/swscale-5.dll"
|
||||
)
|
||||
elseif(TARGET_OS STREQUAL "mac")
|
||||
set(FFMPEG_COPY_FILES
|
||||
"${EXTRA_FFMPEG_LIBDIR}/libavcodec.58.dylib"
|
||||
"${EXTRA_FFMPEG_LIBDIR}/libavformat.58.dylib"
|
||||
"${EXTRA_FFMPEG_LIBDIR}/libavutil.56.dylib"
|
||||
"${EXTRA_FFMPEG_LIBDIR}/libswresample.3.dylib"
|
||||
"${EXTRA_FFMPEG_LIBDIR}/libswscale.5.dylib"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
|
|
@ -5,14 +5,14 @@ endif()
|
|||
|
||||
set_extra_dirs_lib(FREETYPE freetype)
|
||||
find_library(FREETYPE_LIBRARY
|
||||
NAMES freetype freetype.6
|
||||
NAMES freetype.6 freetype
|
||||
HINTS ${HINTS_FREETYPE_LIBDIR} ${PC_FREETYPE_LIBDIR} ${PC_FREETYPE_LIBRARY_DIRS}
|
||||
PATHS ${PATHS_FREETYPE_LIBDIR}
|
||||
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
|
||||
)
|
||||
set_extra_dirs_include(FREETYPE freetype "${FREETYPE_LIBRARY}")
|
||||
find_path(FREETYPE_INCLUDEDIR
|
||||
NAMES config/ftheader.h freetype/config/ftheader.h
|
||||
NAMES freetype/config/ftheader.h config/ftheader.h
|
||||
PATH_SUFFIXES freetype2
|
||||
HINTS ${HINTS_FREETYPE_INCLUDEDIR} ${PC_FREETYPE_INCLUDEDIR} ${PC_FREETYPE_INCLUDE_DIRS}
|
||||
PATHS ${PATHS_FREETYPE_INCLUDEDIR}
|
||||
|
@ -29,9 +29,12 @@ if(FREETYPE_FOUND)
|
|||
set(FREETYPE_INCLUDE_DIRS ${FREETYPE_INCLUDEDIR})
|
||||
|
||||
is_bundled(FREETYPE_BUNDLED "${FREETYPE_LIBRARY}")
|
||||
if(FREETYPE_BUNDLED AND TARGET_OS STREQUAL "windows")
|
||||
set(FREETYPE_COPY_FILES "${EXTRA_FREETYPE_LIBDIR}/libfreetype.dll")
|
||||
else()
|
||||
set(FREETYPE_COPY_FILES)
|
||||
set(FREETYPE_COPY_FILES)
|
||||
if(FREETYPE_BUNDLED)
|
||||
if(TARGET_OS STREQUAL "windows")
|
||||
set(FREETYPE_COPY_FILES "${EXTRA_FREETYPE_LIBDIR}/libfreetype.dll")
|
||||
elseif(TARGET_OS STREQUAL "mac")
|
||||
set(FREETYPE_COPY_FILES "${EXTRA_FREETYPE_LIBDIR}/libfreetype.6.dylib")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
|
|
@ -10,7 +10,11 @@ find_library(SDL2_LIBRARY
|
|||
PATHS ${PATHS_SDL2_LIBDIR}
|
||||
${CROSSCOMPILING_NO_CMAKE_SYSTEM_PATH}
|
||||
)
|
||||
set(CMAKE_FIND_FRAMEWORK FIRST)
|
||||
if(PREFER_BUNDLED_LIBS)
|
||||
set(CMAKE_FIND_FRAMEWORK FIRST)
|
||||
else()
|
||||
set(CMAKE_FIND_FRAMEWORK LAST)
|
||||
endif()
|
||||
set_extra_dirs_include(SDL2 sdl "${SDL2_LIBRARY}")
|
||||
# Looking for 'SDL.h' directly might accidentally find a SDL instead of SDL 2
|
||||
# installation. Look for a header file only present in SDL 2 instead.
|
||||
|
@ -31,14 +35,18 @@ if(SDL2_FOUND)
|
|||
set(SDL2_INCLUDE_DIRS ${SDL2_INCLUDEDIR})
|
||||
|
||||
is_bundled(SDL2_BUNDLED "${SDL2_LIBRARY}")
|
||||
if(SDL2_BUNDLED AND TARGET_OS STREQUAL "windows")
|
||||
set(SDL2_COPY_FILES "${EXTRA_SDL2_LIBDIR}/SDL2.dll")
|
||||
if(TARGET_BITS EQUAL 32)
|
||||
list(APPEND OPUSFILE_COPY_FILES
|
||||
"${EXTRA_SDL2_LIBDIR}/libgcc_s_dw2-1.dll"
|
||||
)
|
||||
set(SDL2_COPY_FILES)
|
||||
set(SDL2_COPY_DIRS)
|
||||
if(SDL2_BUNDLED)
|
||||
if(TARGET_OS STREQUAL "windows")
|
||||
set(SDL2_COPY_FILES "${EXTRA_SDL2_LIBDIR}/SDL2.dll")
|
||||
if(TARGET_BITS EQUAL 32)
|
||||
list(APPEND OPUSFILE_COPY_FILES
|
||||
"${EXTRA_SDL2_LIBDIR}/libgcc_s_dw2-1.dll"
|
||||
)
|
||||
endif()
|
||||
elseif(TARGET_OS STREQUAL "mac")
|
||||
set(SDL2_COPY_DIRS "${EXTRA_SDL2_LIBDIR}/SDL2.framework")
|
||||
endif()
|
||||
else()
|
||||
set(SDL2_COPY_FILES)
|
||||
endif()
|
||||
endif()
|
||||
|
|
|
@ -38,9 +38,12 @@ if(SQLite3_FOUND)
|
|||
set(SQLite3_INCLUDE_DIRS ${SQLite3_INCLUDEDIR})
|
||||
|
||||
is_bundled(SQLite3_BUNDLED "${SQLite3_LIBRARY}")
|
||||
if(SQLite3_BUNDLED AND TARGET_OS STREQUAL "windows")
|
||||
set(SQLite3_COPY_FILES "${EXTRA_SQLite3_LIBDIR}/sqlite3.dll")
|
||||
else()
|
||||
set(SQLite3_COPY_FILES)
|
||||
set(SQLite3_COPY_FILES)
|
||||
if(SQLite3_BUNDLED)
|
||||
if(TARGET_OS STREQUAL "windows")
|
||||
set(SQLite3_COPY_FILES "${EXTRA_SQLite3_LIBDIR}/sqlite3.dll")
|
||||
elseif(TARGET_OS STREQUAL "mac")
|
||||
set(SQLite3_COPY_FILES "${EXTRA_SQLite3_LIBDIR}/libsqlite3.0.dylib")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
|
|
@ -28,11 +28,12 @@ if(WEBSOCKETS_FOUND)
|
|||
set(WEBSOCKETS_INCLUDE_DIRS ${WEBSOCKETS_INCLUDEDIR})
|
||||
|
||||
is_bundled(WEBSOCKETS_BUNDLED "${WEBSOCKETS_LIBRARY}")
|
||||
if(WEBSOCKETS_BUNDLED AND TARGET_OS STREQUAL "windows")
|
||||
set(WEBSOCKETS_COPY_FILES
|
||||
"${EXTRA_WEBSOCKETS_LIBDIR}/libwebsockets.dll"
|
||||
)
|
||||
else()
|
||||
set(WEBSOCKETS_COPY_FILES)
|
||||
set(WEBSOCKETS_COPY_FILES)
|
||||
if(WEBSOCKETS_BUNDLED)
|
||||
if(TARGET_OS STREQUAL "windows")
|
||||
set(WEBSOCKETS_COPY_FILES "${EXTRA_WEBSOCKETS_LIBDIR}/libwebsockets.dll")
|
||||
elseif(TARGET_OS STREQUAL "mac")
|
||||
set(WEBSOCKETS_COPY_FILES "${EXTRA_WEBSOCKETS_LIBDIR}/libwebsockets.18.dylib")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
|
18
cmake/toolchains/darwin-arm64.toolchain
Normal file
18
cmake/toolchains/darwin-arm64.toolchain
Normal file
|
@ -0,0 +1,18 @@
|
|||
if(NOT DEFINED ENV{OSXCROSS_TARGET} OR NOT DEFINED ENV{OSXCROSS_SDK})
|
||||
message(FATAL_ERROR "Run eval `osxcross-conf` before compilation")
|
||||
endif()
|
||||
|
||||
set(CMAKE_OSX_SYSROOT $ENV{OSXCROSS_SDK} CACHE INTERNAL "")
|
||||
|
||||
set(CMAKE_SYSTEM_NAME Darwin)
|
||||
|
||||
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
||||
set(CMAKE_C_COMPILER oa64-clang)
|
||||
set(CMAKE_CXX_COMPILER oa64-clang++)
|
||||
set(CMAKE_INSTALL_NAME_TOOL aarch64-apple-$ENV{OSXCROSS_TARGET}-install_name_tool)
|
||||
set(CMAKE_OTOOL aarch64-apple-$ENV{OSXCROSS_TARGET}-otool)
|
||||
|
||||
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)
|
|
@ -6,6 +6,7 @@ set(CMAKE_OSX_SYSROOT $ENV{OSXCROSS_SDK} CACHE INTERNAL "")
|
|||
|
||||
set(CMAKE_SYSTEM_NAME Darwin)
|
||||
|
||||
set(CMAKE_SYSTEM_PROCESSOR x86_64)
|
||||
set(CMAKE_C_COMPILER o64-clang)
|
||||
set(CMAKE_CXX_COMPILER o64-clang++)
|
||||
set(CMAKE_INSTALL_NAME_TOOL x86_64-apple-$ENV{OSXCROSS_TARGET}-install_name_tool)
|
|
@ -1 +1 @@
|
|||
Subproject commit 381d44a072c1bc05b3765af9c207dce3286ac3e8
|
||||
Subproject commit edfdbb6c40b78de2aac1174dbb977617312abbfb
|
|
@ -32,7 +32,7 @@ def main():
|
|||
lc_rpath_cmds = [cmd for cmd in cmds if cmd[0] == "cmd LC_RPATH"]
|
||||
|
||||
path_regex = re.compile(r"^path (.*) \(offset \d+\)$")
|
||||
rpaths = [k[0] for k in [[path_regex.match(part).group(1) for part in cmd if path_regex.match(part)] for cmd in lc_rpath_cmds]]
|
||||
rpaths = {k[0] for k in [[path_regex.match(part).group(1) for part in cmd if path_regex.match(part)] for cmd in lc_rpath_cmds]}
|
||||
print("Found paths:")
|
||||
|
||||
for path in rpaths:
|
||||
|
|
|
@ -74,6 +74,10 @@ class Hdiutil(Dmg):
|
|||
if symlinks:
|
||||
raise NotImplementedError("symlinks are not yet implemented")
|
||||
for i in range(5):
|
||||
try:
|
||||
os.remove(dmg)
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
try:
|
||||
self._hdiutil('create', '-volname', volume_name, '-srcdir', directory, dmg)
|
||||
except subprocess.CalledProcessError as e:
|
||||
|
|
Loading…
Reference in a new issue