Makefile.inc revision 922
196N/A# -*- Makefile -*- rules commonly shared among X consolidation open source dirs
943N/A#
919N/A# Copyright 2010 Sun Microsystems, Inc. All rights reserved.
919N/A# Use is subject to license terms.
919N/A#
919N/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#
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# Software.
919N/A#
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
196N/A# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
196N/A# DEALINGS IN THE SOFTWARE.
196N/A#
196N/A#
196N/A
196N/A### Default rules
196N/A
196N/A# Which compiler to use to build module
196N/AMODTYPE_COMPILER_DEFAULT = $(MODTYPE_COMPILER_SET:yes=$(POUND_SIGN))
196N/A$(MODTYPE_COMPILER_DEFAULT) MODTYPE_COMPILER = $(DEFAULT_COMPILER)
196N/AMODULE_COMPILER_DEFAULT = $(MODULE_COMPILER_SET:yes=$(POUND_SIGN))
196N/A$(MODULE_COMPILER_DEFAULT) MODULE_COMPILER = $(MODTYPE_COMPILER)
196N/A
196N/A# Which make to use to build module
196N/AMODTYPE_MAKE_DEFAULT = $(MODTYPE_MAKE_SET:yes=$(POUND_SIGN))
196N/A$(MODTYPE_MAKE_DEFAULT) MODTYPE_MAKE = $(MAKE)
196N/AMODULE_MAKE_DEFAULT = $(MODULE_MAKE_SET:yes=$(POUND_SIGN))
196N/A$(MODULE_MAKE_DEFAULT) MODULE_MAKE = $(MODTYPE_MAKE)
196N/A
196N/A# Where to install files
196N/AMODTYPE_PREFIX_DEFAULT = $(MODTYPE_PREFIX_SET:yes=$(POUND_SIGN))
196N/A$(MODTYPE_PREFIX_DEFAULT) MODTYPE_PREFIX=$(X11_DIR)
196N/AMODULE_PREFIX_DEFAULT = $(MODULE_PREFIX_SET:yes=$(POUND_SIGN))
196N/A$(MODULE_PREFIX_DEFAULT) MODULE_PREFIX=$(MODTYPE_PREFIX)
196N/A
196N/A# Where to install pkgconfig files
196N/AMODTYPE_PKGCONFIG_DIR_DEFAULT = $(MODTYPE_PKGCONFIG_DIR_SET:yes=$(POUND_SIGN))
196N/A$(MODTYPE_PKGCONFIG_DIR_DEFAULT) MODTYPE_PKGCONFIG_DIR=$(PKGCONFIG_DIR)
196N/AMODULE_PKGCONFIG_DIR_DEFAULT = $(MODULE_PKGCONFIG_DIR_SET:yes=$(POUND_SIGN))
196N/A$(MODULE_PKGCONFIG_DIR_DEFAULT) MODULE_PKGCONFIG_DIR=$(MODTYPE_PKGCONFIG_DIR)
196N/A
196N/A# Directory created by unpacking source, if not set in module makefile
196N/ASOURCE_DIRNAME_DEFAULT = $(SOURCE_DIRNAME_SET:yes=$(POUND_SIGN))
196N/A$(SOURCE_DIRNAME_DEFAULT) SOURCE_DIRNAME=$(MODULE_NAME)-$(MODULE_VERSION)
196N/A
196N/ABUILD_DIR_$(BUILD_TYPE) = build_$(BUILD_TYPE)
196N/A# Special cases for 32-bit & 64-bit directory names to allow building
196N/A# both architectures in the same tree (serially - building both in
196N/A# parallel is likely to have race conditions)
196N/ABUILD_DIR_32 = build-$(MACH32)
196N/ABUILD_DIR_64 = build-$(MACH64)
196N/ABUILD_DIR = $(BUILD_DIR_$(BUILD_TYPE))
196N/A
196N/ASOURCE_DIR = $(BUILD_DIR)/$(SOURCE_DIRNAME)
196N/ASOURCE_DIR_32 = $(BUILD_DIR_32)/$(SOURCE_DIRNAME)
196N/ASOURCE_DIR_64 = $(BUILD_DIR_64)/$(SOURCE_DIRNAME)
196N/A
196N/A# Set default tarball if not set in module makefile
196N/ASOURCE_TARBALL_NAME_DEFAULT = $(SOURCE_TARBALL_NAME_SET:yes=$(POUND_SIGN))
196N/A$(SOURCE_TARBALL_NAME_DEFAULT) SOURCE_TARBALL_NAME=$(SOURCE_DIRNAME).tar.bz2
196N/A
196N/A# Tarballs for most modules built here are found in the X.Org archives/repos
196N/A# in a directory with the same name as what we use in our tree
196N/ASOURCE_TARBALL_DIR_DEFAULT = $(SOURCE_TARBALL_DIR_SET:yes=$(POUND_SIGN))
196N/A$(SOURCE_TARBALL_DIR_DEFAULT) SOURCE_TARBALL_DIR=$(MODTYPE)
196N/A
196N/A# Set default download location if not set in module makefile
196N/ASOURCE_URL_DEFAULT = $(SOURCE_URL_SET:yes=$(POUND_SIGN))
196N/A$(SOURCE_URL_DEFAULT) SOURCE_URL=$(XORG_RELEASES_URL)/$(SOURCE_TARBALL_DIR)/$(SOURCE_TARBALL_NAME)
196N/A
196N/A# Set default git repo location if not set in module makefile
196N/AGIT_URL_DEFAULT = $(GIT_URL_SET:yes=$(POUND_SIGN))
196N/A$(GIT_URL_DEFAULT) GIT_URL=$(XORG_GIT_URL)/$(SOURCE_TARBALL_DIR)/$(MODULE_NAME).git
196N/A
196N/A# Set default build type to 32-bit if not set in module makefile
196N/ABUILD_TYPES_DEFAULT = $(BUILD_TYPES_SET:yes=$(POUND_SIGN))
196N/A$(BUILD_TYPES_DEFAULT) BUILD_TYPES=32
196N/A
196N/A# Set default rules if not set in module/modtype Makefile
196N/ASOURCE_TARGETS_DEFAULT = $(SOURCE_TARGETS_SET:yes=$(POUND_SIGN))
196N/A$(SOURCE_TARGETS_DEFAULT) SOURCE_TARGETS=default_source \
196N/A check-checksums \
196N/A $(MODTYPE_ADD_SOURCE_TARGETS) \
196N/A $(MODULE_ADD_SOURCE_TARGETS)
196N/A
196N/ACONFIGURE_TARGETS_DEFAULT = $(CONFIGURE_TARGETS_SET:yes=$(POUND_SIGN))
196N/A$(CONFIGURE_TARGETS_DEFAULT) CONFIGURE_TARGETS=default_configure \
196N/A $(MODTYPE_ADD_CONFIGURE_TARGETS) \
196N/A $(MODULE_ADD_CONFIGURE_TARGETS)
196N/A
196N/ABUILD_TARGETS_DEFAULT = $(BUILD_TARGETS_SET:yes=$(POUND_SIGN))
196N/A$(BUILD_TARGETS_DEFAULT) BUILD_TARGETS=default_build \
196N/A $(MODTYPE_ADD_BUILD_TARGETS) \
196N/A $(MODULE_ADD_BUILD_TARGETS)
196N/A
196N/AINSTALL_TARGETS_DEFAULT = $(INSTALL_TARGETS_SET:yes=$(POUND_SIGN))
196N/A$(INSTALL_TARGETS_DEFAULT) INSTALL_TARGETS=default_install \
196N/A $(MODTYPE_ADD_INSTALL_TARGETS) \
196N/A $(MODULE_ADD_INSTALL_TARGETS)
196N/A
196N/A# Additional flags to pass to make in 32-bit & 64-bit builds
196N/ABUILD_32_FLAGS= ARCH_FLAGS="$(ARCH32_FLAGS)" \
196N/A $(MODTYPE_BUILD_32_FLAGS) $(MODULE_BUILD_32_FLAGS)
196N/A
196N/ABUILD_64_FLAGS= ARCH_FLAGS="$(ARCH64_FLAGS)" \
196N/A $(MODTYPE_BUILD_64_FLAGS) $(MODULE_BUILD_64_FLAGS)
196N/A
196N/Aall: $(BUILD_TYPES:%=build_%)
196N/Aall_%: build_%
196N/A
196N/ACLEAN_RULES = $(BUILD_TYPES:%=clean_%)
303N/Aclean: $(CLEAN_RULES)
196N/A.PARALLEL: $(CLEAN_RULES)
196N/A
196N/A# Remove directories with both styles of naming
196N/A$(CLEAN_RULES):
196N/A -rm -rf $(BUILD_DIR_$(@:clean_%=%)) $(@:clean_%=build_%)
196N/A
196N/A# Tell dmake not to remove and create source in parallel
196N/A.NOPARALLEL: clean source
196N/A.NOPARALLEL: clean_$(BUILD_TYPE) source_$(BUILD_TYPE)
196N/A
196N/ASOURCE_RULES = $(BUILD_TYPES:%=source_%)
196N/Asource: $(SOURCE_RULES)
196N/A.PARALLEL: $(SOURCE_RULES)
196N/A
196N/Asource-gen: $(SOURCE_TARGETS)
196N/A
196N/A$(SOURCE_RULES):
196N/A $(MAKE) $(MAKEFLAGS) BUILD_TYPE="$(@:source_%=%)" source-gen
196N/A
196N/ACONFIGURE_RULES = $(BUILD_TYPES:%=configure_%)
196N/Aconfigure: $(CONFIGURE_RULES)
196N/A.PARALLEL: $(CONFIGURE_RULES)
196N/A
196N/Aconfigure-gen: source-gen $(CONFIGURE_TARGETS)
196N/A
196N/A$(CONFIGURE_RULES):
196N/A $(MAKE) $(MAKEFLAGS) BUILD_TYPE="$(@:configure_%=%)" \
196N/A $(BUILD_$(@:configure_%=%)_FLAGS) configure-gen
196N/A
196N/ABUILD_RULES = $(BUILD_TYPES:%=build_%)
196N/Abuild: $(BUILD_RULES)
196N/A.PARALLEL: $(BUILD_RULES)
196N/A
196N/Abuild-gen: configure-gen $(BUILD_TARGETS)
196N/A
196N/A$(BUILD_RULES):
196N/A $(MAKE) $(MAKEFLAGS) BUILD_TYPE="$(@:build_%=%)" \
196N/A $(BUILD_$(@:build_%=%)_FLAGS) build-gen
196N/A
196N/AINSTALL_RULES = $(BUILD_TYPES:%=install_%)
196N/Ainstall: $(INSTALL_RULES)
196N/A
196N/Ainstall-gen: build-gen $(INSTALL_TARGETS) install_license install_pkgconfig_uninstalled
196N/A
196N/A$(INSTALL_RULES):
196N/A $(MAKE) $(MAKEFLAGS) BUILD_TYPE="$(@:install_%=%)" \
196N/A $(BUILD_$(@:install_%=%)_FLAGS) install-gen
196N/A
196N/ADEBUG_BUILD_FLAGS = BUILD_DEBUG=yes
196N/A
196N/A# Allow adding "debug-" prefix to rules like build_32, install, etc.
196N/Adebug-%:
196N/A $(MAKE) $(MAKEFLAGS) $(@:debug-%=%) $(DEBUG_BUILD_FLAGS)
196N/A
196N/A# Allow debug_XX to run "make all_XX" with debug flags (including without _XX)
196N/Adebug%:
196N/A $(MAKE) $(MAKEFLAGS) $(@:debug%=all%) $(DEBUG_BUILD_FLAGS)
196N/A
196N/A
196N/A### Source tarballs & downloading if necessary
196N/A
196N/ASOURCE_TARBALL=$(TARBALLDIR)/$(SOURCE_TARBALL_NAME)
196N/A
196N/A# Allow downloading from local archive/mirror
196N/ATARBALL_ARCHIVE_sun.com = http://xserver.sfbay.sun.com/tarballs
196N/ATARBALL_ARCHIVE_DEFAULT = $(TARBALL_ARCHIVE_SET:yes=$(POUND_SIGN))
196N/A$(TARBALL_ARCHIVE_DEFAULT) ARCHIVE_DOMAIN = domainname | awk -F. '{printf "%s.%s", $$(NF-1), $$NF}'
196N/A$(TARBALL_ARCHIVE_DEFAULT) TARBALL_ARCHIVE = $(TARBALL_ARCHIVE_$(ARCHIVE_DOMAIN:sh))
196N/AARCHIVE_URL=$(TARBALL_ARCHIVE)/$(SOURCE_TARBALL_DIR)/$(SOURCE_TARBALL_NAME)
196N/A
196N/AGIT_CLONE_DIR=$(MODULE_NAME)-$(MODULE_VERSION)
196N/A
196N/A# Download if SOURCE_TARBALL_NAME is not set to NONE and the file either
196N/A# doesn't exist or is empty
196N/A# If MODULE_VERSION is git, checkout source from git repo instead of
196N/A# a tarball
196N/Adownload: $(SOURCE_TARBALL)
196N/A
196N/A$(SOURCE_TARBALL): $(TARBALLDIR)
196N/A @case '$(MAKEFLAGS)' in *[ik]*) set +e;; esac; $(START_CMD_ECHO) ; \
196N/A if [[ "$(MODULE_VERSION)" = "git" ]] ; then \
196N/A if [[ ! -d $(GIT_CLONE_DIR) ]] ; then \
196N/A $(GIT) clone $(GIT_URL) $(GIT_CLONE_DIR) ; \
196N/A if [[ ! -z "$(GIT_BRANCH)" ]] ; then \
196N/A cd $(GIT_CLONE_DIR) && $(GIT) checkout $(GIT_BRANCH) ; \
196N/A fi ; \
196N/A fi ; \
196N/A else \
196N/A if [[ "$(SOURCE_TARBALL_NAME)" != "NONE" ]] ; then \
196N/A if [[ ! -z "$(TARBALL_ARCHIVE)" ]] ; then \
196N/A $(WGET) -O $(SOURCE_TARBALL) $(ARCHIVE_URL) ; \
196N/A else \
196N/A $(WGET) -O $(SOURCE_TARBALL) $(SOURCE_URL) ; \
196N/A fi ; \
196N/A fi ; \
196N/A fi
196N/A
196N/Acheck-checksums: $(SOURCE_TARBALL)
196N/A @case '$(MAKEFLAGS)' in *[ik]*) set +e;; esac; \
196N/A if [[ "$(MODULE_VERSION)" != "git" && \
196N/A "$(SOURCE_TARBALL_NAME)" != "NONE" ]] ; then \
196N/A ACTUAL_MD5="$$(digest -a md5 $(SOURCE_TARBALL))" ; \
196N/A if [[ "$${ACTUAL_MD5}" != "${TARBALL_MD5}" ]] ; then \
196N/A print -u2 "ERROR: MD5 sum mismatch on ${SOURCE_TARBALL}\n" \
196N/A "$${ACTUAL_MD5} != ${TARBALL_MD5}" ; \
196N/A exit 1; \
196N/A fi ; \
196N/A ACTUAL_SHA1="$$(digest -a sha1 ${SOURCE_TARBALL})" ; \
196N/A if [[ "$${ACTUAL_SHA1}" != "${TARBALL_SHA1}" ]] ; then \
196N/A print -u2 "ERROR: SHA1 sum mismatch on ${SOURCE_TARBALL}\n" \
196N/A "$${ACTUAL_SHA1} != ${TARBALL_SHA1}" ; \
196N/A exit 1; \
196N/A fi ; \
196N/A fi
196N/A
196N/A
196N/A# Submit a tarball to the archive
196N/AARCHIVE_SUBMIT=/ws/x11/tarballs/bin/archive-tarballs
196N/A
196N/Aarchive-tarball:
196N/A @case '$(MAKEFLAGS)' in *[ik]*) set +e;; esac; \
196N/A if [[ "$(MODULE_VERSION)" != "git" && \
196N/A "$(SOURCE_TARBALL_NAME)" != "NONE" ]] ; then \
196N/A $(ARCHIVE_SUBMIT) \
196N/A --modtype='$(SOURCE_TARBALL_DIR)' \
303N/A --tarball='$(SOURCE_TARBALL_NAME)' \
196N/A --url='$(SOURCE_URL)' \
196N/A --md5='$(TARBALL_MD5)' \
196N/A --sha1='$(TARBALL_SHA1)' ; \
196N/A fi
196N/A
196N/A$(TARBALLDIR):
196N/A mkdir -p $(TARBALLDIR)
196N/A
196N/A# Update a git cloned repo
196N/Agit-update:
196N/A if [[ "$(MODULE_VERSION)" = "git" ]] ; then \
196N/A if [[ -d $(GIT_CLONE_DIR) ]] ; then \
196N/A cd $(GIT_CLONE_DIR) ; \
196N/A if [[ ! -z "$(GIT_BRANCH)" ]] ; then \
196N/A $(GIT) checkout master && \
196N/A $(GIT) fetch && \
196N/A $(GIT) checkout $(GIT_BRANCH) ; \
196N/A else \
196N/A $(GIT) fetch ; \
196N/A fi ; \
196N/A fi ; \
196N/A fi
196N/A
196N/A
196N/A### Unpack source and apply patches
196N/A
196N/AFIX_PC_OPS= \
196N/A -e 's|-L\$${libdir}|-L\$${libdir} -R\$${libdir}|;' \
196N/A -e 's|Requires.private: .*$$||;' \
196N/A $(MODTYPE_FIX_PC_FLAGS) \
196N/A $(MODULE_FIX_PC_FLAGS)
196N/A
196N/A# -e 's|(Requires: .*)\bx11\b|$$1|;' \
196N/A
196N/ASUNTOUCH_MAN_FLAGS = \
196N/A -a '{Availability, $(SUN_PACKAGE)}' \
196N/A -a '{Interface Stability, $(MODULE_STABILITY)}' \
196N/A $(MODTYPE_SUNTOUCH_MAN_FLAGS) \
303N/A $(MODULE_SUNTOUCH_MAN_FLAGS)
196N/A
196N/ASOURCE_DEPS = $(SOURCE_TARBALL) $(MODTYPE_SOURCE_DEPS) $(MODULE_SOURCE_DEPS)
196N/A
196N/Adefault_source: $(UNPACK_TARGET)
196N/A
196N/A$(UNPACK_TARGET): $(SOURCE_DEPS)
196N/A mkdir -p $(BUILD_DIR)
196N/A @ if [[ "$(SOURCE_TARBALL_NAME)" != "NONE" ]] ; then \
196N/A if [[ "$(MODULE_VERSION)" = "git" ]] ; then \
196N/A SOURCE_CMD='gtar --exclude=.git* -cf - $(GIT_CLONE_DIR)' ; \
196N/A else \
196N/A UNCOMP_CMD="$(SOURCE_UNCOMPRESS)" ; \
196N/A SOURCE_CMD="$${UNCOMP_CMD:-bzcat} $(SOURCE_TARBALL)" ; \
196N/A fi ; \
196N/A print "$${SOURCE_CMD} | (cd $(BUILD_DIR) ; gtar -xf - )" ; \
196N/A $${SOURCE_CMD} | (cd $(BUILD_DIR) ; gtar -xf - ) ; \
196N/A else \
196N/A print "mkdir -p $(SOURCE_DIR)" ; \
196N/A mkdir -p $(SOURCE_DIR) ; \
196N/A fi ; \
196N/A if [[ "$(ADDITIONAL_SOURCE_DIR)" != "" ]] ; then \
196N/A if [[ ! -x $(LNDIR) ]] ; then \
196N/A (cd $(TOP)/util/lndir && $(MAKE) $(MAKEFLAGS) install) ; \
196N/A fi ; \
196N/A ($(START_CMD_ECHO) ; \
196N/A cd $(SOURCE_DIR) && $(LNDIR) ../../$(ADDITIONAL_SOURCE_DIR) ) ; \
196N/A fi ; \
196N/A if [[ "$(SOURCE_PATCHES)" != "" ]] ; then \
196N/A for p in $(SOURCE_PATCHES) x ; do \
196N/A if [[ "$$p" != "x" ]] ; then \
196N/A patch_file="$${p%,*}" ; \
196N/A if [[ "$$p" =~ "," ]] ; then \
196N/A patch_flags="$${p/*,}" ; \
196N/A else \
196N/A patch_flags="-p0" ; \
196N/A fi ; \
196N/A ($(START_CMD_ECHO) ; \
196N/A gpatch -d $(SOURCE_DIR) $${patch_flags} < "$${patch_file}" ) ; \
196N/A fi ; \
196N/A done ; \
196N/A fi ; \
196N/A if [[ "$(SUNTOUCHED_MANPAGES)" != "" ]] ; then \
196N/A ($(START_CMD_ECHO) ; \
196N/A cd $(SOURCE_DIR) && \
196N/A /usr/perl5/bin/perl $(TOP)/common/suntouch-manpages.pl \
196N/A $(SUNTOUCH_MAN_FLAGS) $(SUNTOUCHED_MANPAGES) ) ; \
196N/A fi ; \
196N/A if [[ "$(FIX_PC_FILES)" != "" ]] ; then \
196N/A ($(START_CMD_ECHO) ; \
196N/A cd $(SOURCE_DIR) && \
196N/A /usr/perl5/bin/perl -i.orig -p \
196N/A $(FIX_PC_OPS) $(FIX_PC_FILES) ); \
196N/A fi
196N/A touch $(UNPACK_TARGET)
196N/A
196N/A### Run configure scripts
196N/A
196N/A# Include Xorg autoconf macros when rebuilding configure scripts
196N/A# and use automake 1.10 instead of the older 1.9.
196N/A# /opt/jdsbld/share/aclocal is needed to get the nls.m4 from CBEgettext
196N/A# due to: 6785384 SUNWgnu-gettext does not include autoconf m4 files
196N/AACLOCAL_PATH=/usr/bin/aclocal-1.10
196N/AACLOCAL_INCLUDES = -I $(PROTODIR)$(X11_ACLOCAL_DIR) \
196N/A -I /usr/share/aclocal -I /usr/share/aclocal-1.10 \
196N/A -I /opt/jdsbld/share/aclocal
196N/AAUTOMAKE_PATH=/usr/bin/automake-1.10
196N/AAUTORECONF_ENV= ACLOCAL="$(ACLOCAL_PATH) $(ACLOCAL_INCLUDES)" \
196N/A AUTOMAKE="$(AUTOMAKE_PATH)"
196N/A
196N/A# Dependencies for running configure to make a Makefile
196N/ACONFIGURE_DEPS = $(SOURCE_TARGETS) \
196N/A $(MODTYPE_CONFIGURE_DEPS) $(MODULE_CONFIGURE_DEPS)
196N/A
196N/A# Command line options to GNU autoconf configure script
196N/ADEFAULT_CONFIG_OPTS = --prefix=$(MODULE_PREFIX) \
196N/A --mandir='$${prefix}/share/man' --localstatedir=/var
196N/A
196N/ACONFIG_OPTS = $(DEFAULT_CONFIG_OPTS) \
196N/A $(MODTYPE_CONFIG_OPTS) $(MODULE_CONFIG_OPTS)
196N/A
196N/A# Environment variable options to GNU autoconf configure script
196N/A$(USE_DEFAULT_CONFIG_CPPFLAGS:no=$(POUND_SIGN)) DEFAULT_CONFIG_CPPFLAGS= \
196N/A -I$(PROTODIR)$(X11_INCLUDES_DIR) \
196N/A -I$(PROTODIR)/usr/include -I$(PROTODIR)/usr/include/freetype2
196N/A$(USE_DEFAULT_CONFIG_LDFLAGS:no=$(POUND_SIGN)) DEFAULT_CONFIG_LDFLAGS= \
196N/A -L$(PROTODIR)/usr/lib$(ARCHLIBSUBDIR) \
196N/A -L$(PROTODIR)$(X11_DIR)/lib$(ARCHLIBSUBDIR)
196N/A
196N/ADEFAULT_PKG_CONFIG_PATH=$(TOP)/common/pc-files/$(BUILD_DIR):$(PROTODIR)$(PKGCONFIG_DIR):$(PROTODIR)$(PKGCONFIG_DIR_SHARE):$(PKGCONFIG_DIR):$(PKGCONFIG_DIR_SHARE)
388N/A
196N/A# Set USE_DEFAULT_CONFIG_ENV=no in a Makefile to not use this default
196N/A# autoconfig environment
196N/A$(USE_DEFAULT_CONFIG_ENV:no=$(POUND_SIGN)) DEFAULT_CONFIG_ENV = \
196N/A CC="$(CC)" CXX="$(CXX)" \
196N/A LD="$(CC) $(LDFLAGS)" \
196N/A CFLAGS="$(MODTYPE_CFLAGS) $(MODULE_CFLAGS)" \
196N/A CXXFLAGS="$(MODTYPE_CXXFLAGS) $(MODULE_CXXFLAGS)" \
196N/A CPPFLAGS="$(DEFAULT_CONFIG_CPPFLAGS) $(MODTYPE_CPPFLAGS) $(MODULE_CPPFLAGS)" \
196N/A LDFLAGS="$(DEFAULT_CONFIG_LDFLAGS) $(MODTYPE_CFLAGS) $(MODTYPE_LDFLAGS) $(MODULE_CFLAGS) $(MODULE_LDFLAGS)" \
196N/A PKG_CONFIG_PATH="$(DEFAULT_PKG_CONFIG_PATH)" \
196N/A INSTALL="$(INSTALL_SCRIPT)" CPPROG="cp -p" \
196N/A MAKE="$(MODULE_MAKE)" CONFIG_SHELL="$(SHELL)"
196N/A
196N/ACONFIG_ENV = $(DEFAULT_CONFIG_ENV) $(MODTYPE_CONFIG_ENV) $(MODULE_CONFIG_ENV)
196N/A
196N/A# File created by running configure - defaults to the top-level Makefile
196N/A# in a source directory unless AUTOCONF_TARGET_SET=yes is set
196N/AAUTOCONF_TARGET_DEFAULT = $(AUTOCONF_TARGET_SET:yes=$(POUND_SIGN))
196N/A$(AUTOCONF_TARGET_DEFAULT) AUTOCONF_TARGET=$(SOURCE_DIR)/Makefile
196N/A
196N/A$(AUTOCONF_TARGET): $(CONFIGURE_DEPS)
196N/A cd $(SOURCE_DIR) ; \
196N/A if [[ "$(AUTORECONF)" = "yes" || "$(MODULE_VERSION)" = "git" ]] ; then \
196N/A $(AUTORECONF_ENV) autoreconf -v --install --force ; \
196N/A fi ; \
196N/A chmod a+x configure ; \
196N/A $(CONFIG_ENV) $(SHELL) ./configure $(CONFIG_OPTS) ; \
196N/A if [[ "$(DELIBTOOLIZE)" = "yes" ]] ; then \
196N/A $(TOP)/common/delibtoolize.pl $(DELIBTOOLIZE_FLAGS) . ; \
196N/A fi
196N/A
196N/Adefault_configure: $(AUTOCONF_TARGET)
196N/A
196N/A
196N/A### Remove libtool from build process when needed
196N/A
196N/Adelibtoolize:
196N/A $(TOP)/common/delibtoolize.pl $(DELIBTOOLIZE_FLAGS) $(SOURCE_DIR)
196N/A
196N/A### Default rules for common build pattern
196N/A
196N/ALD_OPTIONS = -L$(PROTODIR)$(X11_DIR)/lib$(LIBSUBDIR) \
196N/A $(MODTYPE_LD_OPTIONS) $(MODULE_LD_OPTIONS)
196N/A
196N/A# MKDIRPROG - Workaround parallel build race condition
196N/A# in older upstream packaged install-sh
196N/A
196N/ABUILD_ENV = LD_OPTIONS='$(LD_OPTIONS)' \
196N/A PROTODIR='$(PROTODIR)' \
196N/A MAKE='$(MODULE_MAKE)' \
196N/A MKDIRPROG='mkdir -p' \
196N/A $(MODTYPE_BUILD_ENV) $(MODULE_BUILD_ENV)
196N/A
196N/ADEFAULT_BUILD_MAKEFLAGS=$(MODTYPE_MAKEFLAGS) $(MODULE_MAKEFLAGS) \
196N/A $(MODTYPE_BUILD_MAKEFLAGS) $(MODULE_BUILD_MAKEFLAGS)
196N/A
196N/A# Dependencies for make build step
196N/ABUILD_DEPS = $(SOURCE_TARGETS) $(CONFIGURE_TARGETS) $(MODTYPE_BUILD_DEPS) $(MODULE_BUILD_DEPS) $(MODULE_MAKE)
196N/A
196N/Adefault_build: $(BUILD_DEPS)
196N/A (cd $(SOURCE_DIR) ; \
196N/A $(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS))
196N/A
196N/Aprint_default_build_flags:
196N/A @print "BUILD_ENV='$(BUILD_ENV)'" ; \
196N/A print "MAKE='$(MODULE_MAKE)'" ; \
196N/A print "MAKEFLAGS='$(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS)'"
196N/A
196N/Abuild-in-subdir:
196N/A (cd $(subdir) ; \
196N/A $(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS) \
196N/A $(subdir_cmd) )
196N/A
196N/ADEFAULT_INSTALL_MAKEFLAGS= -e DESTDIR=$(PROTODIR) \
196N/A pkgconfigdir=$(MODULE_PKGCONFIG_DIR) \
196N/A $(MODTYPE_MAKEFLAGS) $(MODULE_MAKEFLAGS) \
196N/A $(MODTYPE_INSTALL_MAKEFLAGS) $(MODULE_INSTALL_MAKEFLAGS) \
196N/A
196N/A# Dependencies for make install step
196N/AINSTALL_DEPS = $(BUILD_TARGETS) $(MODTYPE_INSTALL_DEPS) $(MODULE_INSTALL_DEPS)
196N/A
196N/Adefault_install: $(INSTALL_DEPS)
196N/A (cd $(SOURCE_DIR) ; \
196N/A $(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_INSTALL_MAKEFLAGS) \
196N/A install)
196N/A
196N/Aprint_default_install_flags:
196N/A @print "BUILD_ENV='$(BUILD_ENV)'" ; \
196N/A print "MAKE='$(MODULE_MAKE)'" ; \
196N/A print "MAKE_FLAGS='$(MAKEFLAGS) $(DEFAULT_INSTALL_MAKEFLAGS)'"
196N/A
196N/Ainstall-in-subdir:
196N/A (cd $(subdir) ; \
196N/A $(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_INSTALL_MAKEFLAGS) \
196N/A $(subdir_cmd))
196N/A
196N/A# Adjust paths in pkg-config files for -uninstalled variants used during build
196N/AUNINSTALLED_PC_OPS= \
196N/A -e 'BEGIN {use Cwd; $$protodir=Cwd::realpath("$(PROTODIR)");}' \
196N/A -e 's|(-[LI]\s*)\$$|$$1$$protodir\$$|g;' \
196N/A -e 's|^sdkdir=|sdkdir=$$protodir|g;' \
196N/A -e 's|$$protodir\$${sdkdir}|\$${sdkdir}|g;' \
196N/A $(MODTYPE_ADD_UNINSTALLED_PC_OPS) $(MODULE_ADD_UNINSTALLED_PC_OPS)
196N/A
196N/AINSTALL_PCU_DEPS_DEFAULT = $(INSTALL_PCU_DEPS_SET:yes=$(POUND_SIGN))
196N/A$(INSTALL_PCU_DEPS_DEFAULT) INSTALL_PCU_DEPS = $(INSTALL_TARGETS)
196N/A
196N/Ainstall_pkgconfig_uninstalled: $(INSTALL_PCU_DEPS)
196N/A @ if [[ ! -z "$(FIX_PC_FILES)" ]] ; then \
196N/A cd $(SOURCE_DIR) ; \
196N/A for pcin in $(FIX_PC_FILES:.in=) ; do \
196N/A pc=$${pcin%%+(.pc|.in)} ; \
196N/A ($(START_CMD_ECHO) ; \
196N/A /usr/perl5/bin/perl -p $(UNINSTALLED_PC_OPS) $$pc.pc > \
196N/A $(PROTODIR)$(MODULE_PKGCONFIG_DIR)/$$(basename $${pc})-uninstalled.pc ) ; \
196N/A done ; \
196N/A fi
196N/A
196N/A# Set comments in ELF binaries to help identify versions/builds
196N/AELF_COMMENTS = $(MODULE_NAME) $(MODULE_VERSION)
196N/AELF_COMMENTS += $(MODTYPE_ELF_COMMENTS)$(MODULE_ELF_COMMENTS)
196N/A
196N/A$(BUILD_DEBUG:yes=) DEBUG_ELF_COMMENTS=(DEBUG)
196N/A$(BUILD_DEBUG:yes=$(POUND_SIGN)) DEBUG_ELF_COMMENTS=
196N/AELF_COMMENTS += $(DEBUG_ELF_COMMENTS)
196N/A
196N/Aset-elf-comments: $(BUILD_TARGETS:set-elf-comments=)
196N/A $(TOP)/common/set-elf-comments.pl -B 'hg id' \
196N/A -M '$(ELF_COMMENTS)' $(SOURCE_DIR)
196N/A
196N/A
196N/A### Other tools/dependencies needed to build
196N/A
196N/A# Some modules (such as FreeType 2) require GNU make
196N/A$(GNUMAKE):
196N/A @print -n "Building with GNU make from $$(whence gmake): "
196N/A @$(GNUMAKE) --version
196N/A
196N/A$(MAKE):
196N/A @print "Building with make from $$(whence $(MAKE))"
196N/A
196N/A# Some modules use lndir to merge in sources from Sun specific directories
196N/A$(LNDIR):
196N/A (cd $(TOP)/util/lndir && $(MAKE) $(MAKEFLAGS) install)
196N/A
196N/A# Some modules use these tools to convert DocBook docs to text or html
196N/A$(DOCBOOK2HTML) + $(DOCBOOK2TEXT):
196N/A cd $(TOP)/doc/docbook-utils && $(MAKE) $(MAKEFLAGS) install
196N/A
196N/A$(XORG_DEFS_ENT):
196N/A cd $(TOP)/doc/xorg-sgml-doctools && $(MAKE) $(MAKEFLAGS) install
196N/A
196N/A# Almost everything depends on the headers in xproto
196N/A$(XPROTO_DEP):
196N/A @print "$(XPROTO_DEP) not found..."
196N/A @print "Installing dependency proto/x11proto"
196N/A (cd $(TOP)/proto/x11proto ; $(MAKE) $(MAKEFLAGS) install)
196N/A
196N/A### Useful rules for maintaining patch sets
196N/A
196N/A# regenerate patches against new baseline to reduce messages about hunks
196N/A# having fuzz or offsets when applying patches - new patches will be in new/
196N/A
196N/Aregen-patches:
196N/A CUR_LIST=""
196N/A rm -rf tmp-regen
196N/A $(MAKE) SOURCE_PATCHES="$(CUR_LIST)" BUILD_DIR=tmp-regen SUNTOUCHED_MANPAGES="" source-gen
196N/A mkdir -p new
196N/A for f in $(SOURCE_PATCHES) ; do \
196N/A p=$${f%,*} ; \
196N/A print '=================' $$p ; \
196N/A rm -rf prev ; \
196N/A mv tmp-regen prev ; \
196N/A $(MAKE) SOURCE_PATCHES="$${CUR_LIST} $$f" BUILD_DIR=tmp-regen SUNTOUCHED_MANPAGES="" source-gen ; \
196N/A awk '/^--- / {exit} \
196N/A /^diff -u/ {exit} \
196N/A {print}' $$p > new/$$p ; \
196N/A gdiff -urp -x '*~' -x '*.orig' ./prev ./tmp-regen \
196N/A | sed -e 's% \./prev/$(SOURCE_DIRNAME)/% %' -e 's% \./tmp-regen/$(SOURCE_DIRNAME)/% %' \
196N/A | grep -v '^Common subdirectories:' \
196N/A | grep -v '^Only in ' \
196N/A >> new/$$p ; \
196N/A CUR_LIST="$${CUR_LIST} new/$$p" ; \
196N/A done
196N/A rm -rf tmp-regen
196N/A
196N/A# Derive directory name relative to open-src
196N/ATHIS_MODULE:sh=echo ${PWD} | sed 's|.*/open-src/||'
196N/A
196N/A# Allows running "make list-patches" to get a list of all patches we
196N/A# currently apply in our builds
196N/Alist-patches:
196N/A @if [[ "$(SOURCE_PATCHES)" != "" ]] ; then \
196N/A for p in $(SOURCE_PATCHES) x ; do \
196N/A if [[ "$$p" != "x" ]] ; then \
196N/A print "$(THIS_MODULE)/$${p%,*}" ; \
196N/A fi ; \
196N/A done ; \
196N/A fi
196N/A
196N/A### Licensing files
196N/A
196N/A# Default license file name is COPYING (X.Org & GNU autoconf default)
196N/A# For other license file names, set LICENSE_FILE to the file name
196N/A# and set LICENSE_FILE_SET=yes
196N/A# A file in the same directory as the Makefile takes precedence
196N/A# over one that is delivered in the package.
196N/ALICENSE_FILE_DEFAULT = $(LICENSE_FILE_SET:yes=$(POUND_SIGN))
196N/A$(LICENSE_FILE_DEFAULT) LICENSE_FILE=COPYING
196N/A
196N/AMODULE_LICENSE_DESTDIR = $(LICENSE_DEST)/$(THIS_MODULE)
196N/A
196N/Ainstall_license: $(MODULE_LICENSE_DESTDIR)/COPYING
196N/A
196N/A$(MODULE_LICENSE_DESTDIR):
196N/A mkdir -p $@
196N/A
196N/A$(MODULE_LICENSE_DESTDIR)/COPYING: $(MODULE_LICENSE_DESTDIR) $(SOURCE_TARGETS)
196N/A @ $(START_CMD_ECHO) ; \
196N/A if [[ -f $(LICENSE_FILE) ]] ; then \
196N/A LICENSE_TO_COPY="$(LICENSE_FILE)" ; \
196N/A elif [[ -f $(SOURCE_DIR)/$(LICENSE_FILE) ]] ; then \
196N/A LICENSE_TO_COPY="$(SOURCE_DIR)/$(LICENSE_FILE)" ; \
196N/A fi ; \
196N/A if [[ "$${LICENSE_TO_COPY}" != "" ]] ; then \
196N/A rm -f $@ ; \
196N/A cp -pf $${LICENSE_TO_COPY} $@ ; \
196N/A fi
196N/A