Commit 6e0ff093fb955adeeeed5c83a0fafc568d4b8074

Sascha Cunz 2014-01-30T02:30:55

Find and use a MacPorts version of libiconv. Fixes #2017. - Add correct -I, -L and -l flags - Search for libiconv in /opt/local/[include|lib] before in the system path. See #2017 for details. - Give splitted -L and -l arguments to pkg-config

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 611cd9e..4483be3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -202,8 +202,9 @@ IF (USE_ICONV)
 ENDIF()
 IF (ICONV_FOUND)
 	ADD_DEFINITIONS(-DGIT_USE_ICONV)
+	INCLUDE_DIRECTORIES(${ICONV_INCLUDE_DIR})
 	IF(ICONV_LIBRARIES MATCHES "libiconv")
-		SET(LIBGIT2_PC_LIBS "${LIBGIT2_PC_LIBS} -liconv")
+		SET(LIBGIT2_PC_LIBS "${LIBGIT2_PC_LIBS} ${ICONV_LIBRARIES}")
 	ELSE()
 		SET(LIBGIT2_PC_REQUIRES "${LIBGIT2_PC_REQUIRES} iconv")
 	ENDIF()
diff --git a/cmake/Modules/FindIconv.cmake b/cmake/Modules/FindIconv.cmake
index 487b2f5..f1406c5 100644
--- a/cmake/Modules/FindIconv.cmake
+++ b/cmake/Modules/FindIconv.cmake
@@ -11,15 +11,23 @@ IF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
 	SET(ICONV_FIND_QUIETLY TRUE)
 ENDIF()
 
+FIND_PATH(ICONV_INCLUDE_DIR iconv.h PATHS /opt/local/include NO_DEFAULT_PATH)
 FIND_PATH(ICONV_INCLUDE_DIR iconv.h)
 
-FIND_LIBRARY(ICONV_LIBRARIES NAMES iconv libiconv libiconv-2 c PATH)
+FIND_LIBRARY(iconv_lib NAMES iconv libiconv libiconv-2 c NO_DEFAULT_PATH PATHS /opt/local/lib)
+FIND_LIBRARY(iconv_lib NAMES iconv libiconv libiconv-2 c)
 
-IF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
+IF(ICONV_INCLUDE_DIR AND iconv_lib)
 	 SET(ICONV_FOUND TRUE)
 ENDIF()
 
 IF(ICONV_FOUND)
+	# split iconv into -L and -l linker options, so we can set them for pkg-config
+	GET_FILENAME_COMPONENT(iconv_path ${iconv_lib} PATH)
+	GET_FILENAME_COMPONENT(iconv_name ${iconv_lib} NAME_WE)
+	STRING(REGEX REPLACE "^lib" "" iconv_name ${iconv_name})
+	SET(ICONV_LIBRARIES -L${iconv_path} -l${iconv_name})
+
 	IF(NOT ICONV_FIND_QUIETLY)
 		MESSAGE(STATUS "Found Iconv: ${ICONV_LIBRARIES}")
 	ENDIF(NOT ICONV_FIND_QUIETLY)