Lines 34-39
Link Here
|
34 |
# Array variable containing the source directories that should be built. |
34 |
# Array variable containing the source directories that should be built. |
35 |
# All paths must be relative to ${S}. |
35 |
# All paths must be relative to ${S}. |
36 |
|
36 |
|
|
|
37 |
# @ECLASS-VARIABLE: QT5_COMPILE_FOR_HOST_SUBDIR |
38 |
# @DEFAULT_UNSET |
39 |
# @DESCRIPTION: |
40 |
# Variable containing a source directory that should be built for the host in |
41 |
# case of cross-compilation. |
42 |
|
37 |
# @ECLASS-VARIABLE: QT5_GENTOO_CONFIG |
43 |
# @ECLASS-VARIABLE: QT5_GENTOO_CONFIG |
38 |
# @DEFAULT_UNSET |
44 |
# @DEFAULT_UNSET |
39 |
# @DESCRIPTION: |
45 |
# @DESCRIPTION: |
Lines 197-202
Link Here
|
197 |
sed -i -e "/^QMAKE_CONF_COMPILER=/ s:=.*:=\"$(tc-getCXX)\":" \ |
203 |
sed -i -e "/^QMAKE_CONF_COMPILER=/ s:=.*:=\"$(tc-getCXX)\":" \ |
198 |
configure || die "sed failed (QMAKE_CONF_COMPILER)" |
204 |
configure || die "sed failed (QMAKE_CONF_COMPILER)" |
199 |
|
205 |
|
|
|
206 |
if tc-is-cross-compiler; then |
207 |
# Don't take the host into account in configure tests, since we build everything for the target |
208 |
sed -i -e 's/\"host": true/"host": false/' configure.json || die |
209 |
|
210 |
# Use tools of the host machine |
211 |
sed -i -e 's|\$\$\[QT_HOST_BINS]|/usr/lib/qt5/bin|' mkspecs/features/qt_functions.prf || die |
212 |
|
213 |
# Avoid applying -before to all the subsequent qmake arguments |
214 |
sed -i -e 's/-early "\\\"CONFIG += cross_compile\\\""/& -before/' mkspecs/features/qt_configure.prf || die |
215 |
|
216 |
# Make qtdbus cross-compile |
217 |
sed -i -e 's/CONFIG += force_bootstrap/CONFIG +=/' mkspecs/features/qt_build_config.prf || die |
218 |
fi |
219 |
|
200 |
if [[ ${QT5_MINOR_VERSION} -le 7 ]]; then |
220 |
if [[ ${QT5_MINOR_VERSION} -le 7 ]]; then |
201 |
# Respect toolchain and flags in config.tests |
221 |
# Respect toolchain and flags in config.tests |
202 |
find config.tests/unix -name '*.test' -type f -execdir \ |
222 |
find config.tests/unix -name '*.test' -type f -execdir \ |
Lines 213-220
Link Here
|
213 |
src/{corelib/corelib,gui/gui}.pro || die "sed failed (optimize_full)" |
233 |
src/{corelib/corelib,gui/gui}.pro || die "sed failed (optimize_full)" |
214 |
|
234 |
|
215 |
# Respect build variables in configure tests (bug #639494) |
235 |
# Respect build variables in configure tests (bug #639494) |
216 |
if [[ ${QT5_MINOR_VERSION} -ge 9 ]]; then |
236 |
local mkspec= |
217 |
sed -i -e "s|\"\$outpath/bin/qmake\" \"\$relpathMangled\" -- \"\$@\"|& $(qt5_qmake_args) |" configure || die |
237 |
if use kernel_FreeBSD; then |
|
|
238 |
if tc-is-gcc; then |
239 |
mkspec=freebsd-g++ |
240 |
elif tc-is-clang; then |
241 |
mkspec=freebsd-clang |
242 |
fi |
243 |
elif use kernel_linux; then |
244 |
if tc-is-gcc; then |
245 |
mkspec=linux-g++ |
246 |
elif tc-is-clang; then |
247 |
mkspec=linux-clang |
248 |
fi |
249 |
fi |
250 |
if [[ -n ${mkspec} ]]; then |
251 |
sed -i -e "/load(qt_config)/i\\$(qt5_qmake_vars)" mkspecs/${mkspec}/qmake.conf || die |
218 |
fi |
252 |
fi |
219 |
fi |
253 |
fi |
220 |
|
254 |
|
Lines 229-234
Link Here
|
229 |
if [[ ${QT5_MODULE} == qtbase ]]; then |
263 |
if [[ ${QT5_MODULE} == qtbase ]]; then |
230 |
qt5_base_configure |
264 |
qt5_base_configure |
231 |
fi |
265 |
fi |
|
|
266 |
if [[ ${PN} == qtcore ]]; then |
267 |
emake -C ${QT5_BUILD_DIR} sub-qmake-qmake-aux-pro-qmake_all || die |
268 |
fi |
232 |
|
269 |
|
233 |
qt5_foreach_target_subdir qt5_qmake |
270 |
qt5_foreach_target_subdir qt5_qmake |
234 |
} |
271 |
} |
Lines 272-277
Link Here
|
272 |
# @DESCRIPTION: |
309 |
# @DESCRIPTION: |
273 |
# Runs emake install in the target directories. |
310 |
# Runs emake install in the target directories. |
274 |
qt5-build_src_install() { |
311 |
qt5-build_src_install() { |
|
|
312 |
find . -name 'Makefile*' -type f -execdir \ |
313 |
sed -i -e "s|\\\$(INSTALL_ROOT)${SYSROOT}|\\\$(INSTALL_ROOT)|g" '{}' + || die |
314 |
|
275 |
qt5_foreach_target_subdir emake INSTALL_ROOT="${D}" install |
315 |
qt5_foreach_target_subdir emake INSTALL_ROOT="${D}" install |
276 |
|
316 |
|
277 |
if [[ ${PN} == qtcore ]]; then |
317 |
if [[ ${PN} == qtcore ]]; then |
Lines 456-462
Link Here
|
456 |
|
496 |
|
457 |
if [[ ${QT5_MODULE} == qtbase ]]; then |
497 |
if [[ ${QT5_MODULE} == qtbase ]]; then |
458 |
# see mkspecs/features/qt_config.prf |
498 |
# see mkspecs/features/qt_config.prf |
459 |
export QMAKEMODULES="${QT5_BUILD_DIR}/mkspecs/modules:${S}/mkspecs/modules:${QT5_ARCHDATADIR}/mkspecs/modules" |
499 |
export QMAKEMODULES="${QT5_BUILD_DIR}/mkspecs/modules:${S}/mkspecs/modules:${SYSROOT}${QT5_ARCHDATADIR}/mkspecs/modules" |
460 |
fi |
500 |
fi |
461 |
} |
501 |
} |
462 |
|
502 |
|
Lines 544-549
Link Here
|
544 |
-examplesdir "${QT5_EXAMPLESDIR}" |
584 |
-examplesdir "${QT5_EXAMPLESDIR}" |
545 |
-testsdir "${QT5_TESTSDIR}" |
585 |
-testsdir "${QT5_TESTSDIR}" |
546 |
|
586 |
|
|
|
587 |
$(tc-is-cross-compiler && echo -sysroot "${SYSROOT}" -external-hostbindir /usr/lib/qt5/bin) |
588 |
|
547 |
# force appropriate compiler |
589 |
# force appropriate compiler |
548 |
$(if use kernel_FreeBSD; then |
590 |
$(if use kernel_FreeBSD; then |
549 |
if tc-is-gcc; then |
591 |
if tc-is-gcc; then |
Lines 717-747
Link Here
|
717 |
|
759 |
|
718 |
} |
760 |
} |
719 |
|
761 |
|
720 |
# @FUNCTION: qt5_qmake_args |
762 |
# @FUNCTION: qt5_qmake_vars |
721 |
# @INTERNAL |
763 |
# @INTERNAL |
722 |
# @DESCRIPTION: |
764 |
# @DESCRIPTION: |
723 |
# Helper function to get the various toolchain-related variables. |
765 |
# Helper function to get the various toolchain-related variables. |
724 |
qt5_qmake_args() { |
766 |
qt5_qmake_vars() { |
725 |
echo \ |
767 |
cat <<- EOF |
726 |
QMAKE_AR=\"$(tc-getAR)\" \ |
768 |
QMAKE_AR = $(tc-getAR) cqs\\ |
727 |
QMAKE_CC=\"$(tc-getCC)\" \ |
769 |
QMAKE_CC= $(tc-getCC)\\ |
728 |
QMAKE_LINK_C=\"$(tc-getCC)\" \ |
770 |
QMAKE_LINK_C = $(tc-getCC)\\ |
729 |
QMAKE_LINK_C_SHLIB=\"$(tc-getCC)\" \ |
771 |
QMAKE_LINK_C_SHLIB = $(tc-getCC)\\ |
730 |
QMAKE_CXX=\"$(tc-getCXX)\" \ |
772 |
QMAKE_CXX = $(tc-getCXX)\\ |
731 |
QMAKE_LINK=\"$(tc-getCXX)\" \ |
773 |
QMAKE_LINK = $(tc-getCXX)\\ |
732 |
QMAKE_LINK_SHLIB=\"$(tc-getCXX)\" \ |
774 |
QMAKE_LINK_SHLIB = $(tc-getCXX)\\ |
733 |
QMAKE_OBJCOPY=\"$(tc-getOBJCOPY)\" \ |
775 |
QMAKE_OBJCOPY = $(tc-getOBJCOPY)\\ |
734 |
QMAKE_RANLIB= \ |
776 |
QMAKE_RANLIB =\\ |
735 |
QMAKE_STRIP=\"$(tc-getSTRIP)\" \ |
777 |
QMAKE_STRIP = $(tc-getSTRIP)\\ |
736 |
QMAKE_CFLAGS=\"${CFLAGS}\" \ |
778 |
QMAKE_CFLAGS = ${CFLAGS}\\ |
737 |
QMAKE_CFLAGS_RELEASE= \ |
779 |
QMAKE_CFLAGS_RELEASE =\\ |
738 |
QMAKE_CFLAGS_DEBUG= \ |
780 |
QMAKE_CFLAGS_DEBUG =\\ |
739 |
QMAKE_CXXFLAGS=\"${CXXFLAGS}\" \ |
781 |
QMAKE_CXXFLAGS = ${CXXFLAGS}\\ |
740 |
QMAKE_CXXFLAGS_RELEASE= \ |
782 |
QMAKE_CXXFLAGS_RELEASE =\\ |
741 |
QMAKE_CXXFLAGS_DEBUG= \ |
783 |
QMAKE_CXXFLAGS_DEBUG =\\ |
742 |
QMAKE_LFLAGS=\"${LDFLAGS}\" \ |
784 |
QMAKE_LFLAGS = ${LDFLAGS}\\ |
743 |
QMAKE_LFLAGS_RELEASE= \ |
785 |
QMAKE_LFLAGS_RELEASE =\\ |
744 |
QMAKE_LFLAGS_DEBUG= |
786 |
QMAKE_LFLAGS_DEBUG = |
|
|
787 |
EOF |
745 |
} |
788 |
} |
746 |
|
789 |
|
747 |
# @FUNCTION: qt5_qmake |
790 |
# @FUNCTION: qt5_qmake |
Lines 750-758
Link Here
|
750 |
# Helper function that runs qmake in the current target subdir. |
793 |
# Helper function that runs qmake in the current target subdir. |
751 |
# Intended to be called by qt5_foreach_target_subdir(). |
794 |
# Intended to be called by qt5_foreach_target_subdir(). |
752 |
qt5_qmake() { |
795 |
qt5_qmake() { |
|
|
796 |
if [[ ${PWD#${QT5_BUILD_DIR}/} == ${QT5_COMPILE_FOR_HOST_SUBDIR} ]]; then |
797 |
qt5_qmake_host |
798 |
return |
799 |
fi |
800 |
|
753 |
local projectdir=${PWD/#${QT5_BUILD_DIR}/${S}} |
801 |
local projectdir=${PWD/#${QT5_BUILD_DIR}/${S}} |
754 |
local qmakepath= |
802 |
local qmakepath= |
755 |
if [[ ${QT5_MODULE} == qtbase ]]; then |
803 |
if tc-is-cross-compiler; then |
|
|
804 |
qmakepath=/usr/lib/qt5/bin |
805 |
elif [[ ${QT5_MODULE} == qtbase ]]; then |
756 |
qmakepath=${QT5_BUILD_DIR}/bin |
806 |
qmakepath=${QT5_BUILD_DIR}/bin |
757 |
else |
807 |
else |
758 |
qmakepath=${QT5_BINDIR} |
808 |
qmakepath=${QT5_BINDIR} |
Lines 760-765
Link Here
|
760 |
|
810 |
|
761 |
"${qmakepath}"/qmake \ |
811 |
"${qmakepath}"/qmake \ |
762 |
"${projectdir}" \ |
812 |
"${projectdir}" \ |
|
|
813 |
$([[ ${QT5_MODULE} == qtbase ]] && echo -qtconf "${S}"/bin/qt.conf) \ |
763 |
CONFIG+=$(usex debug debug release) \ |
814 |
CONFIG+=$(usex debug debug release) \ |
764 |
CONFIG-=$(usex debug release debug) \ |
815 |
CONFIG-=$(usex debug release debug) \ |
765 |
QMAKE_AR="$(tc-getAR) cqs" \ |
816 |
QMAKE_AR="$(tc-getAR) cqs" \ |
Lines 782-787
Link Here
|
782 |
QMAKE_LFLAGS_RELEASE= \ |
833 |
QMAKE_LFLAGS_RELEASE= \ |
783 |
QMAKE_LFLAGS_DEBUG= \ |
834 |
QMAKE_LFLAGS_DEBUG= \ |
784 |
"${myqmakeargs[@]}" \ |
835 |
"${myqmakeargs[@]}" \ |
|
|
836 |
|| die "qmake failed (${projectdir#${S}/})" |
837 |
} |
838 |
|
839 |
|
840 |
# @FUNCTION: qt5_qmake_host |
841 |
# @INTERNAL |
842 |
# @DESCRIPTION: |
843 |
# Helper function that runs qmake in the current target subdir. |
844 |
# Code is compiled for the host machine. |
845 |
qt5_qmake_host() { |
846 |
local projectdir=${PWD/#${QT5_BUILD_DIR}/${S}} |
847 |
local qmakepath= |
848 |
if tc-is-cross-compiler; then |
849 |
qmakepath=/usr/lib/qt5/bin |
850 |
elif [[ ${QT5_MODULE} == qtbase ]]; then |
851 |
qmakepath=${QT5_BUILD_DIR}/bin |
852 |
else |
853 |
qmakepath=${QT5_BINDIR} |
854 |
fi |
855 |
|
856 |
"${qmakepath}"/qmake \ |
857 |
"${projectdir}" \ |
858 |
CONFIG+=release \ |
859 |
CONFIG-=debug \ |
860 |
QMAKE_AR="$(tc-getBUILD_AR) cqs" \ |
861 |
QMAKE_CC="$(tc-getBUILD_CC)" \ |
862 |
QMAKE_LINK_C="$(tc-getBUILD_CC)" \ |
863 |
QMAKE_LINK_C_SHLIB="$(tc-getBUILD_CC)" \ |
864 |
QMAKE_CXX="$(tc-getBUILD_CXX)" \ |
865 |
QMAKE_LINK="$(tc-getBUILD_CXX)" \ |
866 |
QMAKE_LINK_SHLIB="$(tc-getBUILD_CXX)" \ |
867 |
QMAKE_OBJCOPY="$(tc-getBUILD_OBJCOPY)" \ |
868 |
QMAKE_RANLIB= \ |
869 |
QMAKE_STRIP="$(tc-getBUILD_STRIP)" \ |
870 |
QMAKE_CFLAGS="${BUILD_CFLAGS}" \ |
871 |
QMAKE_CFLAGS_RELEASE= \ |
872 |
QMAKE_CFLAGS_DEBUG= \ |
873 |
QMAKE_CXXFLAGS="${BUILD_CXXFLAGS}" \ |
874 |
QMAKE_CXXFLAGS_RELEASE= \ |
875 |
QMAKE_CXXFLAGS_DEBUG= \ |
876 |
QMAKE_LFLAGS="${BUILD_LDFLAGS}" \ |
877 |
QMAKE_LFLAGS_RELEASE= \ |
878 |
QMAKE_LFLAGS_DEBUG= \ |
879 |
"${myqmakeargs[@]}" \ |
785 |
|| die "qmake failed (${projectdir#${S}/})" |
880 |
|| die "qmake failed (${projectdir#${S}/})" |
786 |
} |
881 |
} |
787 |
|
882 |
|