Makefile.inc revision 919
0N/A# -*- Makefile -*- rules commonly shared among X consolidation open source dirs 906N/A# Copyright 2010 Sun Microsystems, Inc. All rights reserved. 810N/A# Use is subject to license terms. 0N/A# Permission is hereby granted, free of charge, to any person obtaining a 919N/A# copy of this software and associated documentation files (the "Software"), 919N/A# to deal in the Software without restriction, including without limitation 919N/A# the rights to use, copy, modify, merge, publish, distribute, sublicense, 919N/A# and/or sell copies of the Software, and to permit persons to whom the 919N/A# Software is furnished to do so, subject to the following conditions: 919N/A# The above copyright notice and this permission notice (including the next 919N/A# paragraph) shall be included in all copies or substantial portions of the 919N/A# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 919N/A# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 919N/A# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 919N/A# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 919N/A# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 919N/A# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 919N/A# DEALINGS IN THE SOFTWARE. 493N/A# Which compiler to use to build module 493N/AMODTYPE_COMPILER_DEFAULT = $(MODTYPE_COMPILER_SET:yes=$(POUND_SIGN)) 493N/A$(MODTYPE_COMPILER_DEFAULT) MODTYPE_COMPILER = $(DEFAULT_COMPILER) 493N/AMODULE_COMPILER_DEFAULT = $(MODULE_COMPILER_SET:yes=$(POUND_SIGN)) 493N/A$(MODULE_COMPILER_DEFAULT) MODULE_COMPILER = $(MODTYPE_COMPILER) 493N/A# Which make to use to build module 493N/AMODTYPE_MAKE_DEFAULT = $(MODTYPE_MAKE_SET:yes=$(POUND_SIGN)) 493N/A$(MODTYPE_MAKE_DEFAULT) MODTYPE_MAKE = $(MAKE) 493N/AMODULE_MAKE_DEFAULT = $(MODULE_MAKE_SET:yes=$(POUND_SIGN)) 493N/A$(MODULE_MAKE_DEFAULT) MODULE_MAKE = $(MODTYPE_MAKE) 493N/A# Where to install files 493N/AMODTYPE_PREFIX_DEFAULT = $(MODTYPE_PREFIX_SET:yes=$(POUND_SIGN)) 851N/A$(MODTYPE_PREFIX_DEFAULT) MODTYPE_PREFIX=$(X11_DIR) 493N/AMODULE_PREFIX_DEFAULT = $(MODULE_PREFIX_SET:yes=$(POUND_SIGN)) 493N/A$(MODULE_PREFIX_DEFAULT) MODULE_PREFIX=$(MODTYPE_PREFIX) 851N/A# Where to install pkgconfig files 851N/AMODTYPE_PKGCONFIG_DIR_DEFAULT = $(MODTYPE_PKGCONFIG_DIR_SET:yes=$(POUND_SIGN)) 851N/A$(MODTYPE_PKGCONFIG_DIR_DEFAULT) MODTYPE_PKGCONFIG_DIR=$(PKGCONFIG_DIR) 851N/AMODULE_PKGCONFIG_DIR_DEFAULT = $(MODULE_PKGCONFIG_DIR_SET:yes=$(POUND_SIGN)) 851N/A$(MODULE_PKGCONFIG_DIR_DEFAULT) MODULE_PKGCONFIG_DIR=$(MODTYPE_PKGCONFIG_DIR) 493N/A# Directory created by unpacking source, if not set in module makefile 493N/ASOURCE_DIRNAME_DEFAULT = $(SOURCE_DIRNAME_SET:yes=$(POUND_SIGN)) 493N/A$(SOURCE_DIRNAME_DEFAULT) SOURCE_DIRNAME=$(MODULE_NAME)-$(MODULE_VERSION) 493N/ASOURCE_DIR = $(BUILD_DIR)/$(SOURCE_DIRNAME) 606N/ASOURCE_DIR_32 = $(BUILD_DIR_32)/$(SOURCE_DIRNAME) 606N/ASOURCE_DIR_64 = $(BUILD_DIR_64)/$(SOURCE_DIRNAME) 493N/A# Set default tarball if not set in module makefile 493N/ASOURCE_TARBALL_NAME_DEFAULT = $(SOURCE_TARBALL_NAME_SET:yes=$(POUND_SIGN)) 493N/A$(SOURCE_TARBALL_NAME_DEFAULT) SOURCE_TARBALL_NAME=$(SOURCE_DIRNAME).tar.bz2 493N/A# Tarballs for most modules built here are found in the X.Org archives/repos 493N/A# in a directory with the same name as what we use in our tree 493N/ASOURCE_TARBALL_DIR_DEFAULT = $(SOURCE_TARBALL_DIR_SET:yes=$(POUND_SIGN)) 493N/A$(SOURCE_TARBALL_DIR_DEFAULT) SOURCE_TARBALL_DIR=$(MODTYPE) 493N/A# Set default download location if not set in module makefile 493N/ASOURCE_URL_DEFAULT = $(SOURCE_URL_SET:yes=$(POUND_SIGN)) 493N/A$(SOURCE_URL_DEFAULT) SOURCE_URL=$(XORG_RELEASES_URL)/$(SOURCE_TARBALL_DIR)/$(SOURCE_TARBALL_NAME) 493N/A# Set default git repo location if not set in module makefile 493N/AGIT_URL_DEFAULT = $(GIT_URL_SET:yes=$(POUND_SIGN)) 493N/A$(GIT_URL_DEFAULT) GIT_URL=$(XORG_GIT_URL)/$(SOURCE_TARBALL_DIR)/$(MODULE_NAME).git 0N/ABUILD_DIR_32 = build_32 0N/ABUILD_DIR_64 = build_64 156N/A# Set default build type to 32-bit if not set in module makefile 156N/ABUILD_TYPES_DEFAULT = $(BUILD_TYPES_SET:yes=$(POUND_SIGN)) 156N/A$(BUILD_TYPES_DEFAULT) BUILD_TYPES=32 493N/A# Set default rules if not set in module/modtype Makefile 493N/ASOURCE_TARGETS_DEFAULT = $(SOURCE_TARGETS_SET:yes=$(POUND_SIGN)) 591N/A$(SOURCE_TARGETS_DEFAULT) SOURCE_TARGETS=default_source \ 493N/ACONFIGURE_TARGETS_DEFAULT = $(CONFIGURE_TARGETS_SET:yes=$(POUND_SIGN)) 591N/A$(CONFIGURE_TARGETS_DEFAULT) CONFIGURE_TARGETS=default_configure \ 493N/ABUILD_TARGETS_DEFAULT = $(BUILD_TARGETS_SET:yes=$(POUND_SIGN)) 591N/A$(BUILD_TARGETS_DEFAULT) BUILD_TARGETS=default_build \ 493N/AINSTALL_TARGETS_DEFAULT = $(INSTALL_TARGETS_SET:yes=$(POUND_SIGN)) 591N/A$(INSTALL_TARGETS_DEFAULT) INSTALL_TARGETS=default_install \ 493N/A# Additional flags to pass to make in 32-bit & 64-bit builds 810N/ABUILD_DIR_32_FLAGS= BUILD_DIR=$(BUILD_DIR_32) BUILD_TYPE=32 810N/ABUILD_DIR_64_FLAGS= BUILD_DIR=$(BUILD_DIR_64) BUILD_TYPE=64 \ 810N/ABUILD_32_FLAGS= $(BUILD_DIR_32_FLAGS) ARCH_FLAGS="$(ARCH32_FLAGS)" \ 810N/ABUILD_64_FLAGS= $(BUILD_DIR_64_FLAGS) ARCH_FLAGS="$(ARCH64_FLAGS)" \ 0N/Aall: $(BUILD_TYPES:%=source_%) $(BUILD_TYPES:%=build_%) 493N/Aall_32: source_32 configure_32 build_32 493N/Aall_64: source_64 configure_64 build_64 910N/Aclean: $(BUILD_TYPES:%=clean_%) 822N/A# Tell dmake not to remove and create source in parallel 822N/A.NOPARALLEL: clean source 822N/A.NOPARALLEL: clean_$(BUILD_TYPE) source_$(BUILD_TYPE) 493N/Asource: $(BUILD_TYPES:%=source_%) 910N/Asource_gen: $(SOURCE_TARGETS) 606N/Asource_32: $(SOURCE_DIR_32)/$(UNPACK_FILE) 606N/A$(SOURCE_DIR_32)/$(UNPACK_FILE): 606N/Asource_64: $(SOURCE_DIR_64)/$(UNPACK_FILE) 606N/A$(SOURCE_DIR_64)/$(UNPACK_FILE): 493N/Aconfigure: $(BUILD_TYPES:%=configure_%) 493N/Aconfigure_gen: $(CONFIGURE_TARGETS) 493N/Abuild: $(BUILD_TYPES:%=build_%) 0N/Abuild_gen: $(BUILD_TARGETS) 493N/Ainstall: $(BUILD_TYPES:%=install_%) 910N/Ainstall_gen: $(INSTALL_TARGETS) install_license install_pkgconfig_uninstalled 493N/ADEBUG_BUILD_FLAGS = BUILD_DEBUG=yes 705N/Adebug-build_32: debug_32 705N/Adebug-build_64: debug_64 493N/A### Source tarballs & downloading if necessary 493N/ASOURCE_TARBALL=$(TARBALLDIR)/$(SOURCE_TARBALL_NAME) 911N/A# Allow downloading from local archive/mirror 911N/ATARBALL_ARCHIVE_sun.com = http://xserver.sfbay.sun.com/tarballs 911N/ATARBALL_ARCHIVE_DEFAULT = $(TARBALL_ARCHIVE_SET:yes=$(POUND_SIGN)) 911N/A$(TARBALL_ARCHIVE_DEFAULT) ARCHIVE_DOMAIN = domainname | awk -F. '{printf "%s.%s", $$(NF-1), $$NF}' 911N/A$(TARBALL_ARCHIVE_DEFAULT) TARBALL_ARCHIVE = $(TARBALL_ARCHIVE_$(ARCHIVE_DOMAIN:sh)) 911N/AARCHIVE_URL=$(TARBALL_ARCHIVE)/$(SOURCE_TARBALL_DIR)/$(SOURCE_TARBALL_NAME) 493N/AGIT_CLONE_DIR=$(MODULE_NAME)-$(MODULE_VERSION) 493N/A# Download if SOURCE_TARBALL_NAME is not set to NONE and the file either 493N/A# doesn't exist or is empty 705N/A# If MODULE_VERSION is git, checkout source from git repo instead of 911N/Adownload: $(SOURCE_TARBALL) 911N/A$(SOURCE_TARBALL): $(TARBALLDIR) 493N/A if [[
"$(MODULE_VERSION)" =
"git" ]] ;
then \
493N/A if [[
! -d $(GIT_CLONE_DIR) ]] ; then \ 493N/A if [[
! -z "$(GIT_BRANCH)" ]] ; then \ 493N/A if [[
"$(SOURCE_TARBALL_NAME)" != "NONE" ]] ; then \ 911N/A if [[
! -z "$(TARBALL_ARCHIVE)" ]] ; then \ 911N/Acheck-checksums: $(SOURCE_TARBALL) 911N/A if [[
"$(MODULE_VERSION)" != "git" && \ 911N/A "$(SOURCE_TARBALL_NAME)" != "NONE" ]] ; then \ 911N/A if [[
"$${ACTUAL_MD5}" != "${TARBALL_MD5}" ]] ; then \ 911N/A print -
u2 "ERROR: MD5 sum mismatch on ${SOURCE_TARBALL}\n" \
911N/A "$${ACTUAL_MD5} != ${TARBALL_MD5}" ; \
911N/A if [[
"$${ACTUAL_SHA1}" != "${TARBALL_SHA1}" ]] ; then \ 911N/A print -
u2 "ERROR: SHA1 sum mismatch on ${SOURCE_TARBALL}\n" \
911N/A "$${ACTUAL_SHA1} != ${TARBALL_SHA1}" ; \
911N/A# Submit a tarball to the archive 911N/AARCHIVE_SUBMIT=/ws/x11/tarballs/bin/archive-tarballs 911N/A if [[
"$(MODULE_VERSION)" != "git" && \ 911N/A "$(SOURCE_TARBALL_NAME)" != "NONE" ]] ; then \ 493N/A# Update a git cloned repo 493N/A if [[
"$(MODULE_VERSION)" =
"git" ]] ;
then \
493N/A if [[
! -z "$(GIT_BRANCH)" ]] ; then \ 0N/A### Unpack source and apply patches 90N/A -e
's|-L\$${libdir}|-L\$${libdir} -R\$${libdir}|;' \
851N/A -e
's|Requires.private: .*$$||;' \
354N/A# -e 's|(Requires: .*)\bx11\b|$$1|;' \ 493N/A -a
'{Availability, $(SUN_PACKAGE)}' \
493N/A -a
'{Interface Stability, $(MODULE_STABILITY)}' \
911N/ASOURCE_DEPS = $(SOURCE_TARBALL) $(MODTYPE_SOURCE_DEPS) $(MODULE_SOURCE_DEPS) 911N/Adefault_source: $(SOURCE_DEPS) 493N/A @
if [[
"$(SOURCE_TARBALL_NAME)" != "NONE" ]] ; then \ 493N/A if [[
"$(MODULE_VERSION)" =
"git" ]] ;
then \
493N/A print "$${SOURCE_CMD} | (cd $(BUILD_DIR) ; gtar -xf - )" ; \
493N/A print "mkdir -p $(SOURCE_DIR)" ; \
493N/A if [[
"$(ADDITIONAL_SOURCE_DIR)" != "" ]] ; then \ 493N/A if [[
! -x $(LNDIR) ]] ; then \ 493N/A if [[
"$(SOURCE_PATCHES)" != "" ]] ; then \ 493N/A if [[
"$$p" != "x" ]] ; then \ 493N/A print "$${PATCH_CMD}" ; \
493N/A if [[
"$(SUNTOUCHED_MANPAGES)" != "" ]] ; then \ 493N/A if [[
"$(FIX_PC_FILES)" != "" ]] ; then \ 493N/A### Run configure scripts 191N/A# Include Xorg autoconf macros when rebuilding configure scripts 599N/A# and use automake 1.10 instead of the older 1.9. 599N/A# /opt/jdsbld/share/aclocal is needed to get the nls.m4 from CBEgettext 599N/A# due to: 6785384 SUNWgnu-gettext does not include autoconf m4 files 599N/AACLOCAL_PATH=/usr/bin/aclocal-1.10 599N/AACLOCAL_INCLUDES = -I $(PROTODIR)$(X11_ACLOCAL_DIR) \ 599N/AAUTOMAKE_PATH=/usr/bin/automake-1.10 599N/AAUTORECONF_ENV= ACLOCAL="$(ACLOCAL_PATH) $(ACLOCAL_INCLUDES)" \ 493N/A# Dependencies for running configure to make a Makefile 493N/ACONFIGURE_DEPS = $(UNPACK_TARGET) \ 493N/A# Command line options to GNU autoconf configure script 493N/ADEFAULT_CONFIG_OPTS = --prefix=$(MODULE_PREFIX) \ 493N/ACONFIG_OPTS = $(DEFAULT_CONFIG_OPTS) \ 493N/A# Environment variable options to GNU autoconf configure script 493N/A$(USE_DEFAULT_CONFIG_CPPFLAGS:no=$(POUND_SIGN)) DEFAULT_CONFIG_CPPFLAGS= \ 493N/A$(USE_DEFAULT_CONFIG_LDFLAGS:no=$(POUND_SIGN)) DEFAULT_CONFIG_LDFLAGS= \ 851N/ADEFAULT_PKG_CONFIG_PATH=$(TOP)/common/pc-files/$(BUILD_DIR):$(PROTODIR)$(PKGCONFIG_DIR):$(PROTODIR)$(PKGCONFIG_DIR_SHARE):$(PKGCONFIG_DIR):$(PKGCONFIG_DIR_SHARE) 493N/A# Set USE_DEFAULT_CONFIG_ENV=no in a Makefile to not use this default 493N/A# autoconfig environment 493N/A$(USE_DEFAULT_CONFIG_ENV:no=$(POUND_SIGN)) DEFAULT_CONFIG_ENV = \ 493N/A CPPFLAGS=
"$(DEFAULT_CONFIG_CPPFLAGS) $(MODTYPE_CPPFLAGS) $(MODULE_CPPFLAGS)" \
493N/A LDFLAGS=
"$(DEFAULT_CONFIG_LDFLAGS) $(MODTYPE_CFLAGS) $(MODTYPE_LDFLAGS) $(MODULE_CFLAGS) $(MODULE_LDFLAGS)" \
493N/ACONFIG_ENV = $(DEFAULT_CONFIG_ENV) $(MODTYPE_CONFIG_ENV) $(MODULE_CONFIG_ENV) 493N/A# File created by running configure - defaults to the top-level Makefile 493N/A# in a source directory unless AUTOCONF_TARGET_SET=yes is set 493N/AAUTOCONF_TARGET_DEFAULT = $(AUTOCONF_TARGET_SET:yes=$(POUND_SIGN)) 493N/A$(AUTOCONF_TARGET_DEFAULT) AUTOCONF_TARGET=$(SOURCE_DIR)/Makefile 493N/A$(AUTOCONF_TARGET): $(CONFIGURE_DEPS) 705N/A if [[
"$(AUTORECONF)" =
"yes" ||
"$(MODULE_VERSION)" =
"git" ]] ;
then \
493N/A if [[
"$(DELIBTOOLIZE)" =
"yes" ]] ;
then \
910N/Adefault_configure: $(AUTOCONF_TARGET) 291N/A### Remove libtool from build process when needed 40N/A### Generate mapfiles to limit/version exported symbols in libraries 40N/ASPEC2MAP= /usr/lib/abi/spec2map 40N/ASPECMAP= mapfile.vers.$(LIBNAME) 40N/ASPECFILE= spec/$(LIBNAME).spec 40N/AVERSFILE= spec/versions 40N/A$(BUILD_DIR_32)/$(SPECMAP): $(SPECFILE) $(VERSFILE) 40N/A$(BUILD_DIR_64)/$(SPECMAP): $(SPECFILE) $(VERSFILE) 493N/A### Default rules for common build pattern 493N/ALD_OPTIONS = -L$(PROTODIR)$(X11_DIR)/lib$(LIBSUBDIR) \ 810N/A# MKDIRPROG - Workaround parallel build race condition 810N/A# in older upstream packaged install-sh 536N/ABUILD_ENV = LD_OPTIONS='$(LD_OPTIONS)' \ 493N/ADEFAULT_BUILD_MAKEFLAGS=$(MODTYPE_MAKEFLAGS) $(MODULE_MAKEFLAGS) \ 910N/Adefault_build: $(UNPACK_TARGET) $(CONFIGURE_TARGETS) $(MODTYPE_BUILD_DEPS) $(MODULE_BUILD_DEPS) $(MODULE_MAKE) 493N/Aprint_default_build_flags: 493N/A @
print "BUILD_ENV='$(BUILD_ENV)'" ; \
493N/A print "MAKE='$(MODULE_MAKE)'" ; \
810N/A print "MAKEFLAGS='$(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS)'" 493N/ADEFAULT_INSTALL_MAKEFLAGS= -e DESTDIR=$(PROTODIR) \ 591N/A# Dependencies for make install step 591N/AINSTALL_DEPS = $(BUILD_TARGETS) $(MODTYPE_INSTALL_DEPS) $(MODULE_INSTALL_DEPS) 910N/Adefault_install: $(INSTALL_DEPS) 493N/Aprint_default_install_flags: 493N/A @
print "BUILD_ENV='$(BUILD_ENV)'" ; \
493N/A print "MAKE='$(MODULE_MAKE)'" ; \
493N/A print "MAKE_FLAGS='$(MAKEFLAGS) $(DEFAULT_INSTALL_MAKEFLAGS)'" 606N/A# Adjust paths in pkg-config files for -uninstalled variants used during build 705N/A -e
'BEGIN {use Cwd; $$protodir=Cwd::realpath("$(PROTODIR)");}' \
705N/A -e
's|(-[LI]\s*)\$$|$$1$$protodir\$$|g;' \
705N/A -e
's|^sdkdir=|sdkdir=$$protodir|g;' \
837N/A -e
's|$$protodir\$${sdkdir}|\$${sdkdir}|g;' \
910N/AINSTALL_PCU_DEPS_DEFAULT = $(INSTALL_PCU_DEPS_SET:yes=$(POUND_SIGN)) 910N/A$(INSTALL_PCU_DEPS_DEFAULT) INSTALL_PCU_DEPS = $(INSTALL_TARGETS) 910N/Ainstall_pkgconfig_uninstalled: $(INSTALL_PCU_DEPS) 606N/A @
if [[
! -z "$(FIX_PC_FILES)" ]] ; then \ 591N/A# Set comments in ELF binaries to help identify versions/builds 591N/AELF_COMMENTS = $(MODULE_NAME) $(MODULE_VERSION) 591N/AELF_COMMENTS += $(MODTYPE_ELF_COMMENTS)$(MODULE_ELF_COMMENTS) 705N/A$(BUILD_DEBUG:yes=) DEBUG_ELF_COMMENTS=(DEBUG) 705N/A$(BUILD_DEBUG:yes=$(POUND_SIGN)) DEBUG_ELF_COMMENTS= 705N/AELF_COMMENTS += $(DEBUG_ELF_COMMENTS) 810N/Aset-elf-comments: $(BUILD_TARGETS:set-elf-comments=) 493N/A### Other tools/dependencies needed to build 0N/A# Some modules (such as FreeType 2) require GNU make 493N/A @
print -n
"Building with GNU make from $$(whence gmake): " 493N/A @
print "Building with make from $$(whence $(MAKE))" 90N/A# Some modules use lndir to merge in sources from Sun specific directories 493N/A# Some modules use these tools to convert DocBook docs to text or html 822N/A$(DOCBOOK2HTML) + $(DOCBOOK2TEXT): 40N/A# Almost everything depends on the headers in xproto 493N/A @
print "$(XPROTO_DEP) not found..." 47N/A### Useful rules for maintaining patch sets 47N/A# regenerate patches against new baseline to reduce messages about hunks 47N/A# having fuzz or offsets when applying patches - new patches will be in new/ 493N/A print '=================' $$p ; \
47N/A /^diff -u/ {exit} \ 47N/A |
sed -e
's% \./prev$(SOURCE_DIR)/% %' -e
's% \./tmp-regen$(SOURCE_DIR)/% %' \
606N/A# Allows running "make list-patches" to get a list of all patches we 606N/A# currently apply in our builds 606N/A if [[
"$(SOURCE_PATCHES)" != "" ]] ; then \ 606N/A if [[
"$$p" != "x" ]] ; then \ 606N/A print "$${THIS_MODULE}/$$p" |
sed 's/,-p[0-9]$$//' ; \
355N/A# Default license file name is COPYING (X.Org & GNU autoconf default) 355N/A# For other license file names, set LICENSE_FILE to the file name 355N/A# and set LICENSE_FILE_SET=yes 387N/A# A file in the same directory as the Makefile takes precedence 387N/A# over one that is delivered in the package. 587N/A# For additional license files, set EXTRA_LICENSE_FILES to a list of 355N/ALICENSE_FILE_DEFAULT = $(LICENSE_FILE_SET:yes=$(POUND_SIGN)) 355N/A$(LICENSE_FILE_DEFAULT) LICENSE_FILE=COPYING 493N/A if [[
"$${LICENSE_TO_COPY}" != "" ]] ; then \ 587N/A if [[
"$(EXTRA_LICENSES)" != "" ]] ; then \