# HG changeset patch # User Hasan Yavuz ÖZDERYA # Date 2015-04-18 08:52:28 # Node ID e9cebfbc996cbeecc8da702a6e71d9f81e569a0d # Parent bcd6b30d01d1831d9ff77f8a1e81ab3ecaf5a08d replaced FindQwt.cmake with my version diff --git a/cmake/modules/FindQwt.cmake b/cmake/modules/FindQwt.cmake --- a/cmake/modules/FindQwt.cmake +++ b/cmake/modules/FindQwt.cmake @@ -1,121 +1,101 @@ -# Qt Widgets for Technical Applications -# available at http://www.http://qwt.sourceforge.net/ +# +# Copyright © 2015 Hasan Yavuz Özderya +# +# This file is part of serialplot. +# +# serialplot is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # -# The module defines the following variables: -# QWT_FOUND - the system has Qwt -# QWT_INCLUDE_DIR - where to find qwt_plot.h -# QWT_INCLUDE_DIRS - qwt includes -# QWT_LIBRARY - where to find the Qwt library -# QWT_LIBRARIES - aditional libraries -# QWT_MAJOR_VERSION - major version -# QWT_MINOR_VERSION - minor version -# QWT_PATCH_VERSION - patch version -# QWT_VERSION_STRING - version (ex. 5.2.1) -# QWT_ROOT_DIR - root dir (ex. /usr/local) +# serialplot 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with serialplot. If not, see . +# + +# +# Note: This module will only find local Qwt installations in +# /usr/local/qwt-VERSION directories. +# -#============================================================================= -# Copyright 2010-2013, Julien Schueller -# Copyright 2015 Hasan Yavuz Özderya -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +file(GLOB qwt_glob_dir "/usr/local/qwt*/") -# The views and conclusions contained in the software and documentation are those -# of the authors and should not be interpreted as representing official policies, -# either expressed or implied, of the FreeBSD Project. -#============================================================================= - -# TODO: handle multiple versions of qwt -file(GLOB QWT_GLOB_DIR "/usr/local/qwt*/") +if(qwt_glob_dir) + foreach(qwt_path ${qwt_glob_dir}) + # find the qwt_global.h file + unset(qwt_root CACHE) + find_path(qwt_root + "include/qwt_global.h" + HINTS "${qwt_path}") + if(qwt_root) + list(APPEND qwt_roots ${qwt_root}) + endif(qwt_root) + endforeach(qwt_path) +endif(qwt_glob_dir) -find_path ( QWT_INCLUDE_DIR - NAMES qwt_plot.h - HINTS ${QT_INCLUDE_DIR} "${QWT_GLOB_DIR}/include" - PATH_SUFFIXES qwt qwt-qt3 qwt-qt4 qwt-qt5 -) - -set ( QWT_INCLUDE_DIRS ${QWT_INCLUDE_DIR} ) +# select qwt root according to version +if(qwt_roots) + foreach(qwt_root ${qwt_roots}) + # extract the version information + unset(qwt_version_string) + file(STRINGS "${qwt_root}/include/qwt_global.h" qwt_version_string + REGEX "#define[ \t]+QWT_VERSION_STR") + if(qwt_version_string) + string(REGEX REPLACE "[^\"]*\"([0-9.]+)\".*" "\\1" + qwt_version_string ${qwt_version_string}) -# version -set ( _VERSION_FILE ${QWT_INCLUDE_DIR}/qwt_global.h ) -if ( EXISTS ${_VERSION_FILE} ) - file ( STRINGS ${_VERSION_FILE} _VERSION_LINE REGEX "define[ ]+QWT_VERSION_STR" ) - if ( _VERSION_LINE ) - string ( REGEX REPLACE ".*define[ ]+QWT_VERSION_STR[ ]+\"(.*)\".*" "\\1" QWT_VERSION_STRING "${_VERSION_LINE}" ) - string ( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\1" QWT_MAJOR_VERSION "${QWT_VERSION_STRING}" ) - string ( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\2" QWT_MINOR_VERSION "${QWT_VERSION_STRING}" ) - string ( REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\3" QWT_PATCH_VERSION "${QWT_VERSION_STRING}" ) - endif () -endif () - + if(Qwt_FIND_VERSION) + if( (qwt_version_string VERSION_EQUAL Qwt_FIND_VERSION) OR + (qwt_version_string VERSION_GREATER Qwt_FIND_VERSION)) + set(QWT_VERSION ${qwt_version_string}) + set(QWT_ROOT ${qwt_root}) + break() # found an appropriate version + endif() + else(Qwt_FIND_VERSION) + set(QWT_ROOT ${qwt_root}) + set(QWT_VERSION ${qwt_version_string}) + break() # version is not specified stop at the first qwt_root + endif(Qwt_FIND_VERSION) + else(qwt_version_string) + message(WARNING "Couldn't find version string in qwt_global.h file.") + endif(qwt_version_string) + endforeach(qwt_root ${qwt_roots}) +endif(qwt_roots) -# check version -set ( _QWT_VERSION_MATCH TRUE ) -if ( Qwt_FIND_VERSION AND QWT_VERSION_STRING ) - if ( Qwt_FIND_VERSION_EXACT ) - if ( NOT Qwt_FIND_VERSION VERSION_EQUAL QWT_VERSION_STRING ) - set ( _QWT_VERSION_MATCH FALSE ) - endif () - else () - if ( QWT_VERSION_STRING VERSION_LESS Qwt_FIND_VERSION ) - set ( _QWT_VERSION_MATCH FALSE ) - endif () - endif () -endif () - - -find_library ( QWT_LIBRARY - NAMES qwt qwt-qt3 qwt-qt4 qwt-qt5 - HINTS ${QT_LIBRARY_DIR} "${QWT_GLOB_DIR}/lib" -) +if(QWT_ROOT) + set(QWT_INCLUDE_DIR "${QWT_ROOT}/include") + find_library(QWT_LIBRARY "qwt" + PATHS "${QWT_ROOT}/lib") +endif(QWT_ROOT) -set ( QWT_LIBRARIES ${QWT_LIBRARY} ) - - -# try to guess root dir from include dir -if ( QWT_INCLUDE_DIR ) - string ( REGEX REPLACE "(.*)/include.*" "\\1" QWT_ROOT_DIR ${QWT_INCLUDE_DIR} ) -# try to guess root dir from library dir -elseif ( QWT_LIBRARY ) - string ( REGEX REPLACE "(.*)/lib[/|32|64].*" "\\1" QWT_ROOT_DIR ${QWT_LIBRARY} ) -endif () - +# set version variables +if(QWT_VERSION) + string(REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\1" + QWT_MAJOR_VERSION ${QWT_VERSION}) + string(REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\2" + QWT_MINOR_VERSION ${QWT_VERSION}) + string(REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\3" + QWT_PATCH_VERSION ${QWT_VERSION}) +endif(QWT_VERSION) -# handle the QUIETLY and REQUIRED arguments -include ( FindPackageHandleStandardArgs ) -if ( CMAKE_VERSION LESS 2.8.3 ) - find_package_handle_standard_args( Qwt DEFAULT_MSG QWT_LIBRARY QWT_INCLUDE_DIR _QWT_VERSION_MATCH ) -else () - find_package_handle_standard_args( Qwt REQUIRED_VARS QWT_LIBRARY QWT_INCLUDE_DIR _QWT_VERSION_MATCH VERSION_VAR QWT_VERSION_STRING ) -endif () - +# set QWT_FOUND +if(QWT_INCLUDE_DIR AND QWT_LIBRARY) + set(QWT_INCLUDE_DIRS ${QWT_INCLUDE_DIR}) + set(QWT_LIBRARIES ${QWT_LIBRARY}) + set(QWT_FOUND true) +else() + set(QWT_FOUND false) +endif() -mark_as_advanced ( - QWT_LIBRARY - QWT_LIBRARIES - QWT_INCLUDE_DIR - QWT_INCLUDE_DIRS - QWT_MAJOR_VERSION - QWT_MINOR_VERSION - QWT_PATCH_VERSION - QWT_VERSION_STRING - QWT_ROOT_DIR -) +# errors +if(NOT QWT_FOUND) + if(Qwt_FIND_QUIET) + message(WARNING "Couldn't find Qwt.") + elseif(Qwt_FIND_REQUIRED) + message(FATAL_ERROR "Couldn't find Qwt.") + endif(Qwt_FIND_QUIET) +endif(NOT QWT_FOUND)