Browse Source

Fix FindFreetype naming and find logic

Freetype is quite complicated, copied most of the logic from the
original FindFreetype module.
BtbN 11 years ago
parent
commit
5ec0d2ded4
2 changed files with 57 additions and 38 deletions
  1. 54 34
      cmake/Modules/FindFreetype.cmake
  2. 3 4
      plugins/text-freetype2/CMakeLists.txt

+ 54 - 34
cmake/Modules/FindFreetype.cmake

@@ -1,16 +1,12 @@
 # Once done these will be defined:
 # Once done these will be defined:
 #
 #
-#  LIBFREETYPE_FOUND
-#  LIBFREETYPE_INCLUDE_DIRS
-#  LIBFREETYPE_LIBRARIES
-#
-# For use in OBS: 
-#
-#  FREETYPE_INCLUDE_DIR
+#  FREETYPE_FOUND
+#  FREETYPE_INCLUDE_DIRS
+#  FREETYPE_LIBRARIES
 #
 #
 
 
-if(LIBFREETYPE_INCLUDE_DIRS AND LIBFREETYPE_LIBRARIES)
-	set(LIBFREETYPE_FOUND TRUE)
+if(FREETYPE_INCLUDE_DIRS AND FREETYPE_LIBRARIES)
+	set(FREETYPE_FOUND TRUE)
 else()
 else()
 	find_package(PkgConfig QUIET)
 	find_package(PkgConfig QUIET)
 	if (PKG_CONFIG_FOUND)
 	if (PKG_CONFIG_FOUND)
@@ -23,38 +19,62 @@ else()
 		set(_lib_suffix 32)
 		set(_lib_suffix 32)
 	endif()
 	endif()
 
 
