File: CMakeLists.txt

package info (click to toggle)
plplot 5.14.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 30,424 kB
  • sloc: ansic: 79,613; xml: 28,583; cpp: 20,037; ada: 19,456; tcl: 12,081; f90: 11,423; ml: 7,276; java: 6,863; python: 6,792; sh: 3,185; perl: 828; lisp: 75; makefile: 48; sed: 33; fortran: 5
file content (266 lines) | stat: -rw-r--r-- 10,105 bytes parent folder | download | duplicates (4)
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
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
# qt5_lite/CMakeLists.txt

# Configure the build of qt5_lite.

# Copyright (C) 2014-2015 Alan W. Irwin

# This file is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.

# This file 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
# Lesser General Public License for more details.

# You should have received a copy of the GNU Lesser General Public
# License along with this file; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

# Many of the details of this epa_build configuration were derived from
# <http://www.linuxfromscratch.org/blfs/view/svn/x/qt5.html>.

set(PACKAGE qt5_lite)

# List of dependencies (most of which are build tools) which should be
# ignored.
set(ignored_dependencies_LIST ${extra_ignored_dependencies_list})

# The assumption here is that for Windows platforms Qt5 is self-contained
# and therefore does not rely on external libraries (at least if you configure
# the in-house version of those).  For Linux platforms the dependencies will
# just have to be resolved by system versions rather than building a lot
# of additional packages.
set(dependencies_LIST)

# Do boilerplate tasks that must be done for each different project
# that is configured as part of epa_build.
epa_boilerplate(
  ignored_dependencies_LIST
  PACKAGE
  dependencies_LIST
  dependencies_targets
  EPA_PATH
  source_PATH
  )

set(CFLAGS "$ENV{CFLAGS}")
set(CXXFLAGS "$ENV{CXXFLAGS}")

# Drop -fvisibility=hidden since that option may not work for Qt5.
# (May test this later if I get everything to work.)
string(REGEX REPLACE "-fvisibility=hidden" "" CFLAGS "${CFLAGS}")
string(REGEX REPLACE "-fvisibility=hidden" "" CXXFLAGS "${CXXFLAGS}")

