mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
CMake: Enhance PackageConfig's include directory processing and name separation
This commit is contained in:
parent
5c1ff5fdbc
commit
f75e245b1f
@ -10,6 +10,7 @@
|
||||
# Usage:
|
||||
# package_option(package_name package_doc_string
|
||||
# [DEFAULT ON | OFF]
|
||||
# [FOUND_AS find_name]
|
||||
# [LICENSE license])
|
||||
# Examples:
|
||||
# package_option(LIBNAME "Enables LIBNAME support." DEFAULT OFF)
|
||||
@ -19,6 +20,9 @@
|
||||
# In builds for redistribution, there is the additional requirement that
|
||||
# the package be suitably-licensed.
|
||||
#
|
||||
# FOUND_AS indicates the name of the CMake find_package() module, which
|
||||
# may differ from Panda3D's internal name for that package.
|
||||
#
|
||||
#
|
||||
# Function: config_package
|
||||
# Usage:
|
||||
@ -59,6 +63,7 @@ function(package_option name)
|
||||
# Parse the arguments.
|
||||
set(command)
|
||||
set(default)
|
||||
set(found_as "${name}")
|
||||
set(license "")
|
||||
set(cache_string)
|
||||
|
||||
@ -67,6 +72,10 @@ function(package_option name)
|
||||
set(default "${arg}")
|
||||
set(command)
|
||||
|
||||
elseif(command STREQUAL "FOUND_AS")
|
||||
set(found_as "${arg}")
|
||||
set(command)
|
||||
|
||||
elseif(command STREQUAL "LICENSE")
|
||||
set(license "${arg}")
|
||||
set(command)
|
||||
@ -74,6 +83,9 @@ function(package_option name)
|
||||
elseif(arg STREQUAL "DEFAULT")
|
||||
set(command "DEFAULT")
|
||||
|
||||
elseif(arg STREQUAL "FOUND_AS")
|
||||
set(command "FOUND_AS")
|
||||
|
||||
elseif(arg STREQUAL "LICENSE")
|
||||
set(command "LICENSE")
|
||||
|
||||
@ -95,7 +107,7 @@ function(package_option name)
|
||||
if(IS_DIST_BUILD)
|
||||
# Accept things that don't have a configured license
|
||||
if(license STREQUAL "")
|
||||
set(default "${${name}_FOUND}")
|
||||
set(default "${${found_as}_FOUND}")
|
||||
|
||||
else()
|
||||
list(FIND PANDA_DIST_USE_LICENSES ${license} license_index)
|
||||
@ -104,7 +116,7 @@ function(package_option name)
|
||||
if(${license_index} EQUAL "-1")
|
||||
set(default OFF)
|
||||
else()
|
||||
set(default "${${name}_FOUND}")
|
||||
set(default "${${found_as}_FOUND}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@ -112,13 +124,13 @@ function(package_option name)
|
||||
set(default OFF)
|
||||
|
||||
else()
|
||||
set(default "${${name}_FOUND}")
|
||||
set(default "${${found_as}_FOUND}")
|
||||
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# If it was set by the user but not found, display an error.
|
||||
if(HAVE_${name} AND NOT ${name}_FOUND)
|
||||
if(HAVE_${name} AND NOT ${found_as}_FOUND)
|
||||
message(SEND_ERROR "NOT FOUND: ${name}. Disable HAVE_${name} to continue.")
|
||||
endif()
|
||||
|
||||
@ -131,15 +143,20 @@ function(package_option name)
|
||||
set(PANDA_DID_SET_OPTION_${name} TRUE PARENT_SCOPE)
|
||||
endif()
|
||||
|
||||
set(PANDA_PACKAGE_DEFAULT_${name} "${default}")
|
||||
set(PANDA_PACKAGE_DEFAULT_${name} "${default}" PARENT_SCOPE)
|
||||
|
||||
# Create the option.
|
||||
option("HAVE_${name}" "${cache_string}" "${default}")
|
||||
if(HAVE_${name})
|
||||
set(_${name}_LIBRARY ${${name}_LIBRARY} CACHE INTERNAL "<Internal>")
|
||||
set(_${name}_LIBRARIES ${${name}_LIBRARIES} CACHE INTERNAL "<Internal>")
|
||||
set(_${name}_INCLUDES ${${found_as}_INCLUDE_DIRS} ${${found_as}_INCLUDE_DIR}
|
||||
CACHE INTERNAL "<Internal>")
|
||||
if(${found_as}_LIBRARIES)
|
||||
set(_${name}_LIBRARIES ${${found_as}_LIBRARIES} CACHE INTERNAL "<Internal>")
|
||||
else()
|
||||
unset(_${name}_LIBRARY CACHE)
|
||||
set(_${name}_LIBRARIES "${${found_as}_LIBRARY}" CACHE INTERNAL "<Internal>")
|
||||
endif()
|
||||
else()
|
||||
unset(_${name}_INCLUDES CACHE)
|
||||
unset(_${name}_LIBRARIES CACHE)
|
||||
endif()
|
||||
endfunction()
|
||||
@ -192,7 +209,7 @@ function(show_packages)
|
||||
else()
|
||||
if(NOT ${package}_FOUND)
|
||||
set(reason "not found")
|
||||
elseif(PANDA_PACKAGE_DEFAULT_${package})
|
||||
elseif(NOT PANDA_PACKAGE_DEFAULT_${package})
|
||||
set(reason "not requested")
|
||||
else()
|
||||
set(reason "disabled")
|
||||
@ -214,14 +231,8 @@ macro(target_use_packages target)
|
||||
|
||||
foreach(lib ${libs})
|
||||
if(HAVE_${lib})
|
||||
# N.B. target_include_directories is new in CMake 2.8.11; we target 2.8.4.
|
||||
#target_include_directories("${target}" PUBLIC "${${lib}_INCLUDE_DIRS};${${lib}_INCLUDE_DIR}")
|
||||
include_directories("${${lib}_INCLUDE_DIRS};${${lib}_INCLUDE_DIR}")
|
||||
if(_${lib}_LIBRARIES)
|
||||
target_include_directories("${target}" PUBLIC ${_${lib}_INCLUDES})
|
||||
target_link_libraries("${target}" ${_${lib}_LIBRARIES})
|
||||
else()
|
||||
target_link_libraries("${target}" ${_${lib}_LIBRARY})
|
||||
endif()
|
||||
endif()
|
||||
endforeach(lib)
|
||||
endmacro(target_use_packages)
|
||||
|
Loading…
x
Reference in New Issue
Block a user