freebsd-ports/Mk/Uses/xorg-cat.mk
Niclas Zeising aedfc9fa1a xorg ports: Add -Werror=uninitialized to CFLAGS
Add -Werror=uninitialized to CFLAGS for ports specifying
xorg-cat:[driver,lib,xserver].  There has been cases in the past when use of
uninitialized variables have caused crashes, so add this as an error to
detect it early.
2020-02-20 21:41:02 +00:00

194 lines
5.4 KiB
Makefile

# $FreeBSD$
#
# xorg ports categories and other things needed to build xorg ports.
# This is intended only for ports of xorg and freedesktop.org applications.
#
# Use USES=xorg and USE_XORG to depend on various xorg components.
#
# Feature: xorg-cat
# Usage: USES=xorg-cat:category[,buildsystem]
#
# category is one of:
# * app Installs applications, no shared libraries.
# * data Installs only data.
# * doc no particular notes
# * driver depends on xorgproto at least
# * font don't install .pc file
# * lib various dependencies, install .pc file, needs
# pathfix
# * proto install .pc file, needs pathfix, most only needed at
# build time.
# * util no particular notes
# * xserver xorg x servers
#
# These categories has to match upstream categories. Don't invent
# your own.
#
# builsystem is one of:
# * autotools (default)
# * meson (experimental)
#
#
# By defining USE_GITLAB and GL_COMMIT, it is possible to pull code straight
# from the freedesktop.org gitlab, instead of official release tarballs.
#
#.MAINTAINER: x11@FreeBSD.org
.if !defined(_INCLUDE_USES_XORG_CAT_MK)
_INCLUDE_USES_XORG_CAT_MK=yes
_XORG_CATEGORIES= app data doc driver font lib proto util xserver
_XORG_BUILDSYSTEMS= autotools meson
_XORG_CAT= # empty
_XORG_BUILDSYS= # empty
. if empty(xorg-cat_ARGS)
IGNORE= no arguments specified to xorg-cat
. endif
. for _arg in ${xorg-cat_ARGS}
. if ${_XORG_CATEGORIES:M${_arg}}
. if empty(_XORG_CAT)
_XORG_CAT= ${_arg}
. else
IGNORE= multipe xorg categories specified via xorg-cat:${xorg-cat_ARGS:ts,}
. endif
. elif ${_XORG_BUILDSYSTEMS:M${_arg}}
. if empty(_XORG_BUILDSYS)
_XORG_BUILDSYS= ${_arg}
. else
IGNORE= multipe xorg build systems specified via xorg-cat:${xorg-cat_ARGS:ts,}
. endif
. else
IGNORE= unknown argument specified via xorg-cat:${xorg-cat_ARGS:ts,}
. endif
. endfor
# Default to the autotools build system
. if empty(_XORG_BUILDSYS)
_XORG_BUILDSYS= autotools
. endif
# Default variables, common to all new modular xorg ports.
. if empty(USES:Mtar)
EXTRACT_SUFX?= .tar.bz2
. endif
DIST_SUBDIR= xorg/${_XORG_CAT}
. if ${_XORG_BUILDSYS} == meson
IGNORE= meson build not supported yet
.include "${USESDIR}/meson.mk"
. elif ${_XORG_BUILDSYS} == autotools
GNU_CONFIGURE= yes
. else
# This should not happen
IGNORE= unknown build system specified via xorg-cat:${xorg-cat_ARGS:ts,}
. endif
. if defined(USE_GITLAB)
# Set up things for fetching from freedesktop.org gitlab.
# This can be overridden using normal GL_* macros in the ports Makefile.
# We make a best guess for GL_ACCOUNT and GL_PROJECT.
GL_SITE?= https://gitlab.freedesktop.org/xorg
GL_ACCOUNT?= ${_XORG_CAT}
GL_PROJECT?= ${PORTNAME:tl}
. if ${_XORG_BUILDSYS} == meson
# set up meson stuff here
. else
# Things from GL doesn't come with pre-generated configure, add dependency on
# autoreconf and run it, if we're using autotools.
.include "${USESDIR}/autoreconf.mk"
. endif
. else
MASTER_SITES?= XORG/individual/${_XORG_CAT}
. endif
#
## All xorg ports needs pkgconfig to build, but some ports look for pkgconfig
## and then continues the build.
.include "${USESDIR}/pkgconfig.mk"
#
## All xorg ports needs xorg-macros.
. if ${PORTNAME} != xorg-macros
USE_XORG+= xorg-macros
. endif
. if ${_XORG_CAT} == app
# Nothing at the moment
. elif ${_XORG_CAT} == data
# Nothing at the moment.
. elif ${_XORG_CAT} == driver
USE_XORG+= xi xorg-server xorgproto
CFLAGS+= -Werror=uninitialized
. if ${_XORG_BUILDSYS} == meson
# Put special stuff for meson here
. else
CONFIGURE_ENV+= DRIVER_MAN_SUFFIX=4x DRIVER_MAN_DIR='$$(mandir)/man4'
libtool_ARGS?= # empty
.include "${USESDIR}/libtool.mk"
INSTALL_TARGET= install-strip
. endif
. elif ${_XORG_CAT} == font
FONTNAME?= ${PORTNAME:C/.*-//g:S/type/Type/:S/ttf/TTF/:S/speedo/Speedo/}
. if ${_XORG_BUILDSYS} == meson
# Put special stuff for meson here
. else
CONFIGURE_ARGS+= --with-fontrootdir=${PREFIX}/share/fonts
CONFIGURE_ENV+= FONTROOTDIR=${PREFIX}/share/fonts
. endif
. if !defined(NOFONT)
.include "${USESDIR}/fonts.mk"
BUILD_DEPENDS+= mkfontscale>=0:x11-fonts/mkfontscale \
bdftopcf:x11-fonts/bdftopcf
PLIST_FILES+= "@comment ${FONTSDIR}/fonts.dir" \
"@comment ${FONTSDIR}/fonts.scale"
. endif
. elif ${_XORG_CAT} == lib
CFLAGS+= -Werror=uninitialized
.include "${USESDIR}/pathfix.mk"
. if ${_XORG_BUILDSYS} == meson
# put meson stuff here
. else
libtool_ARGS?= # empty
.include "${USESDIR}/libtool.mk"
USE_LDCONFIG= yes
CONFIGURE_ARGS+=--enable-malloc0returnsnull
. endif
. elif ${_XORG_CAT} == proto
.include "${USESDIR}/pathfix.mk"
. elif ${_XORG_CAT} == xserver
DISTNAME?= xorg-server-${PORTVERSION}
CFLAGS+= -Werror=uninitialized
.include "${USESDIR}/pathfix.mk"
. if ${_XORG_BUILDSYS} == meson
# put meson stuff here
. else
CONFIGURE_ARGS+= --with-xkb-path=${LOCALBASE}/share/X11/xkb \
--with-fontrootdir=${LOCALBASE}/share/fonts
libtool_ARGS?= # empty
.include "${USESDIR}/libtool.mk"
. endif
LIB_PC_DEPENDS+= ${LOCALBASE}/libdata/pkgconfig/dri.pc:graphics/mesa-dri
USE_XORG+= fontutil
. endif # ${_XORG_CAT} == <category>
# We only need to include xorg.mk if we want USE_XORG modules
# USES+=xorg does not provide any functionality, it just silences an error
# message about USES=xorg not being set
. if defined(USE_XORG) && !empty(USE_XORG)
USES+= xorg
.include "${USESDIR}/xorg.mk"
. endif
.endif