Files @ c27ec79b7b2c
Branch filter:

Location: tempo-plotter/CMakeLists.txt - annotation

Hasan Yavuz ÖZDERYA
added clear text view button
ce43e0348d45
ce43e0348d45
ce43e0348d45
ce43e0348d45
ce43e0348d45
ce43e0348d45
ce43e0348d45
ce43e0348d45
ce43e0348d45
ce43e0348d45
ce43e0348d45
ce43e0348d45
ce43e0348d45
ce43e0348d45
ce43e0348d45
ce43e0348d45
ce43e0348d45
ce43e0348d45
ce43e0348d45
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
8af772ace556
8af772ace556
8af772ace556
8af772ace556
8af772ace556
8af772ace556
8af772ace556
8af772ace556
8af772ace556
8af772ace556
8af772ace556
8af772ace556
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
6a311d722818
58db5f6bf2b1
58db5f6bf2b1
6a311d722818
6a311d722818
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
8af772ace556
58db5f6bf2b1
bb67af7ff932
bb67af7ff932
bb67af7ff932
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
e931abef3465
e931abef3465
73524cc41d6c
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
e931abef3465
6a726832c333
6a726832c333
6a726832c333
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
58db5f6bf2b1
8af772ace556
a19425548191
a19425548191
a19425548191
a19425548191
a19425548191
a19425548191
a19425548191
a19425548191
a19425548191
a19425548191
a19425548191
a19425548191
a19425548191
a19425548191
776909a4cffc
776909a4cffc
776909a4cffc
776909a4cffc
776909a4cffc
a19425548191
a19425548191
a19425548191
a19425548191
5faa0e981ba0
2ac47c7bb726
2ac47c7bb726
2ac47c7bb726
2ac47c7bb726
2ac47c7bb726
2ac47c7bb726
2ac47c7bb726
2ac47c7bb726
2ac47c7bb726
2ac47c7bb726
2ac47c7bb726
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
6a726832c333
6a726832c333
6a726832c333
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
5faa0e981ba0
#
# 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.
#
# 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 <http://www.gnu.org/licenses/>.
#

cmake_minimum_required(VERSION 2.8.11)

project(serialplot)

# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)

# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)

# add local path for cmake modules
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")

# Find the QtWidgets library
find_package(Qt5Widgets)

# Find QWT or use static
set(QWT_USE_STATIC false CACHE BOOL "Use a static version of Qwt provided by user.")
set(QWT_STATIC_LIBRARY "" CACHE FILEPATH "Path to the static Qwt library, libqwt.a.")
set(QWT_STATIC_INCLUDE "" CACHE PATH "Path to the Qwt include directory when building Qwt static.")

if (QWT_USE_STATIC)
  set(QWT_LIBRARY ${QWT_STATIC_LIBRARY})
  set(QWT_INCLUDE_DIR ${QWT_STATIC_INCLUDE})
else (QWT_USE_STATIC)
  find_package(Qwt 6.1 REQUIRED)
endif (QWT_USE_STATIC)

# includes
include_directories(${QWT_INCLUDE_DIR})

# wrap UI files
qt5_wrap_ui(UI_FILES mainwindow.ui portcontrol.ui about_dialog.ui)

# Tell CMake to create the helloworld executable
add_executable(serialplot main.cpp mainwindow.cpp portcontrol.cpp
  customcheckablebutton.cpp ${UI_FILES})

# Use the Widgets module from Qt 5.
target_link_libraries(serialplot ${QWT_LIBRARY})
qt5_use_modules(serialplot Widgets SerialPort Svg)

# set compiler flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")

# Enable C++11 support, fail if not supported
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif(COMPILER_SUPPORTS_CXX0X)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
  message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()

# version number
set(MAJOR_VERSION 0)
set(MINOR_VERSION 2)
set(PATCH_VERSION 0)
set(VERSION_STRING "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}")

# get revision number from mercurial
find_program(MERCURIAL hg)

