make-rules/configure.mk
changeset 2 125cd5d2cd9e
child 3 7b8e0c0bb2e8
equal deleted inserted replaced
1:d63a2608b656 2:125cd5d2cd9e
       
     1 #
       
     2 # CDDL HEADER START
       
     3 #
       
     4 # The contents of this file are subject to the terms of the
       
     5 # Common Development and Distribution License (the "License").
       
     6 # You may not use this file except in compliance with the License.
       
     7 #
       
     8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
       
     9 # or http://www.opensolaris.org/os/licensing.
       
    10 # See the License for the specific language governing permissions
       
    11 # and limitations under the License.
       
    12 #
       
    13 # When distributing Covered Code, include this CDDL HEADER in each
       
    14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
       
    15 # If applicable, add the following below this CDDL HEADER, with the
       
    16 # fields enclosed by brackets "[]" replaced with your own identifying
       
    17 # information: Portions Copyright [yyyy] [name of copyright owner]
       
    18 #
       
    19 # CDDL HEADER END
       
    20 #
       
    21 # Copyright (c) 2010, Oracle and/or it's affiliates.  All rights reserved.
       
    22 #
       
    23 
       
    24 #
       
    25 # Rules and Macros for building opens source software that uses configure /
       
    26 # GNU auto* tools to configure their build for the system they are on.  This
       
    27 # uses GNU Make to build the components to take advantage of the viewpath
       
    28 # support and build multiple version (32/64 bit) from a shared source.
       
    29 #
       
    30 # To use these rules, include ../make-rules/configure.mk in your Makefile
       
    31 # and define "build", "install" targets appropriate to building your component.
       
    32 # Ex:
       
    33 #
       
    34 # 	build:		$(COMPONENT_SRC)/build-32/.built \
       
    35 #	 		$(COMPONENT_SRC)/build-64/.built
       
    36 # 
       
    37 #	install:	$(COMPONENT_SRC)/build-32/.installed \
       
    38 #	 		$(COMPONENT_SRC)/build-64/.installed
       
    39 #
       
    40 # Any additional pre/post configure, build, or install actions can be specified
       
    41 # in your make file by setting them in on of the following macros:
       
    42 #	COMPONENT_PRE_CONFIGURE_ACTION, COMPONENT_POST_CONFIGURE_ACTION
       
    43 #	COMPONENT_PRE_BUILD_ACTION, COMPONENT_POST_BUILD_ACTION
       
    44 #	COMPONENT_PRE_INSTALL_ACTION, COMPONENT_POST_INSTALL_ACTION
       
    45 #
       
    46 # If component specific make targets need to be used for build or install, they
       
    47 # can be specified in
       
    48 #	COMPONENT_BUILD_TARGETS, COMPONENT_INSTALL_TARGETS
       
    49 #
       
    50 
       
    51 CONFIG_SHELL =	/bin/bash
       
    52 
       
    53 CONFIGURE_OPTIONS += --prefix=/usr
       
    54 CONFIGURE_OPTIONS += CC="$(CC.$(BITS))"
       
    55 CONFIGURE_OPTIONS += CXX="$(CCC.$(BITS))"
       
    56 CONFIGURE_OPTIONS.32 += --bindir=/usr/bin
       
    57 CONFIGURE_OPTIONS.32 += --libdir=/usr/lib
       
    58 CONFIGURE_OPTIONS.64 = --bindir=/usr/bin/$(MACH64)
       
    59 CONFIGURE_OPTIONS.64 += --libdir=/usr/lib/$(MACH64)
       
    60 
       
    61 $(COMPONENT_SRC)/build-32/.configured:	BITS=32
       
    62 $(COMPONENT_SRC)/build-64/.configured:	BITS=64
       
    63 
       
    64 CONFIGURE_OPTIONS += $(CONFIGURE_OPTIONS.$(BITS))
       
    65 
       
    66 # set the default target for installation of the component
       
    67 COMPONENT_INSTALL_TARGETS =	install
       
    68 
       
    69 # configure the unpacked source for building 32 and 64 bit version
       
    70 $(COMPONENT_SRC)/build-%/.configured:	$(COMPONENT_SRC)/.prep
       
    71 	($(RM) -rf $(@D) ; $(MKDIR) $(@D))
       
    72 	$(COMPONENT_PRE_CONFIGURE_ACTION)
       
    73 	(cd $(@D) ; env - $(CONFIGURE_ENV) $(CONFIG_SHELL) \
       
    74 		../configure $(CONFIGURE_OPTIONS) $(CONFIGURE_OPTIONS.$(BITS)))
       
    75 	$(COMPONENT_POST_CONFIGURE_ACTION)
       
    76 	$(TOUCH) $@
       
    77 
       
    78 # build the configured source
       
    79 $(COMPONENT_SRC)/build-%/.built:	$(COMPONENT_SRC)/build-%/.configured
       
    80 	$(COMPONENT_PRE_BUILD_ACTION)
       
    81 	(cd $(@D) ; $(GMAKE) $(COMPONENT_BUILD_TARGETS))
       
    82 	$(COMPONENT_POST_BUILD_ACTION)
       
    83 	$(TOUCH) $@
       
    84 
       
    85 # install the built source into a prototype area
       
    86 $(COMPONENT_SRC)/build-%/.installed:	$(COMPONENT_SRC)/build-%/.built
       
    87 	$(COMPONENT_PRE_INSTALL_ACTION)
       
    88 	(cd $(@D) ; $(GMAKE) DESTDIR=$(PROTO_DIR)  $(COMPONENT_INSTALL_TARGETS))
       
    89 	$(COMPONENT_POST_INSTALL_ACTION)
       
    90 	$(TOUCH) $@