Skip to content

Commit

Permalink
MacOS CI
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] authored and nyalldawson committed Apr 6, 2020
1 parent 390dd8a commit b72111f
Show file tree
Hide file tree
Showing 22 changed files with 154 additions and 59 deletions.
41 changes: 41 additions & 0 deletions .github/workflows/macos-build.yml
@@ -0,0 +1,41 @@
name: Mac OS build
on: [push, pull_request]
env:
QT_VERSION: 5.14.1
QGIS_DEPS_VERSION: 0.2.2

jobs:
mac_os_build:
if: github.repository == 'qgis/QGIS'
runs-on: macos-latest
steps:
- uses: actions/checkout@v2

- name: download qgis-deps
run: |
wget https://qgis.org/downloads/macos/deps/qt-${QT_VERSION}.tar.gz
wget https://qgis.org/downloads/macos/deps/qgis-deps-${QGIS_DEPS_VERSION}.tar.gz
wget https://qgis.org/downloads/macos/deps/install_qgis_deps-${QGIS_DEPS_VERSION}.bash
- name: install qgis-deps
run: |
chmod +x ./install_qgis_deps-${QGIS_DEPS_VERSION}.bash
sudo ./install_qgis_deps-${QGIS_DEPS_VERSION}.bash
- name: create build system
run: |
QGIS_DIR=`pwd`
mkdir -p ../build-QGIS
cd ../build-QGIS
PATH=/opt/QGIS/qgis-deps-${QGIS_DEPS_VERSION}/stage/bin:$PATH \
cmake -DQGIS_MAC_DEPS_DIR=/opt/QGIS/qgis-deps-${QGIS_DEPS_VERSION}/stage \
-DCMAKE_PREFIX_PATH=/opt/Qt/${QT_VERSION}/clang_64 \
-DWITH_BINDINGS=TRUE \
-DWITH_3D=TRUE \
$QGIS_DIR
- name: build QGIS
run: |
cd ../build-QGIS
make -j $(sysctl -n hw.ncpu)
21 changes: 18 additions & 3 deletions CMakeLists.txt
Expand Up @@ -31,6 +31,20 @@ ENDIF (APPLE)
MATH(EXPR QGIS_VERSION_INT "${CPACK_PACKAGE_VERSION_MAJOR}*10000+${CPACK_PACKAGE_VERSION_MINOR}*100+${CPACK_PACKAGE_VERSION_PATCH}")
MESSAGE(STATUS "QGIS version: ${COMPLETE_VERSION} ${RELEASE_NAME} (${QGIS_VERSION_INT})")

#############################################################
IF (APPLE)
# QGIS custom dependencies package from qgis/QGIS-Mac-Packager
# they can be downloaded from https://qgis.org/downloads/macos/qgis-deps
# and extracted to /opt/QGIS/qgis-deps-<deps-version>/stage
SET (QGIS_MAC_DEPS_DIR "" CACHE PATH "Path to QGIS Mac custom dependencies directory")

# Setup LIB_DIR and CMAKE_PREFIX_PATH to help CMake's
# find_packages to look for these libraries instead of system libraries
IF ( QGIS_MAC_DEPS_DIR )
SET(ENV{LIB_DIR} ${QGIS_MAC_DEPS_DIR})
LIST(APPEND CMAKE_PREFIX_PATH ${QGIS_MAC_DEPS_DIR})
ENDIF ( QGIS_MAC_DEPS_DIR )
ENDIF (APPLE)

#############################################################
# Configure OpenCL if available
Expand Down Expand Up @@ -675,8 +689,9 @@ IF (WITH_CORE)
SET (QGIS_MACAPP_PREFIX ${CMAKE_INSTALL_PREFIX}/${QGIS_APP_NAME}.app/Contents)
# common prefix for components, let cmake handle it
SET (CMAKE_INSTALL_PREFIX ${QGIS_MACAPP_PREFIX}/MacOS)
# 4 bundling levels, each includes previous
# 0 nothing
# 5 bundling levels, each includes previous
# -1 nothing
# 0 fixup the library paths for all QGIS libraries with @loader_path
# 1 Qt frameworks
# 2 non-system libraries, "standard"
# 3 non-system frameworks, "standalone"
Expand Down Expand Up @@ -838,7 +853,7 @@ ENDIF (DISABLE_DEPRECATED)
#############################################################
# Python build dependency

FIND_PACKAGE(PythonInterp 3 REQUIRED)
FIND_PACKAGE(PythonLibrary REQUIRED)

