From 5fcd108b3db081bbb00e9dc1da94e24aa79b9f78 Mon Sep 17 00:00:00 2001 From: milek7 Date: Mon, 18 Jan 2021 23:04:00 +0100 Subject: [PATCH] add MacOS ARM64 to CI builds --- CMakeLists.txt | 24 +-- CMake_modules/FindASIO.cmake | 8 +- CMake_modules/FindSndFile.cmake | 30 ++++ .../{FindGLFW3.cmake => Findglfw3.cmake} | 156 +++++++++--------- CMake_modules/Findlibsndfile.cmake | 34 ---- azure-pipelines.yml | 34 +++- 6 files changed, 162 insertions(+), 124 deletions(-) create mode 100644 CMake_modules/FindSndFile.cmake rename CMake_modules/{FindGLFW3.cmake => Findglfw3.cmake} (84%) delete mode 100644 CMake_modules/Findlibsndfile.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 98b66927..6f180780 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,8 +6,10 @@ if(POLICY CMP0074) cmake_policy(SET CMP0074 NEW) endif() +set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMake_modules/") -include(cotire) + +#include(cotire) set(DEPS_DIR ${DEPS_DIR} "${CMAKE_SOURCE_DIR}/ref") project("eu07") @@ -333,9 +335,8 @@ if (WITH_OPENVR) target_link_libraries(${PROJECT_NAME} ${OPENVR_LIBRARY}) endif() -find_package(GLFW3 REQUIRED) -include_directories(${GLFW3_INCLUDE_DIR}) -target_link_libraries(${PROJECT_NAME} ${GLFW3_LIBRARIES}) +find_package(glfw3 REQUIRED) +target_link_libraries(${PROJECT_NAME} glfw) find_package(PythonLibs 2 REQUIRED) include_directories(${PYTHON_INCLUDE_DIRS}) @@ -356,12 +357,15 @@ find_package(GLM REQUIRED) include_directories(${GLM_INCLUDE_DIR}) find_package(OpenAL REQUIRED) -include_directories(${OPENAL_INCLUDE_DIR}) -target_link_libraries(${PROJECT_NAME} ${OPENAL_LIBRARY}) +if (TARGET OpenAL::OpenAL) + target_link_libraries(${PROJECT_NAME} OpenAL::OpenAL) +else() + include_directories(${OPENAL_INCLUDE_DIR}) + target_link_libraries(${PROJECT_NAME} ${OPENAL_LIBRARY}) +endif() -find_package(libsndfile REQUIRED) -include_directories(${LIBSNDFILE_INCLUDE_DIR}) -target_link_libraries(${PROJECT_NAME} ${LIBSNDFILE_LIBRARY}) +find_package(SndFile REQUIRED) +target_link_libraries(${PROJECT_NAME} SndFile::sndfile) find_package(LuaJIT REQUIRED) include_directories(${LUAJIT_INCLUDE_DIR}) @@ -374,7 +378,7 @@ if (WITH_UART) endif() find_package(ASIO REQUIRED) -target_link_libraries(${PROJECT_NAME} ASIO::ASIO) +target_link_libraries(${PROJECT_NAME} asio::asio) if (WIN32) target_link_libraries(${PROJECT_NAME} ws2_32) diff --git a/CMake_modules/FindASIO.cmake b/CMake_modules/FindASIO.cmake index 399fbb80..07193bff 100644 --- a/CMake_modules/FindASIO.cmake +++ b/CMake_modules/FindASIO.cmake @@ -12,7 +12,7 @@ set(ASIO_FOUND FALSE) -if(TARGET ASIO::ASIO) +if(TARGET asio::asio) set(ASIO_FOUND TRUE) else() find_package(Threads QUIET) @@ -38,12 +38,12 @@ else() endif() endif() else() - add_library(ASIO::ASIO INTERFACE IMPORTED GLOBAL) - set_target_properties(ASIO::ASIO PROPERTIES + add_library(asio::asio INTERFACE IMPORTED GLOBAL) + set_target_properties(asio::asio PROPERTIES INTERFACE_COMPILE_DEFINITIONS "ASIO_STANDALONE" INTERFACE_INCLUDE_DIRECTORIES "${ASIO_ROOT}/include" ) - target_link_libraries(ASIO::ASIO INTERFACE Threads::Threads) + target_link_libraries(asio::asio INTERFACE Threads::Threads) set(ASIO_FOUND TRUE) endif() endif() diff --git a/CMake_modules/FindSndFile.cmake b/CMake_modules/FindSndFile.cmake new file mode 100644 index 00000000..2eb708ae --- /dev/null +++ b/CMake_modules/FindSndFile.cmake @@ -0,0 +1,30 @@ +# - Try to find libsndfile + +# Use pkg-config to get hints about paths +find_package(PkgConfig QUIET) +if(PKG_CONFIG_FOUND) + pkg_check_modules(LIBSNDFILE_PKGCONF sndfile) +endif(PKG_CONFIG_FOUND) + +# Include dir +find_path(LIBSNDFILE_INCLUDE_DIR + NAMES sndfile.h + PATHS ${LIBSNDFILE_PKGCONF_INCLUDE_DIRS} +) + +# Library +find_library(LIBSNDFILE_LIBRARY + NAMES sndfile libsndfile-1 + PATHS ${LIBSNDFILE_PKGCONF_LIBRARY_DIRS} +) + +find_package(PackageHandleStandardArgs) +find_package_handle_standard_args(SndFile DEFAULT_MSG LIBSNDFILE_LIBRARY LIBSNDFILE_INCLUDE_DIR) + +if(SNDFILE_FOUND) + add_library(SndFile::sndfile INTERFACE IMPORTED GLOBAL) + set_target_properties(SndFile::sndfile PROPERTIES + INTERFACE_LINK_LIBRARIES ${LIBSNDFILE_LIBRARY} + INTERFACE_INCLUDE_DIRECTORIES ${LIBSNDFILE_INCLUDE_DIR} + ) +endif(SNDFILE_FOUND) diff --git a/CMake_modules/FindGLFW3.cmake b/CMake_modules/Findglfw3.cmake similarity index 84% rename from CMake_modules/FindGLFW3.cmake rename to CMake_modules/Findglfw3.cmake index da0525c5..4be92ba2 100644 --- a/CMake_modules/FindGLFW3.cmake +++ b/CMake_modules/Findglfw3.cmake @@ -1,75 +1,81 @@ -# - Try to find GLFW3 -# -# If no pkgconfig, define GLFW_ROOT to installation tree -# Will define the following: -# GLFW3_FOUND -# GLFW3_INCLUDE_DIR -# GLFW3_LIBRARIES - -IF(PKG_CONFIG_FOUND) - IF(APPLE) - # homebrew or macports pkgconfig locations - SET(ENV{PKG_CONFIG_PATH} "/usr/local/opt/glfw3/lib/pkgconfig:/opt/local/lib/pkgconfig") - ENDIF() - SET(ENV{PKG_CONFIG_PATH} "${DEPENDS_DIR}/glfw/lib/pkgconfig:$ENV{PKG_CONFIG_PATH}") - PKG_CHECK_MODULES(GLFW3 glfw3) - - FIND_LIBRARY(GLFW3_LIBRARY - NAMES ${GLFW3_LIBRARIES} - HINTS ${GLFW3_LIBRARY_DIR} - ) - SET(GLFW3_LIBRARIES ${GLFW3_LIBRARY}) - - RETURN() -ENDIF() - -FIND_PATH(GLFW3_INCLUDE_DIR - GLFW/glfw3.h - DOC "GLFW include directory " - PATHS - "${DEPENDS_DIR}/glfw" - "$ENV{ProgramW6432}/glfw" - ${GLFW3_ROOT_PATH} - PATH_SUFFIXES - include -) - -# directories in the official binary package -IF(MINGW) - SET(_SUFFIX lib-mingw) -ELSEIF(MSVC11) - SET(_SUFFIX lib-vc2012) -ELSEIF(MSVC12) - SET(_SUFFIX lib-vc2013) -ELSEIF(MSVC14) - SET(_SUFFIX lib-vc2015) -ELSEIF(MSVC) - SET(_SUFFIX lib-vc2012) -ENDIF() - -FIND_LIBRARY(GLFW3_LIBRARIES - NAMES glfw3dll glfw3 glfw - PATHS - "${DEPENDS_DIR}/glfw" - "$ENV{ProgramW6432}/glfw" - ${GLFW3_ROOT_PATH} - PATH_SUFFIXES - lib - ${_SUFFIX} -) - -IF(WIN32) -FIND_FILE(GLFW3_DLL - glfw3.dll - PATHS - "${DEPENDS_DIR}/glfw" - "$ENV{ProgramW6432}/glfw" - ${GLFW3_ROOT_PATH} - PATH_SUFFIXES - ${_SUFFIX} -) -ENDIF() - -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLFW3 FOUND_VAR GLFW3_FOUND - REQUIRED_VARS GLFW3_LIBRARIES GLFW3_INCLUDE_DIR) +# - Try to find GLFW3 +# +# If no pkgconfig, define GLFW_ROOT to installation tree +# Will define the following: +# GLFW3_FOUND +# GLFW3_INCLUDE_DIR +# GLFW3_LIBRARIES + +IF(PKG_CONFIG_FOUND) + IF(APPLE) + # homebrew or macports pkgconfig locations + SET(ENV{PKG_CONFIG_PATH} "/usr/local/opt/glfw3/lib/pkgconfig:/opt/local/lib/pkgconfig") + ENDIF() + SET(ENV{PKG_CONFIG_PATH} "${DEPENDS_DIR}/glfw/lib/pkgconfig:$ENV{PKG_CONFIG_PATH}") + PKG_CHECK_MODULES(GLFW3 glfw3) + + FIND_LIBRARY(GLFW3_LIBRARY + NAMES ${GLFW3_LIBRARIES} + HINTS ${GLFW3_LIBRARY_DIR} + ) + SET(GLFW3_LIBRARIES ${GLFW3_LIBRARY}) + + RETURN() +ENDIF() + +FIND_PATH(GLFW3_INCLUDE_DIR + GLFW/glfw3.h + DOC "GLFW include directory " + PATHS + "${DEPENDS_DIR}/glfw" + "$ENV{ProgramW6432}/glfw" + ${GLFW3_ROOT_PATH} + PATH_SUFFIXES + include +) + +# directories in the official binary package +IF(MINGW) + SET(_SUFFIX lib-mingw) +ELSEIF(MSVC11) + SET(_SUFFIX lib-vc2012) +ELSEIF(MSVC12) + SET(_SUFFIX lib-vc2013) +ELSEIF(MSVC14) + SET(_SUFFIX lib-vc2015) +ELSEIF(MSVC) + SET(_SUFFIX lib-vc2012) +ENDIF() + +FIND_LIBRARY(GLFW3_LIBRARIES + NAMES glfw3dll glfw3 glfw + PATHS + "${DEPENDS_DIR}/glfw" + "$ENV{ProgramW6432}/glfw" + ${GLFW3_ROOT_PATH} + PATH_SUFFIXES + lib + ${_SUFFIX} +) + +IF(WIN32) +FIND_FILE(GLFW3_DLL + glfw3.dll + PATHS + "${DEPENDS_DIR}/glfw" + "$ENV{ProgramW6432}/glfw" + ${GLFW3_ROOT_PATH} + PATH_SUFFIXES + ${_SUFFIX} +) +ENDIF() + +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(glfw3 FOUND_VAR GLFW3_FOUND + REQUIRED_VARS GLFW3_LIBRARIES GLFW3_INCLUDE_DIR) + + add_library(glfw INTERFACE IMPORTED GLOBAL) + set_target_properties(glfw PROPERTIES + INTERFACE_LINK_LIBRARIES ${GLFW3_LIBRARIES} + INTERFACE_INCLUDE_DIRECTORIES ${GLFW3_INCLUDE_DIR} + ) diff --git a/CMake_modules/Findlibsndfile.cmake b/CMake_modules/Findlibsndfile.cmake deleted file mode 100644 index fbf77fae..00000000 --- a/CMake_modules/Findlibsndfile.cmake +++ /dev/null @@ -1,34 +0,0 @@ -# - Try to find libsndfile -# Once done, this will define -# -# LIBSNDFILE_FOUND - system has libsndfile -# LIBSNDFILE_INCLUDE_DIRS - the libsndfile include directories -# LIBSNDFILE_LIBRARIES - link these to use libsndfile - -# Use pkg-config to get hints about paths -find_package(PkgConfig QUIET) -if(PKG_CONFIG_FOUND) - pkg_check_modules(LIBSNDFILE_PKGCONF sndfile) -endif(PKG_CONFIG_FOUND) - -# Include dir -find_path(LIBSNDFILE_INCLUDE_DIR - NAMES sndfile.h - PATHS ${LIBSNDFILE_PKGCONF_INCLUDE_DIRS} -) - -# Library -find_library(LIBSNDFILE_LIBRARY - NAMES sndfile libsndfile-1 - PATHS ${LIBSNDFILE_PKGCONF_LIBRARY_DIRS} -) - -find_package(PackageHandleStandardArgs) -find_package_handle_standard_args(libsndfile DEFAULT_MSG LIBSNDFILE_LIBRARY LIBSNDFILE_INCLUDE_DIR) - -if(LIBSNDFILE_FOUND) - set(LIBSNDFILE_LIBRARIES ${LIBSNDFILE_LIBRARY}) - set(LIBSNDFILE_INCLUDE_DIRS ${LIBSNDFILE_INCLUDE_DIR}) -endif(LIBSNDFILE_FOUND) - -mark_as_advanced(LIBSNDFILE_LIBRARY LIBSNDFILE_LIBRARIES LIBSNDFILE_INCLUDE_DIR LIBSNDFILE_INCLUDE_DIRS) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index f302e2b0..50b02941 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -29,7 +29,7 @@ jobs: - job: macos1015 pool: vmImage: 'macOS-10.15' - displayName: 'MacOS 10.15' + displayName: 'MacOS 10.15 x86-64' steps: - script: | sudo xcode-select -s /Applications/Xcode_12.3.app @@ -49,6 +49,38 @@ jobs: artifactName: binaries_macos displayName: 'Publish binaries' + - job: macos1015_arm64 + pool: + vmImage: 'macOS-10.15' + displayName: 'MacOS 10.15 ARM64' + steps: + - script: | + sudo xcode-select -s /Applications/Xcode_12.3.app + displayName: 'Setup Xcode' + - script: | + cd /tmp + git clone https://github.com/microsoft/vcpkg + cd vcpkg + git remote add milek https://github.com/Milek7/vcpkg + git fetch milek + git checkout c0020eb4 + ./bootstrap-vcpkg.sh + ./vcpkg install glfw3:arm64-osx libpng:arm64-osx libsndfile:arm64-osx asio:arm64-osx + git cherry-pick 9b7f342 + ./vcpkg install luajit:arm64-osx + displayName: 'Install dependencies' + - script: | + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_TOOLCHAIN_FILE=/tmp/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=arm64-osx -DWITH_ZMQ=OFF -DWITH_OPENVR=OFF -DWITH_UART=OFF + cmake --build . + displayName: 'Build' + - task: PublishBuildArtifacts@1 + inputs: + pathtoPublish: 'build/bin' + artifactName: binaries_macos_arm64 + displayName: 'Publish binaries' + - job: windows_x64 pool: vmImage: 'vs2017-win2016'