|
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) $@ |