#############################################################
# Python bindings
Expand Down
5 changes: 4 additions & 1 deletion cmake/Bison.cmake
Expand Up @@ -13,10 +13,13 @@ MACRO(FIND_BISON)
FIND_PROGRAM(BISON_EXECUTABLE PATHS
NAMES bison.exe
PATHS $ENV{LIB_DIR}/bin c:/cygwin/bin $ENV{PROGRAMFILES}/GnuWin32/bin
)
)
ELSEIF(APPLE AND QGIS_MAC_DEPS_DIR)
FIND_PROGRAM(BISON_EXECUTABLE bison PATHS $ENV{LIB_DIR}/bin NO_DEFAULT_PATH)
ELSE (MSVC)
FIND_PROGRAM(BISON_EXECUTABLE bison)
ENDIF (MSVC)

IF (NOT BISON_EXECUTABLE)

MESSAGE(FATAL_ERROR "Bison not found - aborting")
Expand Down
4 changes: 2 additions & 2 deletions cmake/FindEXIV2.cmake
Expand Up @@ -9,8 +9,8 @@
#


FIND_PATH(EXIV2_INCLUDE_DIR exiv2/exiv2.hpp /usr/local/include /usr/include)
FIND_LIBRARY(EXIV2_LIBRARY NAMES exiv2 PATHS /usr/local/lib /usr/lib)
FIND_PATH(EXIV2_INCLUDE_DIR exiv2/exiv2.hpp $ENV{LIB_DIR}/include /usr/local/include /usr/include)
FIND_LIBRARY(EXIV2_LIBRARY NAMES exiv2 PATHS $ENV{LIB_DIR}/lib /usr/local/lib /usr/lib)

IF (EXIV2_INCLUDE_DIR AND EXIV2_LIBRARY)
SET(EXIV2_FOUND TRUE)
Expand Down
10 changes: 8 additions & 2 deletions cmake/FindGDAL.cmake
Expand Up @@ -32,9 +32,14 @@ IF(WIN32)
CACHE STRING INTERNAL)
ENDIF (GDAL_LIBRARY)
ENDIF (MSVC)



ELSEIF(APPLE AND QGIS_MAC_DEPS_DIR)

FIND_PATH(GDAL_INCLUDE_DIR gdal.h "$ENV{LIB_DIR}/include")
FIND_LIBRARY(GDAL_LIBRARY NAMES gdal PATHS "$ENV{LIB_DIR}/lib")

ELSE(WIN32)

IF(UNIX)

# try to use framework on mac
Expand Down Expand Up @@ -81,6 +86,7 @@ ELSE(WIN32)
FIND_PROGRAM(GDAL_CONFIG gdal-config
${GDAL_CONFIG_PREFER_PATH}
${GDAL_CONFIG_PREFER_FWTOOLS_PATH}
$ENV{LIB_DIR}/bin
/usr/local/bin/
/usr/bin/
)
Expand Down
10 changes: 8 additions & 2 deletions cmake/FindGEOS.cmake
Expand Up @@ -18,8 +18,8 @@ INCLUDE (${CMAKE_SOURCE_DIR}/cmake/MacPlistMacros.cmake)
IF(WIN32)

IF (MINGW)
FIND_PATH(GEOS_INCLUDE_DIR geos_c.h /usr/local/include /usr/include c:/msys/local/include)
FIND_LIBRARY(GEOS_LIBRARY NAMES geos_c PATHS /usr/local/lib /usr/lib c:/msys/local/lib)
FIND_PATH(GEOS_INCLUDE_DIR geos_c.h "$ENV{LIB_DIR}/include" /usr/local/include /usr/include c:/msys/local/include)
FIND_LIBRARY(GEOS_LIBRARY NAMES geos_c PATHS "$ENV{LIB_DIR}/lib" /usr/local/lib /usr/lib c:/msys/local/lib)
ENDIF (MINGW)

IF (MSVC)
Expand All @@ -30,6 +30,11 @@ IF(WIN32)
)
ENDIF (MSVC)

ELSEIF(APPLE AND QGIS_MAC_DEPS_DIR)

FIND_PATH(GEOS_INCLUDE_DIR geos_c.h "$ENV{LIB_DIR}/include" )
FIND_LIBRARY(GEOS_LIBRARY NAMES geos_c PATHS "$ENV{LIB_DIR}/lib" )

ELSE(WIN32)

