summaryrefslogtreecommitdiff
path: root/Modules/FindPhysFS.cmake
diff options
context:
space:
mode:
authorEric Wing <ewing2121@yahoo.com>2007-12-20 20:59:44 -0500
committerEric Wing <ewing2121@yahoo.com>2007-12-20 20:59:44 -0500
commita5b3ab4eee1f11287c69da39b5e742353fdbd372 (patch)
tree4aaf6549ec4f360eb44a05ca3b6568b8783452ff /Modules/FindPhysFS.cmake
parent355b1f23afd6809edb9ed1924c0112d02d4c8f85 (diff)
downloadcmake-a5b3ab4eee1f11287c69da39b5e742353fdbd372.tar.gz
BUG: Fixed modules to set FOO_FOUND when both headers and libraries are found.
BUG: FindSDL now has flag it responds to so it will not find/link against SDLmain. This is required to build libraries instead of applications since they don't have main(). ENH: All modules have a predictable search order, where environmental variables are searched before system paths. This is designed to make automation easier for those that need to automatically build projects without intervention but may be using alternative install locations for isolated testing. ENH: New modules for OpenSceneGraph, Freetype, GDAL, Lua, QuickTime, GIFLIB, Producer, OpenThreads. STYLE: Added documentation explaining peculuar SDL_LIBRARY_TEMP variable in SDL module when library find is incomplete.
Diffstat (limited to 'Modules/FindPhysFS.cmake')
-rw-r--r--Modules/FindPhysFS.cmake106
1 files changed, 57 insertions, 49 deletions
diff --git a/Modules/FindPhysFS.cmake b/Modules/FindPhysFS.cmake
index aed1a2de1a..6980dff645 100644
--- a/Modules/FindPhysFS.cmake
+++ b/Modules/FindPhysFS.cmake
@@ -1,60 +1,68 @@
-# - Locate PhysFS library
+# Locate PhysFS library
# This module defines
-# PHYSFS_LIBRARY, the name of the library to link with
-# PHYSFS_FOUND, if false, do not try to link to PHYSFS
-# PHYSFS_INCLUDE_DIR, where to find PHYSFS/PHYSFS.h
+# PHYSFS_LIBRARY, the name of the library to link against
+# PHYSFS_FOUND, if false, do not try to link to PHYSFS
+# PHYSFS_INCLUDE_DIR, where to find physfs.h
#
# $PHYSFSDIR is an environment variable that would
# correspond to the ./configure --prefix=$PHYSFSDIR
# used in building PHYSFS.
#
-# Created by Eric Wing. This was influenced by the FindSDL.cmake
-# module, but with modifications to recognize OS X frameworks.
+# Created by Eric Wing.
-# On OSX, this will prefer the Framework version (if found) over others.
-# People will have to manually change the cache values of
-# PHYSFS_LIBRARY to override this selection.
-
-FIND_PATH(PHYSFS_INCLUDE_DIR NAMES physfs.h
- PATH_SUFFIXES physfs
+FIND_PATH(PHYSFS_INCLUDE_DIR physfs.h
PATHS
- $ENV{PHYSFSDIR}/include
- ~/Library/Frameworks/PhysFS.framework/Headers
- /Library/Frameworks/PhysFS.framework/Headers
- )
-
-# I'm not sure if I should do a special casing for Apple. It is
-# unlikely that other Unix systems will find the framework path.
-# But if they do ([Next|Open|GNU]Step?),
-# do they want the -framework option also?
-IF(${PHYSFS_INCLUDE_DIR} MATCHES ".framework")
- STRING(REGEX REPLACE "(.*)/.*\\.framework/.*" "\\1" PHYSFS_FRAMEWORK_PATH_TMP ${PHYSFS_INCLUDE_DIR})
- IF("${PHYSFS_FRAMEWORK_PATH_TMP}" STREQUAL "/Library/Frameworks"
- OR "${PHYSFS_FRAMEWORK_PATH_TMP}" STREQUAL "/System/Library/Frameworks"
- )
- # String is in default search path, don't need to use -F
- SET(PHYSFS_LIBRARY "-framework PhysFS" CACHE STRING "PhysFS framework for OSX")
- ELSE("${PHYSFS_FRAMEWORK_PATH_TMP}" STREQUAL "/Library/Frameworks"
- OR "${PHYSFS_FRAMEWORK_PATH_TMP}" STREQUAL "/System/Library/Frameworks"
- )
- # String is not /Library/Frameworks, need to use -F
- SET(PHYSFS_LIBRARY "-F${PHYSFS_FRAMEWORK_PATH_TMP} -framework PhysFS" CACHE STRING "PhysFS framework for OSX")
- ENDIF("${PHYSFS_FRAMEWORK_PATH_TMP}" STREQUAL "/Library/Frameworks"
- OR "${PHYSFS_FRAMEWORK_PATH_TMP}" STREQUAL "/System/Library/Frameworks"
- )
- # Clear the temp variable so nobody can see it
- SET(PHYSFS_FRAMEWORK_PATH_TMP "" CACHE INTERNAL "")
+ $ENV{PHYSFSDIR}
+ NO_DEFAULT_PATH
+ PATH_SUFFIXES include
+)
+FIND_PATH(PHYSFS_INCLUDE_DIR physfs.h
+ PATHS ${CMAKE_PREFIX_PATH} # Unofficial: We are proposing this.
+ NO_DEFAULT_PATH
+ PATH_SUFFIXES include
+)
+FIND_PATH(PHYSFS_INCLUDE_DIR physfs.h
+ PATHS
+ ~/Library/Frameworks
+ /Library/Frameworks
+ /usr/local
+ /usr
+ /sw # Fink
+ /opt/local # DarwinPorts
+ /opt/csw # Blastwave
+ /opt
+ PATH_SUFFIXES include/physfs include
+)
-ELSE(${PHYSFS_INCLUDE_DIR} MATCHES ".framework")
- FIND_LIBRARY(PHYSFS_LIBRARY
- NAMES physfs PhysFS
- PATHS
- $ENV{PHYSFSDIR}/lib
- )
+FIND_LIBRARY(PHYSFS_LIBRARY
+ NAMES physfs
+ PATHS
+ $ENV{PHYSFSDIR}
+ NO_DEFAULT_PATH
+ PATH_SUFFIXES lib64 lib
+)
+FIND_LIBRARY(PHYSFS_LIBRARY
+ NAMES physfs
+ PATHS ${CMAKE_PREFIX_PATH} # Unofficial: We are proposing this.
+ NO_DEFAULT_PATH
+ PATH_SUFFIXES lib64 lib
+)
+FIND_LIBRARY(PHYSFS_LIBRARY
+ NAMES physfs
+ PATHS
+ ~/Library/Frameworks
+ /Library/Frameworks
+ /usr/local
+ /usr
+ /sw
+ /opt/local
+ /opt/csw
+ /opt
+ PATH_SUFFIXES lib64 lib
+)
-ENDIF(${PHYSFS_INCLUDE_DIR} MATCHES ".framework")
+SET(PHYSFS_FOUND "NO")
+IF(PHYSFS_LIBRARY AND PHYSFS_INCLUDE_DIR)
+ SET(PHYSFS_FOUND "YES")
+ENDIF(PHYSFS_LIBRARY AND PHYSFS_INCLUDE_DIR)
-# handle the QUIETLY and REQUIRED arguments and set PHYSFS_FOUND to TRUE if
-# all listed variables are TRUE
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(PhysFS DEFAULT_MSG PHYSFS_LIBRARY PHYSFS_INCLUDE_DIR)