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 node.js \
78 nss-nspr \
79 openssl1x \
80 perl
81
82 NAME = illumos-extra
83
84 AWK = $(shell (which gawk 2>/dev/null | grep -v "^no ") || which awk)
85 BRANCH = $(shell git symbolic-ref HEAD | $(AWK) -F/ '{print $$3}')
86
87 ifeq ($(TIMESTAMP),)
88 TIMESTAMP = $(shell date -u "+%Y%m%dT%H%M%SZ")
89 endif
90
91 GITDESCRIBE = \
92 g$(shell git describe --all --long | $(AWK) -F'-g' '{print $$NF}')
93
94 TARBALL = $(NAME)-$(BRANCH)-$(TIMESTAMP)-$(GITDESCRIBE).tgz
95
96 all: $(SUBDIRS)
97
98 strap: $(STRAP_SUBDIRS)
99
100 curl: libz openssl1x libidn
101 gzip: libz
102 node.js: openssl1x libm
103 ncurses: libm
104 dialog: ncurses
105 socat: openssl1x
106 wget: openssl1x libidn
107 openldap: openssl1x
108 libm: make
109 g11n: make
110 perl: libm
111
112 #
113 # pkg-config may be installed. This will actually only hurt us rather than help
114 # us. pkg-config is based as a part of the pkgsrc packages and will pull in
115 # versions of libraries that we have in /opt/local rather than using the ones in
116 # /usr that we want. PKG_CONFIG_LIBDIR controls the actual path. This
117 # environment variable nulls out the search path. Other vars just control what
118 # gets appended.
119 #
120
121 $(DESTDIR)/usr/gnu/bin/gas: FRC
122 (cd binutils && \
123 PKG_CONFIG_LIBDIR="" \
124 STRAP=$(STRAP) \
125 $(MAKE) DESTDIR=$(DESTDIR) install)
126
127
128 $(DESTDIR)/usr/bin/gcc: $(DESTDIR)/usr/gnu/bin/gas
129 (cd gcc4 && \
130 PKG_CONFIG_LIBDIR="" \
131 STRAP=$(STRAP) \
132 $(MAKE) DESTDIR=$(DESTDIR) install strapfix)
133
134 $(SUBDIRS): $(DESTDIR)/usr/bin/gcc
135 (cd $@ && \
136 PKG_CONFIG_LIBDIR="" \
137 STRAP=$(STRAP) \
138 $(MAKE) DESTDIR=$(DESTDIR) install)
139
140 install: $(SUBDIRS) gcc4 binutils
141
142 install_strap: $(STRAP_SUBDIRS) gcc4 binutils
143
144 clean:
145 -for dir in $(SUBDIRS) gcc4 binutils; \
146 do (cd $$dir; $(MAKE) DESTDIR=$(DESTDIR) clean); done
147 -rm -rf proto
148
149 manifest:
150 cp manifest $(DESTDIR)/$(DESTNAME)
151
152 tarball:
153 tar -zcf $(TARBALL) manifest proto
154
155 FRC:
156
157 .PHONY: manifest