IF(UNIX)
Expand Down Expand Up @@ -71,6 +76,7 @@ ELSE(WIN32)
SET(GEOS_CONFIG_PREFER_PATH "$ENV{GEOS_HOME}/bin" CACHE STRING "preferred path to GEOS (geos-config)")
FIND_PROGRAM(GEOS_CONFIG geos-config
${GEOS_CONFIG_PREFER_PATH}
$ENV{LIB_DIR}/bin
/usr/local/bin/
/usr/bin/
)
Expand Down
24 changes: 15 additions & 9 deletions cmake/FindGRASS.cmake
Expand Up @@ -174,15 +174,21 @@ IF (UNIX)
ENDIF (UNIX)

IF (APPLE)
IF (GRASS_FIND_VERSION EQUAL 7)
LIST(APPEND GRASS_PATHS
/Applications/GRASS-7.6.app/Contents/MacOS
/Applications/GRASS-7.4.app/Contents/MacOS
/Applications/GRASS-7.2.app/Contents/MacOS
/Applications/GRASS-7.0.app/Contents/MacOS
)
ENDIF ()
LIST(APPEND GRASS_PATHS /Applications/GRASS.app/Contents/Resources)
IF (QGIS_MAC_DEPS_DIR)
FOREACH (VERSION_MINOR 9 8 7 6 5 4 3 2 1 0)
LIST (APPEND GRASS_PATHS $ENV{LIB_DIR}/grass${GRASS_FIND_VERSION}${VERSION_MINOR})
ENDFOREACH(VERSION_MINOR)
ELSE (QGIS_MAC_DEPS_DIR)
IF (GRASS_FIND_VERSION EQUAL 7)
LIST(APPEND GRASS_PATHS
/Applications/GRASS-7.6.app/Contents/MacOS
/Applications/GRASS-7.4.app/Contents/MacOS
/Applications/GRASS-7.2.app/Contents/MacOS
/Applications/GRASS-7.0.app/Contents/MacOS
)
ENDIF ()
LIST(APPEND GRASS_PATHS /Applications/GRASS.app/Contents/Resources)
ENDIF (QGIS_MAC_DEPS_DIR)
ENDIF (APPLE)

IF (WITH_GRASS${GRASS_CACHE_VERSION})
Expand Down
1 change: 1 addition & 0 deletions cmake/FindGSL.cmake
Expand Up @@ -65,6 +65,7 @@ ELSE(WIN32)
SET(GSL_CONFIG_PREFER_PATH "$ENV{GSL_HOME}/bin" CACHE STRING "preferred path to GSL (gsl-config)")
FIND_PROGRAM(GSL_CONFIG gsl-config
${GSL_CONFIG_PREFER_PATH}
$ENV{LIB_DIR}/bin
/usr/local/bin/
/usr/bin/
)
Expand Down
35 changes: 14 additions & 21 deletions cmake/FindLibZip.cmake
Expand Up @@ -15,39 +15,32 @@

FIND_PATH(LIBZIP_INCLUDE_DIR
zip.h
PATHS
/usr/local/include
/usr/include
"$ENV{LIB_DIR}/include"
"$ENV{INCLUDE}"
)
/usr/local/include
/usr/include
)

FIND_PATH(LIBZIP_CONF_INCLUDE_DIR
zipconf.h
PATHS
/usr/local/lib/libzip/include
/usr/lib/libzip/include
"$ENV{LIB_DIR}/include"
"$ENV{LIB_DIR}/lib/libzip/include"
"$ENV{LIB}/lib/libzip/include"
/usr/local/lib/libzip/include
/usr/lib/libzip/include
/usr/local/include
/usr/include
"$ENV{LIB_DIR}/include"
"$ENV{INCLUDE}"
)
)

FIND_LIBRARY(LIBZIP_LIBRARY NAMES zip PATHS "$ENV{LIB_DIR}/lib" "$ENV{LIB}" /usr/local/lib /usr/lib )

FIND_LIBRARY(LIBZIP_LIBRARY
NAMES zip
PATHS
/usr/local/lib
/usr/lib
"$ENV{LIB_DIR}/lib"
"$ENV{LIB}"
)
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibZip DEFAULT_MSG
LIBZIP_LIBRARY LIBZIP_INCLUDE_DIR LIBZIP_CONF_INCLUDE_DIR)