if (MERCURIAL)
  execute_process(COMMAND ${MERCURIAL} id -i
    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
    RESULT_VARIABLE MERCURIAL_RESULT
    OUTPUT_VARIABLE VERSION_REVISION
    OUTPUT_STRIP_TRAILING_WHITESPACE)
  if(NOT MERCURIAL_RESULT EQUAL 0)
    set(VERSION_SCM_REVISION false)
  endif(NOT MERCURIAL_RESULT EQUAL 0)
endif (MERCURIAL)

if (NOT VERSION_REVISION)
  set(VERSION_REVISION "0")
endif (NOT VERSION_REVISION)

message("SCM revision: ${VERSION_REVISION}")

# configure version file
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/version.h.in" "${CMAKE_CURRENT_BINARY_DIR}/version.h")

# add make run target
add_custom_target(run
    COMMAND serialplot
    DEPENDS serialplot
    WORKING_DIRECTORY ${CMAKE_PROJECT_DIR}
)

# installing
install(TARGETS serialplot DESTINATION bin)

# install menu item and icon
find_program(XDG-DESKTOP-MENU xdg-desktop-menu)
find_program(XDG-ICON-RESOURCE xdg-icon-resource)

# first copy files to share/serialplot/
install(FILES
  ${CMAKE_SOURCE_DIR}/misc/serialplot.desktop
  ${CMAKE_SOURCE_DIR}/misc/serialplot.png
  DESTINATION share/serialplot)

# install copyright file (in debian format)
install(FILES
  ${CMAKE_SOURCE_DIR}/debian/copyright
  DESTINATION share/doc/serialplot/)

install(CODE "
  execute_process(COMMAND ${XDG-DESKTOP-MENU} install --novendor ${CMAKE_INSTALL_PREFIX}/share/serialplot/serialplot.desktop)
  execute_process(COMMAND ${XDG-ICON-RESOURCE} install --novendor --size 256 ${CMAKE_INSTALL_PREFIX}/share/serialplot/serialplot.png)
")

# uninstalling
configure_file(
  "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
  "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
  IMMEDIATE @ONLY)

add_custom_target(uninstall
  COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake
  COMMAND ${XDG-DESKTOP-MENU} uninstall --novendor serialplot.desktop
  COMMAND ${XDG-ICON-RESOURCE} uninstall --novendor --size 256 serialplot)

# packaging
set(CPACK_GENERATOR "DEB")

include(InstallRequiredSystemLibraries)

set(CPACK_PACKAGE_NAME "serialplot")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Small and simple software for plotting data from serial port")
set(CPACK_PACKAGE_CONTACT "Hasan Yavuz Özderya <hy@ozderya.net>")
set(CPACK_PACKAGE_VERSION_MAJOR ${MAJOR_VERSION})
set(CPACK_PACKAGE_VERSION_MINOR ${MINOR_VERSION})
set(CPACK_PACKAGE_VERSION_PATCH ${PATCH_VERSION})
set(CPACK_STRIP_FILES TRUE)
set(CPACK_PACKAGE_EXECUTABLES "serialplot")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libqt5widgets5 (>= 5.2.1), libqt5serialport5 (>= 5.2.1), libc6 (>= 2.19)")
if (NOT QWT_USE_STATIC)
  set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, libqwt6-qt5 (>= 6.1.1)")
endif (NOT QWT_USE_STATIC)
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/debian/postinst" "${CMAKE_SOURCE_DIR}/debian/postrm")

# set debian package name
string(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_PACKAGE_NAME_LOWERCASE)
find_program(DPKG_PROGRAM dpkg DOC "dpkg program of Debian-based systems")
if(DPKG_PROGRAM)
  execute_process(
    COMMAND ${DPKG_PROGRAM} --print-architecture
    OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE
    OUTPUT_STRIP_TRAILING_WHITESPACE)
  set(CPACK_PACKAGE_FILE_NAME
	"${CPACK_PACKAGE_NAME_LOWERCASE}_${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
else(DPKG_PROGRAM)
  set(CPACK_PACKAGE_FILE_NAME
	"${CPACK_PACKAGE_NAME_LOWERCASE}_${PROJECT_VERSION}-${PROJECT_VERSION_REVISION}_${CMAKE_SYSTEM_NAME}")
endif(DPKG_PROGRAM)

include(CPack)