macOS cmake CI fixes

Use ninja instead of make for faster builds
Proper library linking of dependencies
This commit is contained in:
adam-bloom 2021-01-10 00:49:04 -07:00
parent f51fea47df
commit 9efe184538
4 changed files with 52 additions and 34 deletions

View File

@ -156,15 +156,20 @@ jobs:
- name: Checkout - name: Checkout
uses: actions/checkout@v1 uses: actions/checkout@v1
- name: Build OpenRCT2 - name: Build OpenRCT2
run: . scripts/setenv -q && build -DWITH_TESTS=on -DCMAKE_BUILD_TYPE=MinSizeRel run: |
brew install ninja
. scripts/setenv -q && build -DWITH_TESTS=on -DCMAKE_BUILD_TYPE=MinSizeRel -DBUILD_SHARED_LIBS=on -DDISABLE_DISCORD_RPC=on
- name: Run Tests - name: Run Tests
shell: bash shell: bash
run: . scripts/setenv -q && run-tests run: . scripts/setenv -q && run-tests
- name: Build artifacts
shell: bash
run: . scripts/setenv -q && build-portable artifacts/OpenRCT2-MacOS-x64-cmake.tar.gz bin/install/usr
- name: Upload artifacts (CI) - name: Upload artifacts (CI)
uses: actions/upload-artifact@v2-preview uses: actions/upload-artifact@v2-preview
with: with:
name: "OpenRCT2-macOS-cmake" name: "OpenRCT2-macOS-cmake"
path: build/install/* path: artifacts
linux-portable: linux-portable:
name: Linux (x64, portable) name: Linux (x64, portable)

View File

@ -33,22 +33,11 @@ else
echo -e "\033[0;36mBuilding OpenRCT2...\033[0m" echo -e "\033[0;36mBuilding OpenRCT2...\033[0m"
mkdir -p bin && cd bin mkdir -p bin && cd bin
export DESTDIR=install export DESTDIR=install
# macOS runners do not have Ninja installed by default
if [[ $(uname) == "Darwin" ]]; then
cmake .. -DCMAKE_INSTALL_PREFIX=./install "$@"
else
cmake .. -G Ninja -DCMAKE_INSTALL_PREFIX=/usr "$@" cmake .. -G Ninja -DCMAKE_INSTALL_PREFIX=/usr "$@"
fi
if [[ "$TESTPAINT" == "true" ]]; then if [[ "$TESTPAINT" == "true" ]]; then
testpaint_target=testpaint testpaint_target=testpaint
fi fi
# macOS runners do not have Ninja installed by default
if [[ $(uname) == "Darwin" ]]; then
make install
else
ninja -k0 $testpaint_target all install ninja -k0 $testpaint_target all install
fi
fi fi

View File

@ -12,8 +12,8 @@ if (MSVC)
find_package(SDL2 REQUIRED) find_package(SDL2 REQUIRED)
find_library(SPEEX_LDFLAGS libspeexdsp) find_library(SPEEX_LDFLAGS libspeexdsp)
else () else ()
PKG_CHECK_MODULES(SDL2 REQUIRED sdl2) PKG_CHECK_MODULES(SDL2 REQUIRED IMPORTED_TARGET sdl2)
PKG_CHECK_MODULES(SPEEX REQUIRED speexdsp) PKG_CHECK_MODULES(SPEEX REQUIRED IMPORTED_TARGET speexdsp)
endif () endif ()
if (NOT DISABLE_OPENGL) if (NOT DISABLE_OPENGL)
@ -42,10 +42,15 @@ project(openrct2 CXX)
add_executable(${PROJECT_NAME} ${OPENRCT2_UI_SOURCES} ${OPENRCT2_UI_MM_SOURCES}) add_executable(${PROJECT_NAME} ${OPENRCT2_UI_SOURCES} ${OPENRCT2_UI_MM_SOURCES})
SET_CHECK_CXX_FLAGS(${PROJECT_NAME}) SET_CHECK_CXX_FLAGS(${PROJECT_NAME})
ipo_set_target_properties(${PROJECT_NAME}) ipo_set_target_properties(${PROJECT_NAME})
if (NOT MSVC)
target_link_libraries(${PROJECT_NAME} "libopenrct2" target_link_libraries(${PROJECT_NAME} "libopenrct2"
PkgConfig::SDL2
PkgConfig::SPEEX)
else ()
target_link_libraries(${PROJECT_NAME} "libopenrct2"
${SDL2_LDFLAGS} ${SDL2_LDFLAGS}
${SPEEX_LDFLAGS}) ${SPEEX_LDFLAGS})
endif ()
target_link_platform_libraries(${PROJECT_NAME}) target_link_platform_libraries(${PROJECT_NAME})
if (NOT DISABLE_OPENGL) if (NOT DISABLE_OPENGL)

View File

@ -19,6 +19,9 @@ if (APPLE)
endif () endif ()
add_library(${PROJECT_NAME} ${OPENRCT2_CORE_SOURCES} ${OPENRCT2_CORE_MM_SOURCES}) add_library(${PROJECT_NAME} ${OPENRCT2_CORE_SOURCES} ${OPENRCT2_CORE_MM_SOURCES})
if (APPLE)
target_link_platform_libraries(${PROJECT_NAME})
endif ()
set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "") set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "")
SET_CHECK_CXX_FLAGS(${PROJECT_NAME}) SET_CHECK_CXX_FLAGS(${PROJECT_NAME})
@ -34,10 +37,11 @@ if (NOT DISABLE_NETWORK OR NOT DISABLE_HTTP)
target_link_libraries(${PROJECT_NAME} bcrypt) target_link_libraries(${PROJECT_NAME} bcrypt)
else () else ()
if (APPLE) if (APPLE)
if (NOT MACOS_USE_DEPENDENCIES)
# Needed for linking with non-broken OpenSSL on Apple platforms # Needed for linking with non-broken OpenSSL on Apple platforms
set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/opt/openssl/lib/pkgconfig") set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/opt/openssl/lib/pkgconfig")
endif () endif ()
endif ()
find_package(OpenSSL 1.0.0 REQUIRED) find_package(OpenSSL 1.0.0 REQUIRED)
target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC ${OPENSSL_INCLUDE_DIR}) target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC ${OPENSSL_INCLUDE_DIR})
@ -78,7 +82,7 @@ if (NOT DISABLE_TTF)
if (MSVC) if (MSVC)
find_package(freetype REQUIRED) find_package(freetype REQUIRED)
else () else ()
PKG_CHECK_MODULES(FREETYPE REQUIRED freetype2) PKG_CHECK_MODULES(FREETYPE REQUIRED IMPORTED_TARGET freetype2)
endif () endif ()
target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE ${FREETYPE_INCLUDE_DIRS}) target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE ${FREETYPE_INCLUDE_DIRS})
@ -118,16 +122,16 @@ if (MSVC)
find_path(LIBZIP_INCLUDE_DIRS zip.h) find_path(LIBZIP_INCLUDE_DIRS zip.h)
find_library(LIBZIP_LIBRARIES zip) find_library(LIBZIP_LIBRARIES zip)
else () else ()
PKG_CHECK_MODULES(LIBZIP REQUIRED libzip>=1.0) PKG_CHECK_MODULES(LIBZIP REQUIRED IMPORTED_TARGET libzip>=1.0)
PKG_CHECK_MODULES(ZLIB REQUIRED zlib) PKG_CHECK_MODULES(ZLIB REQUIRED IMPORTED_TARGET zlib)
PKG_CHECK_MODULES(PNG libpng>=1.6) PKG_CHECK_MODULES(PNG IMPORTED_TARGET libpng>=1.6)
if (NOT PNG_FOUND) if (NOT PNG_FOUND)
PKG_CHECK_MODULES(PNG libpng16) PKG_CHECK_MODULES(PNG IMPORTED_TARGET libpng16)
if (NOT PNG_FOUND) if (NOT PNG_FOUND)
PKG_CHECK_MODULES(PNG libpng>=1.2) PKG_CHECK_MODULES(PNG IMPORTED_TARGET libpng>=1.2)
if (NOT PNG_FOUND) if (NOT PNG_FOUND)
PKG_CHECK_MODULES(PNG REQUIRED libpng12) PKG_CHECK_MODULES(PNG REQUIRED IMPORTED_TARGET libpng12)
endif () endif ()
endif () endif ()
endif () endif ()
@ -139,10 +143,17 @@ if (STATIC)
${ZLIB_STATIC_LIBRARIES} ${ZLIB_STATIC_LIBRARIES}
${LIBZIP_STATIC_LIBRARIES}) ${LIBZIP_STATIC_LIBRARIES})
else () else ()
if (NOT MSVC)
target_link_libraries(${PROJECT_NAME}
PkgConfig::PNG
PkgConfig::ZLIB
PkgConfig::LIBZIP)
else ()
target_link_libraries(${PROJECT_NAME} target_link_libraries(${PROJECT_NAME}
${PNG_LIBRARIES} ${PNG_LIBRARIES}
${ZLIB_LIBRARIES} ${ZLIB_LIBRARIES}
${LIBZIP_LIBRARIES}) ${LIBZIP_LIBRARIES})
endif ()
endif () endif ()
if (MINGW) if (MINGW)
@ -176,13 +187,21 @@ endif ()
if (NOT DISABLE_TTF) if (NOT DISABLE_TTF)
if (STATIC) if (STATIC)
if (NOT MSVC)
target_link_libraries(${PROJECT_NAME} PkgConfig::FREETYPE_STATIC)
else ()
target_link_libraries(${PROJECT_NAME} ${FREETYPE_STATIC_LIBRARIES}) target_link_libraries(${PROJECT_NAME} ${FREETYPE_STATIC_LIBRARIES})
endif ()
if (UNIX AND NOT APPLE) if (UNIX AND NOT APPLE)
target_link_libraries(${PROJECT_NAME} ${FONTCONFIG_STATIC_LIBRARIES}) target_link_libraries(${PROJECT_NAME} ${FONTCONFIG_STATIC_LIBRARIES})
endif () endif ()
else ()
if (NOT MSVC)
target_link_libraries(${PROJECT_NAME} PkgConfig::FREETYPE)
else () else ()
target_link_libraries(${PROJECT_NAME} ${FREETYPE_LIBRARIES}) target_link_libraries(${PROJECT_NAME} ${FREETYPE_LIBRARIES})
endif ()
if (UNIX AND NOT APPLE) if (UNIX AND NOT APPLE)
target_link_libraries(${PROJECT_NAME} ${FONTCONFIG_LIBRARIES}) target_link_libraries(${PROJECT_NAME} ${FONTCONFIG_LIBRARIES})