xref: /illumos-gate/usr/src/psm/stand/boot/sparcv9/sun4/Makefile (revision f22cbd2db87ae3945ed6a9166f8b9d61b65c6ab9)
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 2014 Gary Mills
22#
23# Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
24# Use is subject to license terms.
25#
26
27TOPDIR =	../../../../..
28
29include $(TOPDIR)/uts/Makefile.uts
30
31all	:=	TARGET = all
32install	:=	TARGET = install
33clean	:=	TARGET = clean
34
35TARG_MACH =	sparcv9
36TARG_MACH_DIR =	sparcv9
37ARCHVERS =	v9
38PLATFORM =	sun4
39#ARCHMMU  =	sfmmu
40PROMVERS =	ieee1275
41ASFLAGS +=	$(sparcv9_XARCH)
42
43ARCH_C_SRC =	sun4u_memlist.c sun4x_standalloc.c sun4dep.c
44ARCH_S_SRC =	sparcv9_subr.s
45SRT0_S =	sun4u_srt0.s
46INLINES =
47
48LDFLAGS +=	-L$(TOPDIR)/psm/stand/lib/promif/$(TARG_MACH)/$(PROMVERS)/common
49
50#
51# The following libraries are build in LIBPLAT_DIR
52#
53LIBPLAT_DIR =	$(TOPDIR)/psm/stand/lib/promif/$(TARG_MACH)/$(PROMVERS)/$(PLATFORM)
54LIBPLAT_LIBS =  libplat.a
55LIBPLAT_L_LIBS=	$(LIBPLAT_LIBS:lib%.a=llib-l%.ln)
56LIBPLAT_DEP = 	$(LIBPLAT_DIR)/$(LIBPLAT_LIBS)
57LIBPLAT_DEP_L =	$(LIBPLAT_DIR)/$(LIBPLAT_L_LIBS)
58
59#
60# Platform specific libraries
61#
62PSMLIBS +=      $(LIBPLAT_LIBS:lib%.a=-l%)
63PSMLIB_DIRS +=  $(LIBPLAT_DIR)
64
65include ../Makefile.com
66
67CPPINCS		+= -I$(TOPDIR)/psm/stand/boot/sparc/sun4
68
69#
70# Set the choice of compiler.
71
72include $(TOPDIR)/psm/Makefile.psm.64
73
74CFLAGS64	+= -xchip=ultra $(CCABS32)
75
76#
77# XXX this totally sucks since it effectively turns off -errchk=longptr64,
78# which we really should be using.
79#
80LINTFLAGS64 = $(LINTFLAGS) -m64
81
82#
83# Cross-reference customization: include all boot-related source files.
84#
85STANDLIBDIR=	../../../../../stand/lib
86STANDSYSDIR=	../../../../../stand/sys
87PROMDIRS=	../../../../promif
88NAMESDIRS=	../../../lib/names/sparcv9 ../../../lib/names/sparc/common
89XRDIRS +=	../../sparc/common ../../common $(STANDLIBDIR) \
90		$(STANDSYSDIR) $(PROMDIRS) $(NAMESDIRS)
91XRPRUNE =	i86pc i386
92
93
94#############################
95#
96# NFS booter
97#
98# Libraries used to build nfsboot
99#
100LIBNFS_LIBS     = libnfs.a libxdr.a libnames.a \
101		libsock.a libinet.a libtcp.a libsa.a libprom.a \
102		$(LIBPLAT_LIBS)
103NFS_LIBS        = $(LIBNFS_LIBS:lib%.a=-l%)
104NFS_DIRS        = $(LIBNAME_DIR:%=-L%) $(LIBSYS_DIR:%=-L%)
105NFS_DIRS        += $(LIBPLAT_DIR:%=-L%) $(LIBPROM_DIR:%=-L%)
106
107#
108# Loader flags used to build inetboot
109#
110NFS_MAPFILE	= $(MACH_DIR)/mapfile
111NFS_LDFLAGS	= -dn -M $(NFS_MAPFILE) -e _start $(NFS_DIRS)
112NFS_L_LDFLAGS	= $(NFS_DIRS)
113
114#
115# Object files used to build inetboot
116#
117NFS_SRT0        = $(SRT0_OBJ)
118NFS_OBJS        = $(OBJS) nfsconf.o inetboot.o ramdisk.o
119NFS_L_OBJS      = $(NFS_SRT0:%.o=%.ln) $(NFS_OBJS:%.o=%.ln)
120
121
122#include $(BOOTSRCDIR)/Makefile.rules
123
124FRC:
125
126.KEEP_STATE:
127
128all: $(NFSBOOT)
129
130install: all					\
131	$(USR_PLAT_SUN4U_LIB_FS_NFS_NFSBOOT)	\
132	$(USR_PLAT_SUN4V_LIB_FS_NFS_NFSBOOT)
133
134$(NFSBOOT): $(NFS_MAPFILE) $(NFS_SRT0) $(NFS_OBJS) $(LIBDEPS)
135	$(LD) $(NFS_LDFLAGS) -o $@ $(NFS_SRT0) $(NFS_OBJS) $(NFS_LIBS)
136	$(MCS) -d $@
137	$(POST_PROCESS)
138	$(MCS) -c $@
139	$(STRIP) $@
140
141$(NFSBOOT)_lint: $(NFS_L_OBJS) $(L_LIBDEPS)
142	@echo ""
143	@echo inetboot lint: global crosschecks:
144	$(LINT.c) $(NFS_L_LDFLAGS) $(NFS_L_OBJS) $(NFS_LIBS)
145
146$(USR_PLAT_SUN4U_LIB_FS_NFS):
147	$(INS.dir)
148
149$(USR_PLAT_SUN4V_LIB_FS_NFS):
150	$(INS.dir)
151
152$(USR_PLAT_SUN4U_LIB_FS_NFS_NFSBOOT): $(USR_PLAT_SUN4U_LIB_FS_NFS) $(NFSBOOT)
153	$(INS) -s -m $(FILEMODE) -f $(USR_PLAT_SUN4U_LIB_FS_NFS) $(NFSBOOT)
154
155$(USR_PLAT_SUN4V_LIB_FS_NFS_NFSBOOT): $(USR_PLAT_SUN4V_LIB_FS_NFS) $(NFSBOOT)
156	$(INS) -s -m $(FILEMODE) -f $(USR_PLAT_SUN4V_LIB_FS_NFS) $(NFSBOOT)
157
158$(STRIPALIGN): $(CMN_DIR)/$$(@).c
159	$(NATIVECC) -o $@ $(CMN_DIR)/$@.c
160
161clean:
162	$(RM) make.out lint.out
163	$(RM) $(OBJS) $(CONF_OBJS) $(MISC_OBJS) $(SRT0_OBJ)
164	$(RM) $(NFSBOOT_OBJS)
165	$(RM) $(L_OBJS) $(CONF_L_OBJS) $(MISC_L_OBJS) $(SRT0_L_OBJ)
166	$(RM) $(NFSBOOT_L_OBJS)
167
168clobber: clean
169	$(RM) $(NFSBOOT) $(STRIPALIGN)
170
171lint: $(NFSBOOT)_lint
172