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