Merge pull request #1435 from comex/osx-build

OS X CMake improvements
This commit is contained in:
comex 2014-11-14 15:03:53 -05:00
commit 68c5758151
2 changed files with 21 additions and 5 deletions

View File

@ -11,6 +11,9 @@ option(ENABLE_QT "Enable Qt (use the experimental Qt interface)" OFF)
option(ENABLE_PCH "Use PCH to speed up compilation" ON) option(ENABLE_PCH "Use PCH to speed up compilation" ON)
option(ENABLE_LTO "Enables Link Time Optimization" OFF) option(ENABLE_LTO "Enables Link Time Optimization" OFF)
option(ENABLE_GENERIC "Enables generic build that should run on any little-endian host" OFF) option(ENABLE_GENERIC "Enables generic build that should run on any little-endian host" OFF)
if(APPLE)
option(OSX_USE_DEFAULT_SEARCH_PATH "Don't prioritize system library paths" OFF)
endif()
option(ENCODE_FRAMEDUMPS "Encode framedumps in AVI format" ON) option(ENCODE_FRAMEDUMPS "Encode framedumps in AVI format" ON)
@ -219,10 +222,18 @@ if(ENABLE_LTO)
endif() endif()
if(APPLE) if(APPLE)
# Ignore MacPorts and Fink and any other locally installed packages that if(NOT OSX_USE_DEFAULT_SEARCH_PATH)
# might prevent building a distributable binary. # Hack up the path to prioritize the path to built-in OS libraries to
set(CMAKE_SYSTEM_PREFIX_PATH /usr) # increase the chance of not depending on a bunch of copies of them
set(ENV{PATH} /usr/bin:/bin:/usr/sbin:/sbin) # installed by MacPorts, Fink, Homebrew, etc, and ending up copying
# them into the bundle. Since we optionally depend on libraries which
# are not part of OS X (ffmpeg, libusb, etc.), however, don't remove
# the default path entirely as was done in a previous version of this
# file. This is still kinda evil, since it defeats the user's path
# settings...
# See http://www.cmake.org/cmake/help/v3.0/command/find_program.html
set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};/usr")
endif()
# Some of our code contains Objective C constructs. # Some of our code contains Objective C constructs.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -x objective-c -stdlib=libc++") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -x objective-c -stdlib=libc++")
@ -278,6 +289,7 @@ if(APPLE)
find_library(COREAUDIO_LIBRARY CoreAudio) find_library(COREAUDIO_LIBRARY CoreAudio)
find_library(COREFUND_LIBRARY CoreFoundation) find_library(COREFUND_LIBRARY CoreFoundation)
find_library(CORESERV_LIBRARY CoreServices) find_library(CORESERV_LIBRARY CoreServices)
find_library(FOUNDATION_LIBRARY foundation)
find_library(IOB_LIBRARY IOBluetooth) find_library(IOB_LIBRARY IOBluetooth)
find_library(IOK_LIBRARY IOKit) find_library(IOK_LIBRARY IOKit)
find_library(QUICKTIME_LIBRARY QuickTime) find_library(QUICKTIME_LIBRARY QuickTime)

View File

@ -1,3 +1,7 @@
set(LIBS core gtest)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
list(APPEND LIBS ${FOUNDATION_LIBRARY} ${CORESERV_LIBRARY})
endif()
macro(add_dolphin_test target srcs) macro(add_dolphin_test target srcs)
# Since this is a Core dependency, it can't be linked as a library and has # Since this is a Core dependency, it can't be linked as a library and has
# to be linked as an object file. Otherwise CMake inserts the library after # to be linked as an object file. Otherwise CMake inserts the library after
@ -9,7 +13,7 @@ macro(add_dolphin_test target srcs)
add_custom_command(TARGET Test_${target} add_custom_command(TARGET Test_${target}
PRE_LINK PRE_LINK
COMMAND mkdir -p ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Tests) COMMAND mkdir -p ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Tests)
target_link_libraries(Test_${target} core gtest) target_link_libraries(Test_${target} ${LIBS})
add_dependencies(unittests Test_${target}) add_dependencies(unittests Test_${target})
add_test(NAME ${target} COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Tests/${target}) add_test(NAME ${target} COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Tests/${target})
endmacro(add_dolphin_test) endmacro(add_dolphin_test)