Warning, /games/kpat/cmake/FindFreecellSolver.cmake is written in an unsupported language. File is not indexed.

0001 # SPDX-FileCopyrightText: 2023 Friedrich W. H. Kossebau <kossebau@kde.org>
0002 #
0003 # SPDX-License-Identifier: BSD-2-Clause
0004 
0005 #[=======================================================================[.rst:
0006 FindFreecellSolver
0007 ------------------
0008 
0009 Try to find the Freecell Solver library.
0010 
0011 This will define the following variables:
0012 
0013 ``FreecellSolver_FOUND``
0014     TRUE if (the requested version of) Freecell Solver is available
0015 ``FreecellSolver_VERSION``
0016     The version of Freecell Solver
0017 ``FreecellSolver_LIBRARIES``
0018     The libraries of Freecell Solver for use with target_link_libraries()
0019 ``FreecellSolver_INCLUDE_DIRS``
0020     The include dirs of Freecell Solver for use with target_include_directories()
0021 
0022 If ``FreecellSolver_FOUND`` is TRUE, it will also define the following imported
0023 target:
0024 
0025 ``FreecellSolver::FreecellSolver``
0026     The FreecellSolver library
0027 
0028 The target has a property ``FREECELLSOLVER_HAS_SOFT_SUSPEND`` which specifies
0029 if the library has the FCS_STATE_SOFT_SUSPEND_PROCESS state or not.
0030 #]=======================================================================]
0031 
0032 find_package(PkgConfig QUIET)
0033 pkg_check_modules(PC_FreecellSolver libfreecell-solver QUIET)
0034 
0035 find_library(FreecellSolver_LIBRARIES
0036     NAMES freecell-solver
0037     HINTS ${PC_FreecellSolver_LIBRARY_DIRS}
0038 )
0039 
0040 find_path(FreecellSolver_INCLUDE_DIRS
0041     NAMES freecell-solver/fcs_user.h
0042     HINTS ${PC_FreecellSolver_INCLUDE_DIRS}
0043 )
0044 
0045 set(FreecellSolver_VERSION ${PC_FreecellSolver_VERSION})
0046 
0047 include(FindPackageHandleStandardArgs)
0048 find_package_handle_standard_args(FreecellSolver
0049     REQUIRED_VARS
0050         FreecellSolver_LIBRARIES
0051         FreecellSolver_INCLUDE_DIRS
0052     VERSION_VAR
0053         FreecellSolver_VERSION
0054 )
0055 
0056 set(fcs_has_soft_suspend FALSE)
0057 if(FreecellSolver_FOUND)
0058     try_compile(fcs_has_soft_suspend "${CMAKE_CURRENT_BINARY_DIR}"
0059         SOURCES "${CMAKE_CURRENT_LIST_DIR}/fcs_soft_suspend_test.c"
0060         CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${FreecellSolver_INCLUDE_DIRS}"
0061         LINK_LIBRARIES ${FreecellSolver_LIBRARIES})
0062 endif()
0063 
0064 if(FreecellSolver_FOUND AND NOT TARGET FreecellSolver::FreecellSolver)
0065     add_library(FreecellSolver::FreecellSolver UNKNOWN IMPORTED)
0066     set_target_properties(FreecellSolver::FreecellSolver PROPERTIES
0067         IMPORTED_LOCATION "${FreecellSolver_LIBRARIES}"
0068         INTERFACE_COMPILE_OPTIONS "${PC_FreecellSolver_CFLAGS}"
0069         INTERFACE_INCLUDE_DIRECTORIES "${FreecellSolver_INCLUDE_DIRS}"
0070         FREECELLSOLVER_HAS_SOFT_SUSPEND "${fcs_has_soft_suspend}"
0071     )
0072 endif()
0073 
0074 mark_as_advanced(FreecellSolver_LIBRARIES FreecellSolver_INCLUDE_DIRS FreecellSolver_VERSION)
0075 
0076 include(FeatureSummary)
0077 set_package_properties(FreecellSolver PROPERTIES
0078     DESCRIPTION "Library for Solving Freecell and Similar Solitaire Games."
0079     URL "https://fc-solve.shlomifish.org/"
0080 )