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 2024 Oxide Computer Company
14#
15
16#
17# Common Makefile rules and patterns for building the various NVMe
18# tests.
19#
20
21PROGS32 = $(PROGS:%=%.32)
22PROGS64 = $(PROGS:%=%.64)
23
24EXTRA_OBJS32 = $(COMMON_SRCS:%.c=%.o.32)
25EXTRA_OBJS64 = $(COMMON_SRCS:%.c=%.o.64)
26
27ROOTOPTDIR = $(ROOT)/opt/nvme-tests
28ROOTOPTTESTS = $(ROOTOPTDIR)/tests
29ROOTOPTTARG = $(ROOTOPTTESTS)/$(TESTDIR)
30ROOTOPTPROGS = $(PROGS32:%=$(ROOTOPTTARG)/%) $(PROGS64:%=$(ROOTOPTTARG)/%)
31ROOTOPTPROGS += $(SCRIPTS:%=$(ROOTOPTTARG)/%)
32
33include $(SRC)/cmd/Makefile.cmd
34include $(SRC)/cmd/Makefile.ctf
35
36CPPFLAGS += -D_REENTRANT
37CSTD = $(CSTD_GNU99)
38CTF_MODE = link
39
40.KEEP_STATE:
41
42all: $(PROGS32) $(PROGS64)
43
44clobber: clean
45	-$(RM) $(PROGS32) $(PROGS64)
46
47clean:
48	-$(RM) *.o.32 *.o.64
49
50install: $(ROOTOPTTARG) .WAIT $(ROOTOPTPROGS)
51
52$(ROOTOPTDIR):
53	$(INS.dir)
54
55$(ROOTOPTTESTS): $(ROOTOPTDIR)
56	$(INS.dir)
57
58$(ROOTOPTTARG): $(ROOTOPTTESTS)
59	$(INS.dir)
60
61$(ROOTOPTTARG)/%: %
62	$(INS.file)
63
64$(ROOTOPTTARG)/%: %.ksh
65	$(INS.rename)
66
67%.o.32: %.c
68	$(COMPILE.c) -o $@ -c $<
69	$(POST_PROCESS_O)
70
71%.o.64: %.c
72	$(COMPILE64.c) -o $@ -c $<
73	$(POST_PROCESS_O)
74
75%.o.32: $(SRC)/common/nvme/%.c
76	$(COMPILE.c) -o $@ -c $<
77	$(POST_PROCESS_O)
78
79%.o.64: $(SRC)/common/nvme/%.c
80	$(COMPILE64.c) -o $@ -c $<
81	$(POST_PROCESS_O)
82
83%.64: %.o.64 $(EXTRA_OBJS64)
84	$(LINK64.c) -o $@ $< $(EXTRA_OBJS64) $(LDLIBS64)
85	$(POST_PROCESS)
86
87%.32: %.o.32 $(EXTRA_OBJS32)
88	$(LINK.c) -o $@ $< $(EXTRA_OBJS32) $(LDLIBS)
89	$(POST_PROCESS)
90