# Data that is related to downloads.
# set(URL http://download.qt-project.org/official_releases/qt/5.2/5.2.1/single/qt-everywhere-opensource-src-5.2.1.tar.xz)
# N.B. tar.gz used because that is the one advertised by the Qt5 download site rather than the tar.xz
# version that is also available (but unadvertised).  The .gz version is 34 per cent larger which
# implies the download will typically take ~1 minute longer, but the unpack should be much faster
# so it is not a clear choice.
#set(URL http://download.qt-project.org/official_releases/qt/5.3/5.3.1/single/qt-everywhere-opensource-src-5.3.1.tar.gz)
set(URL http://download.qt-project.org/official_releases/qt/5.3/5.3.2/single/qt-everywhere-opensource-src-5.3.2.tar.gz)
# 5.4.1 would not build with error: operator '||' has no right operand and many subsequent
# error: <component> "is not a template" errors.  The configuration used was
# identical to to 5.3.x, and changing that may allow dropping components of
# the build with such build issues.
#set(URL http://download.qt-project.org/official_releases/qt/5.4/5.4.1/single/qt-everywhere-opensource-src-5.4.1.tar.gz)
# Temporary to save download bandwidth/time while debugging this.
# set(URL /home/software/build_qt5/qt-everywhere-opensource-src-5.2.1.tar.xz)
# set(URL /home/software/build_qt5/qt-everywhere-opensource-src-5.3.1.tar.gz)
set(DOWNLOAD_HASH_TYPE MD5)
# 5.2.1
#set(DOWNLOAD_HASH 0c8d2aa45f38be9c3f7c9325eb059d9d)
#set(DOWNLOAD_HASH f9a24a0d5645efa0715b6ff0fa13d60f)
# 5.3.1 (from http://download.qt-project.org/official_releases/qt/5.3/5.3.1/single/md5sums.txt).
# set(DOWNLOAD_HASH a355749e4f200a6392ecad151d1d0cdc)
# 5.3.2 (from http://download.qt-project.org/official_releases/qt/5.3/5.3.2/single/md5sums.txt).
set(DOWNLOAD_HASH febb001129927a70174467ecb508a682)
# 5.4.1 (from http://download.qt-project.org/official_releases/qt/5.4/5.4.1/single/md5sums.txt).
#set(DOWNLOAD_HASH 90f3fbce38ed16e5dc2cd0909ae86ca4)

# Many of these are recommended by BLFS
# <http://www.linuxfromscratch.org/blfs/view/svn/x/qt5.html>, but I
# have tried to use a consistent install prefix and I have also turned
# off as much as possible for this "lite" version.
set(config_arguments

  # Configure options:
  -release
  -confirm-license
  -opensource

  # Try to get rid of everything to do with sql by eliminating all possible
  # drivers.  5.2.1 list = 5.3.1 list = 5.3.2 list =
  # db2 ibase mysql oci odbc psql sqlite sqlite2 tds
  -no-sql-db2
  -no-sql-ibase
  -no-sql-mysql
  -no-sql-oci
  -no-sql-odbc
  -no-sql-psql
  -no-sql-sqlite
  -no-sql-sqlite2
  -no-sql-tds

  # Comment out for 5.3.1 and 5.3.2 since (-no-)javascript-jit no longer an option
  # -no-javascript-jit
  -no-qml-debug
  # Third party libraries (drop if possible but if needed by PLplot, use
  # in-house Qt5 versions of these to reduce dependencies):
  -qt-zlib
  -no-mtdev
  -no-gif
  -qt-libpng
  -qt-libjpeg
  -qt-freetype
  # Experimental in-house harfbuzz NG (5.2.1 and 5.3.1)
  # Comment out for now ==> no harfbuzz NG.
  #-qt-harfbuzz
  -no-openssl
  -qt-pcre
  -qt-xcb
  -qt-xkbcommon
  -no-xinput2
  -no-xcb-xlib
  -no-glib
  # These 3 external library options available with 5.3.[1-2] only
  -no-pulseaudio
  -no-alsa
  -no-gtkstyle

  # Additional options:

  # Drop all components other than libs
  -nomake tools
  -nomake examples
  -nomake tests

  # These skips have so far only been tried for 5.3.1 and 5.3.2
  # The list is taken from the top-level subdirectories in
  # the 5.3.1 and 5.3.2 source trees that start with "qt".
  # (It turns out this list of directories is the same for both
  # 5.3.1 and 5.3.2.)  I also
  # consulted <http://doc.qt.io/qt-5/qtmodules.html>
  # for explanation of the purpose of these various modules.

  -skip qtactiveqt
  -skip qtandroidextras
  # Don't skip qtbase for obvious reasons.
  # -skip qtbase
  -skip qtconnectivity
  -skip qtdeclarative
  -skip qtdoc
  -skip qtenginio
  -skip qtgraphicaleffects
  # Don't skip qtimageformats which supports TIFF, MNG, TGA, WBMP.
  # -skip qtimageformats
  -skip qtlocation
  # Don't skip qtmacextras which provides platform-specific APIs for Mac OS X.
  #-skip qtmacextras
  -skip qtmultimedia
  -skip qtquick1
  -skip qtquickcontrols
  -skip qtscript
  -skip qtsensors
  -skip qtserialport
  # Don't skip qtsvg module which contains the QSvgGenerator class used to create
  # SVG file results.
  # -skip qtsvg
  -skip qttools
  -skip qttranslations
  -skip qtwebkit
  -skip qtwebkit-examples
  -skip qtwebsockets
  -skip qtwinextras
  # Don't skip qtx11extras which provides platform-specific APIs for X11.
  # -skip qtx11extras
  -skip qtxmlpatterns

  # Speed compilation of qmake which presumably does not have to
  # be that efficient.
  -no-optimized-qmake

  -no-compile-examples
  # Need gui
  #-no-gui
  # Need widgets for some reason to have PrintSupport
  #-no-widgets
  -no-nis
  -no-cups
  -no-iconv
  -no-evdev
  -no-icu
  -no-dbus
  -no-eglfs
  -no-directfb
  -no-linuxfb
  -no-kms

  # There are a whole bunch of features listed in
  # qtbase/src/corelib/global/qfeatures.txt which
  # can apparently be dropped using
  # -no-feature-<feature>
  # (where I assume <feature> is the uppercased macro name
  # of the feature mentioned in qfeatures.txt), but
  # this is such fine-grained control without much
  # documentation that I am going to use default
  # features and not try these -no-feature options.

  -no-opengl
  # Qt/X11 only: (leave everything default)

  )

# Note, setting the QT5DIR environment variable to the install prefix
# as below is recommended by method 2 of BLFS.
set(QT5DIR ${EPA_CMAKE_INSTALL_PREFIX})

ExternalProject_Add(
  build_qt5_lite
  DEPENDS ${dependencies_targets}
  URL ${URL}
  URL_HASH ${DOWNLOAD_HASH_TYPE}=${DOWNLOAD_HASH}
  CONFIGURE_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} QT5DIR=${QT5DIR} "CFLAGS=${CFLAGS}" "CXXFLAGS=${CXXFLAGS}" ${source_PATH}/${EPA_CONFIGURE_COMMAND} ${config_arguments}
  BUILD_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} QT5DIR=${QT5DIR} ${EPA_PARALLEL_MAKE_COMMAND}
  BUILD_IN_SOURCE 0
  INSTALL_COMMAND ${ENV_EXECUTABLE} PATH=${EPA_PATH} QT5DIR=${QT5DIR} ${EPA_PARALLEL_MAKE_COMMAND} install
  STEP_TARGETS update configure build install test
  )

file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/install_png.sh
"install -v -dm755 ${EPA_CMAKE_INSTALL_PREFIX}/usr/share/pixmaps/
install -v -Dm644 ${EPA_BASE}/Source/build_${PACKAGE}/qttools/src/assistant/assistant/images/assistant-128.png ${EPA_CMAKE_INSTALL_PREFIX}/usr/share/pixmaps/assistant-qt5.png
install -v -Dm644 ${EPA_BASE}/Source/build_${PACKAGE}/qttools/src/designer/src/designer/images/designer.png ${EPA_CMAKE_INSTALL_PREFIX}/usr/share/pixmaps/designer-qt5.png
install -v -Dm644 ${EPA_BASE}/Source/build_${PACKAGE}/qttools/src/linguist/linguist/images/icons/linguist-128-32.png ${EPA_CMAKE_INSTALL_PREFIX}/usr/share/pixmaps/linguist-qt5.png
install -v -Dm644 ${EPA_BASE}/Source/build_${PACKAGE}/qttools/src/qdbus/qdbusviewer/images/qdbusviewer-128.png ${EPA_CMAKE_INSTALL_PREFIX}/usr/share/pixmaps/qdbusviewer-qt5.png
install -dm755 ${EPA_CMAKE_INSTALL_PREFIX}/usr/share/applications
"
  )

add_custom_command(
  OUTPUT
  ${EPA_BASE}/Stamp/build_${PACKAGE}/build_${PACKAGE}-install
  COMMAND ${CMAKE_COMMAND} -E echo "install some additional png files recommended by BLFS."
  COMMAND ${BASH_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/install_png.sh
  APPEND
  )

# 5.2.1 and 5.3.1 version the same
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/install_fixups.sh
"find ${QT5DIR} -name qt_lib_bootstrap_private.pri -exec sed -i -e \"s:$PWD/qtbase:/${QT5DIR}/lib/:g\" {} \;
find ${QT5DIR} -name \\*.prl -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;
"
  )

add_custom_command(
  OUTPUT
  ${EPA_BASE}/Stamp/build_${PACKAGE}/build_${PACKAGE}-install
  COMMAND ${CMAKE_COMMAND} -E echo "install fixups recommended by BLFS."
  COMMAND ${BASH_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/install_fixups.sh
  APPEND
  )

# N.B. I have explicitly ignored all post-install Qt5 configuration recommended
# by BLFS because I don't think that will be needed by PLplot.