summaryrefslogtreecommitdiff
path: root/cmake/SFMLConfig.cmake.in
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/SFMLConfig.cmake.in')
-rw-r--r--cmake/SFMLConfig.cmake.in148
1 files changed, 148 insertions, 0 deletions
diff --git a/cmake/SFMLConfig.cmake.in b/cmake/SFMLConfig.cmake.in
new file mode 100644
index 0000000..ce81953
--- /dev/null
+++ b/cmake/SFMLConfig.cmake.in
@@ -0,0 +1,148 @@
+# This script provides the SFML libraries as imported targets
+# ------------------------------------
+#
+# Usage
+# -----
+#
+# When you try to locate the SFML libraries, you must specify which modules you want to use (system, window, graphics, network, audio, main).
+# If none is given, no imported target will be created and you won't be able to link to SFML libraries.
+# example:
+# find_package(SFML COMPONENTS graphics window system) # find the graphics, window and system modules
+#
+# You can enforce a specific version, either MAJOR.MINOR or only MAJOR.
+# If nothing is specified, the version won't be checked (i.e. any version will be accepted).
+# example:
+# find_package(SFML COMPONENTS ...) # no specific version required
+# find_package(SFML 2 COMPONENTS ...) # any 2.x version
+# find_package(SFML 2.4 COMPONENTS ...) # version 2.4 or greater
+#
+# By default, the dynamic libraries of SFML will be found. To find the static ones instead,
+# you must set the SFML_STATIC_LIBRARIES variable to TRUE before calling find_package(SFML ...).
+# You don't need to deal with SFML's dependencies when linking your targets against SFML libraries,
+# they will all be configured automatically, even if you use SFML static libraries.
+# example:
+# set(SFML_STATIC_LIBRARIES TRUE)
+# find_package(SFML 2 COMPONENTS network system)
+#
+# On macOS by default CMake will search for frameworks. If you want to use static libraries and have installed
+# both SFML frameworks and SFML static libraries, your must set CMAKE_FIND_FRAMEWORK to "NEVER" or "LAST"
+# in addition to setting SFML_STATIC_LIBRARIES to TRUE. Otherwise CMake will check the frameworks bundle config and
+# fail after finding out that it does not provide static libraries. Please refer to CMake documentation for more details.
+#
+# Additionally, keep in mind that SFML frameworks are only available as release libraries unlike dylibs which
+# are available for both release and debug modes.
+#
+# If SFML is not installed in a standard path, you can use the SFML_DIR CMake variable
+# to tell CMake where SFML's config file is located (PREFIX/lib/cmake/SFML for a library-based installation,
+# and PREFIX/SFML.framework/Resources/CMake on macOS for a framework-based installation).
+#
+# Output
+# ------
+#
+# This script defines the following variables:
+# - For each specified module XXX (system, window, graphics, network, audio, main):
+# - SFML_XXX_FOUND: true if either the debug or release library of the xxx module is found
+# - SFML_FOUND: true if all the required modules are found
+#
+# And the following targets:
+# - For each specified module XXX (system, window, graphics, network, audio, main):
+# - sfml-XXX
+# The SFML targets are the same for both Debug and Release build configurations and will automatically provide
+# correct settings based on your currently active build configuration. The SFML targets name also do not change
+# when using dynamic or static SFML libraries.
+#
+# When linking against a SFML target, you do not need to specify indirect dependencies. For example, linking
+# against sfml-graphics will also automatically link against sfml-window and sfml-system.
+#
+# example:
+# find_package(SFML 2 COMPONENTS graphics audio REQUIRED)
+# add_executable(myapp ...)
+# target_link_libraries(myapp sfml-graphics sfml-audio)
+
+if (NOT SFML_FIND_COMPONENTS)
+ message(FATAL_ERROR "find_package(SFML) called with no component")
+endif()
+
+set(FIND_SFML_PATHS
+ "${CMAKE_CURRENT_LIST_DIR}/../.."
+ ${SFML_ROOT}
+ $ENV{SFML_ROOT}
+ ~/Library/Frameworks
+ /Library/Frameworks
+ /usr/local
+ /usr
+ /sw
+ /opt/local
+ /opt/csw
+ /opt)
+
+find_path(SFML_DOC_DIR SFML.tag
+ PATH_SUFFIXES SFML/doc share/SFML/doc
+ PATHS ${FIND_SFML_PATHS})
+
+
+# Update requested components (eg. request window component if graphics component was requested)
+set(FIND_SFML_SYSTEM_DEPENDENCIES "")
+set(FIND_SFML_MAIN_DEPENDENCIES "")
+set(FIND_SFML_AUDIO_DEPENDENCIES system)
+set(FIND_SFML_NETWORK_DEPENDENCIES system)
+set(FIND_SFML_WINDOW_DEPENDENCIES system)
+set(FIND_SFML_GRAPHICS_DEPENDENCIES window system)
+set(FIND_SFML_ADDITIONAL_COMPONENTS "")
+foreach(component ${SFML_FIND_COMPONENTS})
+ string(TOUPPER "${component}" UPPER_COMPONENT)
+ list(APPEND FIND_SFML_ADDITIONAL_COMPONENTS ${FIND_SFML_${UPPER_COMPONENT}_DEPENDENCIES})
+endforeach()
+list(APPEND SFML_FIND_COMPONENTS ${FIND_SFML_ADDITIONAL_COMPONENTS})
+list(REMOVE_DUPLICATES SFML_FIND_COMPONENTS)
+
+# Choose which target definitions must be imported
+if (SFML_STATIC_LIBRARIES)
+ set(SFML_IS_FRAMEWORK_INSTALL "@SFML_BUILD_FRAMEWORKS@")
+ if (SFML_IS_FRAMEWORK_INSTALL)
+ message(WARNING "Static frameworks are not supported by SFML. Clear SFML_DIR cache entry, \
+and either change SFML_STATIC_LIBRARIES or CMAKE_FIND_FRAMEWORK before calling find_package(SFML)")
+ endif()
+ set(config_name "Static")
+else()
+ set(config_name "Shared")
+endif()
+set(targets_config_file "${CMAKE_CURRENT_LIST_DIR}/SFML${config_name}Targets.cmake")
+
+# Generate imported targets for SFML and its dependencies
+if (EXISTS "${targets_config_file}")
+ # Set SFML_FOUND to TRUE by default, may be overwritten by one of the includes below
+ set(SFML_FOUND TRUE)
+ include("${targets_config_file}")
+ include("${CMAKE_CURRENT_LIST_DIR}/SFMLConfigDependencies.cmake")
+
+ if (SFML_FOUND)
+ foreach (component ${SFML_FIND_COMPONENTS})
+ string(TOUPPER "${component}" UPPER_COMPONENT)
+ if (TARGET sfml-${component})
+ set(SFML_${UPPER_COMPONENT}_FOUND TRUE)
+ else()
+ set(FIND_SFML_ERROR "Found SFML but requested component '${component}' is missing in the config defined in ${SFML_DIR}.")
+ set(SFML_${UPPER_COMPONENT}_FOUND FALSE)
+ set(SFML_FOUND FALSE)
+ endif()
+ endforeach()
+ endif()
+else()
+ set(FIND_SFML_ERROR "Requested SFML configuration (${config_name}) was not found")
+ set(SFML_FOUND FALSE)
+endif()
+
+if (NOT SFML_FOUND)
+ if(SFML_FIND_REQUIRED)
+ # fatal error
+ message(FATAL_ERROR "${FIND_SFML_ERROR}")
+ elseif(NOT SFML_FIND_QUIETLY)
+ # error but continue
+ message(STATUS "${FIND_SFML_ERROR}")
+ endif()
+endif()
+
+if (SFML_FOUND AND NOT SFML_FIND_QUIETLY)
+ message(STATUS "Found SFML @VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@ in ${CMAKE_CURRENT_LIST_DIR}")
+endif()