-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
227 lines (181 loc) · 7.51 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
####################################
# CMakeLists for astroavibrowser #
# (c) Blaise-Florentin Collin 2013 #
# under GPL v3 License #
####################################
cmake_minimum_required(VERSION 2.8.6)
####################
# BUILD DIRECTIVES #
####################
# project name
project(astroavibrowser)
# version
set(DEB_EPOCH 0)
set(MAJOR_VERSION "0")
set(MINOR_VERSION "4")
set(PATCH_VERSION "5")
set(BUILD_VERSION "45")
set(FULL_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D BINARY_VERSION=\\\"${FULL_VERSION}\\\" -D BUILD_VERSION=${BUILD_VERSION}")
message(STATUS "Building astroavibrowser ${FULL_VERSION}")
# distribution detection
find_file(DEBIAN_FOUND debian_version debconf.conf PATHS /etc)
find_file(FEDORA_FOUND fedora-release PATHS /etc)
find_file(MAGEIA_FOUND mageia-release PATHS /etc)
# destir for binary packages
set($ENV{DESTDIR} "${CMAKE_BINARY_DIR}/fakeinstall")
# add cmake module path
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
# needed packages
find_package(Qt4 REQUIRED)
if(NOT QT_FOUND)
message(FATAL_ERROR "Qt4 not found, generation stopped")
endif(NOT QT_FOUND)
find_package(LibAV REQUIRED)
if(NOT LIBAV_FOUND)
message(FATAL_ERROR "LibAv not found, generation stopped")
endif(NOT LIBAV_FOUND)
# source files
set(astroavibrowser_SOURCES
src/main.cpp
src/aviwriter.cpp
src/Qframelist.cpp
src/bmpwriter.cpp
src/processing.cpp
src/Qhistogram.cpp
src/filewriter.cpp
src/Qframedisplay.cpp
src/Qmainwindow.cpp)
# we use Qt4
set(CMAKE_AUTOMOC TRUE)
include(${QT_USE_FILE})
add_definitions(${QT_DEFINITIONS})
# we use libav
include_directories(${LIBAV_INCLUDE_DIRS})
add_definitions(${LIBAV_DEFINITIONS})
# add raw types for libav
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D __STDC_CONSTANT_MACROS")
# target
add_executable(astroavibrowser ${astroavibrowser_SOURCES})
# target libs
target_link_libraries(astroavibrowser ${QT_LIBRARIES} ${LIBAV_LIBRARIES})
# add a target to generate API documentation with Doxygen
find_package(Doxygen)
if(DOXYGEN_FOUND)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
add_custom_target(doc ALL ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen" VERBATIM
)
endif(DOXYGEN_FOUND)
# installation
install(TARGETS astroavibrowser RUNTIME DESTINATION /usr/bin)
install(FILES icons/astroavibrowser-icon.png DESTINATION /usr/share/icons)
install(FILES icons/astroavibrowser-icon.png DESTINATION /usr/share/astroavibrowser/icons)
install(FILES doc/astroavibrowser_help.html DESTINATION /usr/share/astroavibrowser)
install(FILES doc/BUGS DESTINATION /usr/share/astroavibrowser)
install(FILES doc/TODO DESTINATION /usr/share/astroavibrowser)
install(FILES doc/Contributors DESTINATION /usr/share/astroavibrowser)
install(FILES doc/ChangeLog DESTINATION /usr/share/astroavibrowser)
install(FILES doc/license.txt DESTINATION /usr/share/astroavibrowser)
install(FILES doc/INSTALL DESTINATION /usr/share/astroavibrowser)
install(FILES astroavibrowser-entry.desktop DESTINATION /usr/share/applications)
######################
# PACKAGE GENERATION #
######################
# default arch
set(ARCHITECTURE "unkown")
# global directives
set(CPACK_PACKAGE_VERSION_MAJOR ${MAJOR_VERSION})
set(CPACK_PACKAGE_VERSION_MINOR ${MINOR_VERSION})
set(CPACK_PACKAGE_VERSION_PATCH ${PATCH_VERSION})
##################
# source package #
##################
# source package
set(CPACK_SOURCE_GENERATOR TGZ)
set(CPACK_SOURCE_IGNORE_FILES ".svn")
set(CPACK_SOURCE_PACKAGE_FILE_NAME "astroavibrowser_${FULL_VERSION}_src" CACHE INTERNAL "tarball basename")
#####################
# binaries packages #
#####################
# global directives for debian and rpm packages
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Video editing tool for astronomy")
set(CPACK_PACKAGE_DESCRIPTION "astroavibrowser is a small tool for astronomy imaging capture/processing.")
set(CPACK_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION} With astroavibrowser, you may open a video file")
set(CPACK_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION}, select the good frames and save the new sequence")
set(CPACK_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION} in a new avi file. It also debayers your raw sequences.")
set(CPACK_PACKAGE_VENDOR "Thx8411")
set(CPACK_PACKAGE_CONTACT "thx8411@users.sourceforge.net")
set(CPACK_STRIP_FILES astroavibrowser)
##################
# debian package #
##################
if(DEBIAN_FOUND)
# arch detection
find_program(DPKG_PROGRAM dpkg DOC "dpkg program of Debian-based systems")
if(DPKG_PROGRAM)
execute_process(
COMMAND ${DPKG_PROGRAM} --print-architecture
OUTPUT_VARIABLE ARCHITECTURE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif(DPKG_PROGRAM)
# settings
set(CPACK_GENERATOR DEB)
set(CPACK_SET_DESTDIR "ON")
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCHITECTURE})
set(CPACK_DEBIAN_PACKAGE_NAME "astroavibrowser")
# dependencies
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libavcodec53 | libavcodec-extra-53
, libavformat53 | libavformat-extra-53
, libavutil51 | libavutil-extra-51
, libc6, libgcc1, libqtcore4
, libqtgui4, libstdc++6
, libswscale2 | libswscale-extra-2")
set(CPACK_DEBIAN_PACKAGE_SECTION graphics)
set(CPACK_DEBIAN_PACKAGE_VERSION "${DEB_EPOCH}:${FULL_VERSION}-1")
set(CPACK_PACKAGE_FILE_NAME ${CPACK_DEBIAN_PACKAGE_NAME}_${FULL_VERSION}_${ARCHITECTURE})
set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}\n ${CPACK_PACKAGE_DESCRIPTION}")
endif(DEBIAN_FOUND)
###############
# rpm package #
###############
if(FEDORA_FOUND OR MAGEIA_FOUND)
# arch detection
execute_process(COMMAND uname -m
OUTPUT_VARIABLE ARCHITECTURE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# settings
set(CPACK_GENERATOR RPM)
set(CPACK_SET_DESTDIR "OFF")
set(CPACK_RPM_PACKAGE_ARCHITECTURE ${ARCHITECTURE})
set(CPACK_RPM_PACKAGE_LICENSE "GPL v3")
set(CPACK_RPM_PACKAGE_GROUP "Productivity/Scientific/Astronomy")
set(CPACK_RPM_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION})
set(CPACK_RPM_PACKAGE_NAME "astroavibrowser")
set(CPACK_PACKAGE_FILE_NAME ${CPACK_RPM_PACKAGE_NAME}_${FULL_VERSION}.${ARCHITECTURE})
set(CPACK_RPM_PACKAGE_RELOCATABLE FALSE)
# dependencies
if(ARCHITECTURE STREQUAL "x86_64")
set(CPACK_RPM_PACKAGE_REQUIRES "lib64avformat53,")
set(CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES} lib64avcodec53,")
set(CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES} lib64avutil51,")
set(CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES} lib64swscaler2,")
set(CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES} lib64qtcore4,")
set(CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES} lib64qtgui4")
else(ARCHITECTURE STREQUAL "x86_64")
set(CPACK_RPM_PACKAGE_REQUIRES "libavformat53,")
set(CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES} libavcodec53,")
set(CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES} libavutil51,")
set(CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES} libswscaler2,")
set(CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES} libqtcore4,")
set(CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES} libqtgui4")
endif(ARCHITECTURE STREQUAL "x86_64")
endif(FEDORA_FOUND OR MAGEIA_FOUND)
include(CPack)
#########
# TESTS #
#########
include(CTest)