Set 0.1.1 release date
[nomnom.git] / CMakeLists.txt
blob02a4e22bd765f61616934f3d2cea41bca44ecc9f
2 cmake_minimum_required (VERSION 2.8.0)
4 project (nomnom)
6 add_definitions (-Wall)
7 #add_definitions (-Werror)
9 # Version.
11 set (VERSION "0.1.1")
12 set (VERSION_LONG "${VERSION}")
13 set (BRANCH "master")
15 if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git")
16     find_program (GIT_PROG "git")
17     if (GIT_PROG)
18         execute_process (
19             COMMAND ${GIT_PROG} "describe" "${BRANCH}"
20             OUTPUT_VARIABLE DESCR
21             OUTPUT_STRIP_TRAILING_WHITESPACE)
22         if (DESCR)
23             set (VERSION_LONG "${DESCR}")
24         endif ()
25     endif ()
26 endif ()
28 find_program (DATE_PROG "date")
29 if (DATE_PROG)
30     execute_process (
31         COMMAND ${DATE_PROG} "+%Y-%m-%d"
32         OUTPUT_VARIABLE DATE
33         OUTPUT_STRIP_TRAILING_WHITESPACE)
34     if (DATE)
35         set (VERSION_LONG "${VERSION_LONG} built on ${DATE}")
36     endif ()
37 endif ()
39 set (HOST_SETUP "${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_PROCESSOR}")
40 set (VERSION_LONG "${VERSION_LONG} for ${HOST_SETUP}")
42 # Set build type default.
44 if (NOT CMAKE_BUILD_TYPE)
45     set (CMAKE_BUILD_TYPE "debug")
46 endif ()
48 # Set verbose makefile default.
50 if (NOT CMAKE_VERBOSE_MAKEFILE)
51     set (CMAKE_VERBOSE_MAKEFILE false)
52 endif ()
54 # Set WITHOUT_DESKTOP default.
56 if (NOT WITHOUT_DESKTOP)
57     set (WITHOUT_DESKTOP false)
58 endif ()
60 # Set WITHOUT_QM default.
62 if (NOT WITHOUT_QM)
63     set (WITHOUT_QM false)
64 endif ()
66 # Set WITHOUT_DOC default.
68 if (NOT WITHOUT_DOC)
69     set (WITHOUT_DOC false)
70 endif ()
72 # config.h
74 configure_file (
75     "${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake.in"
76     "${CMAKE_CURRENT_BINARY_DIR}/config.h"
79 # nomnom.desktop
81 configure_file (
82     "${CMAKE_CURRENT_SOURCE_DIR}/nomnom.desktop.in"
83     "${CMAKE_CURRENT_BINARY_DIR}/nomnom.desktop"
86 # Sources.
88 set (nomnom_src
89     # UI.
90     src/i/Preferences.cpp
91     src/i/YoutubeFeed.cpp
92     src/i/MainWindow.cpp
93     src/i/Reminder.cpp
94     src/i/LogView.cpp
95     src/i/About.cpp
96     # Other.
97     src/DownloadDiag.cpp
98     src/ProcProgDiag.cpp
99     src/Recent.cpp
100     src/Video.cpp
101     src/Log.cpp
102     src/main.cpp
103     src/util.cpp
104     src/tips.cpp
107 set (nomnom_hdr
108     src/Recent.h
109     src/Log.h
110     src/util.h
111     src/tips.h
114 set (nomnom_moc_hdr
115     src/i/Preferences.h
116     src/i/YoutubeFeed.h
117     src/i/MainWindow.h
118     src/i/Reminder.h
119     src/i/LogView.h
120     src/DownloadDiag.h
121     src/ProcProgDiag.h
122     src/i/About.h
123     src/Video.h
126 set (nomnom_ui
127     i/Preferences.ui
128     i/YoutubeFeed.ui
129     i/MainWindow.ui
130     i/Reminder.ui
131     i/LogView.ui
132     i/About.ui
135 set (nomnom_rc rc/nomnom.qrc)
137 if (NOT WITHOUT_QM)
138     file (GLOB nomnom_ts "${CMAKE_CURRENT_SOURCE_DIR}/tr/*.ts")
139 endif ()
141 # Prerequisites.
143 find_package (Qt4 4.5.0 COMPONENTS QtCore QtGui QtScript REQUIRED)
144 include (${QT_USE_FILE})
146 qt4_add_resources   (nomnom_rc_src  ${nomnom_rc})
147 if (NOT WITHOUT_QM)
148     qt4_add_translation (nomnom_qm  ${nomnom_ts})
149 endif ()
150 qt4_wrap_ui         (nomnom_ui_hdr  ${nomnom_ui})
151 qt4_wrap_cpp        (nomnom_moc_src ${nomnom_moc_hdr})
153 # http://www.vtk.org/Wiki/CMake_2.8.0_Docs : qt4_create_translation
155 set (qt_VERSION
156     "${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}")
158 # The executable.
160 include_directories (
161     ${CMAKE_BINARY_DIR}
162     ${CMAKE_CURRENT_SOURCE_DIR}/src
163     ${CMAKE_CURRENT_SOURCE_DIR}/src/i
166 set (exec_components
167     ${nomnom_src}
168     ${nomnom_hdr}
169     ${nomnom_moc_src}
170     ${nomnom_rc_src}
171     ${nomnom_ui_hdr}
174 if (NOT WITHOUT_QM)
175     set (exec_components ${exec_components} ${nomnom_qm})
176 endif ()
178 add_executable (nomnom ${exec_components})
180 # Subdirs.
182 subdirs (doc)
184 # Status.
186 message (STATUS)
187 message (STATUS "Configuration for")
188 message (STATUS "   NomNom ${VERSION_LONG}")
189 message (STATUS)
190 message (STATUS "Options:")
191 message (STATUS "   Install prefix: ${CMAKE_INSTALL_PREFIX}")
192 message (STATUS "   Host setup    : ${HOST_SETUP}")
193 message (STATUS "   Build type    : ${CMAKE_BUILD_TYPE}")
194 message (STATUS "       (debug, release, relwithdebinfo, minsizerel)")
195 message (STATUS "   Verbose make   : ${CMAKE_VERBOSE_MAKEFILE}")
196 message (STATUS "   Without desktop: ${WITHOUT_DESKTOP}")
197 message (STATUS "   Without transl.: ${WITHOUT_QM}")
198 message (STATUS "   Without doc    : ${WITHOUT_DOC}")
199 message (STATUS)
200 message (STATUS "Found:")
201 message (STATUS "   Compiler: ${CMAKE_CXX_COMPILER}")
202 message (STATUS "   Linker  : ${CMAKE_LINKER}")
203 message (STATUS "   Make    : ${CMAKE_MAKE_PROGRAM}")
204 message (STATUS "   Qt      : ${qt_VERSION}")
205 message (STATUS)
207 # Force these variables to be written to cache.
209 set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE PATH
210     "Install destination for ${PROJECT_NAME}" FORCE)
212 set (CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING
213     "Type of build: none, debug, release, relwithdebinfo minsizerel" FORCE)
215 set (CMAKE_VERBOSE_MAKEFILE "${CMAKE_VERBOSE_MAKEFILE}" CACHE BOOL
216     "Build with verbose makefiles: true, false" FORCE)
218 set (WITHOUT_DESKTOP "${WITHOUT_DESKTOP}" CACHE BOOL
219     "Install without desktop integration files: true, false" FORCE)
221 set (WITHOUT_QM "${WITHOUT_QM}" CACHE BOOL
222     "Install without translation files: true, false" FORCE)
224 set (WITHOUT_DOC "${WITHOUT_DOC}" CACHE BOOL
225     "Install without documentation: true, false" FORCE)
227 # Link.
229 target_link_libraries (nomnom ${QT_LIBRARIES})
231 # CPack.
233 include (InstallRequiredSystemLibraries)
235 set (CPACK_SOURCE_PACKAGE_FILE_NAME
236     "nomnom-${VERSION}"
237     CACHE INTERNAL
238     "tarball basename"
241 set (CPACK_PACKAGE_FILE_NAME ${CPACK_SOURCE_PACKAGE_FILE_NAME})
242 set (CPACK_GENERATOR "TGZ")
243 set (CPACK_SOURCE_GENERATOR "TGZ")
244 set (CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/COPYING)
245 set (CPACK_RESOURCE_FILE_README  ${CMAKE_CURRENT_SOURCE_DIR}/README)
247 set (CPACK_SOURCE_IGNORE_FILES
248     "/.git"
249     "/.cmake/"
250     "/CMakeFiles/"
251     "/CMakeCache/"
252     "/Makefile/"
253     "/tmp/"
254     "/OLD/"
255     "/old/"
256     "TODO"
257     "/patches/"
260 # Notice the inclusion here, after setting the cpack variables.
261 include (CPack)
263 # Install.
265 install (PROGRAMS
266     "${CMAKE_CURRENT_BINARY_DIR}/nomnom" DESTINATION bin/)
268 if (NOT WITHOUT_QM)
269     install (FILES ${nomnom_qm} DESTINATION share/nomnom/tr/)
270 endif ()
272 if (NOT WITHOUT_DESKTOP)
273     install (FILES "${CMAKE_CURRENT_BINARY_DIR}/nomnom.desktop"
274         DESTINATION share/applications/)
276     install (FILES "${CMAKE_CURRENT_SOURCE_DIR}/rc/img/nomnom.png"
277         DESTINATION share/pixmaps/)
278 endif ()
280 # dist.
282 add_custom_target (
283     dist
284     git log --stat >
285         "${CMAKE_CURRENT_SOURCE_DIR}/ChangeLog" && make package_source
288 # Uninstall.
290 configure_file (
291     "${CMAKE_CURRENT_SOURCE_DIR}/uninstall.cmake.in"
292     "${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake"
293     IMMEDIATE @ONLY
296 add_custom_target (
297     uninstall
298     "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake"