-
-
Notifications
You must be signed in to change notification settings - Fork 29
/
build.sh
134 lines (124 loc) · 4.38 KB
/
build.sh
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
#!/bin/sh
set -ex
if [[ "$CONDA_BUILD_CROSS_COMPILATION" = "1" ]]; then
if [[ "${build_platform}" == "linux-64" ]]; then
# There are probably equivalent CDTs to install if your build platform
# is something else. However, it is most common in 2023 to use the x86_64
# hardware to cross compile for other architectures.
mamba install --yes \
--prefix ${BUILD_PREFIX} \
mesa-libgl-devel-${cdt_name}-x86_64 \
mesa-libegl-devel-${cdt_name}-x86_64 \
mesa-dri-drivers-${cdt_name}-x86_64 \
libdrm-devel-${cdt_name}-x86_64 \
libglvnd-glx-${cdt_name}-x86_64 \
libglvnd-egl-${cdt_name}-x86_64
fi
(
export CC=$CC_FOR_BUILD
export CXX=$CXX_FOR_BUILD
export LDFLAGS=${LDFLAGS//$PREFIX/$BUILD_PREFIX}
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH//$PREFIX/$BUILD_PREFIX}
export CFLAGS=${CFLAGS//$PREFIX/$BUILD_PREFIX}
export CXXFLAGS=${CXXFLAGS//$PREFIX/$BUILD_PREFIX}
# hide host libs
mkdir -p $BUILD_PREFIX/${HOST}
mv $BUILD_PREFIX/${HOST} _hidden
cmake -LAH -G "Ninja" \
-DCMAKE_PREFIX_PATH=${BUILD_PREFIX} \
-DCMAKE_IGNORE_PREFIX_PATH="${PREFIX}" \
-DCMAKE_FIND_FRAMEWORK=LAST \
-DCMAKE_INSTALL_RPATH:STRING=${BUILD_PREFIX}/lib \
-DCMAKE_UNITY_BUILD=ON -DCMAKE_UNITY_BUILD_BATCH_SIZE=32 \
-DFEATURE_system_sqlite=ON \
-DFEATURE_framework=OFF \
-DFEATURE_gssapi=OFF \
-DQT_BUILD_SUBMODULES="qtbase;qtshadertools;qttools" \
-DCMAKE_RANLIB=$BUILD_PREFIX/bin/${CONDA_TOOLCHAIN_BUILD}-ranlib \
-DFEATURE_opengl=OFF \
-DFEATURE_linguist=OFF \
-DCMAKE_INSTALL_PREFIX=${BUILD_PREFIX} \
-DBUILD_WITH_PCH=OFF \
-B build_native .
cmake --build build_native --target install
mv _hidden $BUILD_PREFIX/${HOST}
)
CMAKE_ARGS="${CMAKE_ARGS} -DQT_HOST_PATH=${BUILD_PREFIX} -DQT_FORCE_BUILD_TOOLS=ON -DQT_REQUIRE_HOST_PATH_CHECK=OFF -DBUILD_WITH_PCH=OFF"
# Error: unknown architecture `nocona' on linux-aarch64
if test "${target_platform}" = "linux-aarch64"
then
CFLAGS=${CFLAGS// -march=nocona/}
CXXFLAGS=${CXXFLAGS// -march=nocona/}
fi
fi
if [[ $(uname) == "Linux" ]]; then
CMAKE_ARGS="${CMAKE_ARGS} -DFEATURE_egl=ON -DFEATURE_eglfs=ON -DFEATURE_xcb=ON -DFEATURE_xcb_xlib=ON -DFEATURE_xkbcommon=ON"
CMAKE_ARGS="${CMAKE_ARGS} -DFEATURE_vulkan=ON"
CMAKE_ARGS="${CMAKE_ARGS} -DFEATURE_wayland=ON"
fi
if test "${build_platform}" = "linux-64"; then
# In 2023/07/06 we started having trouble with "running out of space"
# on azure for linux64 builds, then linux-aarch64.
CMAKE_ARGS="${CMAKE_ARGS} -DBUILD_WITH_PCH=OFF"
fi
QT_SUBMODULES="qtbase;\
qtdeclarative;\
qtimageformats;\
qtshadertools;\
qtsvg;\
qttools;\
qttranslations;\
qt5compat;\
qtwebchannel;\
qtwebsockets"
cmake -LAH -G "Ninja" ${CMAKE_ARGS} \
-DCMAKE_PREFIX_PATH=${PREFIX} \
-DCMAKE_FIND_FRAMEWORK=LAST \
-DCMAKE_INSTALL_RPATH:STRING=${PREFIX}/lib \
-DCMAKE_UNITY_BUILD=ON -DCMAKE_UNITY_BUILD_BATCH_SIZE=32 \
-DINSTALL_BINDIR=lib/qt6/bin \
-DINSTALL_PUBLICBINDIR=bin \
-DINSTALL_LIBEXECDIR=lib/qt6 \
-DINSTALL_DOCDIR=share/doc/qt6 \
-DINSTALL_ARCHDATADIR=lib/qt6 \
-DINSTALL_DATADIR=share/qt6 \
-DINSTALL_INCLUDEDIR=include/qt6 \
-DINSTALL_MKSPECSDIR=lib/qt6/mkspecs \
-DINSTALL_EXAMPLESDIR=share/doc/qt6/examples \
-DFEATURE_system_sqlite=ON \
-DFEATURE_framework=OFF \
-DFEATURE_linux_v4l=OFF \
-DFEATURE_gssapi=OFF \
-DFEATURE_enable_new_dtags=OFF \
-DFEATURE_openssl_linked=ON \
-DQT_BUILD_SUBMODULES=${QT_SUBMODULES} \
-B build .
cmake --build build --target install
cd ${PREFIX}
mkdir -p bin
for links in ${SRC_DIR}/build/qt*/user_facing_tool_links.txt
do
while read _line; do ln -sf $_line; done < ${links}
done
# You can find the expected values of these files in the log
# For example Translations will be listed as
# INSTALL_TRANSLATIONSDIR
# This file should be in the location of the user's executable
# for conda, this becomes PREFIX/bin/
# https://doc.qt.io/qt-6/qt-conf.html
cat << EOF >${PREFIX}/bin/qt6.conf
[Paths]
Prefix = ${PREFIX}
Documentation = ${PREFIX}/share/doc/qt6
Headers = ${PREFIX}/include/qt6
Libraries = ${PREFIX}/lib
LibraryExecutables = ${PREFIX}/lib/qt6
Binaries = ${PREFIX}/lib/qt6/bin
Plugins = ${PREFIX}/lib/qt6/plugins
QmlImports = ${PREFIX}/lib/qt6/qml
ArchData = ${PREFIX}/lib/qt6
Data = ${PREFIX}/share/qt6
Translations = ${PREFIX}/share/qt6/translations
Examples = ${PREFIX}/share/doc/qt6/examples
Tests = ${PREFIX}/tests
EOF