openbsd-ports/x11/qt5/Makefile.inc
2017-04-19 11:16:03 +00:00

289 lines
9.2 KiB
Makefile

# $OpenBSD: Makefile.inc,v 1.5 2017/04/19 11:16:03 sthen Exp $
ONLY_FOR_ARCHS = ${GCC4_ARCHS} ${CLANG_ARCHS}
BROKEN-powerpc = never built - gcc ICE
.include "Makefile.version"
# DIST_VERSION should be defined when patch distfile gets issued,
# e.g.: qtbase-opensource-src-5.5.1-1.tar.gz
VERSION ?= ${QT5_VERSION}
DIST_VERSION ?= ${QT5_DIST_VERSION}
NEXT_VERSION ?= ${QT5_NEXT_VERSION}
DISTNAME ?= ${QT5NAME:L}-opensource-src-${VERSION}
# hope it won't be forgotten on the next port update
REVISION-examples = 0
PKGNAME ?= ${DISTNAME:C/-opensource-src//:C/-${DIST_VERSION}/-${VERSION}/}
PKGNAME-main ?= ${PKGNAME}
PKGNAME-examples ?= ${PKGNAME:C/(-[0-9])/-examples\1/}
PKGNAME-docindex ?= ${PKGNAME:C/(-[0-9])/-docindex\1/}
PKGNAME-html ?= ${PKGNAME:C/(-[0-9])/-html\1/}
PKGNAME-qch ?= ${PKGNAME:C/(-[0-9])/-qch\1/}
COMMENT-examples ?= ${QT5NAME} development examples
COMMENT-docindex ?= documentation index for ${QT5NAME}
COMMENT-html ?= HTML documentation for ${QT5NAME}
COMMENT-qch ?= qdoc-compiled documentation for ${QT5NAME}
PKG_ARCH-examples = *
PKG_ARCH-docindex = *
PKG_ARCH-html = *
PKG_ARCH-qch = *
DPB_PROPERTIES += nojunk
CATEGORIES += x11 x11/qt5 devel
HOMEPAGE ?= http://www.qt-project.org/
MAINTAINER ?= KDE porting team <openbsd-kde@googlegroups.com>
# We don't build examples, but provide sources only.
WANTLIB-examples ?=
LIB_DEPENDS-examples ?=
RUN_DEPENDS-examples ?= ${RUN_DEPENDS}
RUN_DEPENDS-examples += ${BUILD_PKGPATH},-main>=${VERSION:R},<${NEXT_VERSION}
WANTLIB-docindex =
LIB_DEPENDS-docindex =
RUN_DEPENDS-docindex += x11/qt5/qtbase,-global>=${QT5_VERSION},<${QT5_NEXT_VERSION}
WANTLIB-html =
LIB_DEPENDS-html =
RUN_DEPENDS-html += ${BUILD_PKGPATH},-docindex=${VERSION}
WANTLIB-qch =
LIB_DEPENDS-qch =
RUN_DEPENDS-qch += ${BUILD_PKGPATH},-docindex=${VERSION}
# Mostly LGPLv2.1 or LGPLv3 for code; FDLv1.3 for documentation.
# Some third-party parts are BSD-licensed.
# Also, many parts have are dual-licensed having either commercial, GPL,
# Apache 2.0 or other type of license as an alternative option.
# A few components, including QtWebEngine, are LGPLv3 only, no LGPLv2.1.
PERMIT_PACKAGE_CDROM ?= Yes
MASTER_SITES ?= http://download.qt.io/official_releases/qt/${QT5_DIST_VERSION:R}/${QT5_DIST_VERSION}/submodules/
DIST_SUBDIR ?= qt
CONFIGURE_STYLE ?= qmake
MODULES += devel/qmake x11/qt5
DESTDIRNAME = INSTALL_ROOT
MAKE_ENV += REAL_BUILD_ROOT=${WRKBUILD}
MAKE_FLAGS = -B -j ${MAKE_JOBS} \
PYTHON=${MODPY_BIN} \
RUBY=${RUBY}
.for _l _v in ${SHARED_LIBS}
MAKE_FLAGS += LIB${_l}_VERSION=${_v}
.endfor
# qmake supports so-called "shadow" builds: it's like normal
# out-of-source build but build directory is required to be located
# under source root.
SEPARATE_BUILD ?= Yes
.if ${SEPARATE_BUILD:L} == "yes"
WRKBUILD = ${WRKSRC}/build-${ARCH}
.endif
# readability macros
QT_BASEDIR = ${PREFIX}/lib/qt5
QT_INCDIR = ${PREFIX}/include/X11/qt5
QT_EXAMPLES = ${QT_BASEDIR}/examples
QT_DOC = ${PREFIX}/share/doc/qt5
QT_PLUGINSDIR = ${QT_BASEDIR}/plugins
QT_BINDIR = ${QT_BASEDIR}/bin
QT_PKGCFGDIR = ${QT_BASEDIR}/pkgconfig
QT_CMAKEDIR = ${QT_BASEDIR}/cmake
CONFIGURE_ENV += MAKE=make \
MAKEFLAGS="-j ${MAKE_JOBS}" \
EXTRA_CPPFLAGS="-DLOCALBASE=\\\"${LOCALBASE}\\\" -DX11BASE=\\\"${X11BASE}\\\""
.if ${MACHINE_ARCH} == "powerpc"
CONFIGURE_ENV += LDFLAGS="-Wl,--relax"
.endif
# QtWebkit (at least, maybe others) plays dirty games with inter-target
# dependencies, so we'd better use the target qmake always creates
# first, named "first".
ALL_TARGET ?= first
FAKE_TARGET ?= install
TEST_TARGET ?= check
.include <bsd.port.arch.mk>
FLAVOR ?=
.if ${BUILD_PACKAGES:M-html}
QT5_DOC_DEPS =
. for _d in ${LIB_DEPENDS:Mx11/qt5/*} ${BUILD_DEPENDS:Mx11/qt5/*}
QT5_DOC_DEPS := ${QT5_DOC_DEPS} ${_d:C/(,.*)?(>=.*)?$/,,-docindex=${QT5_VERSION}/}
. endfor
BUILD_DEPENDS += ${QT5_DOC_DEPS:C/qtbase,,-docindex/qtbase-docs,-docindex/:C/qtenginio,,-docindex=.*/qtenginio,-docindex=${ENGINIO_VERSION}/}
# x11/qt5/qtbase is added after Makefile.inc is processed
. if !${PKGPATH:Mx11/qt5/qtbase-docs*}
BUILD_DEPENDS += x11/qt5/qtbase-docs,-docindex=${QT5_VERSION}
. endif
BUILD_DEPENDS += x11/qt5/qtbase,-global=${QT5_VERSION}
.endif
# N.B.: .qch files are built using .qhp ones, generated by qdoc in html_docs
.if ${FLAVOR:Mno_html} && ${BUILD_PACKAGES:M-qch}
ERRORS += "Building -qch subpackage requires building -html one."
.endif
.if ${BUILD_PACKAGES:M-html}
ALL_TARGET += html_docs
FAKE_TARGET += install_html_docs
.else
# XXX
BUILD_PACKAGES := ${BUILD_PACKAGES:N-docindex}
.endif
.if ${BUILD_PACKAGES:M-qch}
ALL_TARGET += qch_docs
FAKE_TARGET += install_qch_docs
.endif
.if ${CONFIGURE_STYLE:Mqmake}
. if !${BUILD_PACKAGES:M-examples}
MODQMAKE_ARGS += CONFIG-=examples
. endif
.endif
NO_TEST ?= No
.if ${FLAVOR:Mno_tests}
NO_TEST = Yes
.endif
SUBST_VARS += VERSION
WRKDIST ?= ${WRKDIR}/${DISTNAME:C/${DIST_VERSION}/${VERSION}/}
PROGRAMS5 = assistant designer linguist lrelease lupdate moc pixeltool \
qcollectiongenerator qdbus qdoc qmake qml qtdiag rcc uic
.if ${CONFIGURE_STYLE:Mqmake}
.PHONY: qt5-post-extract
post-extract: qt5-post-extract
qt5-post-extract:
# Avoid building examples, we'll simply package sources;
# qt_parts qmake feature checks presence of this file exactly.
rm -f ${WRKDIST}/examples/examples.pro
. if ${NO_TEST:L} == "yes"
rm -f ${WRKDIST}/tests/tests.pro
. endif
.endif
.PHONY: qt5-post-install
post-install: qt5-post-install
qt5-post-install:
# public programs
.for p in ${PROGRAMS5}
! test -e ${PREFIX}/lib/qt5/bin/$p || \
ln -sf ../lib/qt5/bin/$p ${PREFIX}/bin/$p-qt5
.endfor
# shared libraries
.for l v in ${SHARED_LIBS}
cd ${PREFIX}/lib; \
f=qt5/lib$l.so.$v; \
! test -f $$f || ln -sf $$f .
.endfor
# pkg-config files
@if [ -d ${QT_PKGCFGDIR} ]; then \
for f in ${QT_PKGCFGDIR}/*; do \
echo $${f##*/}; \
perl -p -e 's@ -L$${WRKBUILD}\S+@@g;' \
-e 's@ -Wl,-whole-archive.*@@;' \
$$f >${PREFIX}/lib/pkgconfig/$${f##*/}; \
done; \
fi
# CMake files get values from QMake config "as is"
find ${QT_CMAKEDIR} -type f -print0 | xargs -0r perl -pi \
-e 's,\$$\(LOCALBASE\),${LOCALBASE},g;' \
-e 's,\$$\(X11BASE\),${X11BASE},g;'
# remove unpatched files
find ${QT_BASEDIR}/mkspecs -name '*${PATCHORIG}' | xargs -r rm
.if ${CONFIGURE_STYLE:Mqmake} && ${BUILD_PACKAGES:M-examples}
# install examples sources
${INSTALL_DATA_DIR} ${PREFIX}/lib/qt5/examples
cd ${WRKSRC}/examples; \
pax -rw */ ${PREFIX}/lib/qt5/examples
.endif
#
# Helper targets, used during port development.
#
.PHONY: gen_pkg gen_pkg_plist gen_pkg_descr
gen_pkg: gen_pkg_plist gen_pkg_descr
# Generates DESCR-* from DESCR-main.
QT5_DESCR_SRC ?= -main
QT5_DESCR_SRC := ${PKGDIR}/DESCR${QT5_DESCR_SRC}
gen_pkg_descr:
test -e ${QT5_DESCR_SRC}
.if ${MULTI_PACKAGES:M-examples}
test X"${QT5_DESCR_SRC}" = X"${PKGDIR}/DESCR-examples" || \
sed '$$s/.*/This package contains sources for ${QT5NAME} usage examples./' \
<${QT5_DESCR_SRC} >${PKGDIR}/DESCR-examples
.endif
.if ${MULTI_PACKAGES:M-docindex}
test X"${QT5_DESCR_SRC}" = X"${PKGDIR}/DESCR-docindex" || \
sed '$$s/.*/This package contains ${QT5NAME} documentation index./' \
<${QT5_DESCR_SRC} >${PKGDIR}/DESCR-docindex
.endif
.if ${MULTI_PACKAGES:M-qch}
test X"${QT5_DESCR_SRC}" = X"${PKGDIR}/DESCR-qch" || \
sed '$$s/.*/This package contains compiled ${QT5NAME} documentation./' \
<${QT5_DESCR_SRC} >${PKGDIR}/DESCR-qch
.endif
.if ${MULTI_PACKAGES:M-html}
test X"${QT5_DESCR_SRC}" = X"${PKGDIR}/DESCR-html" || \
sed '$$s/.*/This package contains ${QT5NAME} HTML documentation./' \
<${QT5_DESCR_SRC} >${PKGDIR}/DESCR-html
.endif
# Generates PLIST-* from PLIST-main.
# Don't forget to run "rm pkg/PLIST-*; make plist" before this.
# Note that -qch and -docindex should be handled before -html here.
gen_pkg_plist:
test -e ${PKGDIR}/PLIST-main
.if ${BUILD_PACKAGES:M-examples}
echo -n '@comment $$Open' >${PKGDIR}/PLIST-examples
echo 'BSD$$' >>${PKGDIR}/PLIST-examples
egrep '^(@.* )?lib/qt5/examples/' ${PKGDIR}/PLIST-main >>${PKGDIR}/PLIST-examples
sed -Ei '\,^(@.* )?lib/qt5/examples/,d' ${PKGDIR}/PLIST-main
.endif
.if ${BUILD_PACKAGES:M-docindex}
echo -n '@comment $$Open' >${PKGDIR}/PLIST-docindex
echo 'BSD$$' >>${PKGDIR}/PLIST-docindex
egrep '^(@.* )?share/doc/qt5/[^/]+/([^/]+\.index)?$$' ${PKGDIR}/PLIST-main >>${PKGDIR}/PLIST-docindex
sed -Ei '\,^(@.* )?share/doc/qt5/[^/]+/([^/]+\.index)?$$,d' ${PKGDIR}/PLIST-main
.endif
.if ${BUILD_PACKAGES:M-qch}
echo -n '@comment $$Open' >${PKGDIR}/PLIST-qch
echo 'BSD$$' >>${PKGDIR}/PLIST-qch
egrep '^(@.* )?share/doc/qt5/[^/]+\.qch$$' ${PKGDIR}/PLIST-main >>${PKGDIR}/PLIST-qch
sed -Ei '\,^(@.* )?share/doc/qt5/.*\.qch,d' ${PKGDIR}/PLIST-main
.endif
.if ${BUILD_PACKAGES:M-html}
echo '@comment $$OpenBSD: Makefile.inc,v 1.5 2017/04/19 11:16:03 sthen Exp $$' >${PKGDIR}/PLIST-html
egrep '^(@.* )?share/doc/qt5/' ${PKGDIR}/PLIST-main >>${PKGDIR}/PLIST-html
sed -Ei '\,^(@.* )?share/doc/qt5/,d' ${PKGDIR}/PLIST-main
.endif
gen_docindex:
test -e ${PKGDIR}/PLIST-html
.if ${BUILD_PACKAGES:M-docindex}
echo -n '@comment $$Open' >${PKGDIR}/PLIST-docindex
echo 'BSD$$' >>${PKGDIR}/PLIST-docindex
egrep '^(@.* )?share/doc/qt5/[^/]+/([^/]+\.index)?$$' ${PKGDIR}/PLIST-html >>${PKGDIR}/PLIST-docindex
sed -Ei '\,^(@.* )?share/doc/qt5/[^/]+/([^/]+\.index)?$$,d' ${PKGDIR}/PLIST-html
.endif