]>
Commit | Line | Data |
---|---|---|
1a97b22b CF |
1 | --- |
2 | name: "osx-qt" | |
3 | suites: | |
4 | - "precise" | |
5 | architectures: | |
6 | - "i386" | |
7 | packages: | |
8 | - "git-core" | |
9 | - "automake" | |
10 | - "p7zip-full" | |
11 | ||
12 | reference_datetime: "2013-06-01 00:00:00" | |
13 | remotes: [] | |
14 | files: | |
15 | - "qt-everywhere-opensource-src-5.2.1.tar.gz" | |
2869b134 | 16 | - "osx-native-depends-r3.tar.gz" |
6e7c4d17 | 17 | - "osx-depends-r4.tar.gz" |
2869b134 | 18 | - "MacOSX10.7.sdk.tar.gz" |
1a97b22b CF |
19 | |
20 | script: | | |
21 | ||
22 | echo "84e924181d4ad6db00239d87250cc89868484a14841f77fb85ab1f1dbdcd7da1 qt-everywhere-opensource-src-5.2.1.tar.gz" | sha256sum -c | |
1a97b22b | 23 | |
6e7c4d17 | 24 | REVISION=r4 |
1a97b22b CF |
25 | export SOURCES_PATH=`pwd` |
26 | export TAR_OPTIONS="-m --mtime="$REFERENCE_DATE\\\ $REFERENCE_TIME"" | |
27 | export ZERO_AR_DATE=1 | |
28 | ||
29 | export TZ=UTC | |
30 | ||
31 | REAL_DATE=`which date` | |
32 | echo '#!/bin/bash' > $HOME/date | |
33 | echo "$REAL_DATE -d \"${REFERENCE_DATETIME}\" \"\$@\"" >> $HOME/date | |
34 | ||
35 | chmod +x $HOME/date | |
36 | export PATH=$HOME:$PATH | |
37 | ||
38 | mkdir -p osx-cross-depends/build | |
39 | cd osx-cross-depends | |
40 | ||
41 | PREFIX=`pwd`/prefix | |
42 | NATIVEPREFIX=`pwd`/native-prefix | |
43 | BUILD_BASE=`pwd`/build | |
2869b134 | 44 | SDK=`pwd`/SDKs/MacOSX10.7.sdk |
1a97b22b CF |
45 | HOST=x86_64-apple-darwin11 |
46 | MIN_VERSION=10.6 | |
47 | ||
48 | INT_CFLAGS="-target ${HOST} -mmacosx-version-min=${MIN_VERSION} --sysroot ${SDK} -msse2 -Qunused-arguments" | |
49 | INT_CXXFLAGS="${INT_CFLAGS}" | |
50 | INT_LDFLAGS="-L${PREFIX}/lib -L${SDK}/usr/lib/i686-apple-darwin10/4.2.1" | |
51 | INT_LDFLAGS_CLANG="-B${NATIVEPREFIX}/bin" | |
52 | INT_CPPFLAGS="-I${PREFIX}/include" | |
53 | INT_CC=clang | |
54 | INT_CXX=clang++ | |
55 | INT_OBJC=clang | |
56 | INT_OBJCXX=clang++ | |
57 | INT_AR=${HOST}-ar | |
58 | INT_RANLIB=${HOST}-ranlib | |
59 | INT_LIBTOOL=${HOST}-libtool | |
60 | INT_INSTALL_NAME_TOOL=${HOST}-install_name_tool | |
61 | ||
62 | export PATH=${NATIVEPREFIX}/bin:${PATH} | |
63 | ||
64 | mkdir -p ${NATIVEPREFIX}/bin | |
65 | mkdir -p ${NATIVEPREFIX}/lib | |
66 | mkdir -p ${PREFIX}/bin | |
67 | mkdir -p ${PREFIX}/lib | |
68 | mkdir -p ${BUILD_BASE} | |
69 | ||
1a97b22b | 70 | mkdir -p SDKs |
2869b134 CF |
71 | tar -C SDKs -xf ${SOURCES_PATH}/MacOSX10.7.sdk.tar.gz |
72 | ||
73 | tar xf /home/ubuntu/build/osx-native-depends-r3.tar.gz | |
1a97b22b | 74 | |
1a97b22b | 75 | export PATH=`pwd`/native-prefix/bin:$PATH |
6e7c4d17 | 76 | tar xf /home/ubuntu/build/osx-depends-r4.tar.gz |
1a97b22b CF |
77 | |
78 | SOURCE_FILE=${SOURCES_PATH}/qt-everywhere-opensource-src-5.2.1.tar.gz | |
79 | BUILD_DIR=${BUILD_BASE}/qt-everywhere-opensource-src-5.2.1 | |
80 | ||
81 | ||
82 | tar -C ${BUILD_BASE} -xf ${SOURCE_FILE} | |
83 | ||
84 | # Install our mkspec. All files are pulled from the macx-clang spec, except for | |
85 | # our custom qmake.conf | |
86 | SPECFILE=${BUILD_DIR}/qtbase/mkspecs/macx-clang-linux/qmake.conf | |
87 | ||
88 | mkdir -p ${BUILD_DIR}/qtbase/mkspecs/macx-clang-linux | |
89 | cp -f ${BUILD_DIR}/qtbase/mkspecs/macx-clang/Info.plist.lib ${BUILD_DIR}/qtbase/mkspecs/macx-clang-linux/ | |
90 | cp -f ${BUILD_DIR}/qtbase/mkspecs/macx-clang/Info.plist.app ${BUILD_DIR}/qtbase/mkspecs/macx-clang-linux/ | |
91 | cp -f ${BUILD_DIR}/qtbase/mkspecs/macx-clang/qplatformdefs.h ${BUILD_DIR}/qtbase/mkspecs/macx-clang-linux/ | |
92 | ||
93 | cat > ${SPECFILE} <<ENDCONF | |
94 | ||
95 | MAKEFILE_GENERATOR = UNIX | |
96 | CONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname absolute_library_soname | |
97 | QMAKE_INCREMENTAL_STYLE = sublib | |
98 | ||
99 | include(../common/macx.conf) | |
100 | include(../common/gcc-base-mac.conf) | |
101 | include(../common/clang.conf) | |
102 | include(../common/clang-mac.conf) | |
103 | ||
104 | QMAKE_XCODE_VERSION=4.3 | |
105 | QMAKE_XCODE_DEVELOPER_PATH=/Developer | |
106 | ||
107 | QMAKE_MACOSX_DEPLOYMENT_TARGET = ${MIN_VERSION} | |
108 | ||
109 | QMAKE_MAC_SDK=macosx | |
110 | QMAKE_MAC_SDK.macosx.path = ${SDK} | |
111 | QMAKE_MAC_SDK.macosx.platform_name = macosx | |
112 | QMAKE_MAC_SDK_PATH=${SDK} | |
113 | ||
114 | QMAKE_CFLAGS += -target ${HOST} | |
115 | QMAKE_OBJECTIVE_CFLAGS += -target ${HOST} | |
116 | QMAKE_CXXFLAGS += -target ${HOST} | |
117 | ||
118 | QMAKE_LFLAGS += -target ${HOST} | |
119 | QMAKE_AR = ${HOST}-ar cq | |
120 | QMAKE_RANLIB=${HOST}-ranlib | |
121 | QMAKE_LIBTOOL=${HOST}-libtool | |
122 | QMAKE_INSTALL_NAME_TOOL=${HOST}-install_name_tool | |
123 | ||
124 | load(qt_config) | |
125 | ||
126 | ENDCONF | |
127 | ||
128 | pushd ${BUILD_DIR} | |
129 | ./configure -release -opensource -openssl-linked \ | |
130 | -no-audio-backend -no-javascript-jit -no-sql-sqlite -no-sql-tds \ | |
131 | -no-cups -no-iconv -no-dbus -no-gif -no-audio-backend -no-freetype \ | |
132 | -no-javascript-jit -no-sql-sqlite -no-nis -no-cups -no-iconv -no-pch \ | |
133 | -no-dbus -no-gif -no-sm -nomake examples -no-feature-style-plastique \ | |
134 | -no-xcb -no-qml-debug -no-pch -no-nis \ | |
135 | -no-feature-style-cde -no-feature-style-s60 -no-feature-style-motif \ | |
136 | -no-feature-style-windowsmobile -no-feature-style-windowsce \ | |
137 | -no-feature-style-cleanlooks \ | |
138 | -no-sql-db2 -no-sql-ibase -no-sql-oci -no-sql-tds -no-sql-mysql \ | |
139 | -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 \ | |
140 | -skip qtsvg -skip qtwebkit -skip qtwebkit-examples -skip qtserialport \ | |
141 | -skip qtdeclarative -skip qtmultimedia -skip qtimageformats \ | |
142 | -skip qtlocation -skip qtsensors -skip qtquick1 -skip qtxmlpatterns \ | |
143 | -skip qtquickcontrols -skip qtactiveqt -skip qtconnectivity \ | |
144 | -skip qtwinextras -skip qtscript \ | |
145 | -prefix ${PREFIX} -bindir ${NATIVEPREFIX}/bin \ | |
146 | -confirm-license -xplatform macx-clang-linux -v ${INT_LDFLAGS} | |
147 | ||
148 | # RCC's output is sorted using each file entry's hash as the key. Unfortunately, | |
149 | # the hash function uses a random seed for each run so the results aren't | |
150 | # deterministic. This leads to static resources being defined in a random order, | |
151 | # which in-turn means that object files are not predictable. | |
152 | # Fortunately, this upsets Qt's unit tests as well, so they've added the | |
153 | # QT_RCC_TEST environment variable to set a pre-defined seed. Here, do the same | |
154 | # thing for the same reason. | |
155 | QT_RCC_TEST=1 make $MAKEOPTS module-qtbase-make_first | |
156 | ||
157 | ||
158 | make $MAKEOPTS module-qttranslations-make_first | |
159 | make $MAKEOPTS module-qttools-make_first | |
160 | make $MAKEOPTS -C qtbase | |
161 | make -C qtbase install | |
162 | make -C qttranslations install | |
163 | make -C qttools/src/linguist install | |
164 | popd | |
165 | ||
166 | # This file should not be installed to the destination. It's native and | |
167 | # non-deterministic. Remove it. | |
168 | # See: https://bugreports.qt-project.org/browse/QTBUG-31393 | |
169 | rm -f ${PREFIX}/lib/libQt5Bootstrap.a | |
170 | ||
171 | rm -f ${PREFIX}/lib/Qt*.framework/Qt*.prl | |
172 | pushd ${PREFIX}/include | |
173 | ln -sf ../lib/QtNetwork.framework/Headers/ QtNetwork | |
174 | ln -sf ../lib/QtWidgets.framework/Headers/ QtWidgets | |
175 | ln -sf ../lib/QtGui.framework/Headers/ QtGui | |
176 | ln -sf ../lib/QtCore.framework/Headers/ QtCore | |
177 | ln -sf ../lib/QtTest.framework/Headers/ QtTest | |
178 | popd | |
179 | ||
180 | rm -f ${PREFIX}/lib/*.la | |
181 | find ${PREFIX}/lib -name "*.prl" -delete | |
182 | ||
183 | export GZIP="-9n" | |
184 | find native-prefix prefix | sort | tar --no-recursion -czf osx-depends-qt-5.2.1-${REVISION}.tar.gz -T - | |
185 | ||
186 | mv osx-depends-qt-5.2.1-${REVISION}.tar.gz $OUTDIR |