open-src/common/Makefile.inc
changeset 606 068c11b419c9
parent 599 c195ef96916e
child 705 24ca414edbff
--- a/open-src/common/Makefile.inc	Sat Jan 10 10:35:32 2009 -0800
+++ b/open-src/common/Makefile.inc	Thu Jan 15 12:55:00 2009 -0800
@@ -1,6 +1,6 @@
 # -*- Makefile -*- rules commonly shared among X consolidation open source dirs
 #
-# Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
 # Use subject to license terms.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
@@ -28,7 +28,7 @@
 # or other dealings in this Software without prior written authorization
 # of the copyright holder.
 #
-# @(#)Makefile.inc	1.97	08/12/19
+# @(#)Makefile.inc	1.98	09/01/14
 #
 
 ### Default rules
@@ -56,6 +56,8 @@
 $(SOURCE_DIRNAME_DEFAULT)	SOURCE_DIRNAME=$(MODULE_NAME)-$(MODULE_VERSION)
 
 SOURCE_DIR = $(BUILD_DIR)/$(SOURCE_DIRNAME)
+SOURCE_DIR_32 = $(BUILD_DIR_32)/$(SOURCE_DIRNAME)
+SOURCE_DIR_64 = $(BUILD_DIR_64)/$(SOURCE_DIRNAME)
 
 # Set default tarball if not set in module makefile
 SOURCE_TARBALL_NAME_DEFAULT	= $(SOURCE_TARBALL_NAME_SET:yes=$(POUND_SIGN))
@@ -126,12 +128,12 @@
 
 source_gen:: $(SOURCE_TARGETS)
 
-source_32: $(BUILD_DIR_32)/.unpack_done
-$(BUILD_DIR_32)/.unpack_done:
+source_32: $(SOURCE_DIR_32)/$(UNPACK_FILE)
+$(SOURCE_DIR_32)/$(UNPACK_FILE):
 	$(MAKE) $(MAKEFLAGS) BUILD_DIR=$(BUILD_DIR_32) source_gen
 
-source_64: $(BUILD_DIR_64)/.unpack_done
-$(BUILD_DIR_64)/.unpack_done:
+source_64: $(SOURCE_DIR_64)/$(UNPACK_FILE)
+$(SOURCE_DIR_64)/$(UNPACK_FILE):
 	$(MAKE) $(MAKEFLAGS) BUILD_DIR=$(BUILD_DIR_64) source_gen
 
 configure: $(BUILD_TYPES:%=configure_%)
@@ -156,7 +158,7 @@
 
 install: $(BUILD_TYPES:%=install_%)
 
-install_gen:: $(INSTALL_TARGETS) install_license
+install_gen:: $(INSTALL_TARGETS) install_license install_pkgconfig_uninstalled
 
 install_32:: build_32
 	$(MAKE) $(MAKEFLAGS) $(BUILD_32_FLAGS) install_gen
@@ -235,7 +237,6 @@
 	-e 's|Requires.private: .*$$||;'
 
 #	-e 's|(Requires: .*)\bx11\b|$$1|;' \
-#	-e 's|^prefix=@prefix@|prefix=\$$\{top_builddir\}@prefix@|'
 
 SUNTOUCH_MAN_FLAGS = \
 	-a '{Availability, $(SUN_PACKAGE)}' \
@@ -262,8 +263,8 @@
 	  if [[ ! -x $(LNDIR) ]] ; then \
 	    (cd $(TOP)/util/lndir && $(MAKE) $(MAKEFLAGS) install) ; \
 	  fi ; \
-	  print "cd $(SOURCE_DIR) && $(LNDIR) ../../$(ADDITIONAL_SOURCE_DIR)" ; \
-	  (cd $(SOURCE_DIR) && $(LNDIR) ../../$(ADDITIONAL_SOURCE_DIR) ) ; \
+	  (PS4="" ; set -x ; \
+	   cd $(SOURCE_DIR) && $(LNDIR) ../../$(ADDITIONAL_SOURCE_DIR) ) ; \
 	fi ; \
 	if [[ "$(SOURCE_PATCHES)" != "" ]] ; then \
 	    for p in $(SOURCE_PATCHES) x ; do \
@@ -275,20 +276,18 @@
 	    done ; \
 	fi ; \
 	if [[ "$(SUNTOUCHED_MANPAGES)" != "" ]] ; then \
-	    print "/usr/perl5/bin/perl $(TOP)/common/suntouch-manpages.pl \
-		$(SUNTOUCH_MAN_FLAGS) $(SUNTOUCHED_MANPAGES)" ; \
-	    (cd $(SOURCE_DIR) && \
+	    (PS4="" ; set -x ; \
+		cd $(SOURCE_DIR) && \
 		/usr/perl5/bin/perl $(TOP)/common/suntouch-manpages.pl \
 		$(SUNTOUCH_MAN_FLAGS) $(SUNTOUCHED_MANPAGES) ) ; \
 	fi ; \
 	if [[ "$(FIX_PC_FILES)" != "" ]] ; then \
-	    print "/usr/perl5/bin/perl -i.orig -p \
-			$(FIX_PC_OPS) $(FIX_PC_FILES)" ; \
-	    (cd $(SOURCE_DIR) && \
+	    (PS4="" ; set -x ; \
+		cd $(SOURCE_DIR) && \
 		/usr/perl5/bin/perl -i.orig -p \
 			$(FIX_PC_OPS) $(FIX_PC_FILES) ); \
 	fi
-	touch $(BUILD_DIR)/$(UNPACK_FILE)
+	touch $(UNPACK_TARGET)
 
 ### Run configure scripts
 
@@ -324,7 +323,7 @@
 	-L$(PROTODIR)/usr/lib$(ARCHLIBSUBDIR) \
 	-L$(PROTODIR)$(X11_DIR)/lib$(ARCHLIBSUBDIR)
 
-DEFAULT_PKG_CONFIG_PATH=$(TOP)/common/pc-files/$(BUILD_DIR):$(PROTODIR)/usr/lib/$(ARCHLIBSUBDIR)/pkgconfig:/usr/lib$(ARCHLIBSUBDIR)/pkgconfig
+DEFAULT_PKG_CONFIG_PATH=$(TOP)/common/pc-files/$(BUILD_DIR):$(PROTODIR)$(PKGCONFIG_DIR):$(PKGCONFIG_DIR)
 
 # Set USE_DEFAULT_CONFIG_ENV=no in a Makefile to not use this default
 # autoconfig environment
@@ -390,6 +389,7 @@
 	$(MODTYPE_LD_OPTIONS) $(MODULE_LD_OPTIONS)
 
 BUILD_ENV = LD_OPTIONS='$(LD_OPTIONS)' \
+	PROTODIR='$(PROTODIR)' \
 	$(MODTYPE_BUILD_ENV) $(MODULE_BUILD_ENV)
 
 DEFAULT_BUILD_MAKEFLAGS=$(MODTYPE_MAKEFLAGS) $(MODULE_MAKEFLAGS) \
@@ -410,7 +410,7 @@
 	 $(subdir_cmd) )
 
 DEFAULT_INSTALL_MAKEFLAGS= -e DESTDIR=$(PROTODIR) \
-	pkgconfigdir=/usr/lib$(ARCHLIBSUBDIR)/pkgconfig \
+	pkgconfigdir=$(PKGCONFIG_DIR) \
 	$(MODTYPE_MAKEFLAGS) $(MODULE_MAKEFLAGS) \
 	$(MODTYPE_INSTALL_MAKEFLAGS) $(MODULE_INSTALL_MAKEFLAGS) \
 
@@ -432,6 +432,23 @@
 	 $(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_INSTALL_MAKEFLAGS) \
 	 $(subdir_cmd))
 
+# Adjust paths in pkg-config files for -uninstalled variants used during build
+UNINSTALLED_PC_OPS= \
+	-e 's|(-[LI]\s*)\$$|$$1$(PROTODIR)\$$|g;' \
+	-e 's|^sdkdir=|sdkdir=$(PROTODIR)|g;' \
+	-e 's|$(PROTODIR)\$${sdkdir}|\$${sdkdir}|g;'
+
+install_pkgconfig_uninstalled:
+	@ if [[ ! -z "$(FIX_PC_FILES)" ]] ; then \
+	    cd $(SOURCE_DIR) ; \
+	    for pcin in $(FIX_PC_FILES:.in=) ; do \
+		pc=$${pcin%%+(.pc|.in)} ; \
+		(PS4="" ; set -x ; \
+		 /usr/perl5/bin/perl -p $(UNINSTALLED_PC_OPS) $$pc.pc > \
+		    $(PROTODIR)$(PKGCONFIG_DIR)/$$(basename $${pc})-uninstalled.pc ) ; \
+	    done ; \
+	fi
+
 # Set comments in ELF binaries to help identify versions/builds
 ELF_COMMENTS = $(MODULE_NAME) $(MODULE_VERSION)
 ELF_COMMENTS += $(MODTYPE_ELF_COMMENTS)$(MODULE_ELF_COMMENTS)
@@ -476,14 +493,14 @@
 regen-patches: 
 	CUR_LIST=""
 	rm -rf tmp-regen
-	make SOURCE_PATCHES="$(CUR_LIST)" BUILD_DIR=tmp-regen 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/,.*$$//') ; \
 	    print '=================' $$p ; \
 	    rm -rf prev ; \
 	    mv tmp-regen prev ; \
-	    $(MAKE) SOURCE_PATCHES="$${CUR_LIST} $$f" BUILD_DIR=tmp-regen 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 ; \
@@ -496,6 +513,18 @@
 	done
 	rm -rf tmp-regen
 
+# 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 \
+	    for p in $(SOURCE_PATCHES) x ; do \
+		if [[ "$$p" != "x" ]] ; then \
+	            print "$${THIS_MODULE}/$$p" | sed 's/,-p[0-9]$$//' ;  \
+		fi ; \
+	    done ; \
+	fi
+
 ### Licensing files
 
 # Default license file name is COPYING (X.Org & GNU autoconf default)