Warning, /graphics/glaxnimate/cmake/misc.cmake is written in an unsupported language. File is not indexed.

0001 #
0002 # Copyright (C) 2015-2017 Mattia Basaglia
0003 #
0004 # This program is free software: you can redistribute it and/or modify
0005 # it under the terms of the GNU General Public License as published by
0006 # the Free Software Foundation, either version 3 of the License, or
0007 # (at your option) any later version.
0008 #
0009 # This program is distributed in the hope that it will be useful,
0010 # but WITHOUT ANY WARRANTY; without even the implied warranty of
0011 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0012 # GNU General Public License for more details.
0013 #
0014 # You should have received a copy of the GNU General Public License
0015 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
0016 #
0017 
0018 # Sets C++ standard version and disables extensions
0019 # Synopsis: use_cxx_standard(version)
0020 function(use_cxx_standard version)
0021     set(CMAKE_CXX_STANDARD ${version} PARENT_SCOPE)
0022     set(CMAKE_CXX_EXTENSIONS OFF PARENT_SCOPE)
0023     set(CMAKE_CXX_STANDARD_REQUIRED ON PARENT_SCOPE)
0024     message(STATUS "Using C++${version}")
0025 
0026     if(${CMAKE_VERSION} LESS 3.2)
0027         if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR CMAKE_COMPILER_IS_GNUCXX)
0028             include(CheckCXXCompilerFlag)
0029             check_cxx_compiler_flag(--std=c++${version} STD_CXX)
0030             if(STD_CXX)
0031                 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++${version}" PARENT_SCOPE)
0032             else()
0033                 message(SEND_ERROR "Requires C++${version} or better")
0034             endif()
0035         else()
0036             message(WARNING "Unrecognized compiler: ${CMAKE_CXX_COMPILER_ID}, make sure it supports C++${version}")
0037         endif()
0038     endif()
0039 endfunction()
0040 
0041 # Searches all sources matching a some glob patterns
0042 # Synopsis:
0043 #   find_sources(
0044 #       OUTPUT output_variable  # Variable to populate
0045 #       PATTERNS pattern...     # Glob patterns for matching files
0046 #       SOURCES directory...    # Directories to scan
0047 #   )
0048 function(find_sources)
0049     set(options)
0050     set(one_value OUTPUT)
0051     set(multi_value PATTERNS SOURCES)
0052     cmake_parse_arguments(PARSE_ARGV 0 FIND_SOURCES "${options}" "${one_value}" "${multi_value}")
0053 
0054     set(all_files)
0055     foreach(dir ${FIND_SOURCES_SOURCES})
0056         foreach(pattern ${FIND_SOURCES_PATTERNS})
0057             file(GLOB_RECURSE files "${dir}/${pattern}")
0058             list(APPEND all_files ${files})
0059         endforeach()
0060     endforeach()
0061     set(${FIND_SOURCES_OUTPUT} ${all_files} PARENT_SCOPE)
0062 endfunction()
0063 
0064 
0065 # Creates targets to generate Doxygen documentation
0066 # Synopsis: create_doxygen_target(name)
0067 function(create_doxygen_target name)
0068     set(DOXYGEN_OUTPUT "\"${CMAKE_BINARY_DIR}/${name}\"")
0069 
0070     set(DOXYGEN_INPUT "")
0071     find_sources(DOXYGEN_INPUT_FILES "*.dox")
0072     set(DOXYGEN_INPUT_FILES ${DOXYGEN_INPUT_FILES} ${ALL_SOURCES})
0073     foreach(source ${DOXYGEN_INPUT_FILES})
0074         set(DOXYGEN_INPUT "${DOXYGEN_INPUT} \"${source}\"")
0075     endforeach()
0076 
0077     configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${PROJECT_BINARY_DIR}/Doxyfile)
0078     add_custom_target(${name}
0079         ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile
0080         DEPENDS ${PROJECT_BINARY_DIR}/Doxyfile ${DOXYGEN_INPUT_FILES}
0081         WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
0082         COMMENT "Generating Doxygen Documentation" VERBATIM
0083     )
0084     add_custom_target(${name}-view
0085         xdg-open ${DOXYGEN_OUTPUT}/html/index.html
0086         COMMENT "Showing Doxygen documentation"
0087     )
0088 endfunction()
0089 
0090 
0091 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/modules")