diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
#
-# Copyright © 2015 Hasan Yavuz Özderya
+# Copyright © 2015-2016 Hasan Yavuz Özderya
#
# This file is part of serialplot.
#
@@ -36,17 +36,23 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PAT
# Find the QtWidgets library
find_package(Qt5Widgets)
-# Find QWT or use static
+# If set, cmake will download Qwt over SVN, build and use it as a static library.
+set(BUILD_QWT true CACHE BOOL "Download and build Qwt automatically.")
+# Find QWT or use static manually provided by user
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)
+if (BUILD_QWT)
+ include(BuildQwt)
+else (BUILD_QWT)
+ 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)
+endif (BUILD_QWT)
# includes
include_directories("./src" ${QWT_INCLUDE_DIR})
@@ -117,6 +123,10 @@ add_executable(${PROGRAM_NAME} WIN32
target_link_libraries(${PROGRAM_NAME} ${QWT_LIBRARY})
qt5_use_modules(${PROGRAM_NAME} Widgets SerialPort Svg)
+if (BUILD_QWT)
+ add_dependencies(${PROGRAM_NAME} QWT)
+endif (BUILD_QWT)
+
# set compiler flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
diff --git a/cmake/modules/BuildQwt.cmake b/cmake/modules/BuildQwt.cmake
new file mode 100644
--- /dev/null
+++ b/cmake/modules/BuildQwt.cmake
@@ -0,0 +1,36 @@
+#
+# Copyright © 2016 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 .
+#
+
+include(ExternalProject)
+
+ExternalProject_Add(QWT
+ PREFIX qwt
+ SVN_REPOSITORY svn://svn.code.sf.net/p/qwt/code/branches/qwt-6.1
+ # disable QwtDesigner plugin and enable static build
+ PATCH_COMMAND sed -i -r -e "s/QWT_CONFIG\\s*\\+=\\s*QwtDesigner/#&/"
+ -e "s/QWT_CONFIG\\s*\\+=\\s*QwtDll/#&/"
+ -e "s:/usr/local/.*::"
+ /qwtconfig.pri
+ CONFIGURE_COMMAND qmake /qwt.pro
+ )
+
+ExternalProject_Get_Property(QWT install_dir)
+set(QWT_ROOT ${install_dir})
+set(QWT_LIBRARY ${QWT_ROOT}/lib/libqwt.a)
+set(QWT_INCLUDE_DIR ${QWT_ROOT}/include)