#===============================================================================
# Copyright (©) 2014-2023 EPFL (Ecole Polytechnique Fédérale de Lausanne)
# Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides)
#
# This file is part of Akantu
#
# Akantu is free software: you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option) any
# later version.
#
# Akantu is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
# details.
#
# You should have received a copy of the GNU Lesser General Public License along
# with Akantu. If not, see .
#
#===============================================================================
#[=======================================================================[.rst:
#CMakePackagesSystem
#-------------------
#
#This package defines multiple function to handle packages. This packages can
#be of two kinds regular ones and extra_packages (ex: in akantu the LGPL part
#is regular packages and extra packages are on Propetary license)
#
#Package are loaded with the help of the command:
#
#.. command:: package_list_packages
#
# package_list_packages(
# [ EXTRA_PACKAGE_FOLDER ]
# [ SOURCE_FOLDER ]
# [ TEST_FOLDER ]
# [ MANUAL_FOLDER ]
# )
#
# This command will look for packages name like ``/.cmake``
# OR ``//package.cmake``
#
#A package is a cmake script that should contain at list the declaration of a
#package
#
#.. command:: package_declare
#
# package_declare(
# [EXTERNAL] [META] [ADVANCED] [NOT_OPTIONAL]
# [DESCRIPTION ] [DEFAULT ]
# [DEPENDS ...]
# [BOOST_COMPONENTS ...]
# [EXTRA_PACKAGE_OPTIONS ...]
# [COMPILE_FLAGS ]
# [SYSTEM [ ]]
# [FEATURES_PUBLIC ...]
# [FEATURES_PRIVATE ...]
# [EXCLUDE_FROM_ALL]
# )
#
#.. command:: package_declare_sources
#
# It can also declare multiple informations:
# source files:
#
# package_declare_sources(
# ... )
#
#.. command:: package_declare_documentation
#
# a LaTeX documentation
# package_declare_documentation(
# ...)
#
#.. command:: package_declare_documentation_files
#
# LaTeX documentation files
# package_declare_documentation_files(
# ... )
#
#Different function can also be retrieved from the package system by using the
#different accessors
#
#.. command:: package_get_name
# package_get_name( )
#
#.. command:: package_get_real_name
# package_get_real_name( )
#
#.. command:: package_get_option_name
# package_get_option_name( )
#
#.. command:: package_use_system
# package_use_system( )
#
#.. command:: package_get_nature
# package_get_nature( )
#
#.. command:: package_get_description
# package_get_description( )
#
#.. command:: package_get_filename
# package_get_filename( )
#
#.. command:: package_get_sources_folder
# package_get_sources_folder( )
#.. command:: package_get_tests_folder
# package_get_tests_folder( )
#.. command:: package_get_manual_folder
# package_get_manual_folder( )
#
#.. command:: package_get_find_package_extra_options
# package_get_find_package_extra_options( )
#
#.. command:: package_get_compile_flags
# package_get_compile_flags( )
#.. command:: package_set_compile_flags
# package_set_compile_flags( ... )
#
#.. command:: package_get_include_dir
# package_get_include_dir( )
#.. command:: package_set_include_dir
# package_set_include_dir( ... )
#.. command:: package_add_include_dir
# package_add_include_dir( ... )
#
#.. command:: package_get_libraries
# package_get_libraries( )
#.. command:: package_set_libraries
# package_set_libraries( ... )
#
#.. command:: package_add_extra_dependency
# package_add_extra_dependency(pkg ... )
#.. command:: package_rm_extra_dependency
# package_rm_extra_dependency( )
#.. command:: package_get_extra_dependencies
# package_get_extra_dependencies( )
#
#.. command:: package_is_activated
# package_is_activated( )
#.. command:: package_is_deactivated
# package_is_deactivated( )
#
#.. command:: package_get_dependencies
# package_get_dependencies( )
#.. command:: package_add_dependencies
# package_add_dependencies( ... )
# package_remove_dependencies( ... )
# package_remove_dependency( )
#
#.. command:: package_on_enabled_script
# package_on_enabled_script(