xref: /illumos-gate/usr/src/test/libproc-tests/Makefile.com (revision 1a2d662a91cee3bf82f41cd47c7ae6f3825d9db2)
1*1a2d662aSRobert Mustacchi#
2*1a2d662aSRobert Mustacchi# This file and its contents are supplied under the terms of the
3*1a2d662aSRobert Mustacchi# Common Development and Distribution License ("CDDL"), version 1.0.
4*1a2d662aSRobert Mustacchi# You may only use this file in accordance with the terms of version
5*1a2d662aSRobert Mustacchi# 1.0 of the CDDL.
6*1a2d662aSRobert Mustacchi#
7*1a2d662aSRobert Mustacchi# A full copy of the text of the CDDL should have accompanied this
8*1a2d662aSRobert Mustacchi# source.  A copy of the CDDL is also available via the Internet at
9*1a2d662aSRobert Mustacchi# http://www.illumos.org/license/CDDL.
10*1a2d662aSRobert Mustacchi#
11*1a2d662aSRobert Mustacchi
12*1a2d662aSRobert Mustacchi#
13*1a2d662aSRobert Mustacchi# Copyright 2024 Oxide Computer Company
14*1a2d662aSRobert Mustacchi#
15*1a2d662aSRobert Mustacchi
16*1a2d662aSRobert Mustacchi#
17*1a2d662aSRobert Mustacchi# Common Makefile rules and patterns for building the various libproc
18*1a2d662aSRobert Mustacchi# tests.
19*1a2d662aSRobert Mustacchi#
20*1a2d662aSRobert Mustacchi# Individual test directories can use this to build multiple bitness
21*1a2d662aSRobert Mustacchi# programs and scripts. The following assumptions are used in this
22*1a2d662aSRobert Mustacchi# Makefile:
23*1a2d662aSRobert Mustacchi#
24*1a2d662aSRobert Mustacchi# 'PROGS': This variable is a list of programs to build. The expectation
25*1a2d662aSRobert Mustacchi#  is that each one has a corresponding .c file.
26*1a2d662aSRobert Mustacchi#
27*1a2d662aSRobert Mustacchi# 'COMMON_SRCS': This is a list of .c files that should be built into
28*1a2d662aSRobert Mustacchi# every test object.
29*1a2d662aSRobert Mustacchi#
30*1a2d662aSRobert Mustacchi# 'SCRIPTS': These are ksh files that should be installed into the test
31*1a2d662aSRobert Mustacchi# directory.
32*1a2d662aSRobert Mustacchi#
33*1a2d662aSRobert Mustacchi# 'TESTDIR': This is the name of the directory under libproc-tests/tests
34*1a2d662aSRobert Mustacchi# that tests should appear.
35*1a2d662aSRobert Mustacchi#
36*1a2d662aSRobert Mustacchi# 'LDLIBS'/'LDLIBS64': Individual makefiles are expected to include
37*1a2d662aSRobert Mustacchi# -lproc here. This isn't done universally so it's easier to build
38*1a2d662aSRobert Mustacchi# binaries that don't use libproc.
39*1a2d662aSRobert Mustacchi#
40*1a2d662aSRobert Mustacchi
41*1a2d662aSRobert MustacchiPROGS32 = $(PROGS:%=%.32)
42*1a2d662aSRobert MustacchiPROGS64 = $(PROGS:%=%.64)
43*1a2d662aSRobert Mustacchi
44*1a2d662aSRobert MustacchiEXTRA_OBJS32 = $(COMMON_SRCS:%.c=%.o.32)
45*1a2d662aSRobert MustacchiEXTRA_OBJS64 = $(COMMON_SRCS:%.c=%.o.64)
46*1a2d662aSRobert Mustacchi
47*1a2d662aSRobert MustacchiROOTOPTDIR = $(ROOT)/opt/libproc-tests
48*1a2d662aSRobert MustacchiROOTOPTTESTS = $(ROOTOPTDIR)/tests
49*1a2d662aSRobert MustacchiROOTOPTTARG = $(ROOTOPTTESTS)/$(TESTDIR)
50*1a2d662aSRobert MustacchiROOTOPTPROGS = $(PROGS32:%=$(ROOTOPTTARG)/%) $(PROGS64:%=$(ROOTOPTTARG)/%)
51*1a2d662aSRobert MustacchiROOTOPTPROGS += $(SCRIPTS:%=$(ROOTOPTTARG)/%)
52*1a2d662aSRobert Mustacchi
53*1a2d662aSRobert Mustacchiinclude $(SRC)/cmd/Makefile.cmd
54*1a2d662aSRobert Mustacchiinclude $(SRC)/cmd/Makefile.ctf
55*1a2d662aSRobert Mustacchi
56*1a2d662aSRobert MustacchiCPPFLAGS += -D_REENTRANT
57*1a2d662aSRobert MustacchiCSTD = $(CSTD_GNU99)
58*1a2d662aSRobert MustacchiCTF_MODE = link
59*1a2d662aSRobert Mustacchi
60*1a2d662aSRobert Mustacchi.KEEP_STATE:
61*1a2d662aSRobert Mustacchi
62*1a2d662aSRobert Mustacchiall: $(PROGS32) $(PROGS64)
63*1a2d662aSRobert Mustacchi
64*1a2d662aSRobert Mustacchiclobber: clean
65*1a2d662aSRobert Mustacchi	-$(RM) $(PROGS32) $(PROGS64)
66*1a2d662aSRobert Mustacchi
67*1a2d662aSRobert Mustacchiclean:
68*1a2d662aSRobert Mustacchi	-$(RM) *.o.32 *.o.64
69*1a2d662aSRobert Mustacchi
70*1a2d662aSRobert Mustacchiinstall: $(ROOTOPTTARG) .WAIT $(ROOTOPTPROGS)
71*1a2d662aSRobert Mustacchi
72*1a2d662aSRobert Mustacchi$(ROOTOPTDIR):
73*1a2d662aSRobert Mustacchi	$(INS.dir)
74*1a2d662aSRobert Mustacchi
75*1a2d662aSRobert Mustacchi$(ROOTOPTTESTS): $(ROOTOPTDIR)
76*1a2d662aSRobert Mustacchi	$(INS.dir)
77*1a2d662aSRobert Mustacchi
78*1a2d662aSRobert Mustacchi$(ROOTOPTTARG): $(ROOTOPTTESTS)
79*1a2d662aSRobert Mustacchi	$(INS.dir)
80*1a2d662aSRobert Mustacchi
81*1a2d662aSRobert Mustacchi$(ROOTOPTTARG)/%: %
82*1a2d662aSRobert Mustacchi	$(INS.file)
83*1a2d662aSRobert Mustacchi
84*1a2d662aSRobert Mustacchi$(ROOTOPTTARG)/%: %.ksh
85*1a2d662aSRobert Mustacchi	$(INS.rename)
86*1a2d662aSRobert Mustacchi
87*1a2d662aSRobert Mustacchi%.o.32: %.c
88*1a2d662aSRobert Mustacchi	$(COMPILE.c) -o $@ -c $<
89*1a2d662aSRobert Mustacchi	$(POST_PROCESS_O)
90*1a2d662aSRobert Mustacchi
91*1a2d662aSRobert Mustacchi%.o.64: %.c
92*1a2d662aSRobert Mustacchi	$(COMPILE64.c) -o $@ -c $<
93*1a2d662aSRobert Mustacchi	$(POST_PROCESS_O)
94*1a2d662aSRobert Mustacchi
95*1a2d662aSRobert Mustacchi%.64: %.o.64 $(EXTRA_OBJS64)
96*1a2d662aSRobert Mustacchi	$(LINK64.c) -o $@ $< $(EXTRA_OBJS64) $(LDLIBS64)
97*1a2d662aSRobert Mustacchi	$(POST_PROCESS)
98*1a2d662aSRobert Mustacchi
99*1a2d662aSRobert Mustacchi%.32: %.o.32 $(EXTRA_OBJS32)
100*1a2d662aSRobert Mustacchi	$(LINK.c) -o $@ $< $(EXTRA_OBJS32) $(LDLIBS)
101*1a2d662aSRobert Mustacchi	$(POST_PROCESS)
102