stevel@tonic-gate | 7c478bd | 2005-06-14 00:00:00 -0700 | [diff] [blame] | 1 | # |
| 2 | # CDDL HEADER START |
| 3 | # |
| 4 | # The contents of this file are subject to the terms of the |
dh155122 | f4b3ec6 | 2007-01-19 16:59:38 -0800 | [diff] [blame] | 5 | # Common Development and Distribution License (the "License"). |
| 6 | # You may not use this file except in compliance with the License. |
stevel@tonic-gate | 7c478bd | 2005-06-14 00:00:00 -0700 | [diff] [blame] | 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 | # |
Yuri Pankov | cb41b9c | 2018-08-07 16:46:21 -0700 | [diff] [blame] | 21 | |
stevel@tonic-gate | 7c478bd | 2005-06-14 00:00:00 -0700 | [diff] [blame] | 22 | # |
Alan Wright | 148c5f4 | 2010-05-27 15:26:41 -0700 | [diff] [blame] | 23 | # Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved. |
Yuri Pankov | cb41b9c | 2018-08-07 16:46:21 -0700 | [diff] [blame] | 24 | # Copyright 2018 Nexenta Systems, Inc. |
stevel@tonic-gate | 7c478bd | 2005-06-14 00:00:00 -0700 | [diff] [blame] | 25 | # |
Yuri Pankov | cb41b9c | 2018-08-07 16:46:21 -0700 | [diff] [blame] | 26 | |
stevel@tonic-gate | 7c478bd | 2005-06-14 00:00:00 -0700 | [diff] [blame] | 27 | include ../Makefile.master |
| 28 | |
| 29 | # |
| 30 | # List of architectures to build as part of the standard build. |
| 31 | # |
akolb | 98157a7 | 2008-02-27 15:35:58 -0800 | [diff] [blame] | 32 | # Some of these architectures are built in parallel (see i386_PARALLEL and |
| 33 | # sparc_PARALLEL). This requires building some parts first before parallel build |
| 34 | # can start. Platform make files know what should be built as a prerequisite for |
| 35 | # the parallel build to work. The i386_PREREQ and sparc_PREREQ variables tell |
| 36 | # which platform directory to enter to start making prerequisite dependencies. |
stevel@tonic-gate | 7c478bd | 2005-06-14 00:00:00 -0700 | [diff] [blame] | 37 | # |
| 38 | sparc_ARCHITECTURES = sun4v sun4u sparc |
| 39 | |
akolb | 98157a7 | 2008-02-27 15:35:58 -0800 | [diff] [blame] | 40 | i386_ARCHITECTURES = i86pc i86xpv intel |
| 41 | |
| 42 | # |
| 43 | # For i386 all architectures can be compiled in parallel. |
| 44 | # |
| 45 | # intel/Makefile knows how to build prerequisites needed for parallel build. |
| 46 | # |
| 47 | i386_PREREQ = intel |
| 48 | i386_PARALLEL = $(i386_ARCHITECTURES) |
| 49 | |
| 50 | # |
| 51 | # For sparc all architectures can be compiled in parallel. |
| 52 | # |
| 53 | # sun4/Makefile knows how to build prerequisites needed for parallel build. |
| 54 | # can start. |
| 55 | # |
| 56 | sparc_PREREQ = sun4 |
| 57 | sparc_PARALLEL = $(sparc_ARCHITECTURES) |
| 58 | |
| 59 | # |
| 60 | # Platforms defined in $(MACH)_PARALLEL are built in parallel. DUMMY is placed |
| 61 | # at the end in case $(MACH)_PARALLEL is empty to prevent everything going in |
| 62 | # parallel. |
| 63 | # |
| 64 | .PARALLEL: $($(MACH)_PARALLEL) DUMMY |
| 65 | |
| 66 | # |
| 67 | # For build prerequisites we use a special target which is constructed by adding |
| 68 | # '.prereq' suffix to the $(MACH)_PREREQ. |
| 69 | # |
| 70 | PREREQ_TARGET = $($(MACH)_PREREQ:%=%.prereq) |
| 71 | |
stevel@tonic-gate | 7c478bd | 2005-06-14 00:00:00 -0700 | [diff] [blame] | 72 | |
| 73 | def := TARGET= def |
| 74 | all := TARGET= all |
| 75 | install := TARGET= install |
| 76 | install_h := TARGET= install_h |
| 77 | clean := TARGET= clean |
| 78 | clobber := TARGET= clobber |
Gordon Ross | b6805bf | 2013-08-23 18:31:03 -0400 | [diff] [blame] | 79 | clobber_h := TARGET= clobber |
stevel@tonic-gate | 7c478bd | 2005-06-14 00:00:00 -0700 | [diff] [blame] | 80 | lint := TARGET= lint |
| 81 | clean.lint := TARGET= clean.lint |
| 82 | check := TARGET= check |
kupfer | fb9f9b9 | 2005-12-21 19:47:57 -0800 | [diff] [blame] | 83 | modlist := TARGET= modlist |
| 84 | modlist := NO_STATE= -K $$MODSTATE$$$$ |
stevel@tonic-gate | 7c478bd | 2005-06-14 00:00:00 -0700 | [diff] [blame] | 85 | |
| 86 | .KEEP_STATE: |
| 87 | |
| 88 | def all lint: all_h $(PMTMO_FILE) $($(MACH)_ARCHITECTURES) |
| 89 | |
| 90 | install: all_h install_dirs $(PMTMO_FILE) $($(MACH)_ARCHITECTURES) |
| 91 | |
stevel@tonic-gate | 7c478bd | 2005-06-14 00:00:00 -0700 | [diff] [blame] | 92 | install_dirs: |
| 93 | @cd ..; pwd; $(MAKE) rootdirs |
| 94 | @pwd |
| 95 | |
akolb | 98157a7 | 2008-02-27 15:35:58 -0800 | [diff] [blame] | 96 | # |
| 97 | # Rule to build prerequisites. The left part of the pattern will match |
| 98 | # PREREQ_TARGET. |
| 99 | # |
| 100 | # The location of the Makefile is determined by strippinng '.prereq' suffix from |
| 101 | # the target name. We add '.prereq' suffix to the target passed to the child |
| 102 | # Makefile so that it can distinguish prerequisite build from the regular one. |
| 103 | # |
| 104 | # |
| 105 | %.prereq: |
| 106 | @cd $(@:%.prereq=%); pwd; $(MAKE) $(NO_STATE) $(TARGET).prereq |
| 107 | |
| 108 | # |
| 109 | # Rule to build architecture files. Build all required prerequisites and then |
| 110 | # build the rest (potentially in parallel). |
| 111 | # |
| 112 | $($(MACH)_ARCHITECTURES): $(PREREQ_TARGET) FRC |
kupfer | fb9f9b9 | 2005-12-21 19:47:57 -0800 | [diff] [blame] | 113 | @cd $@; pwd; $(MAKE) $(NO_STATE) $(TARGET) |
stevel@tonic-gate | 7c478bd | 2005-06-14 00:00:00 -0700 | [diff] [blame] | 114 | |
| 115 | $(PMTMO_FILE) pmtmo_file: $(PATCH_MAKEUP_TABLE) |
| 116 | @if [ -z "$(PATCH_MAKEUP_TABLE)" ] ; then \ |
| 117 | echo 'ERROR: $$(PATCH_MAKEUP_TABLE) not set' \ |
| 118 | 'in environment' >&2 ; \ |
| 119 | exit 1 ; \ |
| 120 | fi |
| 121 | RELEASE="$(RELEASE)" MACH="$(MACH)" \ |
| 122 | $(CTFCVTPTBL) -o $(PMTMO_FILE) $(PATCH_MAKEUP_TABLE) |
| 123 | |
| 124 | # |
| 125 | # The following is the list of directories which contain Makefiles with |
| 126 | # targets to install header file. The machine independent headers are |
| 127 | # installed by invoking the Makefile in the directory containing the |
| 128 | # header files. Machine and architecture dependent headers are installed |
| 129 | # by invoking the main makefile for that architecture/machine which, |
| 130 | # in turn, is responsible for invoking the Makefiles which install headers. |
| 131 | # It is done this way so as not to assume that all of the header files in |
| 132 | # the architecture/machine dependent subdirectories are in completely |
| 133 | # isomorphic locations. |
| 134 | # |
Yuri Pankov | cb41b9c | 2018-08-07 16:46:21 -0700 | [diff] [blame] | 135 | COMMON_HDRDIRS= common/c2 \ |
John Forte | fcf3ce4 | 2008-10-14 15:09:13 -0700 | [diff] [blame] | 136 | common/des \ |
| 137 | common/fs \ |
| 138 | common/gssapi \ |
| 139 | common/idmap \ |
Dan Kruchinin | bbaa8b6 | 2013-08-26 20:42:32 -0800 | [diff] [blame] | 140 | common/klm \ |
John Forte | fcf3ce4 | 2008-10-14 15:09:13 -0700 | [diff] [blame] | 141 | common/inet \ |
| 142 | common/inet/ipf/netinet \ |
| 143 | common/inet/kssl \ |
| 144 | common/inet/nca \ |
Darren Reed | 0a0e977 | 2009-09-24 07:28:12 -0700 | [diff] [blame] | 145 | common/inet/sockmods/netpacket \ |
| 146 | common/io/bpf/net \ |
Gordon Ross | b6805bf | 2013-08-23 18:31:03 -0400 | [diff] [blame] | 147 | common/io/fibre-channel/fca/qlc \ |
John Forte | fcf3ce4 | 2008-10-14 15:09:13 -0700 | [diff] [blame] | 148 | common/ipp \ |
| 149 | common/net \ |
| 150 | common/netinet \ |
| 151 | common/nfs \ |
| 152 | common/pcmcia/sys \ |
| 153 | common/rpc \ |
| 154 | common/rpcsvc \ |
| 155 | common/sharefs \ |
Alan Wright | 148c5f4 | 2010-05-27 15:26:41 -0700 | [diff] [blame] | 156 | common/smb \ |
John Forte | fcf3ce4 | 2008-10-14 15:09:13 -0700 | [diff] [blame] | 157 | common/smbsrv \ |
| 158 | common/sys \ |
| 159 | common/vm |
| 160 | |
dh155122 | f4b3ec6 | 2007-01-19 16:59:38 -0800 | [diff] [blame] | 161 | |
Jordan Brown | 9b214d3 | 2009-05-07 12:31:08 -0700 | [diff] [blame] | 162 | # |
| 163 | # Subset of COMMON_HDRDIRS in which at least one header is generated |
Dan Kruchinin | bbaa8b6 | 2013-08-26 20:42:32 -0800 | [diff] [blame] | 164 | # at runtime (e.g., rpcgen), and in which "make clean" should run. |
| 165 | # Other directories should be included here, but do not yet have the |
Yuri Pankov | cb41b9c | 2018-08-07 16:46:21 -0700 | [diff] [blame] | 166 | # necessary Makefile support (make clean). |
Jordan Brown | 9b214d3 | 2009-05-07 12:31:08 -0700 | [diff] [blame] | 167 | # |
Yuri Pankov | cb41b9c | 2018-08-07 16:46:21 -0700 | [diff] [blame] | 168 | DYNHDRDIRS = common/gssapi \ |
Gordon Ross | b6805bf | 2013-08-23 18:31:03 -0400 | [diff] [blame] | 169 | common/idmap \ |
| 170 | common/io/fibre-channel/fca/qlc \ |
Dan Kruchinin | bbaa8b6 | 2013-08-26 20:42:32 -0800 | [diff] [blame] | 171 | common/klm \ |
Gordon Ross | b6805bf | 2013-08-23 18:31:03 -0400 | [diff] [blame] | 172 | common/rpc \ |
Dan Kruchinin | bbaa8b6 | 2013-08-26 20:42:32 -0800 | [diff] [blame] | 173 | common/rpcsvc \ |
| 174 | common/sys |
Jordan Brown | 9b214d3 | 2009-05-07 12:31:08 -0700 | [diff] [blame] | 175 | |
stevel@tonic-gate | 7c478bd | 2005-06-14 00:00:00 -0700 | [diff] [blame] | 176 | sparc_HDRDIRS= sun/sys |
johnlev | 843e198 | 2007-09-18 15:46:43 -0700 | [diff] [blame] | 177 | i386_HDRDIRS= i86pc/vm i86xpv/vm |
stevel@tonic-gate | 7c478bd | 2005-06-14 00:00:00 -0700 | [diff] [blame] | 178 | |
| 179 | HDRDIRS= $(COMMON_HDRDIRS) $($(MACH)_HDRDIRS) |
| 180 | install_h check: $(HDRDIRS) $($(MACH)_ARCHITECTURES) |
| 181 | |
| 182 | $(HDRDIRS): FRC |
| 183 | @cd $@; pwd; $(MAKE) $(TARGET) |
| 184 | |
| 185 | # ensures that headers made by rpcgen and others are available in uts source |
| 186 | # for kernel builds to reference without building install_h |
| 187 | # |
| 188 | all_h: FRC |
| 189 | @cd common/sys; pwd; $(MAKE) $@ |
| 190 | @cd common/rpc; pwd; $(MAKE) $@ |
| 191 | @cd common/rpcsvc; pwd; $(MAKE) $@ |
| 192 | @cd common/gssapi; pwd; $(MAKE) $@ |
nw141292 | c5c4113 | 2007-06-21 19:11:00 -0700 | [diff] [blame] | 193 | @cd common/idmap; pwd; $(MAKE) $@ |
Dan Kruchinin | bbaa8b6 | 2013-08-26 20:42:32 -0800 | [diff] [blame] | 194 | @cd common/klm; pwd; $(MAKE) $@ |
stevel@tonic-gate | 7c478bd | 2005-06-14 00:00:00 -0700 | [diff] [blame] | 195 | |
Jordan Brown | 9b214d3 | 2009-05-07 12:31:08 -0700 | [diff] [blame] | 196 | clean clobber: $($(MACH)_ARCHITECTURES) $(DYNHDRDIRS) |
| 197 | @if [ '$(PATCH_BUILD)' != '#' ] ; then \ |
| 198 | echo $(RM) $(PMTMO_FILE) ; \ |
| 199 | $(RM) $(PMTMO_FILE) ; \ |
| 200 | fi |
| 201 | |
Gordon Ross | b6805bf | 2013-08-23 18:31:03 -0400 | [diff] [blame] | 202 | # testing convenience |
| 203 | clobber_h: $(DYNHDRDIRS) |
Jordan Brown | 9b214d3 | 2009-05-07 12:31:08 -0700 | [diff] [blame] | 204 | |
| 205 | clean.lint modlist: $($(MACH)_ARCHITECTURES) |
| 206 | |
stevel@tonic-gate | 7c478bd | 2005-06-14 00:00:00 -0700 | [diff] [blame] | 207 | # |
| 208 | # Cross-reference customization: build a cross-reference over all of |
| 209 | # the supported architectures. Although there's no correct way to set |
| 210 | # the include path (since we don't know what architecture is the one |
| 211 | # the user will be interested in), it's historically been set to |
| 212 | # mirror the $(XRDIRS) list, and that works kinda sorta okay. |
| 213 | # |
Josef 'Jeff' Sipek | c0e7977 | 2013-10-15 00:21:04 -0400 | [diff] [blame] | 214 | XRDIRS = $(sparc_ARCHITECTURES) $(i386_ARCHITECTURES) sun4 sfmmu \ |
kupfer | fb9f9b9 | 2005-12-21 19:47:57 -0800 | [diff] [blame] | 215 | sun common |
kupfer | fb9f9b9 | 2005-12-21 19:47:57 -0800 | [diff] [blame] | 216 | |
stevel@tonic-gate | 7c478bd | 2005-06-14 00:00:00 -0700 | [diff] [blame] | 217 | XRINCDIRS = $(XRDIRS) |
| 218 | |
| 219 | cscope.out tags: FRC |
| 220 | $(XREF) -x $@ |
| 221 | |
| 222 | FRC: |