-	set(FREETYPE_PATH_ARCH FreetypePath${_lib_suffix})
+	find_path(FREETYPE_INCLUDE_DIR_ft2build
+		NAMES
+			ft2build.h
+		HINTS
+			${_FREETYPE_INCLUDE_DIRS}
+			"${CMAKE_SOURCE_DIR}/additional_install_files/include"
+			"$ENV{obsAdditionalInstallFiles}/include"
+			ENV FreetypePath${_lib_suffix}
+			ENV FreetypePath
+			ENV FREETYPE_DIR
+		PATHS
+			/usr/include /usr/local/include /opt/local/include /sw/include
+		PATH_SUFFIXES
+			include/freetype2 include)
 
 
-	if (NOT _FREETYPE_INCLUDE_DIRS STREQUAL "")
-		set (FREETYPE_INCLUDE_DIR ${_FREETYPE_INCLUDE_DIRS})
-	else()
-		find_path(FREETYPE_INCLUDE_DIR
-			NAMES ft2build.h
-			HINTS
-				${_FREETYPE_INCLUDE_DIRS}
-				"${CMAKE_SOURCE_DIR}/additional_install_files/include"
-				"$ENV{obsAdditionalInstallFiles}/include"
-				ENV FreetypePath
-				ENV ${FREETYPE_PATH_ARCH}
-			PATHS
-				/usr/include /usr/local/include /opt/local/include /sw/include)
-	endif()
+	find_path(FREETYPE_INCLUDE_DIR_freetype2
+		NAMES
+			freetype/config/ftheader.h
+			config/ftheader.h
+		HINTS
+			${_FREETYPE_INCLUDE_DIRS}
+			"${CMAKE_SOURCE_DIR}/additional_install_files/include"
+			"$ENV{obsAdditionalInstallFiles}/include"
+			ENV FreetypePath${_lib_suffix}
+			ENV FreetypePath
+			ENV FREETYPE_DIR
+		PATHS
+			/usr/include /usr/local/include /opt/local/include /sw/include
+		PATH_SUFFIXES
+			include/freetype2 include)
 
 
 	find_library(FREETYPE_LIB
 	find_library(FREETYPE_LIB
 		NAMES ${_FREETYPE_LIBRARIES} freetype libfreetype
 		NAMES ${_FREETYPE_LIBRARIES} freetype libfreetype
 		HINTS
 		HINTS
 			${_FREETYPE_LIBRARY_DIRS}
 			${_FREETYPE_LIBRARY_DIRS}
-			"${FREETYPE_INCLUDE_DIR}/../lib"
-			"${FREETYPE_INCLUDE_DIR}/../lib${_lib_suffix}"
-			"${FREETYPE_INCLUDE_DIR}/../libs${_lib_suffix}"
-			"${FREETYPE_INCLUDE_DIR}/lib"
-			"${FREETYPE_INCLUDE_DIR}/lib${_lib_suffix}"
+			"${FREETYPE_INCLUDE_DIR_ft2build}/../lib"
+			"${FREETYPE_INCLUDE_DIR_ft2build}/../lib${_lib_suffix}"
+			"${FREETYPE_INCLUDE_DIR_ft2build}/../libs${_lib_suffix}"
+			"${FREETYPE_INCLUDE_DIR_ft2build}/lib"
+			"${FREETYPE_INCLUDE_DIR_ft2build}/lib${_lib_suffix}"
+			ENV FREETYPE_DIR
 		PATHS
 		PATHS
-			/usr/lib /usr/local/lib /opt/local/lib /sw/lib)
+			/usr/lib /usr/local/lib /opt/local/lib /sw/lib
+		PATH_SUFFIXES
+			lib${_lib_suffix} lib)
+
+	if(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
+		set(FREETYPE_INCLUDE_DIR "${FREETYPE_INCLUDE_DIR_ft2build};${FREETYPE_INCLUDE_DIR_freetype2}")
+		list(REMOVE_DUPLICATES FREETYPE_INCLUDE_DIR)
+	else()
+		unset(FREETYPE_INCLUDE_DIR)
+	endif()
 
 
-	set(LIBFREETYPE_INCLUDE_DIRS ${FREETYPE_INCLUDE_DIR} CACHE PATH "freetype include dir")
-	set(LIBFREETYPE_LIBRARIES ${FREETYPE_LIB} CACHE STRING "freetype libraries")
+	set(FREETYPE_INCLUDE_DIRS ${FREETYPE_INCLUDE_DIR} CACHE PATH "freetype include dirs")
+	set(FREETYPE_LIBRARIES ${FREETYPE_LIB} CACHE STRING "freetype libraries")
 
 
-	find_package_handle_standard_args(Libfreetype DEFAULT_MSG FREETYPE_LIB FREETYPE_INCLUDE_DIR)
-	mark_as_advanced(FREETYPE_INCLUDE_DIR FREETYPE_LIB)
+	find_package_handle_standard_args(Freetype DEFAULT_MSG FREETYPE_LIB FREETYPE_INCLUDE_DIR_ft2build FREETYPE_INCLUDE_DIR_freetype2)
+	mark_as_advanced(FREETYPE_INCLUDE_DIR FREETYPE_INCLUDE_DIR_ft2build FREETYPE_INCLUDE_DIR_freetype2 FREETYPE_LIB)
 endif()
 endif()

+ 3 - 4
plugins/text-freetype2/CMakeLists.txt

@@ -1,7 +1,7 @@
 project(text-freetype2)
 project(text-freetype2)
 
 
 find_package(Freetype QUIET)
 find_package(Freetype QUIET)
-if(NOT LIBFREETYPE_FOUND)
+if(NOT FREETYPE_FOUND)
 	message(STATUS "Freetype library not found, Freetype text plugin disabled")
 	message(STATUS "Freetype library not found, Freetype text plugin disabled")
 	return()
 	return()
 endif()
 endif()
@@ -47,8 +47,7 @@ else()
 	include_directories(${ICONV_INCLUDE_DIR})
 	include_directories(${ICONV_INCLUDE_DIR})
 endif()
 endif()
 
 
-include_directories(${LIBFREETYPE_INCLUDE_DIRS})
-add_definitions(${LIBFREETYPE_DEFINITIONS})
+include_directories(${FREETYPE_INCLUDE_DIRS})
 
 
 set(text-freetype2_SOURCES
 set(text-freetype2_SOURCES
 	find-font.h
 	find-font.h
@@ -65,7 +64,7 @@ add_library(text-freetype2 MODULE
 target_link_libraries(text-freetype2
 target_link_libraries(text-freetype2
 	libobs
 	libobs
 	${text-freetype2_PLATFORM_DEPS}
 	${text-freetype2_PLATFORM_DEPS}
-	${LIBFREETYPE_LIBRARIES})
+	${FREETYPE_LIBRARIES})
 
 
 if(UNIX AND ICONV_FOUND)
 if(UNIX AND ICONV_FOUND)
 	target_link_libraries(text-freetype2 ${ICONV_LIBRARIES})
 	target_link_libraries(text-freetype2 ${ICONV_LIBRARIES})