mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-01 11:22:21 -06:00
FindOpenSP: Use pkg-config only as hints for main code path
before this change, pkg_check_modules(.. IMPORTED_TARGET GLOBAL) is used for creating an imported target from which another imported interface library named OpenSP::OpenSP is created. but pkg-config does not account for all of CMake's other search behavior controls, such as CMAKE_FIND_ROOT_PATH. neither does it export the full path with OpenSP_LIBRARY. after this change, the paths found by pkg-config are only used as hints for the find_*() commands. and some cleanup are included: * be QUIET when calling find_package(PkgConfig ..) and pkg_check_modules(..) as they are distracting from user's point of view. what matters is the output of find_package_handle_standard_args() * parse the version and check for the existance of symbol as long as header path is found. because they only use header files. * define OpenSP_LIBRARY as long as it exists. this just follows the convention. as OpenSP_FOUND implies a valid OpenSP_LIBRARY. * wrap and intent multi-line command calls for better readability * check OpenSP_FOUND before adding OpenSP::OpenSP, it's more idiomatic. Fixes: #24313 Signed-off-by: Kefu Chai <tchaikov@gmail.com>
This commit is contained in:
@@ -63,24 +63,17 @@ The following cache variables may also be set:
|
||||
|
||||
#]=======================================================================]
|
||||
|
||||
if (NOT OpenSP_INCLUDE_DIR AND NOT OpenSP_LIBRARY)
|
||||
find_package(PkgConfig)
|
||||
if (PkgConfig_FOUND)
|
||||
pkg_check_modules(OpenSP IMPORTED_TARGET GLOBAL opensp)
|
||||
|
||||
if (OpenSP_FOUND)
|
||||
add_library(OpenSP::OpenSP INTERFACE IMPORTED)
|
||||
target_link_libraries(OpenSP::OpenSP INTERFACE PkgConfig::OpenSP)
|
||||
|
||||
set(OpenSP_INCLUDE_DIR ${OpenSP_INCLUDE_DIRS})
|
||||
set(OpenSP_LIBRARY ${OpenSP_LIBRARIES})
|
||||
endif ()
|
||||
endif ()
|
||||
find_package(PkgConfig QUIET)
|
||||
if (PkgConfig_FOUND)
|
||||
pkg_check_modules(PC_OpenSP QUIET opensp)
|
||||
endif ()
|
||||
|
||||
if (NOT OpenSP_INCLUDE_DIR)
|
||||
find_path(OpenSP_INCLUDE_DIR
|
||||
NAMES ParserEventGeneratorKit.h
|
||||
HINTS
|
||||
${PC_OpenSP_INCLUDEDIRS}
|
||||
${PC_OpenSP_INCLUDE_DIRS}
|
||||
PATH_SUFFIXES OpenSP opensp
|
||||
DOC "The OpenSP include directory"
|
||||
)
|
||||
@@ -89,17 +82,23 @@ endif ()
|
||||
if (NOT OpenSP_LIBRARY)
|
||||
find_library(OpenSP_LIBRARY_RELEASE
|
||||
NAMES osp libosp opensp libopensp sp133 libsp
|
||||
HINTS
|
||||
${PC_OpenSP_LIBDIR}
|
||||
${PC_OpenSP_LIBRARY_DIRS}
|
||||
)
|
||||
|
||||
find_library(OpenSP_LIBRARY_DEBUG
|
||||
NAMES ospd libospd openspd libopenspd sp133d libspd
|
||||
HINTS
|
||||
${PC_OpenSP_LIBDIR}
|
||||
${PC_OpenSP_LIBRARY_DIRS}
|
||||
)
|
||||
|
||||
include(SelectLibraryConfigurations)
|
||||
select_library_configurations(OpenSP)
|
||||
endif ()
|
||||
|
||||
if (OpenSP_INCLUDE_DIR AND OpenSP_LIBRARY)
|
||||
if (OpenSP_INCLUDE_DIR)
|
||||
if (EXISTS "${OpenSP_INCLUDE_DIR}/config.h")
|
||||
if (NOT OpenSP_VERSION)
|
||||
file(STRINGS "${OpenSP_INCLUDE_DIR}/config.h" opensp_version_str REGEX "^#define[\t ]+SP_VERSION[\t ]+\".*\"")
|
||||
@@ -116,27 +115,6 @@ if (OpenSP_INCLUDE_DIR AND OpenSP_LIBRARY)
|
||||
include(CheckCXXSymbolExists)
|
||||
check_cxx_symbol_exists(SP_MULTI_BYTE "${OpenSP_INCLUDE_DIR}/config.h" OpenSP_MULTI_BYTE)
|
||||
endif ()
|
||||
|
||||
if (NOT TARGET OpenSP::OpenSP)
|
||||
set(OpenSP_INCLUDE_DIRS ${OpenSP_INCLUDE_DIR})
|
||||
|
||||
add_library(OpenSP::OpenSP UNKNOWN IMPORTED)
|
||||
set_target_properties(OpenSP::OpenSP PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${OpenSP_INCLUDE_DIRS}")
|
||||
|
||||
if (OpenSP_LIBRARY_RELEASE)
|
||||
set_target_properties(OpenSP::OpenSP PROPERTIES IMPORTED_LOCATION_RELEASE "${OpenSP_LIBRARY_RELEASE}")
|
||||
set_property(TARGET OpenSP::OpenSP APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
||||
endif ()
|
||||
|
||||
if (OpenSP_LIBRARY_DEBUG)
|
||||
set_target_properties(OpenSP::OpenSP PROPERTIES IMPORTED_LOCATION_DEBUG "${OpenSP_LIBRARY_DEBUG}")
|
||||
set_property(TARGET OpenSP::OpenSP APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
|
||||
endif ()
|
||||
|
||||
if (NOT OpenSP_LIBRARY_RELEASE AND NOT OpenSP_LIBRARY_DEBUG)
|
||||
set_property(TARGET OpenSP::OpenSP APPEND PROPERTY IMPORTED_LOCATION "${OpenSP_LIBRARY}")
|
||||
endif ()
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
@@ -148,6 +126,33 @@ find_package_handle_standard_args(OpenSP
|
||||
|
||||
mark_as_advanced(OpenSP_INCLUDE_DIR OpenSP_LIBRARY OpenSP_MULTI_BYTE)
|
||||
|
||||
if (OpenSP_FOUND)
|
||||
set(OpenSP_INCLUDE_DIRS ${OpenSP_INCLUDE_DIR})
|
||||
if (NOT TARGET OpenSP::OpenSP)
|
||||
add_library(OpenSP::OpenSP UNKNOWN IMPORTED)
|
||||
if (EXISTS "${OpenSP_LIBRARY}")
|
||||
set_target_properties(OpenSP::OpenSP PROPERTIES
|
||||
IMPORTED_LOCATION "${OpenSP_LIBRARY}")
|
||||
endif ()
|
||||
set_target_properties(OpenSP::OpenSP PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${OpenSP_INCLUDE_DIRS}")
|
||||
|
||||
if (OpenSP_LIBRARY_RELEASE)
|
||||
set_target_properties(OpenSP::OpenSP PROPERTIES
|
||||
IMPORTED_LOCATION_RELEASE "${OpenSP_LIBRARY_RELEASE}")
|
||||
set_property(TARGET OpenSP::OpenSP APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS RELEASE)
|
||||
endif ()
|
||||
|
||||
if (OpenSP_LIBRARY_DEBUG)
|
||||
set_target_properties(OpenSP::OpenSP PROPERTIES
|
||||
IMPORTED_LOCATION_DEBUG "${OpenSP_LIBRARY_DEBUG}")
|
||||
set_property(TARGET OpenSP::OpenSP APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS DEBUG)
|
||||
endif ()
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
include(FeatureSummary)
|
||||
set_package_properties(OpenSP PROPERTIES
|
||||
URL "http://openjade.sourceforge.net/doc/index.htm"
|
||||
|
||||
Reference in New Issue
Block a user