6933880 Simplify building the same X workspace on sparc & x86
authorAlan Coopersmith <Alan.Coopersmith@Sun.COM>
Thu, 11 Mar 2010 15:52:00 -0800
changeset 922 db66e53f0c94
parent 921 bd34dddb37b8
child 923 cdebb13bfc0a
6933880 Simplify building the same X workspace on sparc & x86
.hgignore
open-src/app/bdftopcf/Makefile
open-src/app/synergy/Makefile
open-src/app/xmakemap/Makefile
open-src/common/Makefile.inc
open-src/common/Makefile.init
open-src/common/Makefile.subdirs
open-src/data/smf-rbac/Makefile
open-src/driver/xf86-input-hotkey/Makefile
open-src/font/Makefile.bdf
open-src/lib/hwc/Makefile
open-src/lib/libX11/Makefile
open-src/lib/liblbxutil/Makefile
open-src/xserver/xvnc/Makefile
--- a/.hgignore	Mon Mar 08 11:03:13 2010 -0800
+++ b/.hgignore	Thu Mar 11 15:52:00 2010 -0800
@@ -1,8 +1,10 @@
 # Use perl/python regular expression syntax
 syntax: regexp
 # Skip build directories
-/build_32/
-/build_64/
+/build-i386/
+/build-amd64/
+/build-sparc/
+/build-sparcv9/
 /build_core/
 /build_iso8859-\d*/
 # Skip downloaded tarballs
--- a/open-src/app/bdftopcf/Makefile	Mon Mar 08 11:03:13 2010 -0800
+++ b/open-src/app/bdftopcf/Makefile	Thu Mar 11 15:52:00 2010 -0800
@@ -52,3 +52,6 @@
 
 # Clean up old 64-bit builds from before we stopped building them
 clean: clean_64
+
+clean_64:
+	-rm -rf build_64
--- a/open-src/app/synergy/Makefile	Mon Mar 08 11:03:13 2010 -0800
+++ b/open-src/app/synergy/Makefile	Thu Mar 11 15:52:00 2010 -0800
@@ -134,10 +134,13 @@
 	mkdir -p $(DESTDIR)$(MODULE_PREFIX)/bin
 	cp -pf $(SYNERGYC_BIN) $(DESTDIR)$(MODULE_PREFIX)/bin
 
+$(SYNERGYS_BIN): $(BUILD_TARGETS)
+$(SYNERGYC_BIN): $(BUILD_TARGETS)
+
 DOC_AREA=$(DESTDIR)$(MODULE_PREFIX)/share/doc/synergy
 
 # Doc all in html format
-install_doc: 
+install_doc: $(INSTALL_DEPS)
 	mkdir -p 				$(DOC_AREA)
 	mkdir -p 				$(DOC_AREA)/images
 	cp -pf $(SYNERGY_DOC)/about.html	$(DOC_AREA)
--- a/open-src/app/xmakemap/Makefile	Mon Mar 08 11:03:13 2010 -0800
+++ b/open-src/app/xmakemap/Makefile	Thu Mar 11 15:52:00 2010 -0800
@@ -1,6 +1,6 @@
 ###############################################################################
 #
-# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
 # Use is subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -50,7 +50,7 @@
 
 DESTDIR=$(PROTODIR)
 
-install_xmakemap:
+install_xmakemap: $(SOURCE_TARGETS) $(INSTALL_DEPS)
 	mkdir -p $(DESTDIR)$(X11_BIN_DIR) \
 		$(DESTDIR)$(X11_MAN_DIR)/man1
 	$(INSTALL_SCRIPT) -m 0755 $(SOURCE_DIR)/xmakemap \
--- a/open-src/common/Makefile.inc	Mon Mar 08 11:03:13 2010 -0800
+++ b/open-src/common/Makefile.inc	Thu Mar 11 15:52:00 2010 -0800
@@ -54,6 +54,14 @@
 SOURCE_DIRNAME_DEFAULT		= $(SOURCE_DIRNAME_SET:yes=$(POUND_SIGN))
 $(SOURCE_DIRNAME_DEFAULT)	SOURCE_DIRNAME=$(MODULE_NAME)-$(MODULE_VERSION)
 
+BUILD_DIR_$(BUILD_TYPE) = build_$(BUILD_TYPE)
+# Special cases for 32-bit & 64-bit directory names to allow building
+# both architectures in the same tree (serially - building both in 
+# parallel is likely to have race conditions)
+BUILD_DIR_32 = build-$(MACH32)
+BUILD_DIR_64 = build-$(MACH64)
+BUILD_DIR = $(BUILD_DIR_$(BUILD_TYPE))
+
 SOURCE_DIR = $(BUILD_DIR)/$(SOURCE_DIRNAME)
 SOURCE_DIR_32 = $(BUILD_DIR_32)/$(SOURCE_DIRNAME)
 SOURCE_DIR_64 = $(BUILD_DIR_64)/$(SOURCE_DIRNAME)
