open-src/common/Makefile.inc
changeset 810 6f94d3da0552
parent 705 24ca414edbff
child 822 2a89ea3c59be
equal deleted inserted replaced
809:bd4bc96957db 810:6f94d3da0552
     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 2009 Sun Microsystems, Inc.  All Rights Reserved.
     3 # Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
     4 # Use subject to license terms.
     4 # Use is 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
     9 # without limitation the rights to use, copy, modify, merge, publish,
     9 # without limitation the rights to use, copy, modify, merge, publish,
    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.99	09/05/15
    31 # ident	"@(#)Makefile.inc	1.100	09/10/13 SMI"
    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
    43 MODTYPE_MAKE_DEFAULT		= $(MODTYPE_MAKE_SET:yes=$(POUND_SIGN))
    43 MODTYPE_MAKE_DEFAULT		= $(MODTYPE_MAKE_SET:yes=$(POUND_SIGN))
    44 $(MODTYPE_MAKE_DEFAULT)		MODTYPE_MAKE = $(MAKE)
    44 $(MODTYPE_MAKE_DEFAULT)		MODTYPE_MAKE = $(MAKE)
    45 MODULE_MAKE_DEFAULT		= $(MODULE_MAKE_SET:yes=$(POUND_SIGN))
    45 MODULE_MAKE_DEFAULT		= $(MODULE_MAKE_SET:yes=$(POUND_SIGN))
    46 $(MODULE_MAKE_DEFAULT)		MODULE_MAKE = $(MODTYPE_MAKE)
    46 $(MODULE_MAKE_DEFAULT)		MODULE_MAKE = $(MODTYPE_MAKE)
    47 
    47 
       
    48 # Enable parallel make for gmake built modules too
       
    49 #MAKEFLAGS			+= -j $(DMAKE_MAX_JOBS)
       
    50 
    48 # Where to install files
    51 # Where to install files
    49 MODTYPE_PREFIX_DEFAULT		= $(MODTYPE_PREFIX_SET:yes=$(POUND_SIGN))
    52 MODTYPE_PREFIX_DEFAULT		= $(MODTYPE_PREFIX_SET:yes=$(POUND_SIGN))
    50 $(MODULE_PREFIX_DEFAULT)	MODTYPE_PREFIX=$(X11_DIR)
    53 $(MODULE_PREFIX_DEFAULT)	MODTYPE_PREFIX=$(X11_DIR)
    51 MODULE_PREFIX_DEFAULT		= $(MODULE_PREFIX_SET:yes=$(POUND_SIGN))
    54 MODULE_PREFIX_DEFAULT		= $(MODULE_PREFIX_SET:yes=$(POUND_SIGN))
    52 $(MODULE_PREFIX_DEFAULT)	MODULE_PREFIX=$(MODTYPE_PREFIX)
    55 $(MODULE_PREFIX_DEFAULT)	MODULE_PREFIX=$(MODTYPE_PREFIX)
   104 $(INSTALL_TARGETS_DEFAULT)	INSTALL_TARGETS=default_install \
   107 $(INSTALL_TARGETS_DEFAULT)	INSTALL_TARGETS=default_install \
   105 					$(MODTYPE_ADD_INSTALL_TARGETS) \
   108 					$(MODTYPE_ADD_INSTALL_TARGETS) \
   106 					$(MODULE_ADD_INSTALL_TARGETS)
   109 					$(MODULE_ADD_INSTALL_TARGETS)
   107 
   110 
   108 # Additional flags to pass to make in 32-bit & 64-bit builds
   111 # Additional flags to pass to make in 32-bit & 64-bit builds
   109 BUILD_32_FLAGS= BUILD_DIR=$(BUILD_DIR_32) ARCH_FLAGS="$(ARCH32_FLAGS)" \
   112 BUILD_DIR_32_FLAGS= BUILD_DIR=$(BUILD_DIR_32) BUILD_TYPE=32
   110 	BUILD_TYPE=32 $(MODTYPE_BUILD_32_FLAGS) $(MODULE_BUILD_32_FLAGS)
   113 
   111 
   114 BUILD_DIR_64_FLAGS= BUILD_DIR=$(BUILD_DIR_64) BUILD_TYPE=64 \
   112 BUILD_64_FLAGS= BUILD_DIR=$(BUILD_DIR_64) ARCH_FLAGS="$(ARCH64_FLAGS)" \
   115 	LIBSUBDIR=/$(SUBDIR64) ARCHLIBSUBDIR=/$(SUBDIR64)
   113 	BUILD_TYPE=64 $(MODTYPE_BUILD_64_FLAGS) $(MODULE_BUILD_64_FLAGS)
   116 
       
   117 BUILD_32_FLAGS= $(BUILD_DIR_32_FLAGS) ARCH_FLAGS="$(ARCH32_FLAGS)" \
       
   118 	$(MODTYPE_BUILD_32_FLAGS) $(MODULE_BUILD_32_FLAGS)
       
   119 
       
   120 BUILD_64_FLAGS= $(BUILD_DIR_64_FLAGS) ARCH_FLAGS="$(ARCH64_FLAGS)" \
       
   121 	$(MODTYPE_BUILD_64_FLAGS) $(MODULE_BUILD_64_FLAGS)
   114 
   122 
   115 all: $(BUILD_TYPES:%=source_%) $(BUILD_TYPES:%=build_%)
   123 all: $(BUILD_TYPES:%=source_%) $(BUILD_TYPES:%=build_%)
   116 all_32: source_32 configure_32 build_32
   124 all_32: source_32 configure_32 build_32
   117 all_64: source_64 configure_64 build_64
   125 all_64: source_64 configure_64 build_64
   118 
   126 
   128 
   136 
   129 source_gen:: $(SOURCE_TARGETS)
   137 source_gen:: $(SOURCE_TARGETS)
   130 
   138 
   131 source_32: $(SOURCE_DIR_32)/$(UNPACK_FILE)
   139 source_32: $(SOURCE_DIR_32)/$(UNPACK_FILE)
   132 $(SOURCE_DIR_32)/$(UNPACK_FILE):
   140 $(SOURCE_DIR_32)/$(UNPACK_FILE):
   133 	$(MAKE) $(MAKEFLAGS) BUILD_DIR=$(BUILD_DIR_32) source_gen
   141 	$(MAKE) $(MAKEFLAGS) $(BUILD_DIR_32_FLAGS) source_gen
   134 
   142 
   135 source_64: $(SOURCE_DIR_64)/$(UNPACK_FILE)
   143 source_64: $(SOURCE_DIR_64)/$(UNPACK_FILE)
   136 $(SOURCE_DIR_64)/$(UNPACK_FILE):
   144 $(SOURCE_DIR_64)/$(UNPACK_FILE):
   137 	$(MAKE) $(MAKEFLAGS) BUILD_DIR=$(BUILD_DIR_64) source_gen
   145 	$(MAKE) $(MAKEFLAGS) $(BUILD_DIR_64_FLAGS) source_gen
   138 
   146 
   139 configure: $(BUILD_TYPES:%=configure_%)
   147 configure: $(BUILD_TYPES:%=configure_%)
   140 
   148 
   141 configure_gen: $(CONFIGURE_TARGETS)
   149 configure_gen: $(CONFIGURE_TARGETS)
   142 
   150 
   143 configure_32:: 
   151 configure_32:: source_32
   144 	$(MAKE) $(MAKEFLAGS) $(BUILD_32_FLAGS) configure_gen
   152 	$(MAKE) $(MAKEFLAGS) $(BUILD_32_FLAGS) configure_gen
   145 
   153 
   146 configure_64::
   154 configure_64:: source_64
   147 	$(MAKE) $(MAKEFLAGS) LIBSUBDIR=/$(SUBDIR64) ARCHLIBSUBDIR=/$(SUBDIR64) $(BUILD_64_FLAGS) configure_gen
   155 	$(MAKE) $(MAKEFLAGS) $(BUILD_64_FLAGS) configure_gen
   148 
   156 
   149 build: $(BUILD_TYPES:%=build_%)
   157 build: $(BUILD_TYPES:%=build_%)
   150 
   158 
   151 build_gen: $(BUILD_TARGETS)
   159 build_gen: $(BUILD_TARGETS)
   152 
   160 
   153 build_32::
   161 build_32:: configure_32
   154 	$(MAKE) $(MAKEFLAGS) $(BUILD_32_FLAGS) build_gen
   162 	$(MAKE) $(MAKEFLAGS) $(BUILD_32_FLAGS) build_gen
   155 
   163 
   156 build_64::
   164 build_64:: configure_64
   157 	$(MAKE) $(MAKEFLAGS) LIBSUBDIR=/$(SUBDIR64) ARCHLIBSUBDIR=/$(SUBDIR64) $(BUILD_64_FLAGS) build_gen
   165 	$(MAKE) $(MAKEFLAGS) $(BUILD_64_FLAGS) build_gen
   158 
   166 
   159 install: $(BUILD_TYPES:%=install_%)
   167 install: $(BUILD_TYPES:%=install_%)
   160 
   168 
   161 install_gen:: $(INSTALL_TARGETS) install_license install_pkgconfig_uninstalled
   169 install_gen:: $(INSTALL_TARGETS) install_license install_pkgconfig_uninstalled
   162 
   170 
   163 install_32:: build_32
   171 install_32:: build_32
   164 	$(MAKE) $(MAKEFLAGS) $(BUILD_32_FLAGS) install_gen
   172 	$(MAKE) $(MAKEFLAGS) $(BUILD_32_FLAGS) install_gen
   165 
   173 
   166 install_64:: build_64
   174 install_64:: build_64
   167 	$(MAKE) $(MAKEFLAGS) LIBSUBDIR=/64 ARCHLIBSUBDIR=/$(SUBDIR64) $(BUILD_64_FLAGS) install_gen
   175 	$(MAKE) $(MAKEFLAGS) $(BUILD_64_FLAGS) install_gen
   168 
   176 
   169 DEBUG_BUILD_FLAGS = BUILD_DEBUG=yes
   177 DEBUG_BUILD_FLAGS = BUILD_DEBUG=yes
   170 
   178 
   171 debug-build:	debug
   179 debug-build:	debug
   172 debug-build_32:	debug_32
   180 debug-build_32:	debug_32
   311 CONFIGURE_DEPS = $(UNPACK_TARGET) \
   319 CONFIGURE_DEPS = $(UNPACK_TARGET) \
   312 	$(MODTYPE_CONFIGURE_DEPS) $(MODULE_CONFIGURE_DEPS)
   320 	$(MODTYPE_CONFIGURE_DEPS) $(MODULE_CONFIGURE_DEPS)
   313 
   321 
   314 # Command line options to GNU autoconf configure script
   322 # Command line options to GNU autoconf configure script
   315 DEFAULT_CONFIG_OPTS = --prefix=$(MODULE_PREFIX) \
   323 DEFAULT_CONFIG_OPTS = --prefix=$(MODULE_PREFIX) \
   316 	--mandir='$${prefix}/share/man' --localstatedir=/var \
   324 	--mandir='$${prefix}/share/man' --localstatedir=/var
   317 	--disable-libtool-lock
       
   318 
   325 
   319 CONFIG_OPTS = $(DEFAULT_CONFIG_OPTS) \
   326 CONFIG_OPTS = $(DEFAULT_CONFIG_OPTS) \
   320 	$(MODTYPE_CONFIG_OPTS) $(MODULE_CONFIG_OPTS)
   327 	$(MODTYPE_CONFIG_OPTS) $(MODULE_CONFIG_OPTS)
   321 
   328 
   322 # Environment variable options to GNU autoconf configure script
   329 # Environment variable options to GNU autoconf configure script
   390 ### Default rules for common build pattern
   397 ### Default rules for common build pattern
   391 
   398 
   392 LD_OPTIONS = -L$(PROTODIR)$(X11_DIR)/lib$(LIBSUBDIR) \
   399 LD_OPTIONS = -L$(PROTODIR)$(X11_DIR)/lib$(LIBSUBDIR) \
   393 	$(MODTYPE_LD_OPTIONS) $(MODULE_LD_OPTIONS)
   400 	$(MODTYPE_LD_OPTIONS) $(MODULE_LD_OPTIONS)
   394 
   401 
       
   402 # MKDIRPROG - Workaround parallel build race condition
       
   403 #		in older upstream packaged install-sh
       
   404 
   395 BUILD_ENV = LD_OPTIONS='$(LD_OPTIONS)' \
   405 BUILD_ENV = LD_OPTIONS='$(LD_OPTIONS)' \
   396 	PROTODIR='$(PROTODIR)' \
   406 	PROTODIR='$(PROTODIR)' \
       
   407 	MAKE='$(MODULE_MAKE)' \
       
   408 	MKDIRPROG='mkdir -p' \
   397 	$(MODTYPE_BUILD_ENV) $(MODULE_BUILD_ENV)
   409 	$(MODTYPE_BUILD_ENV) $(MODULE_BUILD_ENV)
   398 
   410 
   399 DEFAULT_BUILD_MAKEFLAGS=$(MODTYPE_MAKEFLAGS) $(MODULE_MAKEFLAGS) \
   411 DEFAULT_BUILD_MAKEFLAGS=$(MODTYPE_MAKEFLAGS) $(MODULE_MAKEFLAGS) \
   400 	$(MODTYPE_BUILD_MAKEFLAGS) $(MODULE_BUILD_MAKEFLAGS)
   412 	$(MODTYPE_BUILD_MAKEFLAGS) $(MODULE_BUILD_MAKEFLAGS)
   401 
   413 
   404 	 $(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS))
   416 	 $(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS))
   405 
   417 
   406 print_default_build_flags:
   418 print_default_build_flags:
   407 	@print "BUILD_ENV='$(BUILD_ENV)'" ; \
   419 	@print "BUILD_ENV='$(BUILD_ENV)'" ; \
   408 	print "MAKE='$(MODULE_MAKE)'" ; \
   420 	print "MAKE='$(MODULE_MAKE)'" ; \
   409 	print "MAKE_FLAGS='$(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS)'"
   421 	print "MAKEFLAGS='$(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS)'"
   410 
   422 
   411 build-in-subdir:
   423 build-in-subdir:
   412 	(cd $(subdir) ; \
   424 	(cd $(subdir) ; \
   413 	 $(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS) \
   425 	 $(BUILD_ENV) $(MODULE_MAKE) $(MAKEFLAGS) $(DEFAULT_BUILD_MAKEFLAGS) \
   414 	 $(subdir_cmd) )
   426 	 $(subdir_cmd) )
   441 	-e 'BEGIN {use Cwd; $$protodir=Cwd::realpath("$(PROTODIR)");}' \
   453 	-e 'BEGIN {use Cwd; $$protodir=Cwd::realpath("$(PROTODIR)");}' \
   442 	-e 's|(-[LI]\s*)\$$|$$1$$protodir\$$|g;' \
   454 	-e 's|(-[LI]\s*)\$$|$$1$$protodir\$$|g;' \
   443 	-e 's|^sdkdir=|sdkdir=$$protodir|g;' \
   455 	-e 's|^sdkdir=|sdkdir=$$protodir|g;' \
   444 	-e 's|$$protodir\$${sdkdir}|\$${sdkdir}|g;'
   456 	-e 's|$$protodir\$${sdkdir}|\$${sdkdir}|g;'
   445 
   457 
   446 install_pkgconfig_uninstalled:
   458 install_pkgconfig_uninstalled: $(INSTALL_TARGETS)
   447 	@ if [[ ! -z "$(FIX_PC_FILES)" ]] ; then \
   459 	@ if [[ ! -z "$(FIX_PC_FILES)" ]] ; then \
   448 	    cd $(SOURCE_DIR) ; \
   460 	    cd $(SOURCE_DIR) ; \
   449 	    for pcin in $(FIX_PC_FILES:.in=) ; do \
   461 	    for pcin in $(FIX_PC_FILES:.in=) ; do \
   450 		pc=$${pcin%%+(.pc|.in)} ; \
   462 		pc=$${pcin%%+(.pc|.in)} ; \
   451 		(PS4="" ; set -x ; \
   463 		(PS4="" ; set -x ; \
   460 
   472 
   461 $(BUILD_DEBUG:yes=)			DEBUG_ELF_COMMENTS=(DEBUG)
   473 $(BUILD_DEBUG:yes=)			DEBUG_ELF_COMMENTS=(DEBUG)
   462 $(BUILD_DEBUG:yes=$(POUND_SIGN))	DEBUG_ELF_COMMENTS=
   474 $(BUILD_DEBUG:yes=$(POUND_SIGN))	DEBUG_ELF_COMMENTS=
   463 ELF_COMMENTS += $(DEBUG_ELF_COMMENTS)
   475 ELF_COMMENTS += $(DEBUG_ELF_COMMENTS)
   464 
   476 
   465 set-elf-comments:
   477 set-elf-comments: $(BUILD_TARGETS:set-elf-comments=)
   466 	$(TOP)/common/set-elf-comments.pl -B $(TOP)/../packages/pkgversion \
   478 	$(TOP)/common/set-elf-comments.pl -B $(TOP)/../packages/pkgversion \
   467 	 -M '$(ELF_COMMENTS)' $(SOURCE_DIR)
   479 	 -M '$(ELF_COMMENTS)' $(SOURCE_DIR)
   468 
   480 
   469 
   481 
   470 ### Other tools/dependencies needed to build
   482 ### Other tools/dependencies needed to build