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, Version 1.0 only
6 # (the "License"). You may not use this file except in compliance
7 # with the License.
8 #
9 # You can obtain a copy of the license at COPYING
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 COPYING.
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) 2012, Joyent, Inc.
22 #
23 # To build everything just run 'gmake' in this directory.
24 #
25
26 BASE = $(PWD)
27 DESTDIR = $(BASE)/proto
28 PATH = $(DESTDIR)/usr/bin:/usr/bin:/usr/sbin:/sbin:/opt/local/bin
29 SUBDIRS = \
30 bash \
31 bind \
32 bzip2 \
33 coreutils \
34 cpp \
35 curl \
36 dialog \
37 g11n \
38 gnupg \
39 gtar \
40 gzip \
41 ipmitool \
42 less \
43 libexpat \
44 libidn \
45 libm \
46 libxml \
47 libz \
48 make \
49 ncurses \
50 node.js \
51 nss-nspr \
52 ntp \
53 openldap \
54 openlldp \
55 openssl \
56 openssl1x \
57 pbzip2 \
58 perl \
59 rsync \
60 rsyslog \
61 screen \
62 socat \
63 tun \
64 uuid \
65 vim \
66 wget
67
68 STRAP_SUBDIRS = \
69 cpp \
70 bzip2 \
71 libexpat \
72 libidn \
73 libm \
74 libxml \
75 libz \
76 make \
77 nss-nspr \
78 openssl1x \
79 perl
80
81 NAME = illumos-extra
82
83 AWK = $(shell (which gawk 2>/dev/null | grep -v "^no ") || which awk)
84 BRANCH = $(shell git symbolic-ref HEAD | $(AWK) -F/ '{print $$3}')
85
86 ifeq ($(TIMESTAMP),)
87 TIMESTAMP = $(shell date -u "+%Y%m%dT%H%M%SZ")
88 endif
89
90 GITDESCRIBE = \
91 g$(shell git describe --all --long | $(AWK) -F'-g' '{print $$NF}')
92
93 TARBALL = $(NAME)-$(BRANCH)-$(TIMESTAMP)-$(GITDESCRIBE).tgz
94
95 all: $(SUBDIRS)
96
97 strap: $(STRAP_SUBDIRS)
98
99 curl: libz openssl1x libidn
100 gzip: libz
101 node.js: openssl1x libm
102 ncurses: libm
103 dialog: ncurses
104 socat: openssl1x
105 wget: openssl1x libidn
106 openldap: openssl1x
107 libm: make
108 g11n: make
109 perl: libm
110
111 #
112 # pkg-config may be installed. This will actually only hurt us rather than help
113 # us. pkg-config is based as a part of the pkgsrc packages and will pull in
114 # versions of libraries that we have in /opt/local rather than using the ones in
115 # /usr that we want. PKG_CONFIG_LIBDIR controls the actual path. This
116 # environment variable nulls out the search path. Other vars just control what
117 # gets appended.
118 #
119
120 $(DESTDIR)/usr/gnu/bin/gas: FRC
121 (cd binutils && \
122 PKG_CONFIG_LIBDIR="" \
123 STRAP=$(STRAP) \
124 $(MAKE) DESTDIR=$(DESTDIR) install)
125
126
127 $(DESTDIR)/usr/bin/gcc: $(DESTDIR)/usr/gnu/bin/gas
128 (cd gcc4 && \
129 PKG_CONFIG_LIBDIR="" \
130 STRAP=$(STRAP) \
131 $(MAKE) DESTDIR=$(DESTDIR) install)
132
133 $(SUBDIRS): $(DESTDIR)/usr/bin/gcc
134 (cd $@ && \
135 PKG_CONFIG_LIBDIR="" \
136 STRAP=$(STRAP) \
137 $(MAKE) DESTDIR=$(DESTDIR) install)
138
139 install: $(SUBDIRS) gcc4 binutils
140
141 install_strap: $(STRAP_SUBDIRS) gcc4 binutils
142
143 clean:
144 -for dir in $(SUBDIRS) gcc4 binutils; \
145 do (cd $$dir; $(MAKE) DESTDIR=$(DESTDIR) clean); done
146 -rm -rf proto
147
148 manifest:
149 cp manifest $(DESTDIR)/$(DESTNAME)
150
151 tarball:
152 tar -zcf $(TARBALL) manifest proto
153
154 FRC:
155
156 .PHONY: manifest