1if(APPLE) 2 3if(NOT MACOSX_DEPENDENCIES_FROM) 4 if(EXISTS /opt/local/bin/port) 5 set(MACOSX_DEPENDENCIES_FROM Macports) 6 elseif(EXISTS /usr/local/bin/brew) 7 set(MACOSX_DEPENDENCIES_FROM Homebrew) 8 else() 9 set(MACOSX_DEPENDENCIES_FROM None) 10 message(WARNING "Could not find Macport or Homebrew to provide dependencies \ 11 trying to configure with default search paths") 12 endif() 13 set(MACOSX_DEPENDENCIES_FROM ${MACOSX_DEPENDENCIES_FROM} 14 CACHE STRING "Get dependencies from Macports or HomeBrew") 15endif() 16 17if(MACOSX_DEPENDENCIES_FROM STREQUAL "Macports") 18 message("-- Using Macports packages from /opt/local") 19 set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} 20 /opt/local/lib) 21 set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} 22 /opt/local/include) 23elseif(MACOSX_DEPENDENCIES_FROM STREQUAL "Homebrew") 24 message("-- Using Homebrew packages from /usr/local") 25 set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} 26 /usr/local/lib) 27 set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} 28 /usr/local/include) 29 30 if(IS_DIRECTORY /usr/local/opt/openssl) 31 set(OPENSSL_ROOT_DIR "/usr/local/opt/openssl") 32 elseif(IS_DIRECTORY /usr/local/opt/openssl@1.1) 33 set(OPENSSL_ROOT_DIR "/usr/local/opt/openssl@1.1") 34 else() 35 set(OPENSSL_ROOT_DIR "/usr/local/opt/openssl") 36 endif() 37 38 set(LibArchive_ROOT /usr/local/opt/libarchive) 39 set(Readline_ROOT /usr/local/opt/readline) 40elseif(MACOSX_DEPENDENCIES_FROM STREQUAL None) 41 message("-- Trying to build without Macports or Homebrew dependencies") 42elseif(MACOSX_DEPENDENCIES_FROM MATCHES "/.*") 43 message("-- Trying to build with dependencies from ${MACOSX_DEPENDENCIES_FROM}") 44 set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} 45 "${MACOSX_DEPENDENCIES_FROM}/lib") 46 set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} 47 "${MACOSX_DEPENDENCIES_FROM}/include") 48 set(CMAKE_IGNORE_PATH 49 /opt/local/lib 50 /opt/local/include 51 /opt/local/bin) 52else() 53 message(FATAL_ERROR "Invalid MACOSX_DEPENDENCIES_FROM: ${MACOSX_DEPENDENCIES_FROM}") 54endif() 55 56if(BUILD_MACOS_BUNDLE) 57 set(MACOS_APP "SWI-Prolog") 58 59# These definitions must be here rather than in CPack.cmake as that 60# file is loaded after attaching packages/swipl-win and thus isn't picked 61# up. See URL below for the defined variables. 62# https://cmake.org/cmake/help/latest/prop_tgt/MACOSX_BUNDLE_INFO_PLIST.html 63 64 set(MACOSX_BUNDLE_BUNDLE_NAME "SWI-Prolog") 65 set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${SWIPL_VERSION_STRING}") 66 67 set(X11_ROOT /opt/X11) 68 set(Freetype_ROOT /opt/X11) 69 set(FontConfig_ROOT /opt/X11) 70 71 find_package(Qt5 COMPONENTS Widgets REQUIRED) 72 73 get_target_property(uic_location Qt5::uic IMPORTED_LOCATION) 74 get_filename_component( _dir ${uic_location} DIRECTORY) 75 set(MACOS_DEPLOYQT "${_dir}/macdeployqt") 76 if(NOT EXISTS ${MACOS_DEPLOYQT}) 77 message(FATAL_ERROR "Failed to locate macdeployqt executable: [${MACOS_DEPLOYQT}]") 78 endif() 79 80 set(CPACK_GENERATOR "DragNDrop") 81 82 function(deployqt) 83 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME ZZRuntime) 84 install(FILES ${CMAKE_SOURCE_DIR}/man/macosx/SWIapp.html 85 DESTINATION . 86 RENAME Readme.html) 87 install(FILES ${CMAKE_SOURCE_DIR}/man/macosx/License.html 88 DESTINATION .) 89 90 install(CODE "set(deployqt \"${MACOS_DEPLOYQT}\") 91 set(fixup_script \"${CMAKE_SOURCE_DIR}/scripts/macosx_bundle_fixup.sh\") 92 ") 93 install(CODE [===[ 94 execute_process(COMMAND ln -sf SWI-Prolog swipl-win 95 WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/SWI-Prolog.app/Contents/MacOS) 96 message("Deploying Qt to ${CMAKE_INSTALL_PREFIX}/SWI-Prolog.app") 97 execute_process(COMMAND "${deployqt}" 98 "${CMAKE_INSTALL_PREFIX}/SWI-Prolog.app") 99 file(WRITE "${CMAKE_INSTALL_PREFIX}/SWI-Prolog.app/Contents/swipl.home" "swipl\n") 100 101 message("Adding dependencies for modules to bundle") 102 execute_process(COMMAND ${fixup_script} "${CMAKE_INSTALL_PREFIX}/SWI-Prolog.app") 103 ]===]) 104 endfunction() 105 106 deployqt() 107endif() 108 109set(CMAKE_MACOSX_RPATH ON) 110 111# Prefer sem_open() over deprecated sem_init() 112set(USE_SEM_OPEN 1) 113set(SO_PATH DYLD_LIBRARY_PATH) 114 115endif(APPLE) 116