1 #
2 # This file and its contents are supplied under the terms of the
3 # Common Development and Distribution License ("CDDL"), version 1.0.
4 # You may only use this file in accordance with the terms of version
5 # 1.0 of the CDDL.
6 #
7 # A full copy of the text of the CDDL should have accompanied this
8 # source. A copy of the CDDL is also available via the Internet at
9 # http://www.illumos.org/license/CDDL.
10 #
11
12 #
13 # Copyright 2023 Oxide Computer Company
14 #
15
16 PROGS = \
17 bad_xregs \
18 fpregs \
19 fpregs_xbv \
20 proc_xregs_set \
21 setcontext_replace \
22 setcontext_restore \
23 swapcontext_extd \
24 signal_restore \
25 xregs_dump \
26 xregs_roundtrip \
27 xregs_set \
28 xsave_baducontext \
29 xsu_hwtype
30
31 SCRIPTS = mdb_xregs proc_writes xsave_baducontext
32
33 DATAFILES = \
34 mdb_xregs.ymm.32 \
35 mdb_xregs.ymm.64 \
36 mdb_xregs.zmm.32 \
37 mdb_xregs.zmm.64 \
38 proc_writes.fpregs.ymm.32 \
39 proc_writes.fpregs.ymm.64 \
40 proc_writes.fpregs.zmm.32 \
41 proc_writes.fpregs.zmm.64 \
42 proc_writes.xregs.ymm.32 \
43 proc_writes.xregs.ymm.64 \
44 proc_writes.xregs.zmm.32 \
45 proc_writes.xregs.zmm.64
46
47 PROGS32 = $(PROGS:%=%.32)
48 PROGS64 = $(PROGS:%=%.64)
49
50 ROOTOPTDIR = $(ROOT)/opt/os-tests/tests
51 ROOTOPTXSAVE = $(ROOTOPTDIR)/xsave
52 ROOTOPTPROGS = $(PROGS32:%=$(ROOTOPTXSAVE)/%) \
53 $(PROGS64:%=$(ROOTOPTXSAVE)/%) \
54 $(SCRIPTS:%=$(ROOTOPTXSAVE)/%)
55 ROOTOPTDATADIR = $(ROOTOPTXSAVE)/data
56 ROOTOPTDATA = $(DATAFILES:%=$(ROOTOPTDATADIR)/%)
57
58 COMMOBJS32 = xsave_util.32.o xsave_asm32.32.o
59 COMMOBJS64 = xsave_util.64.o xsave_asm64.64.o
60
61 OBJS32 = $(COMMOBJS32) $(PROGS:%=%.32.o)
62 OBJS64 = $(COMMOBJS64) $(PROGS:%=%.64.o)
63
64 #
65 # To simplify things we always link in the support files to programs
66 # even though in some case (e.g. xsave_baducontext) they aren't needed.
67 # This also drives a requirement that everything links against libproc
68 # (seen below).
69 #
70 EXTRA_OBJS32 = $(COMMOBJS32)
71 EXTRA_OBJS64 = $(COMMOBJS64)
72
73 include $(SRC)/cmd/Makefile.cmd
74
75 #
76 # These are required to get COMPILE.s to work as Makefile.master puts
77 # some things in AS_CPPFLAGS, but not what we need to make it work.
78 #
79 AS_CPPFLAGS += -D_ASM
80
81 $(ROOTOPTDATA) := FILEMODE = 0444
82
83 LDLIBS += -lproc
84 LDLIBS64 += -lproc
85
86 CSTD = $(GNU_C99)
87
88 .KEEP_STATE:
89
90 all: $(PROGS32) $(PROGS64)
91
92 install: $(ROOTOPTPROGS) $(ROOTOPTDATA)
93
94 clean:
95 $(RM) $(OBJS32) $(OBJS64)
96
97 $(PROGS32): $(OBJS32)
98 $(PROGS64): $(OBJS64)
99
100 $(ROOTOPTPROGS): $(PROGS32) $(PROGS64) $(ROOTOPTXSAVE)
101 $(ROOTOPTDATA): $(ROOTOPTDATADIR)
102
103 $(ROOTOPTDIR):
104 $(INS.dir)
105
106 $(ROOTOPTXSAVE): $(ROOTOPTDIR)
107 $(INS.dir)
108
109 $(ROOTOPTDATADIR): $(ROOTOPTXSAVE)
110 $(INS.dir)
111
112 $(ROOTOPTXSAVE)/%: %
113 $(INS.file)
114
115 $(ROOTOPTXSAVE)/%: %.ksh
116 $(INS.rename)
117
118 %.32.o: %.c
119 $(COMPILE.c) -o $@ $<
120 $(POST_PROCESS_O)
121
122 %.64.o: %.c
123 $(COMPILE64.c) -o $@ $<
124 $(POST_PROCESS_O)
125
126 %.32.o: %.S
127 $(COMPILE.s) -o $@ $<
128 $(POST_PROCESS_S_0)
129
130 %.64.o: %.S
131 $(COMPILE64.s) -o $@ $<
132 $(POST_PROCESS_S_0)
133
134 %.64: %.64.o
135 $(LINK64.c) -o $@ $< $(LDLIBS64) $(EXTRA_OBJS64)
136 $(POST_PROCESS)
137
138 %.32: %.32.o
139 $(LINK.c) -o $@ $< $(LDLIBS) $(EXTRA_OBJS32)
140 $(POST_PROCESS)
141
142 clobber: clean
143 $(RM) $(PROGS32) $(PROGS64)
144
145 FRC: