1 # -*- Makefile -*- rules commonly shared among X consolidation open source dirs |
1 # -*- Makefile -*- rules commonly shared among X consolidation open source dirs |
2 # |
2 # |
3 # Copyright 2008 Sun Microsystems, Inc. All Rights Reserved. |
3 # Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. |
4 # Use subject to license terms. |
4 # Use subject to license terms. |
5 # |
5 # |
6 # Permission is hereby granted, free of charge, to any person obtaining a |
6 # Permission is hereby granted, free of charge, to any person obtaining a |
7 # copy of this software and associated documentation files (the |
7 # copy of this software and associated documentation files (the |
8 # "Software"), to deal in the Software without restriction, including |
8 # "Software"), to deal in the Software without restriction, including |
26 # Except as contained in this notice, the name of a copyright holder |
26 # Except as contained in this notice, the name of a copyright holder |
27 # shall not be used in advertising or otherwise to promote the sale, use |
27 # shall not be used in advertising or otherwise to promote the sale, use |
28 # or other dealings in this Software without prior written authorization |
28 # or other dealings in this Software without prior written authorization |
29 # of the copyright holder. |
29 # of the copyright holder. |
30 # |
30 # |
31 # @(#)Makefile.inc 1.97 08/12/19 |
31 # @(#)Makefile.inc 1.98 09/01/14 |
32 # |
32 # |
33 |
33 |
34 ### Default rules |
34 ### Default rules |
35 |
35 |
36 # Which compiler to use to build module |
36 # Which compiler to use to build module |
54 # Directory created by unpacking source, if not set in module makefile |
54 # Directory created by unpacking source, if not set in module makefile |
55 SOURCE_DIRNAME_DEFAULT = $(SOURCE_DIRNAME_SET:yes=$(POUND_SIGN)) |
55 SOURCE_DIRNAME_DEFAULT = $(SOURCE_DIRNAME_SET:yes=$(POUND_SIGN)) |
56 $(SOURCE_DIRNAME_DEFAULT) SOURCE_DIRNAME=$(MODULE_NAME)-$(MODULE_VERSION) |
56 $(SOURCE_DIRNAME_DEFAULT) SOURCE_DIRNAME=$(MODULE_NAME)-$(MODULE_VERSION) |
57 |
57 |
58 SOURCE_DIR = $(BUILD_DIR)/$(SOURCE_DIRNAME) |
58 SOURCE_DIR = $(BUILD_DIR)/$(SOURCE_DIRNAME) |
|
59 SOURCE_DIR_32 = $(BUILD_DIR_32)/$(SOURCE_DIRNAME) |
|
60 SOURCE_DIR_64 = $(BUILD_DIR_64)/$(SOURCE_DIRNAME) |
59 |
61 |
60 # Set default tarball if not set in module makefile |
62 # Set default tarball if not set in module makefile |
61 SOURCE_TARBALL_NAME_DEFAULT = $(SOURCE_TARBALL_NAME_SET:yes=$(POUND_SIGN)) |
63 SOURCE_TARBALL_NAME_DEFAULT = $(SOURCE_TARBALL_NAME_SET:yes=$(POUND_SIGN)) |
62 $(SOURCE_TARBALL_NAME_DEFAULT) SOURCE_TARBALL_NAME=$(SOURCE_DIRNAME).tar.bz2 |
64 $(SOURCE_TARBALL_NAME_DEFAULT) SOURCE_TARBALL_NAME=$(SOURCE_DIRNAME).tar.bz2 |
63 |
65 |
124 |
126 |
125 source: $(BUILD_TYPES:%=source_%) |
127 source: $(BUILD_TYPES:%=source_%) |
126 |
128 |
127 source_gen:: $(SOURCE_TARGETS) |
129 source_gen:: $(SOURCE_TARGETS) |
128 |
130 |
129 source_32: $(BUILD_DIR_32)/.unpack_done |
131 source_32: $(SOURCE_DIR_32)/$(UNPACK_FILE) |
130 $(BUILD_DIR_32)/.unpack_done: |
132 $(SOURCE_DIR_32)/$(UNPACK_FILE): |
131 $(MAKE) $(MAKEFLAGS) BUILD_DIR=$(BUILD_DIR_32) source_gen |
133 $(MAKE) $(MAKEFLAGS) BUILD_DIR=$(BUILD_DIR_32) source_gen |
132 |
134 |
133 source_64: $(BUILD_DIR_64)/.unpack_done |
135 source_64: $(SOURCE_DIR_64)/$(UNPACK_FILE) |
134 $(BUILD_DIR_64)/.unpack_done: |
136 $(SOURCE_DIR_64)/$(UNPACK_FILE): |
135 $(MAKE) $(MAKEFLAGS) BUILD_DIR=$(BUILD_DIR_64) source_gen |
137 $(MAKE) $(MAKEFLAGS) BUILD_DIR=$(BUILD_DIR_64) source_gen |
136 |
138 |
137 configure: $(BUILD_TYPES:%=configure_%) |
139 configure: $(BUILD_TYPES:%=configure_%) |
138 |
140 |
139 configure_gen: $(CONFIGURE_TARGETS) |
141 configure_gen: $(CONFIGURE_TARGETS) |
154 build_64:: |
156 build_64:: |
155 $(MAKE) $(MAKEFLAGS) LIBSUBDIR=/$(SUBDIR64) ARCHLIBSUBDIR=/$(SUBDIR64) $(BUILD_64_FLAGS) build_gen |
157 $(MAKE) $(MAKEFLAGS) LIBSUBDIR=/$(SUBDIR64) ARCHLIBSUBDIR=/$(SUBDIR64) $(BUILD_64_FLAGS) build_gen |
156 |
158 |
157 install: $(BUILD_TYPES:%=install_%) |
159 install: $(BUILD_TYPES:%=install_%) |
158 |
160 |
159 install_gen:: $(INSTALL_TARGETS) install_license |
161 install_gen:: $(INSTALL_TARGETS) install_license install_pkgconfig_uninstalled |
160 |
162 |
161 install_32:: build_32 |
163 install_32:: build_32 |
162 $(MAKE) $(MAKEFLAGS) $(BUILD_32_FLAGS) install_gen |
164 $(MAKE) $(MAKEFLAGS) $(BUILD_32_FLAGS) install_gen |
163 |
165 |
164 install_64:: build_64 |
166 install_64:: build_64 |
233 FIX_PC_OPS= \ |
235 FIX_PC_OPS= \ |
234 -e 's|-L\$${libdir}|-L\$${libdir} -R\$${libdir}|;' \ |
236 -e 's|-L\$${libdir}|-L\$${libdir} -R\$${libdir}|;' \ |
235 -e 's|Requires.private: .*$$||;' |
237 -e 's|Requires.private: .*$$||;' |
236 |
238 |
237 # -e 's|(Requires: .*)\bx11\b|$$1|;' \ |
239 # -e 's|(Requires: .*)\bx11\b|$$1|;' \ |
238 # -e 's|^prefix=@prefix@|prefix=\$$\{top_builddir\}@prefix@|' |
|
239 |
240 |
240 SUNTOUCH_MAN_FLAGS = \ |
241 SUNTOUCH_MAN_FLAGS = \ |
241 -a '{Availability, $(SUN_PACKAGE)}' \ |
242 -a '{Availability, $(SUN_PACKAGE)}' \ |
242 -a '{Interface Stability, $(MODULE_STABILITY)}' \ |
243 -a '{Interface Stability, $(MODULE_STABILITY)}' \ |
243 $(MODTYPE_SUNTOUCH_MAN_FLAGS) \ |
244 $(MODTYPE_SUNTOUCH_MAN_FLAGS) \ |
260 fi ; \ |
261 fi ; \ |
261 if [[ "$(ADDITIONAL_SOURCE_DIR)" != "" ]] ; then \ |
262 if [[ "$(ADDITIONAL_SOURCE_DIR)" != "" ]] ; then \ |
262 if [[ ! -x $(LNDIR) ]] ; then \ |
263 if [[ ! -x $(LNDIR) ]] ; then \ |
263 (cd $(TOP)/util/lndir && $(MAKE) $(MAKEFLAGS) install) ; \ |
264 (cd $(TOP)/util/lndir && $(MAKE) $(MAKEFLAGS) install) ; \ |
264 fi ; \ |
265 fi ; \ |
265 print "cd $(SOURCE_DIR) && $(LNDIR) ../../$(ADDITIONAL_SOURCE_DIR)" ; \ |
266 (PS4="" ; set -x ; \ |
266 (cd $(SOURCE_DIR) && $(LNDIR) ../../$(ADDITIONAL_SOURCE_DIR) ) ; \ |
267 cd $(SOURCE_DIR) && $(LNDIR) ../../$(ADDITIONAL_SOURCE_DIR) ) ; \ |
267 fi ; \ |
268 fi ; \ |
268 if [[ "$(SOURCE_PATCHES)" != "" ]] ; then \ |
269 if [[ "$(SOURCE_PATCHES)" != "" ]] ; then \ |
269 for p in $(SOURCE_PATCHES) x ; do \ |
270 for p in $(SOURCE_PATCHES) x ; do \ |
270 if [[ "$$p" != "x" ]] ; then \ |
271 if [[ "$$p" != "x" ]] ; then \ |
271 PATCH_CMD="$$(print $$p | awk -F, '{if (NF > 1) FLAGS = $$2; else FLAGS="-p0" ; printf "gpatch -d $(SOURCE_DIR) %s < %s\n", FLAGS, $$1}')" ; \ |
272 PATCH_CMD="$$(print $$p | awk -F, '{if (NF > 1) FLAGS = $$2; else FLAGS="-p0" ; printf "gpatch -d $(SOURCE_DIR) %s < %s\n", FLAGS, $$1}')" ; \ |
273 eval $${PATCH_CMD} ; \ |
274 eval $${PATCH_CMD} ; \ |
274 fi ; \ |
275 fi ; \ |
275 done ; \ |
276 done ; \ |
276 fi ; \ |
277 fi ; \ |
277 if [[ "$(SUNTOUCHED_MANPAGES)" != "" ]] ; then \ |
278 if [[ "$(SUNTOUCHED_MANPAGES)" != "" ]] ; then \ |
278 print "/usr/perl5/bin/perl $(TOP)/common/suntouch-manpages.pl \ |
279 (PS4="" ; set -x ; \ |
279 $(SUNTOUCH_MAN_FLAGS) $(SUNTOUCHED_MANPAGES)" ; \ |
280 cd $(SOURCE_DIR) && \ |
280 (cd $(SOURCE_DIR) && \ |
|
281 /usr/perl5/bin/perl $(TOP)/common/suntouch-manpages.pl \ |
281 /usr/perl5/bin/perl $(TOP)/common/suntouch-manpages.pl \ |
282 $(SUNTOUCH_MAN_FLAGS) $(SUNTOUCHED_MANPAGES) ) ; \ |
282 $(SUNTOUCH_MAN_FLAGS) $(SUNTOUCHED_MANPAGES) ) ; \ |
283 fi ; \ |
283 fi ; \ |
284 if [[ "$(FIX_PC_FILES)" != "" ]] ; then \ |
284 if [[ "$(FIX_PC_FILES)" != "" ]] ; then \ |
285 print "/usr/perl5/bin/perl -i.orig -p \ |
285 (PS4="" ; set -x ; \ |
286 $(FIX_PC_OPS) $(FIX_PC_FILES)" ; \ |
286 cd $(SOURCE_DIR) && \ |
287 (cd $(SOURCE_DIR) && \ |
|
288 /usr/perl5/bin/perl -i.orig -p \ |
287 /usr/perl5/bin/perl -i.orig -p \ |
289 $(FIX_PC_OPS) $(FIX_PC_FILES) ); \ |
288 $(FIX_PC_OPS) $(FIX_PC_FILES) ); \ |
290 fi |
289 fi |
291 touch $(BUILD_DIR)/$(UNPACK_FILE) |
290 touch $(UNPACK_TARGET) |
292 |
291 |
293 ### Run configure scripts |
292 ### Run configure scripts |
294 |
293 |
295 # Include Xorg autoconf macros when rebuilding configure scripts |
294 # Include Xorg autoconf macros when rebuilding configure scripts |
296 # and use automake 1.10 instead of the older 1.9. |
295 # and use automake 1.10 instead of the older 1.9. |
322 -I$(PROTODIR)/usr/include -I$(PROTODIR)/usr/include/freetype2 |
321 -I$(PROTODIR)/usr/include -I$(PROTODIR)/usr/include/freetype2 |
323 $(USE_DEFAULT_CONFIG_LDFLAGS:no=$(POUND_SIGN)) DEFAULT_CONFIG_LDFLAGS= \ |
322 $(USE_DEFAULT_CONFIG_LDFLAGS:no=$(POUND_SIGN)) DEFAULT_CONFIG_LDFLAGS= \ |
324 -L$(PROTODIR)/usr/lib$(ARCHLIBSUBDIR) \ |
323 -L$(PROTODIR)/usr/lib$(ARCHLIBSUBDIR) \ |
325 -L$(PROTODIR)$(X11_DIR)/lib$(ARCHLIBSUBDIR) |
324 -L$(PROTODIR)$(X11_DIR)/lib$(ARCHLIBSUBDIR) |
326 |
325 |
327 DEFAULT_PKG_CONFIG_PATH=$(TOP)/common/pc-files/$(BUILD_DIR):$(PROTODIR)/usr/lib/$(ARCHLIBSUBDIR)/pkgconfig:/usr/lib$(ARCHLIBSUBDIR)/pkgconfig |
326 DEFAULT_PKG_CONFIG_PATH=$(TOP)/common/pc-files/$(BUILD_DIR):$(PROTODIR)$(PKGCONFIG_DIR):$(PKGCONFIG_DIR) |
328 |
327 |
329 # Set USE_DEFAULT_CONFIG_ENV=no in a Makefile to not use this default |
328 # Set USE_DEFAULT_CONFIG_ENV=no in a Makefile to not use this default |
330 # autoconfig environment |
329 # autoconfig environment |
331 $(USE_DEFAULT_CONFIG_ENV:no=$(POUND_SIGN)) DEFAULT_CONFIG_ENV = \ |
330 $(USE_DEFAULT_CONFIG_ENV:no=$(POUND_SIGN)) DEFAULT_CONFIG_ENV = \ |
332 CC="$(CC)" CXX="$(CXX)" \ |
331 CC="$(CC)" CXX="$(CXX)" \ |
388 |
387 |
389 LD_OPTIONS = -L$(PROTODIR)$(X11_DIR)/lib$(LIBSUBDIR) \ |
388 LD_OPTIONS = -L$(PROTODIR)$(X11_DIR)/lib$(LIBSUBDIR) \ |
390 $(MODTYPE_LD_OPTIONS) $(MODULE_LD_OPTIONS) |
389 $(MODTYPE_LD_OPTIONS) $(MODULE_LD_OPTIONS) |
391 |
390 |
392 BUILD_ENV = LD_OPTIONS='$(LD_OPTIONS)' \ |
391 BUILD_ENV = LD_OPTIONS='$(LD_OPTIONS)' \ |
|
392 PROTODIR='$(PROTODIR)' \ |
393 $(MODTYPE_BUILD_ENV) $(MODULE_BUILD_ENV) |
393 $(MODTYPE_BUILD_ENV) $(MODULE_BUILD_ENV) |
394 |
394 |
395 DEFAULT_BUILD_MAKEFLAGS=$(MODTYPE_MAKEFLAGS) $(MODULE_MAKEFLAGS) \ |
395 DEFAULT_BUILD_MAKEFLAGS=$(MODTYPE_MAKEFLAGS) $(MODULE_MAKEFLAGS) \ |
396 $(MODTYPE_BUILD_MAKEFLAGS) $(MODULE_BUILD_MAKEFLAGS) |
396 $(MODTYPE_BUILD_MAKEFLAGS) $(MODULE_BUILD_MAKEFLAGS) |
397 |
397 |
408 (cd $(subdir) ; \ |
408 (cd $(subdir) ; \ |
409 $(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS) \ |
409 $(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS) \ |
410 $(subdir_cmd) ) |
410 $(subdir_cmd) ) |
411 |
411 |
412 DEFAULT_INSTALL_MAKEFLAGS= -e DESTDIR=$(PROTODIR) \ |
412 DEFAULT_INSTALL_MAKEFLAGS= -e DESTDIR=$(PROTODIR) \ |
413 pkgconfigdir=/usr/lib$(ARCHLIBSUBDIR)/pkgconfig \ |
413 pkgconfigdir=$(PKGCONFIG_DIR) \ |
414 $(MODTYPE_MAKEFLAGS) $(MODULE_MAKEFLAGS) \ |
414 $(MODTYPE_MAKEFLAGS) $(MODULE_MAKEFLAGS) \ |
415 $(MODTYPE_INSTALL_MAKEFLAGS) $(MODULE_INSTALL_MAKEFLAGS) \ |
415 $(MODTYPE_INSTALL_MAKEFLAGS) $(MODULE_INSTALL_MAKEFLAGS) \ |
416 |
416 |
417 # Dependencies for make install step |
417 # Dependencies for make install step |
418 INSTALL_DEPS = $(BUILD_TARGETS) $(MODTYPE_INSTALL_DEPS) $(MODULE_INSTALL_DEPS) |
418 INSTALL_DEPS = $(BUILD_TARGETS) $(MODTYPE_INSTALL_DEPS) $(MODULE_INSTALL_DEPS) |
429 |
429 |
430 install-in-subdir: |
430 install-in-subdir: |
431 (cd $(subdir) ; \ |
431 (cd $(subdir) ; \ |
432 $(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_INSTALL_MAKEFLAGS) \ |
432 $(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_INSTALL_MAKEFLAGS) \ |
433 $(subdir_cmd)) |
433 $(subdir_cmd)) |
|
434 |
|
435 # Adjust paths in pkg-config files for -uninstalled variants used during build |
|
436 UNINSTALLED_PC_OPS= \ |
|
437 -e 's|(-[LI]\s*)\$$|$$1$(PROTODIR)\$$|g;' \ |
|
438 -e 's|^sdkdir=|sdkdir=$(PROTODIR)|g;' \ |
|
439 -e 's|$(PROTODIR)\$${sdkdir}|\$${sdkdir}|g;' |
|
440 |
|
441 install_pkgconfig_uninstalled: |
|
442 @ if [[ ! -z "$(FIX_PC_FILES)" ]] ; then \ |
|
443 cd $(SOURCE_DIR) ; \ |
|
444 for pcin in $(FIX_PC_FILES:.in=) ; do \ |
|
445 pc=$${pcin%%+(.pc|.in)} ; \ |
|
446 (PS4="" ; set -x ; \ |
|
447 /usr/perl5/bin/perl -p $(UNINSTALLED_PC_OPS) $$pc.pc > \ |
|
448 $(PROTODIR)$(PKGCONFIG_DIR)/$$(basename $${pc})-uninstalled.pc ) ; \ |
|
449 done ; \ |
|
450 fi |
434 |
451 |
435 # Set comments in ELF binaries to help identify versions/builds |
452 # Set comments in ELF binaries to help identify versions/builds |
436 ELF_COMMENTS = $(MODULE_NAME) $(MODULE_VERSION) |
453 ELF_COMMENTS = $(MODULE_NAME) $(MODULE_VERSION) |
437 ELF_COMMENTS += $(MODTYPE_ELF_COMMENTS)$(MODULE_ELF_COMMENTS) |
454 ELF_COMMENTS += $(MODTYPE_ELF_COMMENTS)$(MODULE_ELF_COMMENTS) |
438 |
455 |
474 # having fuzz or offsets when applying patches - new patches will be in new/ |
491 # having fuzz or offsets when applying patches - new patches will be in new/ |
475 |
492 |
476 regen-patches: |
493 regen-patches: |
477 CUR_LIST="" |
494 CUR_LIST="" |
478 rm -rf tmp-regen |
495 rm -rf tmp-regen |
479 make SOURCE_PATCHES="$(CUR_LIST)" BUILD_DIR=tmp-regen source_gen |
496 make SOURCE_PATCHES="$(CUR_LIST)" BUILD_DIR=tmp-regen SUNTOUCHED_MANPAGES="" source_gen |
480 mkdir -p new |
497 mkdir -p new |
481 for f in $(SOURCE_PATCHES) ; do \ |
498 for f in $(SOURCE_PATCHES) ; do \ |
482 p=$$(print $$f | sed 's/,.*$$//') ; \ |
499 p=$$(print $$f | sed 's/,.*$$//') ; \ |
483 print '=================' $$p ; \ |
500 print '=================' $$p ; \ |
484 rm -rf prev ; \ |
501 rm -rf prev ; \ |
485 mv tmp-regen prev ; \ |
502 mv tmp-regen prev ; \ |
486 $(MAKE) SOURCE_PATCHES="$${CUR_LIST} $$f" BUILD_DIR=tmp-regen source_gen ; \ |
503 $(MAKE) SOURCE_PATCHES="$${CUR_LIST} $$f" BUILD_DIR=tmp-regen SUNTOUCHED_MANPAGES="" source_gen ; \ |
487 awk '/^--- / {exit} \ |
504 awk '/^--- / {exit} \ |
488 /^diff -u/ {exit} \ |
505 /^diff -u/ {exit} \ |
489 {print}' $$p > new/$$p ; \ |
506 {print}' $$p > new/$$p ; \ |
490 gdiff -urp -x '*~' -x '*.orig' ./prev ./tmp-regen \ |
507 gdiff -urp -x '*~' -x '*.orig' ./prev ./tmp-regen \ |
491 | sed -e 's% \./prev$(SOURCE_DIR)/% %' -e 's% \./tmp-regen$(SOURCE_DIR)/% %' \ |
508 | sed -e 's% \./prev$(SOURCE_DIR)/% %' -e 's% \./tmp-regen$(SOURCE_DIR)/% %' \ |
494 >> new/$$p ; \ |
511 >> new/$$p ; \ |
495 CUR_LIST="$${CUR_LIST} new/$$p" ; \ |
512 CUR_LIST="$${CUR_LIST} new/$$p" ; \ |
496 done |
513 done |
497 rm -rf tmp-regen |
514 rm -rf tmp-regen |
498 |
515 |
|
516 # Allows running "make list-patches" to get a list of all patches we |
|
517 # currently apply in our builds |
|
518 list-patches: |
|
519 @THIS_MODULE=$$(print $(PWD) | sed 's|.*/open-src/||') ; \ |
|
520 if [[ "$(SOURCE_PATCHES)" != "" ]] ; then \ |
|
521 for p in $(SOURCE_PATCHES) x ; do \ |
|
522 if [[ "$$p" != "x" ]] ; then \ |
|
523 print "$${THIS_MODULE}/$$p" | sed 's/,-p[0-9]$$//' ; \ |
|
524 fi ; \ |
|
525 done ; \ |
|
526 fi |
|
527 |
499 ### Licensing files |
528 ### Licensing files |
500 |
529 |
501 # Default license file name is COPYING (X.Org & GNU autoconf default) |
530 # Default license file name is COPYING (X.Org & GNU autoconf default) |
502 # For other license file names, set LICENSE_FILE to the file name |
531 # For other license file names, set LICENSE_FILE to the file name |
503 # and set LICENSE_FILE_SET=yes |
532 # and set LICENSE_FILE_SET=yes |