aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Szakmeister <john@szakmeister.net>2014-11-08 16:16:39 -0500
committerJohn Szakmeister <john@szakmeister.net>2014-11-08 16:21:47 -0500
commit203a5166a06cccc8b9bf0b190b9278634381b3be (patch)
tree95c62b92341b77a77651f3c2d704dd40126d84f3
parent05f78d30ac5eb4c4df712d78d1366f3cee896417 (diff)
downloadrneovim-203a5166a06cccc8b9bf0b190b9278634381b3be.tar.gz
rneovim-203a5166a06cccc8b9bf0b190b9278634381b3be.tar.bz2
rneovim-203a5166a06cccc8b9bf0b190b9278634381b3be.zip
build: give priority to /sw and /opt/local on Mac OS X
Unfortunately, we can't force the specific inclusion of a header file. So if anything add /opt/local/include to the include path--such as libintl--then other dependencies might be drawn from /opt/local at compile time, even though we detected them elsewhere at configure time. This, in turn, causes issues with mixed versions, such as the iconv.h header being pulled from /opt/local/include, but linked against the library in /usr/lib--which can be mismatched versions. So, despite CMake's best effort to treat /sw and /opt/local as just another system area, we really need to give them preferential treatment. To do this, we add them to CMAKE_PREFIX_PATH. This fixes an issue discovered while re-enabling iconv in #1370.
-rw-r--r--CMakeLists.txt31
1 files changed, 20 insertions, 11 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6d53ba4727..485eb4ae23 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,6 +12,26 @@ set(DEPS_BIN_DIR "${DEPS_INSTALL_DIR}/bin")
list(APPEND CMAKE_PREFIX_PATH ${DEPS_INSTALL_DIR})
+if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+ # CMake tries to treat /sw and /opt/local as extension of the system path, but
+ # that doesn't really work out very well. Once you have a dependency that
+ # resides there and have to add it as an include directory, then any other
+ # dependency that could be satisfied from there must be--otherwise you can end
+ # up with conflicting versions. So, let's make them more of a priority having
+ # them be included as one of the first places to look for dependencies.
+ list(APPEND CMAKE_PREFIX_PATH /sw /opt/local)
+
+ # Work around some old, broken detection by CMake for knowing when to use the
+ # isystem flag. Apple's compilers have supported this for quite some time
+ # now.
+ if(CMAKE_COMPILER_IS_GNUCC)
+ set(CMAKE_INCLUDE_SYSTEM_FLAG_C "-isystem ")
+ endif()
+ if(CMAKE_COMPILER_IS_GNUCXX)
+ set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem ")
+ endif()
+endif()
+
# Version tokens
include(GetGitRevisionDescription)
get_git_head_revision(GIT_REFSPEC NVIM_VERSION_COMMIT)
@@ -31,17 +51,6 @@ endif()
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
-# Work around some old, broken detection by CMake for knowing when to use the
-# isystem flag. Apple's compilers have supported this for quite some time now.
-if(APPLE)
- if(CMAKE_COMPILER_IS_GNUCC)
- set(CMAKE_INCLUDE_SYSTEM_FLAG_C "-isystem ")
- endif()
- if(CMAKE_COMPILER_IS_GNUCXX)
- set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem ")
- endif()
-endif()
-
# Default to -O2 on release builds.
string(REPLACE "-O3" "-O2" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")