Commit 2b13ae40 authored by Sang Ik Lee's avatar Sang Ik Lee Committed by Scott Cyphers

macos: fix protobuf build issue on macos 10.14.4 + xcode 10.2.1 (#2785)

parent 81c46ca7
...@@ -76,7 +76,8 @@ if ("${CMAKE_GENERATOR}" MATCHES "^Visual Studio.*$") ...@@ -76,7 +76,8 @@ if ("${CMAKE_GENERATOR}" MATCHES "^Visual Studio.*$")
set(MSVS TRUE) set(MSVS TRUE)
endif() endif()
if (APPLE AND (NOT CMAKE_OSX_SYSROOT)) # APPLE: Set CMAKE_OSX_SYSROOT if not set already.
if (APPLE)
execute_process(COMMAND sw_vers -productVersion execute_process(COMMAND sw_vers -productVersion
OUTPUT_VARIABLE OSX_FULL_VERSION OUTPUT_VARIABLE OSX_FULL_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE) OUTPUT_STRIP_TRAILING_WHITESPACE)
...@@ -84,17 +85,29 @@ if (APPLE AND (NOT CMAKE_OSX_SYSROOT)) ...@@ -84,17 +85,29 @@ if (APPLE AND (NOT CMAKE_OSX_SYSROOT))
string(REGEX REPLACE "^([0-9]+\\.[0-9]+).*$" "\\1" string(REGEX REPLACE "^([0-9]+\\.[0-9]+).*$" "\\1"
OSX_SHORT_VERSION "${OSX_FULL_VERSION}") OSX_SHORT_VERSION "${OSX_FULL_VERSION}")
if(NOT (OSX_SHORT_VERSION VERSION_LESS 10.14)) message(STATUS "Detected: OSX ${OSX_SHORT_VERSION}")
# Xcode is installed
set(XCODE_ISYSROOT /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${OSX_SHORT_VERSION}.sdk) if (CMAKE_OSX_SYSROOT)
message(STATUS "Trying Xcode sdk at ${XCODE_ISYSROOT}.") message(STATUS "Using CMAKE_OSX_SYSROOT: ${CMAKE_OSX_SYSROOT}")
if(NOT EXISTS ${XCODE_ISYSROOT}) else()
execute_process(COMMAND xcode-select -p
OUTPUT_VARIABLE APPLE_DEV_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE)
if("${APPLE_DEV_DIR}" STREQUAL "/Library/Developer/CommandLineTools")
# Command line tools only # Command line tools only
set(XCODE_ISYSROOT /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk) set(XCODE_ISYSROOT ${APPLE_DEV_DIR}/SDKs/MacOSX.sdk)
message(STATUS "Trying command line tool sdk at ${XCODE_ISYSROOT}.") message(STATUS "Trying command line tool sdk at ${XCODE_ISYSROOT}.")
if(NOT EXISTS ${XCODE_ISYSROOT}) if(NOT EXISTS ${XCODE_ISYSROOT})
message(FATAL_ERROR "Cannot find macos sdk.") message(FATAL_ERROR "Cannot find macos sdk.")
endif() endif()
else()
# Xcode is installed
set(XCODE_ISYSROOT ${APPLE_DEV_DIR}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${OSX_SHORT_VERSION}.sdk)
message(STATUS "Trying Xcode sdk at ${XCODE_ISYSROOT}.")
if(NOT EXISTS ${XCODE_ISYSROOT})
message(FATAL_ERROR "Cannot find macos sdk.")
endif()
endif() endif()
message(STATUS "Setting CMAKE_OSX_SYSROOT for macos ${OSX_SHORT_VERSION} to ${XCODE_ISYSROOT}") message(STATUS "Setting CMAKE_OSX_SYSROOT for macos ${OSX_SHORT_VERSION} to ${XCODE_ISYSROOT}")
set(CMAKE_OSX_SYSROOT ${XCODE_ISYSROOT}) set(CMAKE_OSX_SYSROOT ${XCODE_ISYSROOT})
...@@ -102,10 +115,18 @@ if (APPLE AND (NOT CMAKE_OSX_SYSROOT)) ...@@ -102,10 +115,18 @@ if (APPLE AND (NOT CMAKE_OSX_SYSROOT))
endif() endif()
# Setup CMAKE_ARGS to be forwarded to External Projects # Setup CMAKE_ARGS to be forwarded to External Projects
set(NGRAPH_FORWARD_CMAKE_ARGS if (CMAKE_OSX_SYSROOT)
set(NGRAPH_FORWARD_CMAKE_ARGS
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT}
)
else()
set(NGRAPH_FORWARD_CMAKE_ARGS
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
) )
endif()
if (NOT MSVS) if (NOT MSVS)
if(NOT CMAKE_BUILD_TYPE) if(NOT CMAKE_BUILD_TYPE)
......
...@@ -51,6 +51,24 @@ if (WIN32) ...@@ -51,6 +51,24 @@ if (WIN32)
INSTALL_DIR "${EXTERNAL_PROJECTS_ROOT}/protobuf" INSTALL_DIR "${EXTERNAL_PROJECTS_ROOT}/protobuf"
EXCLUDE_FROM_ALL TRUE EXCLUDE_FROM_ALL TRUE
) )
elseif (APPLE)
# Don't manually set compiler on macos since it causes compile error on macos >= 10.14
ExternalProject_Add(
ext_protobuf
PREFIX protobuf
GIT_REPOSITORY ${NGRAPH_PROTOBUF_GIT_REPO_URL}
GIT_TAG ${NGRAPH_PROTOBUF_GIT_TAG}
UPDATE_COMMAND ""
PATCH_COMMAND ""
CONFIGURE_COMMAND ./autogen.sh COMMAND ./configure --prefix=${EXTERNAL_PROJECTS_ROOT}/protobuf --disable-shared CXXFLAGS=-fPIC
TMP_DIR "${EXTERNAL_PROJECTS_ROOT}/protobuf/tmp"
STAMP_DIR "${EXTERNAL_PROJECTS_ROOT}/protobuf/stamp"
DOWNLOAD_DIR "${EXTERNAL_PROJECTS_ROOT}/protobuf/download"
SOURCE_DIR "${EXTERNAL_PROJECTS_ROOT}/protobuf/src"
BINARY_DIR "${EXTERNAL_PROJECTS_ROOT}/protobuf/src"
INSTALL_DIR "${EXTERNAL_PROJECTS_ROOT}/protobuf"
EXCLUDE_FROM_ALL TRUE
)
else() else()
ExternalProject_Add( ExternalProject_Add(
ext_protobuf ext_protobuf
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment