diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5bfd62c97b..f9a535a872 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,7 +3,7 @@ on: [push, pull_request] name: Continuous integration jobs: - ubuntu-build-bundled: + ubuntu-build: name: Ubuntu runs-on: ubuntu-latest steps: @@ -32,8 +32,8 @@ jobs: - name: Build run: cmake --build build - macos-build-bundled: - name: macOS + macos-build-arm64: + name: macOS (M1) runs-on: macos-latest steps: - uses: actions/checkout@v2 @@ -43,11 +43,26 @@ jobs: run: brew install nasm - name: Configure - run: cmake -B build + run: cmake -B build -DCMAKE_OSX_ARCHITECTURES=arm64 - name: Build run: cmake --build build - windows-build-bundled: + macos-build-x86_64: + name: macOS (Intel) + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + - name: Checkout submodules + run: git submodule update --init + - name: Install dependencies + run: brew install + nasm + - name: Configure + run: cmake -B build -DCMAKE_OSX_ARCHITECTURES=x86_64 + - name: Build + run: cmake --build build + + windows-build: name: Windows runs-on: windows-latest steps: diff --git a/CMake/SetupFfmpeg.cmake b/CMake/SetupFfmpeg.cmake index d3e605a93b..aa75a53475 100644 --- a/CMake/SetupFfmpeg.cmake +++ b/CMake/SetupFfmpeg.cmake @@ -36,6 +36,15 @@ if(MACOSX) list(APPEND FFMPEG_CONFIGURE "--enable-cross-compile") list(APPEND FFMPEG_CONFIGURE "--enable-videotoolbox") list(APPEND FFMPEG_CONFIGURE "--extra-cflags=-mmacosx-version-min=11") + if(CMAKE_OSX_ARCHITECTURES STREQUAL "arm64") + list(APPEND FFMPEG_CONFIGURE "--arch=arm64" "--extra-cflags=-arch arm64" "--extra-ldflags=-arch arm64") + elseif(CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64") + list(APPEND FFMPEG_CONFIGURE "--arch=x86_64" "--extra-cflags=-arch x86_64" "--extra-ldflags=-arch x86_64") + else() + message(FATAL_ERROR + "Unsupported macOS architecture: ${CMAKE_OSX_ARCHITECTURES}, set CMAKE_OSX_ARCHITECTURES to either arm64 or x86_64" + ) + endif() else() list(APPEND FFMPEG_CONFIGURE "--enable-vaapi") endif() @@ -50,42 +59,14 @@ if(WITH_FFMPEG_JOBS GREATER 0) endif() list(APPEND SM_FFMPEG_MAKE "&&" "make" "DESTDIR=./dest" "install") -if(MACOSX) - externalproject_add("ffmpeg_arm64" - SOURCE_DIR "${SM_FFMPEG_SRC_DIR}" - CONFIGURE_COMMAND ${FFMPEG_CONFIGURE} "--arch=arm64" "--extra-cflags=-arch arm64" "--extra-ldflags=-arch arm64" - BUILD_COMMAND "${SM_FFMPEG_MAKE}" - UPDATE_COMMAND "" - INSTALL_COMMAND "" - TEST_COMMAND "") +externalproject_add("ffmpeg" + SOURCE_DIR "${SM_FFMPEG_SRC_DIR}" + CONFIGURE_COMMAND ${FFMPEG_CONFIGURE} + BUILD_COMMAND "${SM_FFMPEG_MAKE}" + UPDATE_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "") - externalproject_get_property("ffmpeg_arm64" BINARY_DIR) - set(SM_FFMPEG_LIB_ARM64 ${BINARY_DIR}/dest/lib) - - externalproject_add("ffmpeg_x86_64" - SOURCE_DIR "${SM_FFMPEG_SRC_DIR}" - CONFIGURE_COMMAND ${FFMPEG_CONFIGURE} "--arch=x86_64" "--extra-cflags=-arch x86_64" "--extra-ldflags=-arch x86_64" - BUILD_COMMAND "${SM_FFMPEG_MAKE}" - UPDATE_COMMAND "" - INSTALL_COMMAND "" - TEST_COMMAND "") - - externalproject_get_property("ffmpeg_x86_64" BINARY_DIR) - set(SM_FFMPEG_LIB_X86_64 ${BINARY_DIR}/dest/lib) - - # The header files are the same for both architectures, so it doesn't matter - # which one of the two binary dirs we use. - set(SM_FFMPEG_INCLUDE ${BINARY_DIR}/dest/include) -else() - externalproject_add("ffmpeg" - SOURCE_DIR "${SM_FFMPEG_SRC_DIR}" - CONFIGURE_COMMAND ${FFMPEG_CONFIGURE} - BUILD_COMMAND "${SM_FFMPEG_MAKE}" - UPDATE_COMMAND "" - INSTALL_COMMAND "" - TEST_COMMAND "") - - externalproject_get_property("ffmpeg" BINARY_DIR) - set(SM_FFMPEG_LIB ${BINARY_DIR}/dest/lib) - set(SM_FFMPEG_INCLUDE ${BINARY_DIR}/dest/include) -endif() +externalproject_get_property("ffmpeg" BINARY_DIR) +set(SM_FFMPEG_LIB ${BINARY_DIR}/dest/lib) +set(SM_FFMPEG_INCLUDE ${BINARY_DIR}/dest/include) diff --git a/StepmaniaCore.cmake b/StepmaniaCore.cmake index 502d10d4f3..a7800619a1 100644 --- a/StepmaniaCore.cmake +++ b/StepmaniaCore.cmake @@ -262,7 +262,6 @@ elseif(MACOSX) include("${SM_CMAKE_DIR}/SetupFfmpeg.cmake") set(WITH_CRASH_HANDLER TRUE) - set(CMAKE_OSX_ARCHITECTURES arm64;x86_64) set(CMAKE_OSX_DEPLOYMENT_TARGET "11") find_library(MAC_FRAME_ACCELERATE Accelerate ${CMAKE_SYSTEM_FRAMEWORK_PATH} REQUIRED) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4a16f1fd2f..84e8d6e3df 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -375,14 +375,10 @@ elseif(APPLE) ${MAC_FRAME_SYSTEM} "${BZIP2_LIBRARY_RELEASE}" "${ICONV_LIBRARIES}" - "${SM_FFMPEG_LIB_ARM64}/libavformat.a" - "${SM_FFMPEG_LIB_ARM64}/libavcodec.a" - "${SM_FFMPEG_LIB_ARM64}/libswscale.a" - "${SM_FFMPEG_LIB_ARM64}/libavutil.a" - "${SM_FFMPEG_LIB_X86_64}/libavformat.a" - "${SM_FFMPEG_LIB_X86_64}/libavcodec.a" - "${SM_FFMPEG_LIB_X86_64}/libswscale.a" - "${SM_FFMPEG_LIB_X86_64}/libavutil.a" + "${SM_FFMPEG_LIB}/libavformat.a" + "${SM_FFMPEG_LIB}/libavcodec.a" + "${SM_FFMPEG_LIB}/libswscale.a" + "${SM_FFMPEG_LIB}/libavutil.a" "${MAC_FRAME_COREMEDIA}" "${MAC_FRAME_COREVIDEO}" "${MAC_FRAME_VIDEOTOOLBOX}") @@ -446,7 +442,7 @@ list(APPEND SM_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} if(APPLE) list(APPEND SM_INCLUDE_DIRS "archutils/Unix") - add_dependencies("${SM_EXE_NAME}" "ffmpeg_arm64" "ffmpeg_x86_64") + add_dependencies("${SM_EXE_NAME}" "ffmpeg") list(APPEND SM_INCLUDE_DIRS "${SM_FFMPEG_INCLUDE}") else() if(MSVC)