Update Finnish translation (Preferences ln ch)
[nomnom.git] / CMakeLists.txt
blob71f346ffcf62170b0b1412ce2d5455e70fad30b5
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.3")
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 # gzip.
41 find_program (GZIP_PROG "gzip")
43 # pod2man.
45 find_program (POD2MAN_PROG "pod2man")
46 if (POD2MAN_PROG)
47     add_custom_target (pod2man
48         "${POD2MAN_PROG}" -c "NomNom manual" -n NomNom -s 1 -r ${VERSION}
49         ${CMAKE_CURRENT_SOURCE_DIR}/man1/nomnom.1.pod
50         ${CMAKE_CURRENT_BINARY_DIR}/man1/nomnom.1
51     )
52 endif ()
54 set (HOST_SETUP "${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_PROCESSOR}")
55 set (VERSION_LONG "${VERSION_LONG} for ${HOST_SETUP}")
57 # Set build type default.
59 if (NOT CMAKE_BUILD_TYPE)
60     set (CMAKE_BUILD_TYPE "debug")
61 endif ()
63 # Set verbose makefile default.
65 if (NOT CMAKE_VERBOSE_MAKEFILE)
66     set (CMAKE_VERBOSE_MAKEFILE false)
67 endif ()
69 # Set WITHOUT_DESKTOP default.
71 if (NOT WITHOUT_DESKTOP)
72     set (WITHOUT_DESKTOP false)
73 endif ()
75 # Set WITHOUT_QM default.
77 if (NOT WITHOUT_QM)
78     set (WITHOUT_QM false)
79 endif ()
81 # Set WITHOUT_DOC default.
83 if (NOT WITHOUT_DOC)
84     set (WITHOUT_DOC false)
85 endif ()
87 # config.h
89 configure_file (
90     "${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake.in"
91     "${CMAKE_CURRENT_BINARY_DIR}/config.h"
94 # nomnom.desktop
96 configure_file (
97     "${CMAKE_CURRENT_SOURCE_DIR}/nomnom.desktop.in"
98     "${CMAKE_CURRENT_BINARY_DIR}/nomnom.desktop"
101 # Sources.
103 set (nomnom_src
104     # UI.
105     src/i/Preferences.cpp
106     src/i/YoutubeFeed.cpp
107     src/i/MainWindow.cpp
108     src/i/Reminder.cpp
109     src/i/LogView.cpp
110     src/i/About.cpp
111     # Other.
112     src/DownloadDiag.cpp
113     src/ProcProgDiag.cpp
114     src/Recent.cpp
115     src/Video.cpp
116     src/Log.cpp
117     src/main.cpp
118     src/util.cpp
119     src/tips.cpp
122 set (nomnom_hdr
123     src/Recent.h
124     src/Log.h
125     src/util.h
126     src/tips.h
129 set (nomnom_moc_hdr
130     src/i/Preferences.h
131     src/i/YoutubeFeed.h
132     src/i/MainWindow.h
133     src/i/Reminder.h
134     src/i/LogView.h
135     src/DownloadDiag.h
136     src/ProcProgDiag.h
137     src/i/About.h
138     src/Video.h
141 set (nomnom_ui
142     i/Preferences.ui
143     i/YoutubeFeed.ui
144     i/MainWindow.ui
145     i/Reminder.ui
146     i/LogView.ui
147     i/About.ui
150 set (nomnom_rc rc/nomnom.qrc)
152 if (NOT WITHOUT_QM)
153     file (GLOB nomnom_ts "${CMAKE_CURRENT_SOURCE_DIR}/tr/*.ts")
154 endif ()
156 # Prerequisites.
158 find_package (Qt4 4.5.0 COMPONENTS QtCore QtGui QtScript REQUIRED)
159 include (${QT_USE_FILE})
161 qt4_add_resources   (nomnom_rc_src  ${nomnom_rc})
162 if (NOT WITHOUT_QM)
163     qt4_add_translation (nomnom_qm  ${nomnom_ts})
164 endif ()
165 qt4_wrap_ui         (nomnom_ui_hdr  ${nomnom_ui})
166 qt4_wrap_cpp        (nomnom_moc_src ${nomnom_moc_hdr})
168 # http://www.vtk.org/Wiki/CMake_2.8.0_Docs : qt4_create_translation
170 set (qt_VERSION
171     "${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}")
173 # The executable.
175 include_directories (
176     ${CMAKE_BINARY_DIR}
177     ${CMAKE_CURRENT_SOURCE_DIR}/src
178     ${CMAKE_CURRENT_SOURCE_DIR}/src/i
181 set (exec_components
182     ${nomnom_src}
183     ${nomnom_hdr}
184     ${nomnom_moc_src}
185     ${nomnom_rc_src}
186     ${nomnom_ui_hdr}
189 if (NOT WITHOUT_QM)
190     set (exec_components ${exec_components} ${nomnom_qm})
191 endif ()
193 add_executable (nomnom ${exec_components})
195 # Subdirs.
197 subdirs (doc man1)
199 # Status.
201 message (STATUS)
202 message (STATUS "Configured:")
203 message (STATUS "   NomNom ${VERSION_LONG}")
204 message (STATUS)
205 message (STATUS "Found:")
206 message (STATUS "   Compiler: ${CMAKE_CXX_COMPILER}")
207 message (STATUS "   Linker  : ${CMAKE_LINKER}")
208 message (STATUS "   Make    : ${CMAKE_MAKE_PROGRAM}")
209 message (STATUS "   Host    : ${HOST_SETUP}")
210 message (STATUS "   Qt      : ${qt_VERSION}")
211 message (STATUS)
212 message (STATUS "Options:")
213 message (STATUS "   Install prefix : ${CMAKE_INSTALL_PREFIX}")
214 message (STATUS "   Verbose make   : ${CMAKE_VERBOSE_MAKEFILE}")
215 message (STATUS "   Without desktop: ${WITHOUT_DESKTOP}")
216 message (STATUS "   Without transl.: ${WITHOUT_QM}")
217 message (STATUS "   Without doc    : ${WITHOUT_DOC}")
218 message (STATUS "   Build type     : ${CMAKE_BUILD_TYPE}")
219 message (STATUS "       (debug, release, relwithdebinfo, minsizerel)")
220 message (STATUS)
222 # Force these variables to be written to cache.
224 set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE PATH
225     "Install destination for ${PROJECT_NAME}" FORCE)
227 set (CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING
228     "Type of build: none, debug, release, relwithdebinfo minsizerel" FORCE)
230 set (CMAKE_VERBOSE_MAKEFILE "${CMAKE_VERBOSE_MAKEFILE}" CACHE BOOL
231     "Build with verbose makefiles: true, false" FORCE)
233 set (WITHOUT_DESKTOP "${WITHOUT_DESKTOP}" CACHE BOOL
234     "Install without desktop integration files: true, false" FORCE)
236 set (WITHOUT_QM "${WITHOUT_QM}" CACHE BOOL
237     "Install without translation files: true, false" FORCE)
239 set (WITHOUT_DOC "${WITHOUT_DOC}" CACHE BOOL
240     "Install without documentation: true, false" FORCE)
242 # Link.
244 target_link_libraries (nomnom ${QT_LIBRARIES})
246 # CPack.
248 include (InstallRequiredSystemLibraries)
250 set (CPACK_SOURCE_PACKAGE_FILE_NAME
251     "nomnom-${VERSION}"
252     CACHE INTERNAL
253     "tarball basename"
256 set (CPACK_PACKAGE_FILE_NAME ${CPACK_SOURCE_PACKAGE_FILE_NAME})
257 set (CPACK_GENERATOR "TGZ")
258 set (CPACK_SOURCE_GENERATOR "TGZ")
259 set (CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/COPYING)
260 set (CPACK_RESOURCE_FILE_README  ${CMAKE_CURRENT_SOURCE_DIR}/README)
262 set (CPACK_SOURCE_IGNORE_FILES
263     "/.git"
264     "/.cmake/"
265     "/CMakeFiles/"
266     "/CMakeCache/"
267     "/Makefile/"
268     "/tmp/"
269     "/OLD/"
270     "/old/"
271     "TODO"
272     "/patches/"
275 # Notice the inclusion here, after setting the cpack variables.
276 include (CPack)
278 # Install.
280 install (PROGRAMS
281     "${CMAKE_CURRENT_BINARY_DIR}/nomnom" DESTINATION bin/)
283 if (NOT WITHOUT_QM)
284     install (FILES ${nomnom_qm} DESTINATION share/nomnom/tr/)
285 endif ()
287 if (NOT WITHOUT_DESKTOP)
288     install (FILES "${CMAKE_CURRENT_BINARY_DIR}/nomnom.desktop"
289         DESTINATION share/applications/)
291     install (FILES "${CMAKE_CURRENT_SOURCE_DIR}/rc/img/nomnom.xpm"
292         DESTINATION share/pixmaps/)
293 endif ()
295 # Uninstall.
297 configure_file (
298     "${CMAKE_CURRENT_SOURCE_DIR}/uninstall.cmake.in"
299     "${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake"
300     IMMEDIATE @ONLY
303 add_custom_target (
304     uninstall
305     "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake"