diff --git a/CMakeLists.txt b/CMakeLists.txt index 10c0db26..48c5f0f7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,6 +51,10 @@ if(PROJECT_IS_ARM64) add_definitions(-DPROJECT_IS_ARM64) endif() +if(PROJECT_IS_DARWIN) + add_definitions(-DPROJECT_IS_DARWIN) +endif() + if(PROJECT_IS_MINGW) option(PROJECT_ENABLE_WIN32_LONG_PATH_NAMES "Enable path sizes of 32767 characters on Windows" OFF) if(PROJECT_ENABLE_WIN32_LONG_PATH_NAMES) @@ -178,6 +182,7 @@ endif() -DPROJECT_INTERFACE=1 -DPROJECT_IS_ALPINE=${PROJECT_IS_ALPINE} -DPROJECT_IS_ARM64=${PROJECT_IS_ARM64} + -DPROJECT_IS_DARWIN=${PROJECT_IS_DARWIN} -DPROJECT_IS_MINGW=${PROJECT_IS_MINGW} -DPROJECT_IS_MINGW_UNIX=${PROJECT_IS_MINGW_UNIX} -DPROJECT_MAJOR_VERSION=${PROJECT_MAJOR_VERSION} diff --git a/cmake/libraries/openssl.cmake b/cmake/libraries/openssl.cmake index 942aa069..e90d50ef 100644 --- a/cmake/libraries/openssl.cmake +++ b/cmake/libraries/openssl.cmake @@ -15,6 +15,12 @@ if(PROJECT_ENABLE_OPENSSL) elseif(NOT PROJECT_IS_MINGW) if(PROJECT_IS_MINGW) set(OPENSSL_COMPILE_TYPE mingw64) + elseif(PROJECT_IS_DARWIN) + if(PROJECT_IS_ARM64) + set(OPENSSL_COMPILE_TYPE darwin64-arm64) + else() + set(OPENSSL_COMPILE_TYPE darwin64-x86_64) + endif() elseif(PROJECT_IS_ARM64) set(OPENSSL_COMPILE_TYPE linux-aarch64) else() diff --git a/cmake/os.cmake b/cmake/os.cmake index 9604d745..7a725240 100644 --- a/cmake/os.cmake +++ b/cmake/os.cmake @@ -2,10 +2,6 @@ if(MSVC) message(FATAL_ERROR "MSVC will not be supported") endif() -if(UNIX AND APPLE) - message(FATAL_ERROR "Apple is not currently supported") -endif() - if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") message(FATAL_ERROR "FreeBSD is not currently supported") endif() diff --git a/scripts/env.sh b/scripts/env.sh index 6d8c00c6..1ff99a46 100755 --- a/scripts/env.sh +++ b/scripts/env.sh @@ -55,6 +55,15 @@ PROJECT_MINGW64_COPY_DEPENDENCIES=() PROJECT_MSYS2_PACKAGE_LIST=() PROJECT_REQUIRE_ALPINE=OFF PROJECT_STATIC_LINK=OFF +PROJECT_IS_DARWIN=0 + +if [ "$(uname -s)" == "Darwin" ]; then + PROJECT_IS_DARWIN=1 + if [ "$(uname -m)" == "arm64" ]; then + PROJECT_IS_ARM64=1 + PROJECT_BUILD_ARCH="aarch64" + fi +fi if [ "${PROJECT_BUILD_ARCH}" == "" ]; then PROJECT_BUILD_ARCH=x86_64 @@ -186,6 +195,9 @@ PROJECT_DIST_DIR=${PROJECT_SOURCE_DIR}/dist/${PROJECT_CMAKE_BUILD_TYPE_LOWER}/${ if [ "${PROJECT_IS_MINGW}" == "1" ]; then PROJECT_DIST_DIR=${PROJECT_DIST_DIR}/win32 PROJECT_BUILD_DIR=${PROJECT_BUILD_DIR}/win32 +elif [ "${PROJECT_IS_DARWIN}" == "1" ]; then + PROJECT_DIST_DIR=${PROJECT_DIST_DIR}/darwin + PROJECT_BUILD_DIR=${PROJECT_BUILD_DIR}/darwin else PROJECT_DIST_DIR=${PROJECT_DIST_DIR}/linux PROJECT_BUILD_DIR=${PROJECT_BUILD_DIR}/linux @@ -247,6 +259,7 @@ PROJECT_CMAKE_OPTS="-DPROJECT_EXTERNAL_BUILD_ROOT=${PROJECT_EXTERNAL_BUILD_ROOT} PROJECT_CMAKE_OPTS="-DPROJECT_GIT_REV=${PROJECT_GIT_REV} ${PROJECT_CMAKE_OPTS}" PROJECT_CMAKE_OPTS="-DPROJECT_IS_ALPINE=${PROJECT_IS_ALPINE} ${PROJECT_CMAKE_OPTS}" PROJECT_CMAKE_OPTS="-DPROJECT_IS_ARM64=${PROJECT_IS_ARM64} ${PROJECT_CMAKE_OPTS}" +PROJECT_CMAKE_OPTS="-DPROJECT_IS_DARWIN=${PROJECT_IS_DARWIN} ${PROJECT_CMAKE_OPTS}" PROJECT_CMAKE_OPTS="-DPROJECT_IS_MINGW=${PROJECT_IS_MINGW} ${PROJECT_CMAKE_OPTS}" PROJECT_CMAKE_OPTS="-DPROJECT_IS_MINGW_UNIX=${PROJECT_IS_MINGW_UNIX} ${PROJECT_CMAKE_OPTS}" PROJECT_CMAKE_OPTS="-DPROJECT_MAJOR_VERSION=${PROJECT_MAJOR_VERSION} ${PROJECT_CMAKE_OPTS}" @@ -277,6 +290,8 @@ PATH="${PROJECT_EXTERNAL_BUILD_ROOT}/bin:${PATH}" if [ "${PROJECT_IS_MINGW}" == "1" ]; then PROJECT_OS=windows +elif [ "${PROJECT_IS_DARWIN}" == "1" ]; then + PROJECT_OS=darwin else PROJECT_OS=linux fi @@ -321,6 +336,7 @@ export PROJECT_FLUTTER_BASE_HREF export PROJECT_GIT_REV export PROJECT_IS_ALPINE export PROJECT_IS_ARM64 +export PROJECT_IS_DARWIN export PROJECT_IS_MINGW export PROJECT_IS_MINGW_UNIX export PROJECT_LINK_TYPE @@ -373,6 +389,7 @@ echo " File part: ${PROJECT_FILE_PART}" echo " Flutter base href: ${PROJECT_FLUTTER_BASE_HREF}" echo " Is ARM64: ${PROJECT_IS_ARM64}" echo " Is Alpine: ${PROJECT_IS_ALPINE}" +echo " Is Darwin: ${PROJECT_IS_DARWIN}" echo " Is MINGW on Unix: ${PROJECT_IS_MINGW_UNIX}" echo " Is MINGW: ${PROJECT_IS_MINGW}" echo " Job count: ${NUM_JOBS}" diff --git a/scripts/make_flutter.sh b/scripts/make_flutter.sh index 23fe784b..0165e607 100755 --- a/scripts/make_flutter.sh +++ b/scripts/make_flutter.sh @@ -5,7 +5,7 @@ PROJECT_SCRIPTS_DIR=$(dirname "${PROJECT_SCRIPTS_DIR}") . "${PROJECT_SCRIPTS_DIR}/env.sh" "$1" "$2" "$3" "$4" "$5" if [ -f "${PROJECT_SOURCE_DIR}/web/${PROJECT_NAME}/pubspec.yaml" ]; then - if [ "${PROJECT_IS_MINGW}" == "0" ] || [ "${PROJECT_IS_MINGW_UNIX}" == "1" ]; then + if [[ "${PROJECT_IS_DARWIN}" == "0" && ("${PROJECT_IS_MINGW}" == "0" || "${PROJECT_IS_MINGW_UNIX}" == "1") ]]; then FLUTTER_CONTAINER_NAME="${PROJECT_NAME}_flutter" FLUTTER_TAG_NAME="${PROJECT_NAME}:flutter" diff --git a/scripts/make_unix.sh b/scripts/make_unix.sh index ebecf7b6..d45bab35 100755 --- a/scripts/make_unix.sh +++ b/scripts/make_unix.sh @@ -11,7 +11,7 @@ fi "${PROJECT_SOURCE_DIR}/scripts/make_flutter.sh" "${PROJECT_BUILD_ARCH}" "${PROJECT_CMAKE_BUILD_TYPE}" "${PROJECT_BUILD_CLEAN}" 0 0 || exit 1 -if [ "${PROJECT_REQUIRE_ALPINE}" == "ON" ] || [ "${PROJECT_IS_ARM64}" == "1" ]; then +if [[ "${PROJECT_IS_DARWIN}" == "0" && ("${PROJECT_REQUIRE_ALPINE}" == "ON" || "${PROJECT_IS_ARM64}" == "1") ]]; then DOCKER_NAME=alpine DOCKER_CONTAINER=${PROJECT_NAME}_${DOCKER_NAME}_${PROJECT_BUILD_ARCH} DOCKER_TAG=${PROJECT_NAME}:${DOCKER_NAME}