cmake: Use official FindBacktrace rather than custom FindExecInfo
[quassel.git] / cmake / FindLdap.cmake
index e29d6a2..2c96fae 100644 (file)
@@ -13,15 +13,32 @@ if(LDAP_INCLUDE_DIR AND LDAP_LIBRARIES)
     set(Ldap_FIND_QUIETLY TRUE)
 endif(LDAP_INCLUDE_DIR AND LDAP_LIBRARIES)
 
-if(UNIX)
-   FIND_PATH(LDAP_INCLUDE_DIR ldap.h)
-   FIND_LIBRARY(LDAP_LIBRARIES NAMES ldap)
-   FIND_LIBRARY(LBER_LIBRARIES NAMES lber)
-
-else(UNIX)
-   FIND_PATH(LDAP_INCLUDE_DIR winldap.h)
-   FIND_LIBRARY(LDAP_LIBRARIES NAMES wldap32)
-endif(UNIX)
+# Attempt to link against ldap.h regardless of platform!
+FIND_PATH(LDAP_INCLUDE_DIR ldap.h)
+
+# If we detect path to invalid ldap.h on osx, try /usr/include/
+# This might also be achievable with additional parameters to FIND_PATH.
+string(TOLOWER ${LDAP_INCLUDE_DIR} ldapincludelower)
+if("${ldapincludelower}" MATCHES "\\/system\\/library\\/frameworks\\/ldap\\.framework\\/headers")
+  set(LDAP_INCLUDE_DIR "/usr/include/")
+endif()
+
+FIND_LIBRARY(LDAP_LIBRARIES NAMES ldap)
+
+# On osx remove invalid ldap.h
+string(TOLOWER ${LDAP_LIBRARIES} ldaplower)
+if("${ldaplower}" MATCHES "\\/system\\/library\\/frameworks\\/ldap\\.framework")
+  set(LDAP_LIBRARIES FALSE)
+endif()
+
+FIND_LIBRARY(LBER_LIBRARIES NAMES lber)
+
+# It'd be nice to link against winldap on Windows, unfortunately
+# the interfaces are different. In theory a compatibility shim
+# could be written; if someone ever gets around to doing that these
+# lines should be uncommented and used on Windows.
+#   FIND_PATH(LDAP_INCLUDE_DIR winldap.h)
+#   FIND_LIBRARY(LDAP_LIBRARIES NAMES wldap32)
 
 if(LDAP_INCLUDE_DIR AND LDAP_LIBRARIES)
    set(LDAP_FOUND TRUE)