@@ -75,10 +83,6 @@
 GIT_URL_DEFAULT		= $(GIT_URL_SET:yes=$(POUND_SIGN))
 $(GIT_URL_DEFAULT)	GIT_URL=$(XORG_GIT_URL)/$(SOURCE_TARBALL_DIR)/$(MODULE_NAME).git
 
-
-BUILD_DIR_32 = build_32
-BUILD_DIR_64 = build_64
-
 # Set default build type to 32-bit if not set in module makefile
 BUILD_TYPES_DEFAULT	= $(BUILD_TYPES_SET:yes=$(POUND_SIGN))
 $(BUILD_TYPES_DEFAULT)	BUILD_TYPES=32
@@ -106,98 +110,74 @@
 					$(MODULE_ADD_INSTALL_TARGETS)
 
 # Additional flags to pass to make in 32-bit & 64-bit builds
-BUILD_DIR_32_FLAGS= BUILD_DIR=$(BUILD_DIR_32) BUILD_TYPE=32
-
-BUILD_DIR_64_FLAGS= BUILD_DIR=$(BUILD_DIR_64) BUILD_TYPE=64 \
-	LIBSUBDIR=/$(SUBDIR64) ARCHLIBSUBDIR=/$(SUBDIR64)
-
-BUILD_32_FLAGS= $(BUILD_DIR_32_FLAGS) ARCH_FLAGS="$(ARCH32_FLAGS)" \
+BUILD_32_FLAGS= ARCH_FLAGS="$(ARCH32_FLAGS)" \
 	$(MODTYPE_BUILD_32_FLAGS) $(MODULE_BUILD_32_FLAGS)
 
-BUILD_64_FLAGS= $(BUILD_DIR_64_FLAGS) ARCH_FLAGS="$(ARCH64_FLAGS)" \
+BUILD_64_FLAGS= ARCH_FLAGS="$(ARCH64_FLAGS)" \
 	$(MODTYPE_BUILD_64_FLAGS) $(MODULE_BUILD_64_FLAGS)
 
-all: $(BUILD_TYPES:%=source_%) $(BUILD_TYPES:%=build_%)
-all_32: source_32 configure_32 build_32
-all_64: source_64 configure_64 build_64
-
-clean: $(BUILD_TYPES:%=clean_%) 
+all: $(BUILD_TYPES:%=build_%)
+all_%: build_%
 
-clean_32:
-	-rm -rf $(BUILD_DIR_32)
+CLEAN_RULES = $(BUILD_TYPES:%=clean_%)
+clean: $(CLEAN_RULES)
+.PARALLEL: $(CLEAN_RULES)
 
-clean_64:
-	-rm -rf $(BUILD_DIR_64)
+# Remove directories with both styles of naming
+$(CLEAN_RULES):
+	-rm -rf $(BUILD_DIR_$(@:clean_%=%)) $(@:clean_%=build_%)
 
 # Tell dmake not to remove and create source in parallel
 .NOPARALLEL: clean source
 .NOPARALLEL: clean_$(BUILD_TYPE) source_$(BUILD_TYPE)
 
-source: $(BUILD_TYPES:%=source_%)
-
-source_gen: $(SOURCE_TARGETS)
+SOURCE_RULES = $(BUILD_TYPES:%=source_%)
+source: $(SOURCE_RULES)
+.PARALLEL: $(SOURCE_RULES)
 
-source_32: $(SOURCE_DIR_32)/$(UNPACK_FILE)
-$(SOURCE_DIR_32)/$(UNPACK_FILE):
-	$(MAKE) $(MAKEFLAGS) $(BUILD_DIR_32_FLAGS) source_gen
+source-gen: $(SOURCE_TARGETS)
+
+$(SOURCE_RULES):
+	$(MAKE) $(MAKEFLAGS) BUILD_TYPE="$(@:source_%=%)" source-gen
 
-source_64: $(SOURCE_DIR_64)/$(UNPACK_FILE)
-$(SOURCE_DIR_64)/$(UNPACK_FILE):
-	$(MAKE) $(MAKEFLAGS) $(BUILD_DIR_64_FLAGS) source_gen
+CONFIGURE_RULES = $(BUILD_TYPES:%=configure_%)
+configure: $(CONFIGURE_RULES)
+.PARALLEL: $(CONFIGURE_RULES)
 
-configure: $(BUILD_TYPES:%=configure_%)
+configure-gen: source-gen $(CONFIGURE_TARGETS)
 
-configure_gen: $(CONFIGURE_TARGETS)
-
-configure_32: source_32
-	$(MAKE) $(MAKEFLAGS) $(BUILD_32_FLAGS) configure_gen
+$(CONFIGURE_RULES):
+	$(MAKE) $(MAKEFLAGS) BUILD_TYPE="$(@:configure_%=%)" \
+	 $(BUILD_$(@:configure_%=%)_FLAGS) configure-gen
 
-configure_64: source_64
-	$(MAKE) $(MAKEFLAGS) $(BUILD_64_FLAGS) configure_gen
-
-build: $(BUILD_TYPES:%=build_%)
+BUILD_RULES = $(BUILD_TYPES:%=build_%)
+build: $(BUILD_RULES)
+.PARALLEL: $(BUILD_RULES)
 
-build_gen: $(BUILD_TARGETS)
-
-build_32: configure_32
-	$(MAKE) $(MAKEFLAGS) $(BUILD_32_FLAGS) build_gen
+build-gen: configure-gen $(BUILD_TARGETS)
 
-build_64: configure_64
-	$(MAKE) $(MAKEFLAGS) $(BUILD_64_FLAGS) build_gen
-
-install: $(BUILD_TYPES:%=install_%)
+$(BUILD_RULES):
+	$(MAKE) $(MAKEFLAGS) BUILD_TYPE="$(@:build_%=%)" \
+	 $(BUILD_$(@:build_%=%)_FLAGS) build-gen
 
-install_gen: $(INSTALL_TARGETS) install_license install_pkgconfig_uninstalled
+INSTALL_RULES = $(BUILD_TYPES:%=install_%)
+install: $(INSTALL_RULES)
 
-install_32: build_32
-	$(MAKE) $(MAKEFLAGS) $(BUILD_32_FLAGS) install_gen
+install-gen: build-gen $(INSTALL_TARGETS) install_license install_pkgconfig_uninstalled
 
-install_64: build_64
-	$(MAKE) $(MAKEFLAGS) $(BUILD_64_FLAGS) install_gen
+$(INSTALL_RULES):
+	$(MAKE) $(MAKEFLAGS) BUILD_TYPE="$(@:install_%=%)" \
+	 $(BUILD_$(@:install_%=%)_FLAGS) install-gen
 
 DEBUG_BUILD_FLAGS = BUILD_DEBUG=yes
 
-debug-build:	debug
-debug-build_32:	debug_32
-debug-build_64:	debug_64
-
-debug:
-	$(MAKE) $(MAKEFLAGS) all $(DEBUG_BUILD_FLAGS)
-
-debug_32:
-	$(MAKE) $(MAKEFLAGS) all_32 $(DEBUG_BUILD_FLAGS) 
+# Allow adding "debug-" prefix to rules like build_32, install, etc.
+debug-%:
+	$(MAKE) $(MAKEFLAGS) $(@:debug-%=%) $(DEBUG_BUILD_FLAGS)
 
-debug_64:
-	$(MAKE) $(MAKEFLAGS) all_64 $(DEBUG_BUILD_FLAGS)
-
-debug-install:
-	$(MAKE) $(MAKEFLAGS) install $(DEBUG_BUILD_FLAGS)
-
-debug-install_32:
-	$(MAKE) $(MAKEFLAGS) install_32 $(DEBUG_BUILD_FLAGS)
-
-debug-install_64:
-	$(MAKE) $(MAKEFLAGS) install $(DEBUG_BUILD_FLAGS)
+# Allow debug_XX to run "make all_XX" with debug flags (including without _XX)
+debug%:
+	$(MAKE) $(MAKEFLAGS) $(@:debug%=all%) $(DEBUG_BUILD_FLAGS)
 
 
 ### Source tarballs & downloading if necessary
@@ -309,7 +289,9 @@
 
 SOURCE_DEPS = $(SOURCE_TARBALL) $(MODTYPE_SOURCE_DEPS) $(MODULE_SOURCE_DEPS)
 
-default_source: $(SOURCE_DEPS)
+default_source: $(UNPACK_TARGET)
+
+$(UNPACK_TARGET): $(SOURCE_DEPS)
 	mkdir -p $(BUILD_DIR)
 	@ if [[ "$(SOURCE_TARBALL_NAME)" != "NONE" ]] ; then \
 	  if [[ "$(MODULE_VERSION)" = "git" ]] ; then \
@@ -334,9 +316,14 @@
 	if [[ "$(SOURCE_PATCHES)" != "" ]] ; then \
 	    for p in $(SOURCE_PATCHES) x ; do \
 	        if [[ "$$p" != "x" ]] ; then \
-		    PATCH_CMD="$$(print $$p | awk -F, '{if (NF > 1) FLAGS = $$2; else FLAGS="-p0" ; printf "gpatch -d $(SOURCE_DIR) %s < %s\n", FLAGS, $$1}')" ; \
-		    print "$${PATCH_CMD}" ; \
-		    eval $${PATCH_CMD} ; \
+		    patch_file="$${p%,*}" ; \
+		    if [[ "$$p" =~ "," ]] ; then \
+			patch_flags="$${p/*,}" ; \
+		    else \
+			patch_flags="-p0" ; \
+		    fi ; \
+		    ($(START_CMD_ECHO) ; \
+		     gpatch -d $(SOURCE_DIR) $${patch_flags} < "$${patch_file}" ) ; \
 		fi ; \
 	    done ; \
 	fi ; \
@@ -369,7 +356,7 @@
 	AUTOMAKE="$(AUTOMAKE_PATH)"
 
 # Dependencies for running configure to make a Makefile
-CONFIGURE_DEPS = $(UNPACK_TARGET) \
+CONFIGURE_DEPS = $(SOURCE_TARGETS) \
 	$(MODTYPE_CONFIGURE_DEPS) $(MODULE_CONFIGURE_DEPS)
 
 # Command line options to GNU autoconf configure script
@@ -445,7 +432,10 @@
 DEFAULT_BUILD_MAKEFLAGS=$(MODTYPE_MAKEFLAGS) $(MODULE_MAKEFLAGS) \
 	$(MODTYPE_BUILD_MAKEFLAGS) $(MODULE_BUILD_MAKEFLAGS)
 
-default_build: $(UNPACK_TARGET) $(CONFIGURE_TARGETS) $(MODTYPE_BUILD_DEPS) $(MODULE_BUILD_DEPS) $(MODULE_MAKE)
+# Dependencies for make build step
+BUILD_DEPS = $(SOURCE_TARGETS) $(CONFIGURE_TARGETS) $(MODTYPE_BUILD_DEPS) $(MODULE_BUILD_DEPS) $(MODULE_MAKE)
+
+default_build: $(BUILD_DEPS)
 	(cd $(SOURCE_DIR) ; \
 	 $(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS))
 
@@ -542,7 +532,7 @@
 $(XPROTO_DEP):
 	@print "$(XPROTO_DEP) not found..."
 	@print "Installing dependency proto/x11proto"
-	(cd $(TOP)/proto/x11proto ; make install)
+	(cd $(TOP)/proto/x11proto ; $(MAKE) $(MAKEFLAGS) install)
 
 ### Useful rules for maintaining patch sets
 
@@ -552,19 +542,19 @@
 regen-patches: 
 	CUR_LIST=""
 	rm -rf tmp-regen
-	make SOURCE_PATCHES="$(CUR_LIST)" BUILD_DIR=tmp-regen SUNTOUCHED_MANPAGES="" source_gen
+	$(MAKE) SOURCE_PATCHES="$(CUR_LIST)" BUILD_DIR=tmp-regen SUNTOUCHED_MANPAGES="" source-gen
 	mkdir -p new
 	for f in $(SOURCE_PATCHES) ; do \
-	    p=$$(print $$f | sed 's/,.*$$//') ; \
+	    p=$${f%,*} ; \
 	    print '=================' $$p ; \
 	    rm -rf prev ; \
 	    mv tmp-regen prev ; \
-	    $(MAKE) SOURCE_PATCHES="$${CUR_LIST} $$f" BUILD_DIR=tmp-regen SUNTOUCHED_MANPAGES="" source_gen ; \
+	    $(MAKE) SOURCE_PATCHES="$${CUR_LIST} $$f" BUILD_DIR=tmp-regen SUNTOUCHED_MANPAGES="" source-gen ; \
 	    awk '/^--- /	{exit} \
 		 /^diff -u/	{exit} \
 			 	{print}' $$p > new/$$p ; \
 	    gdiff -urp -x '*~' -x '*.orig' ./prev ./tmp-regen \
-		| sed -e 's% \./prev$(SOURCE_DIR)/% %' -e 's% \./tmp-regen$(SOURCE_DIR)/% %' \
+		| sed -e 's% \./prev/$(SOURCE_DIRNAME)/% %' -e 's% \./tmp-regen/$(SOURCE_DIRNAME)/% %' \
 		| grep -v '^Common subdirectories:' \
 		| grep -v '^Only in ' \
 		>> new/$$p ; \
@@ -572,14 +562,16 @@
 	done
 	rm -rf tmp-regen
 
+# Derive directory name relative to open-src
+THIS_MODULE:sh=echo ${PWD} | sed 's|.*/open-src/||'
+
 # Allows running "make list-patches" to get a list of all patches we 
 # currently apply in our builds
 list-patches:
-	@THIS_MODULE=$$(print $(PWD) | sed 's|.*/open-src/||') ; \
-	if [[ "$(SOURCE_PATCHES)" != "" ]] ; then \
+	@if [[ "$(SOURCE_PATCHES)" != "" ]] ; then \
 	    for p in $(SOURCE_PATCHES) x ; do \
 		if [[ "$$p" != "x" ]] ; then \
-	            print "$${THIS_MODULE}/$$p" | sed 's/,-p[0-9]$$//' ;  \
+	            print "$(THIS_MODULE)/$${p%,*}" ;  \
 		fi ; \
 	    done ; \
 	fi
@@ -591,25 +583,24 @@
 # and set LICENSE_FILE_SET=yes
 # A file in the same directory as the Makefile takes precedence
 # over one that is delivered in the package.
-# For additional license files, set EXTRA_LICENSE_FILES to a list of
-# licenses to copy
 LICENSE_FILE_DEFAULT	= $(LICENSE_FILE_SET:yes=$(POUND_SIGN))
 $(LICENSE_FILE_DEFAULT)	LICENSE_FILE=COPYING
 
-install_license:
-	@ THIS_MODULE="$$(echo $(PWD) | sed 's|.*/open-src/||')" ; \
-	$(START_CMD_ECHO) ; \
+MODULE_LICENSE_DESTDIR	= $(LICENSE_DEST)/$(THIS_MODULE)
+
+install_license: $(MODULE_LICENSE_DESTDIR)/COPYING
+
+$(MODULE_LICENSE_DESTDIR):
+	mkdir -p $@
+
+$(MODULE_LICENSE_DESTDIR)/COPYING: $(MODULE_LICENSE_DESTDIR) $(SOURCE_TARGETS)
+	@ $(START_CMD_ECHO) ; \
 	if [[ -f $(LICENSE_FILE) ]] ; then \
 	    LICENSE_TO_COPY="$(LICENSE_FILE)" ; \
 	elif [[ -f $(SOURCE_DIR)/$(LICENSE_FILE) ]] ; then \
 	    LICENSE_TO_COPY="$(SOURCE_DIR)/$(LICENSE_FILE)" ; \
 	fi ; \
 	if [[ "$${LICENSE_TO_COPY}" != "" ]] ; then \
-	    mkdir -p $(LICENSE_DEST)/$${THIS_MODULE}/ ; \
-	    cp -pf $${LICENSE_TO_COPY} \
-		$(LICENSE_DEST)/$${THIS_MODULE}/COPYING ; \
-	fi ; \
-	if [[ "$(EXTRA_LICENSES)" != "" ]] ; then \
-	    mkdir -p $(LICENSE_DEST)/$${THIS_MODULE}/ ; \
-	    cp -pf $(EXTRA_LICENSES) $(LICENSE_DEST)/$${THIS_MODULE} ; \
+	    rm -f $@ ; \
+	    cp -pf $${LICENSE_TO_COPY} $@ ; \
 	fi
--- a/open-src/common/Makefile.init	Mon Mar 08 11:03:13 2010 -0800
+++ b/open-src/common/Makefile.init	Thu Mar 11 15:52:00 2010 -0800
@@ -69,9 +69,13 @@
 SUBDIR32_i386	= i86
 SUBDIR64_i386 	= amd64
 
-SUBDIR32 = $(SUBDIR32_$(MACH))
-SUBDIR64 = $(SUBDIR64_$(MACH))
+SUBDIR32	= $(SUBDIR32_$(MACH))
+SUBDIR64	= $(SUBDIR64_$(MACH))
 
+LIBSUBDIR	= $(LIBSUBDIR_$(BUILD_TYPE))
+LIBSUBDIR_32	= # None
+LIBSUBDIR_64	= /$(SUBDIR64)
+ARCHLIBSUBDIR	= $(LIBSUBDIR)
 
 ### Default compiler & options
 
--- a/open-src/common/Makefile.subdirs	Mon Mar 08 11:03:13 2010 -0800
+++ b/open-src/common/Makefile.subdirs	Thu Mar 11 15:52:00 2010 -0800
@@ -1,7 +1,7 @@
 # -*- Makefile -*- rules commonly shared among X consolidation open source dirs
 # Makefile.subdirs has rules for recursively iterating through module subdirs
 #
-# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
 # Use is subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -57,11 +57,7 @@
 		    	$(MAKE) $(MAKEFLAGS) subdirs OS_TARGET=clean OS_SUBDIRS=$$i ; \
 		    else ; \
 		    	print "## removing obsolete build directories in open-src/$(DIRNAME)$$i..."; \
-			($(START_CMD_ECHO) ; \
-			 cd $$i && rm -rf build_32 build_64 ) ; \
-			if [[ -d $$i/SCCS ]] ; then \
-				($(START_CMD_ECHO) ; rmdir $$i/SCCS) ; \
-			fi ; \
+			($(START_CMD_ECHO) ; cd $$i && rm -rf build* ) ; \
 			($(START_CMD_ECHO) ; rmdir $$i ) ; \
 		    fi ; \
 		fi ; \
--- a/open-src/data/smf-rbac/Makefile	Mon Mar 08 11:03:13 2010 -0800
+++ b/open-src/data/smf-rbac/Makefile	Thu Mar 11 15:52:00 2010 -0800
@@ -33,32 +33,25 @@
 MODULE_VERSION=NONE
 SOURCE_TARBALL_NAME=NONE
 SOURCE_TARBALL_NAME_SET=yes
+SOURCE_TARGETS=
+SOURCE_TARGETS_SET=yes
 
-# Build per-arch, not per-bitsize
-BUILD_TYPES_SET=yes
-BUILD_TYPES=$(MACH)
+CONFIGURE_TARGETS=
+CONFIGURE_TARGETS_SET=yes
 
 BUILD_TARGETS = x11-server.xml check
 BUILD_TARGETS_SET=yes
 
-INSTALL_TARGETS =
+INSTALL_TARGETS = install_common install_ogl-select
 INSTALL_TARGETS_SET=yes
 
 ### Include common rulesets
 include ../Makefile.inc
 
-source_i386:
-
-source_sparc:
-
 SUN_SMF_MANIFEST_DIR=/var/svc/manifest/application
 SUN_SMF_METHOD_DIR=/lib/svc/method
 DESTDIR=$(PROTODIR)
 
-build_common: $(BUILD_TARGETS)
-build_sparc: build_common
-build_i386: build_common
-
 DEFAULT_XSERVER=$(X11_BIN_DIR)/Xorg
 
 x11-server.xml: x11-server.xml.in
@@ -71,8 +64,7 @@
 clean_common:
 	$(RM) x11-server.xml
 
-clean_sparc: clean_common
-clean_i386: clean_common
+clean: clean_common
 
 RBAC_ATTR_FILES=auth_attr exec_attr prof_attr 
 RBAC_AUTH_HELP=X11States.html FontStates.html
@@ -94,9 +86,6 @@
 	cp -pf $(RBAC_PROFILE_HELP) $(DESTDIR)/usr/lib/help/profiles/locale/C
 	cp -pf ogl-select.man $(DESTDIR)$(X11_DIR)/share/man/man1/ogl-select.1
 
-install_sparc: install_common install_ogl-select
-install_i386: install_common install_ogl-select
-
 OGL_VENDOR_SCRIPTS_sparc=sun_vendor_select
 OGL_VENDOR_SCRIPTS_i386=nvidia_vendor_select
 OGL_VENDOR_SCRIPTS=mesa_vendor_select $(OGL_VENDOR_SCRIPTS_$(MACH))
--- a/open-src/driver/xf86-input-hotkey/Makefile	Mon Mar 08 11:03:13 2010 -0800
+++ b/open-src/driver/xf86-input-hotkey/Makefile	Thu Mar 11 15:52:00 2010 -0800
@@ -43,7 +43,7 @@
 
 # Since we don't have a configure script, pass configure flags to make
 MODULE_MAKEFLAGS=$(CONFIG_ENV) PREFIX=$(MODULE_PREFIX) \
-	MODULEDIR=/lib$(X11_SERVERMODS_SUBDIR)
+	MODULEDIR=/lib$(X11_SERVERMODS_SUBDIR) ARCHLIBSUBDIR="$(ARCHLIBSUBDIR)"
 
 include ../Makefile.inc
 
--- a/open-src/font/Makefile.bdf	Mon Mar 08 11:03:13 2010 -0800
+++ b/open-src/font/Makefile.bdf	Thu Mar 11 15:52:00 2010 -0800
@@ -100,8 +100,6 @@
 MODULE_CONFIG_OPTS = $($(BUILD_TYPE)_ENCODING_CONFIG_OPTS) \
 	--with-fontdir="$(MODULE_FONTDIR)"
 
-BUILD_DIR = build_$(BUILD_TYPE)
-
 core_INSTALL_CORE_FONTS=yes
 # All other build types are left unset for "no"
 MODTYPE_MAKEFLAGS_DEFAULT=$($(BUILD_TYPE)_INSTALL_CORE_FONTS:yes=$(POUND_SIGN))
@@ -112,45 +110,11 @@
 ### Include common rulesets
 include ../Makefile.inc
 
-CLEAN_RULES = $(BUILD_TYPES:%=clean_%)
-
-$(CLEAN_RULES):
-	-rm -rf $(@:clean_%=build_%)
-
 # Clean up old directories when we switch to the new rules
 clean: clean_32
 
-.PARALLEL: $(CLEAN_RULES) clean_32
-
-SOURCE_RULES = $(BUILD_TYPES:%=source_%)
-
-source_%: build_%/$(SOURCE_DIRNAME)/$(UNPACK_FILE)
-
-build_%/$(SOURCE_DIRNAME)/$(UNPACK_FILE):
-	$(MAKE) $(MAKEFLAGS) BUILD_TYPE="$(@:build_%/$(SOURCE_DIRNAME)/$(UNPACK_FILE)=%)" $(SOURCE_TARGETS)
-
-.PARALLEL: $(SOURCE_RULES)
-
-CONFIGURE_RULES = $(BUILD_TYPES:%=configure_%)
-
-configure_%: source_%
-	$(MAKE) $(MAKEFLAGS) BUILD_TYPE="$(@:configure_%=%)" $(CONFIGURE_TARGETS)
-
-.PARALLEL: $(CONFIGURE_RULES)
-
-BUILD_RULES = $(BUILD_TYPES:%=build_%)
-
-build_%: configure_% 
-	$(MAKE) $(MAKEFLAGS) BUILD_TYPE="$(@:build_%=%)" $(BUILD_TARGETS)
-
-.PARALLEL: $(BUILD_RULES)
-
-INSTALL_RULES = $(BUILD_TYPES:%=install_%)
-
-install_%: build_%
-	$(MAKE) $(MAKEFLAGS) BUILD_TYPE="$(@:install_%=%)" $(INSTALL_TARGETS)
-
-.PARALLEL: $(INSTALL_RULES) install_license
+clean_32:
+	-rm -rf build_32
 
 configure_$(BUILD_TYPE): $(UNPACK_TARGET)
 build_$(BUILD_TYPE): configure_$(BUILD_TYPE)
--- a/open-src/lib/hwc/Makefile	Mon Mar 08 11:03:13 2010 -0800
+++ b/open-src/lib/hwc/Makefile	Thu Mar 11 15:52:00 2010 -0800
@@ -2,7 +2,7 @@
 #
 # hwc server Makefile
 #
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
 # Use is subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -43,5 +43,6 @@
 CONFIGURE_TARGETS_SET=yes
 
 MODULE_BUILD_ENV=$(CONFIG_ENV)
+MODULE_INSTALL_MAKEFLAGS = ARCHLIBSUBDIR="$(ARCHLIBSUBDIR)"
 
 include ../Makefile.inc
--- a/open-src/lib/libX11/Makefile	Mon Mar 08 11:03:13 2010 -0800
+++ b/open-src/lib/libX11/Makefile	Thu Mar 11 15:52:00 2010 -0800
@@ -147,19 +147,18 @@
 # Merge in additional sources from sun-src directory
 ADDITIONAL_SOURCE_DIR=sun-src
 
-include ../Makefile.inc
-
 # Install additional headers we need in other parts of the build or ship in
 # packages, but which X.Org doesn't
-install_32: install_extra_headers
+MODULE_ADD_INSTALL_TARGETS_32 = install_extra_headers
+MODULE_ADD_INSTALL_TARGETS = $(MODULE_ADD_INSTALL_TARGETS_$(BUILD_TYPE))
 
-install_extra_headers: build_32
+include ../Makefile.inc
+
+install_extra_headers: $(INSTALL_DEPS)
 	mkdir -p $(PROTODIR)$(X11_INCLUDES_DIR)/X11/extensions
 	cp -pf sun-src/include/X11/Xvarargs.h \
 		$(PROTODIR)$(X11_INCLUDES_DIR)/X11/
 	cp -pf sun-src/include/X11/extensions/XInteractive.h \
 		$(PROTODIR)$(X11_INCLUDES_DIR)/X11/extensions/
-	cp -pf $(BUILD_DIR_32)$(SOURCE_DIR)/src/ks_tables.h \
-		$(PROTODIR)$(X11_INCLUDES_DIR)/
-	cp -pf $(BUILD_DIR_32)$(SOURCE_DIR)/src/xlibi18n/Xlc*.h \
+	cp -pf $(SOURCE_DIR)/src/xlibi18n/Xlc*.h \
 		$(PROTODIR)$(X11_INCLUDES_DIR)/X11/
--- a/open-src/lib/liblbxutil/Makefile	Mon Mar 08 11:03:13 2010 -0800
+++ b/open-src/lib/liblbxutil/Makefile	Thu Mar 11 15:52:00 2010 -0800
@@ -63,3 +63,6 @@
 
 # Clean up old 64-bit builds from before we stopped building them
 clean: clean_64
+
+clean_64:
+	-rm -rf build_64
--- a/open-src/xserver/xvnc/Makefile	Mon Mar 08 11:03:13 2010 -0800
+++ b/open-src/xserver/xvnc/Makefile	Thu Mar 11 15:52:00 2010 -0800
@@ -68,7 +68,7 @@
 	solaris-port.patch
 
 # Man pages to apply Sun footer to & attributes to list
-# Common ones are here - source_gen target below has more with
+# Common ones are here - Xvnc_source_fini target below has more with
 # different attributes/path set
 SUNTOUCHED_MANPAGES= \
 	unix/vncconfig/vncconfig.man unix/vncpasswd/vncpasswd.man \
@@ -114,9 +114,14 @@
 	@if [ "x$(XORG_SOURCE_PATCHES)" != "x" ] ; then \
 	    for p in $(XORG_SOURCE_PATCHES) x ; do \
 	        if [ "$$p" != "x" ] ; then \
-		    PATCH_CMD=`echo $$p | awk -F, '{if (NF > 1) FLAGS = $$2; else FLAGS="-p0" ; printf "gpatch -d $(XORG_SOURCE_DIR) %s < ../xorg/%s\n", FLAGS, $$1}'` ; \
-		    echo "$${PATCH_CMD}" ; \
-		    eval $${PATCH_CMD} ; \
+		    patch_file="$${p%,*}" ; \
+		    if [[ "$$p" =~ "," ]] ; then \
+			patch_flags="$${p/*,}" ; \
+		    else \
+			patch_flags="-p0" ; \
+		    fi ; \
+		    ($(START_CMD_ECHO) ; \
+		     gpatch -d $(XORG_SOURCE_DIR) $${patch_flags} < "../xorg/$${patch_file}" ) ; \
 		fi ; \
 	    done ; \
 	fi
@@ -177,7 +182,7 @@
 MODULE_MAKEFLAGS = PROTODIR=$(PROTODIR)
 
 # Run configure scripts for vnc sources
-$(SOURCE_DIR)/unix/Makefile: $(UNPACK_TARGET)
+$(SOURCE_DIR)/unix/Makefile: $(SOURCE_TARGETS)
 	(cd $(SOURCE_DIR)/common && \
 		$(AUTORECONF_ENV) autoreconf --install --force && \
 		$(CONFIG_ENV) $(SHELL) ./configure $(VNC_CONFIG_OPTS) )
@@ -187,7 +192,7 @@
 
 
 # Run configure script for Xvnc
-$(XORG_BUILD_DIR)/Makefile: $(UNPACK_TARGET)
+$(XORG_BUILD_DIR)/Makefile: $(SOURCE_TARGETS)
 	(cd $(XORG_BUILD_DIR) &&  \
 		$(AUTORECONF_ENV) autoreconf --install --force && \
 		$(CONFIG_ENV) $(SHELL) ./configure $(XVNC_CONFIG_OPTS) )
@@ -234,7 +239,7 @@
 JAVA_MAKEFILE = $(JAVA_SOURCE_DIR)/Makefile
 BUILD_TARGETS += $(JAVA_MAKEFILE)
 
-$(JAVA_MAKEFILE): $(UNPACK_TARGETS)
+$(JAVA_MAKEFILE): $(SOURCE_TARGETS)
 	cp $(JAVA_SOURCE_DIR)/com/tigervnc/vncviewer/Makefile $@
 	gpatch -d $(SOURCE_DIR) -p0 < applet-build.patch
 	gpatch -d $(SOURCE_DIR) -p0 < icon.patch
@@ -242,7 +247,7 @@
 
 java_build: $(JAVA_JAR_FILE)
 
-$(JAVA_JAR_FILE): $(UNPACK_TARGETS) $(JAVA_MAKEFILE)
+$(JAVA_JAR_FILE): $(SOURCE_TARGETS) $(JAVA_MAKEFILE)
 	(cd $(JAVA_SOURCE_DIR) ; \
 	 $(BUILD_ENV) $(MAKE) $(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS))