openbsd-ports/x11/qt5/Makefile

435 lines
13 KiB
Makefile

# $OpenBSD: Makefile,v 1.6 2014/12/11 17:50:03 zhuk Exp $
SHARED_ONLY = Yes
ONLY_FOR_ARCHS = ${GCC4_ARCHS}
IGNORE-html = qdoc segfaults
VERSION = 5.3.2
DISTNAME = qt-everywhere-opensource-src-${VERSION}
COMMENT-main = C++ general-purpose toolkit
COMMENT-examples = examples for Qt5
COMMENT-html = offline HTML documentation for Qt5
COMMENT-mysql = MySQL plugin for Qt5
COMMENT-psql = PostgresSQL plugin for Qt5
COMMENT-sqlite2 = SQLite 2.x plugin for Qt5
COMMENT-tds = TDS plugin for Qt5
PKGNAME-main = qt5-${VERSION}
PKGNAME-examples = qt5-examples-${VERSION}
PKGNAME-html = qt5-html-${VERSION}
PKGNAME-mysql = qt5-mysql-${VERSION}
PKGNAME-psql = qt5-postgresql-${VERSION}
PKGNAME-sqlite2 = qt5-sqlite2-${VERSION}
PKGNAME-tds = qt5-tds-${VERSION}
PKG_ARCH-html = *
SHARED_LIBS = Enginio 0.0
SHARED_LIBS += Qt5Bluetooth 0.0
SHARED_LIBS += Qt5CLucene 0.0
SHARED_LIBS += Qt5Concurrent 0.0
SHARED_LIBS += Qt5Core 0.0
SHARED_LIBS += Qt5DBus 0.0
SHARED_LIBS += Qt5Declarative 0.0
SHARED_LIBS += Qt5Designer 0.0
SHARED_LIBS += Qt5DesignerComponents 0.0
SHARED_LIBS += Qt5Gui 0.0
SHARED_LIBS += Qt5Help 0.0
SHARED_LIBS += Qt5Multimedia 0.0
SHARED_LIBS += Qt5MultimediaQuick_p 0.0
SHARED_LIBS += Qt5MultimediaWidgets 0.0
SHARED_LIBS += Qt5Network 0.0
SHARED_LIBS += Qt5Nfc 0.0
SHARED_LIBS += Qt5OpenGL 0.0
SHARED_LIBS += Qt5Positioning 0.0
SHARED_LIBS += Qt5PrintSupport 0.0
SHARED_LIBS += Qt5Qml 0.0
SHARED_LIBS += Qt5Quick 0.0
SHARED_LIBS += Qt5QuickParticles 0.0
SHARED_LIBS += Qt5QuickTest 0.0
SHARED_LIBS += Qt5QuickWidgets 0.0
SHARED_LIBS += Qt5Script 0.0
SHARED_LIBS += Qt5ScriptTools 0.0
SHARED_LIBS += Qt5Sensors 0.0
SHARED_LIBS += Qt5SerialPort 0.0
SHARED_LIBS += Qt5Sql 0.0
SHARED_LIBS += Qt5Svg 0.0
SHARED_LIBS += Qt5Test 0.0
SHARED_LIBS += Qt5WebKit 0.0
SHARED_LIBS += Qt5WebKitWidgets 0.0
SHARED_LIBS += Qt5WebSockets 0.0
SHARED_LIBS += Qt5Widgets 0.0
SHARED_LIBS += Qt5X11Extras 0.0
SHARED_LIBS += Qt5Xml 0.0
SHARED_LIBS += Qt5XmlPatterns 0.0
#SHARED_LIBS += qgsttools_p 0.0
SHARED_LIBS-examples = fftreal 0.0
SHARED_LIBS-examples += gruesensor 0.0
SHARED_LIBS += ${SHARED_LIBS-examples}
CATEGORIES = x11 devel
HOMEPAGE = http://www.qt-project.org/
MAINTAINER = KDE porting team <openbsd-kde@googlegroups.com>
WANTLIB-main = ${WANTLIB}
WANTLIB-main += EGL GL ICE SM X11 X11-xcb Xcomposite Xcursor Xdamage
WANTLIB-main += Xext Xfixes Xi Xinerama Xrandr Xrender atk-1.0 c cairo
WANTLIB-main += cups dbus-1 fontconfig freetype gdk-x11-2.0 gdk_pixbuf-2.0
WANTLIB-main += gio-2.0 glib-2.0 gmodule-2.0 gobject-2.0 gstapp-1.0
WANTLIB-main += gstaudio-1.0 gstbase-1.0 gstpbutils-1.0 gstreamer-1.0
WANTLIB-main += gstvideo-1.0 gthread-2.0 gtk-x11-2.0 icudata icui18n
WANTLIB-main += icuuc iodbc jasper jpeg m mng openal pango-1.0 pangocairo-1.0
WANTLIB-main += pangoft2-1.0 pcre16 png pthread pulse sqlite3 tiff
WANTLIB-main += webp xcb xcb-glx xcb-icccm xcb-image xcb-keysyms xcb-randr
WANTLIB-main += xcb-render xcb-render-util xcb-shape xcb-shm xcb-sync
WANTLIB-main += xcb-xfixes xcb-xkb xkbcommon xkbcommon-x11 xml2 xslt z
WANTLIB-examples = ${MODGCC4_CPPWANTLIB} GL c m pthread
WANTLIB-examples += Qt5Bluetooth Qt5Concurrent Qt5Core Qt5DBus Qt5Declarative
WANTLIB-examples += Qt5Gui Qt5Help Qt5Multimedia Qt5MultimediaWidgets Qt5Network
WANTLIB-examples += Qt5Nfc Qt5OpenGL Qt5Positioning Qt5PrintSupport Qt5Qml
WANTLIB-examples += Qt5Quick Qt5QuickTest Qt5Script Qt5ScriptTools Qt5Sensors
WANTLIB-examples += Qt5Sql Qt5Svg Qt5Test Qt5WebKit Qt5WebKitWidgets Qt5Widgets
WANTLIB-examples += Qt5Xml Qt5XmlPatterns
WANTLIB-html =
WANTLIB-mysql = ${MODGCC4_CPPWANTLIB} Qt5Core Qt5Sql
WANTLIB-mysql += crypto m pthread mysqlclient_r ssl z
WANTLIB-psql = ${MODGCC4_CPPWANTLIB} Qt5Core Qt5Sql
WANTLIB-psql += m pthread pq
WANTLIB-sqlite2 = ${MODGCC4_CPPWANTLIB} Qt5Core Qt5Sql
WANTLIB-sqlite2 += m pthread sqlite
WANTLIB-tds = ${MODGCC4_CPPWANTLIB} Qt5Core Qt5Sql
WANTLIB-tds += m pthread sybdb
# Mostly LGPLv2.1 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.
PERMIT_PACKAGE_CDROM = Yes
MULTI_PACKAGES = -main -examples -html -mysql -psql -sqlite2 -tds
MASTER_SITES = http://master.qt-project.org/archive/qt/${VERSION:R}/${VERSION}/single/
MODULES = gcc4 devel/gettext perl lang/python lang/ruby
MODGCC4_LANGS = c++
MODGCC4_ARCHS = *
MODPY_RUNDEP = No
MODRUBY_RUNDEP = No
# no leveldb dependency, requires -lmemenv; QtWebKit uses internal version
LIB_DEPENDS-main = ${LIB_DEPENDS} \
audio/openal \
audio/pulseaudio \
databases/iodbc \
devel/atk \
devel/pango \
graphics/cairo \
graphics/gdk-pixbuf2 \
graphics/jasper \
graphics/libmng \
graphics/libwebp \
multimedia/gstreamer1/core \
multimedia/gstreamer1/plugins-base \
print/cups,-libs \
textproc/icu4c \
textproc/libxslt \
x11/gtk+2 \
x11/xkbcommon
LIB_DEPENDS-examples = ${BUILD_PKGPATH},-main \
${MODGCC4_CPPLIBDEP}
LIB_DEPENDS-html =
LIB_DEPENDS-mysql = ${BUILD_PKGPATH},-main \
${MODGCC4_CPPLIBDEP} \
databases/mariadb
LIB_DEPENDS-psql = ${BUILD_PKGPATH},-main \
${MODGCC4_CPPLIBDEP} \
databases/postgresql
LIB_DEPENDS-sqlite2 = ${BUILD_PKGPATH},-main \
${MODGCC4_CPPLIBDEP} \
databases/sqlite
LIB_DEPENDS-tds = ${BUILD_PKGPATH},-main \
${MODGCC4_CPPLIBDEP} \
databases/freetds
# QtWebKit & Co. requirements
BUILD_DEPENDS = devel/flex \
devel/bison
RUN_DEPENDS-main =
RUN_DEPENDS-examples =
RUN_DEPENDS-html =
RUN_DEPENDS-mysql =
RUN_DEPENDS-psql =
RUN_DEPENDS-sqlite2 =
RUN_DEPENDS-tds =
# Not used in Qt itself (implementation considered unstable),
# but used in QtWebKit.
BUILD_DEPENDS += devel/gperf \
devel/harfbuzz \
devel/libsoup
RUN_DEPENDS-main += devel/gperf \
devel/harfbuzz \
devel/libsoup
DESTDIRNAME = INSTALL_ROOT
MAKE_ENV = LD_LIBRARY_PATH=${WRKBUILD}/qtbase/lib \
PYTHON=${MODPY_BIN} \
RUBY=${RUBY} \
REAL_BUILD_ROOT=${WRKBUILD} \
OPENBSD_CPPFLAGS="-isystem ${WRKDIR}/gcc-include"
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
WRKBUILD = ${WRKSRC}/build
CONFIGURE_STYLE = simple
FLAVORS = debug
PSEUDO_FLAVORS = no_examples no_html no_tests
FLAVOR ?=
# 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
# generic args
CONFIGURE_ARGS = -confirm-license \
-opensource \
-rpath \
-shared \
-verbose
.if ${FLAVOR:Mdebug}
CONFIGURE_ARGS += -debug
.else
CONFIGURE_ARGS += -release
.endif
# paths
CONFIGURE_ARGS += -sysconfdir ${SYSCONFDIR} \
-prefix ${QT_BASEDIR} \
-plugindir ${QT_PLUGINSDIR} \
-libdir ${QT_BASEDIR} \
-headerdir ${QT_INCDIR} \
-examplesdir ${QT_EXAMPLES} \
-docdir ${QT_DOC} \
-datadir ${QT_BASEDIR} \
-bindir ${QT_BINDIR} \
-R${X11BASE}/lib \
-L${X11BASE}/lib
# other options
CONFIGURE_ARGS += -c++11 \
-no-alsa \
-no-journald \
-no-mtdev \
-opengl desktop \
-system-sqlite \
-system-xcb \
CONFIGURE_ENV = MAKE=make \
MAKEFLAGS="-j ${MAKE_JOBS}" \
EXTRA_CPPFLAGS="-DLOCALBASE=\\\"${LOCALBASE}\\\" -DX11BASE=\\\"${X11BASE}\\\""
.include <bsd.port.arch.mk>
# 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
.if ${BUILD_PACKAGES:M-html}
ALL_TARGET += docs
.endif
.if !${BUILD_PACKAGES:M-examples}
CONFIGURE_ARGS += -nomake examples
.endif
.if ${FLAVOR:Mno_tests}
NO_TEST = Yes
CONFIGURE_ARGS += -nomake tests
.endif
PROGRAMS5 = assistant designer linguist lrelease lupdate moc pixeltool \
qdbus qdoc qmake qml qtdiag rcc uic
# still need to check if those should get it into ${PREFIX}/bin
PROGRAMS_IGN = lconvert \
qcollectiongenerator \
qdbuscpp2xml \
qdbusviewer \
qdbusxml2cpp \
qdoc \
qhelpconverter \
qhelpgenerator \
qlalr \
qml \
qml1plugindump \
qmlbundle \
qmlimportscanner \
qmlmin \
qmlplugindump \
qmlprofiler \
qmlscene \
qmltestrunner \
qmlviewer \
qtdiag \
qtpaths \
syncqt.pl \
xmlpatterns \
xmlpatternsvalidator
# See qtbase/tests/README for details
TEST_IS_INTERACTIVE = X11
TEST_TARGET = check
TEST_DEPENDS = ${MODPY_RUN_DEPENDS} \
${MODRUBY_RUN_DEPENDS} \
audio/sox \
kde4-minimal-*|kdebase-*:meta/kde4,-minimal
PATCHORIG = .ports.orig
SUBST_VARS = VERSION
post-extract:
.if ${FLAVOR:Mno_examples}
rm -f ${WRKDIST}/qtbase/examples/examples.pro
.endif
.if ${FLAVOR:Mno_tests}
rm -f ${WRKDIST}/qtbase/tests/tests.pro
.endif
post-configure:
# Fake qdoc configuration to make sure no Makefile will
# try to use /usr/local/lib/qt5/bin/qdoc instead of
# ${WRKBUILD}/qtbase/bin/qdoc.
mkdir -p ${WRKBUILD}/qtbase/mkspecs/modules
( echo "QT_TOOL.qdoc.binary = ${WRKBUILD}/qtbase/bin/qdoc"; \
echo "QT_TOOL.qdoc.depends = core xml") \
>>${WRKBUILD}/qtbase/mkspecs/modules/qt_tool_qdoc.pri
post-install:
# programs
.for p in ${PROGRAMS5}
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
.for l v in ${SHARED_LIBS-examples}
cd ${PREFIX}/lib; \
f=qt5/examples/*/*/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 "mv -- $$f ${PREFIX}/lib/pkgconfig"; \
mv -- "$$f" ${PREFIX}/lib/pkgconfig; \
done; \
fi
# CMake files get values from QMake config "as is"
find ${QT_CMAKEDIR} -type f -print0 | xargs -0 perl -pi \
-e 's,\$$\(LOCALBASE\),${LOCALBASE},g;' \
-e 's,\$$\(X11BASE\),${X11BASE},g;'
# remove unpatched files
find ${QT_BASEDIR}/mkspecs -name '*${PATCHORIG}' | xargs rm
# often-used includes directory
cd ${PREFIX}/lib/qt5 && ln -sf ../../include/X11/qt5 include
pre-configure:
# Python and Ruby are used for building mainly, those paths
# do not get into final packages.
ln -sf ${MODPY_BIN} ${WRKDIR}/bin/python
ln -sf ${RUBY} ${WRKDIR}/bin/ruby
cd ${WRKSRC}; ${MODPY_BIN_ADJ} \
`find . -name '*.py'` \
`egrep -Rl '(env |bin/)python' qtwebkit/Tools` \
qtscript/src/3rdparty/javascriptcore/JavaScriptCore/wscript \
qtwebkit/Source/WebCore/inspector/generate-inspector-protocol-version \
qtwebkit/Source/WebCore/html/parser/create-html-entity-table
cd ${WRKSRC}; ${MODRUBY_RUBY_ADJ} \
`find qtwebkit -name '*.rb'` \
qtwebkit/Tools/Scripts/check-for-webkit-framework-include-consistency \
qtwebkit/Tools/Scripts/display-profiler-output \
qtwebkit/Tools/Scripts/check-for-inappropriate-macros-in-external-headers \
qtwebkit/Tools/Scripts/roll-over-ChangeLogs \
qtwebkit/Tools/Scripts/check-for-inappropriate-files-in-framework \
qtwebkit/Tools/Scripts/test-webkitruby \
qtwebkit/Tools/Scripts/clean-header-guards \
qtwebkit/Tools/Scripts/bencher \
qtwebkit/Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/make-export-file-generator \
qtwebkit/Source/WebCore/make-export-file-generator \
qtwebkit/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/build-LLIntDesiredOffsets.sh \
qtwebkit/Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntAssembly/build-LLIntAssembly.sh
cd ${WRKSRC}; perl -pi.otheradj \
-e 's,/usr/bin/(env )?python\b,${MODPY_BIN},g;' \
-e 's,/usr/bin/(env )?ruby\b,${RUBY},g;' \
-e 's,(/usr)?/bin/(env )?bash\b,/bin/ksh,g;' \
qtdeclarative/tests/auto/qml/runall.sh \
qtmultimedia/tests/auto/unit/qwavedecoder/data/gendata.sh \
qtscript/util/mkdist-javascriptcore \
qtwebkit/Tools/BuildSlaveSupport/gtk/pulseaudio/run \
qtwebkit/Tools/Scripts/old-run-webkit-tests \
qtwebkit/Tools/Scripts/run-webkit-websocketserver \
qtwebkit/Tools/Scripts/webkitpy/common/system/executive_unittest.py \
qtxmlpatterns/src/xmlpatterns/parser/createParser.sh \
qtgraphicaleffects/tools/pngdumper/pngdumper.sh
cd ${WRKSRC}; perl -pi.symname \
-e 's/^__/_/;' \
qtscript/src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.order \
qtwebkit/Source/JavaScriptCore/JavaScriptCore.order
cd ${WRKSRC}/qtwebkit/Tools/qmake/config.tests; perl -pi.objdir \
-e 's/^OBJECTS_DIR/#$$&/;' \
*/*.pro
@gccbasedir=`echo ${LOCALBASE}/lib/gcc/*-openbsd${OSREV}/${MODGCC4_VERSION}.*`; \
cd ${WRKSRC}/qtwebkit/Source/WebCore; \
for f in $$gccbasedir/include/*; do \
echo ln -sf $$f >&2; \
ln -sf $$f; \
done;
.include <bsd.port.mk>