IF (LIBZIP_LIBRARY AND LIBZIP_INCLUDE_DIR AND LIBZIP_CONF_INCLUDE_DIR)
SET(LIBZIP_FOUND TRUE)
SET(LIBZIP_INCLUDE_DIRS ${LIBZIP_INCLUDE_DIR} ${LIBZIP_CONF_INCLUDE_DIR})
ENDIF (LIBZIP_LIBRARY AND LIBZIP_INCLUDE_DIR AND LIBZIP_CONF_INCLUDE_DIR)
SET(LIBZIP_INCLUDE_DIRS ${LIBZIP_INCLUDE_DIR} ${LIBZIP_CONF_INCLUDE_DIR})
MARK_AS_ADVANCED(LIBZIP_LIBRARY LIBZIP_INCLUDE_DIR LIBZIP_CONF_INCLUDE_DIR LIBZIP_INCLUDE_DIRS)

IF (LIBZIP_FOUND)
MESSAGE(STATUS "Found libzip: ${LIBZIP_LIBRARY}")
Expand Down
1 change: 1 addition & 0 deletions cmake/FindLibtasn1.cmake
Expand Up @@ -29,6 +29,7 @@ find_library(LIBTASN1_LIBRARY
NAMES tasn1
PATHS
${LIB_DIR}
$ENV{LIB_DIR}/lib
"$ENV{LIB_DIR}"
$ENV{LIB}
/usr/local/lib
Expand Down
4 changes: 2 additions & 2 deletions cmake/FindMDAL.cmake
Expand Up @@ -16,11 +16,11 @@ PKG_CHECK_MODULES(PC_MDAL QUIET libmdal)
SET(MDAL_DEFINITIONS ${PC_MDAL_CFLAGS_OTHER})

FIND_PATH(MDAL_INCLUDE_DIR mdal.h
HINTS ${PC_MDAL_INCLUDEDIR} ${PC_MDAL_INCLUDE_DIRS} ${MDAL_PREFIX}/include
HINTS $ENV{LIB_DIR}/include ${PC_MDAL_INCLUDEDIR} ${PC_MDAL_INCLUDE_DIRS} ${MDAL_PREFIX}/include
PATH_SUFFIXES libmdal )

FIND_LIBRARY(MDAL_LIBRARY NAMES mdal libmdal
HINTS ${PC_MDAL_LIBDIR} ${PC_MDAL_LIBRARY_DIRS} ${MDAL_PREFIX}/lib)
HINTS $ENV{LIB_DIR}/lib ${PC_MDAL_LIBDIR} ${PC_MDAL_LIBRARY_DIRS} ${MDAL_PREFIX}/lib)

INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(MDAL DEFAULT_MSG
Expand Down
2 changes: 2 additions & 0 deletions cmake/FindOSGEARTH.cmake
Expand Up @@ -27,6 +27,7 @@ FIND_PATH( ${THIS_OSGEARTH_INCLUDE_DIR} ${THIS_OSGEARTH_INCLUDE_FILE}
$ENV{OSGEARTHDIR}
$ENV{OSGEARTH_DIR}
$ENV{OSGEO4W_ROOT}
$ENV{LIB_DIR}
/usr/local/
/usr/
/sw/ # Fink
Expand Down Expand Up @@ -62,6 +63,7 @@ FIND_LIBRARY(${MYLIBRARY}
$ENV{OSGEO4W_ROOT}
~/Library/Frameworks
/Library/Frameworks
$ENV{LIB_DIR}
/usr/local
/usr
/sw
Expand Down
7 changes: 5 additions & 2 deletions cmake/FindPythonLibrary.cmake
Expand Up @@ -35,8 +35,8 @@ else(EXISTS "${PYTHON_INCLUDE_PATH}" AND EXISTS "${PYTHON_LIBRARY}" AND EXISTS "

if(PYTHONINTERP_FOUND)
FIND_FILE(_find_lib_python_py FindLibPython.py PATHS ${CMAKE_MODULE_PATH} NO_CMAKE_FIND_ROOT_PATH)

EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${_find_lib_python_py} OUTPUT_VARIABLE python_config)

if(python_config)
STRING(REGEX REPLACE ".*exec_prefix:([^\n]+).*$" "\\1" PYTHON_PREFIX ${python_config})
STRING(REGEX REPLACE ".*\nshort_version:([^\n]+).*$" "\\1" PYTHON_SHORT_VERSION ${python_config})
Expand All @@ -54,8 +54,11 @@ else(EXISTS "${PYTHON_INCLUDE_PATH}" AND EXISTS "${PYTHON_LIBRARY}" AND EXISTS "
if(WIN32)
STRING(REPLACE "\\" "/" PYTHON_SITE_PACKAGES_DIR ${PYTHON_SITE_PACKAGES_DIR})
FIND_LIBRARY(PYTHON_LIBRARY NAMES ${PYTHON_LIBRARY_NAMES} PATHS ${PYTHON_PREFIX}/lib ${PYTHON_PREFIX}/libs)
elseif(APPLE AND QGIS_MAC_DEPS_DIR)
FIND_LIBRARY(PYTHON_LIBRARY python${PYTHON_SHORT_VERSION}m PATHS $ENV{LIB_DIR}/lib)
else(WIN32)
FIND_LIBRARY(PYTHON_LIBRARY NAMES ${PYTHON_LIBRARY_NAMES})
endif(WIN32)
FIND_LIBRARY(PYTHON_LIBRARY NAMES ${PYTHON_LIBRARY_NAMES})
set(PYTHON_INCLUDE_PATH ${PYTHON_INCLUDE_PATH} CACHE FILEPATH "Directory holding the python.h include file" FORCE)
set(PYTHONLIBRARY_FOUND TRUE)
endif(python_config)
Expand Down
1 change: 1 addition & 0 deletions cmake/FindQCA.cmake
Expand Up @@ -28,6 +28,7 @@ else(QCA_INCLUDE_DIR AND QCA_LIBRARY)
${LIB_DIR}
$ENV{LIB}
"$ENV{LIB_DIR}"
$ENV{LIB_DIR}/lib
/usr/local/lib
)

Expand Down
2 changes: 2 additions & 0 deletions cmake/FindQScintilla.cmake
Expand Up @@ -38,6 +38,7 @@ ELSE(QSCINTILLA_VERSION_STR)
NAMES ${QSCINTILLA_LIBRARY_NAMES}
PATHS
"${QT_LIBRARY_DIR}"
$ENV{LIB_DIR}/lib
/usr/local/lib
/usr/local/lib/qt5
/usr/lib
Expand All @@ -54,6 +55,7 @@ ELSE(QSCINTILLA_VERSION_STR)
"${_qsci_fw}/Headers"
${Qt5Core_INCLUDE_DIRS}
"${QT_INCLUDE_DIR}"
$ENV{LIB_DIR}/include
/usr/local/include
/usr/include
PATH_SUFFIXES qt
Expand Down
1 change: 1 addition & 0 deletions cmake/FindQtKeychain.cmake
Expand Up @@ -28,6 +28,7 @@ FIND_LIBRARY(QTKEYCHAIN_LIBRARY NAMES qt5keychain qtkeychain
PATHS
${LIB_DIR}
"$ENV{LIB_DIR}"
$ENV{LIB_DIR}/lib
$ENV{LIB}
/usr/local/lib
/usr/lib
Expand Down
16 changes: 13 additions & 3 deletions cmake/FindSqlite3.cmake
Expand Up @@ -21,7 +21,7 @@

# try to use framework on mac
# want clean framework path, not unix compatibility path
IF (APPLE)
IF (APPLE AND NOT QGIS_MAC_DEPS_DIR)
IF (CMAKE_FIND_FRAMEWORK MATCHES "FIRST"
OR CMAKE_FRAMEWORK_PATH MATCHES "ONLY"
OR NOT CMAKE_FIND_FRAMEWORK)
Expand All @@ -35,18 +35,28 @@ IF (APPLE)
ENDIF (SQLITE3_LIBRARY)
SET (CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_save} CACHE STRING "" FORCE)
ENDIF ()
ENDIF (APPLE)
ENDIF (APPLE AND NOT QGIS_MAC_DEPS_DIR)

# FIND_PATH and FIND_LIBRARY normally search standard locations
# before the specified paths. To search non-standard paths first,
# FIND_* is invoked first with specified paths and NO_DEFAULT_PATH
# and then again with no specified paths to search the default
# locations. When an earlier FIND_* succeeds, subsequent FIND_*s
# searching for the same item do nothing.
FIND_PATH(SQLITE3_INCLUDE_DIR sqlite3.h
"$ENV{LIB_DIR}/include"
"$ENV{LIB_DIR}/include/sqlite"
"$ENV{INCLUDE}"
NO_DEFAULT_PATH
)
FIND_PATH(SQLITE3_INCLUDE_DIR sqlite3.h)

FIND_LIBRARY(SQLITE3_LIBRARY NAMES sqlite3_i sqlite3 PATHS
"$ENV{LIB_DIR}/lib"
"$ENV{LIB}/lib"
)
NO_DEFAULT_PATH
)
FIND_LIBRARY(SQLITE3_LIBRARY NAMES sqlite3_i sqlite3)

IF (SQLITE3_INCLUDE_DIR AND SQLITE3_LIBRARY)
SET(SQLITE3_FOUND TRUE)
Expand Down

0 comments on commit b72111f

Please sign in to comment.