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 2019 Joyent, Inc.
14#
15
16#
17# This Makefile is installed onto the target system and is used as part
18# of the running tests. It is not used as part of the build.
19#
20# This makefile could be simplified substantially. However, it does
21# everything explicitly to try and work with a wide variety of different
22# makes.
23#
24# The following values should be passed in by the invoker of the
25# Makefile:
26#
27#	CC		C Compiler to use
28#	CFLAGS32	32-bit CFLAGS
29#	CFLAGS64	64-bit CFLAGS
30#	CTFCONVERT	Path to ctfconvert
31#	CTFMERGE	Path to ctfmerge
32#	DEBUGFLAGS	The set of debug flags to use
33#	BUILDDIR	Directory things should be built in
34#	CHECK32		Program to check 32-bit output
35#	CHECK64		Program to check 64-bit output
36#
37# The following values should be set before building this:
38#
39#	TEST		The name of the test program
40#	OBJS_C_32	32-bit convert objects
41#	OBJS_C_64	64-bit convert objects
42#	OBJS_M_32	32-bit merge objects
43#	OBJS_M_64	64-bit merge objects
44#
45
46CONV32 =	$(BUILDDIR)/$(TEST)-32c
47CONV64 =	$(BUILDDIR)/$(TEST)-64c
48MERGE32 =	$(BUILDDIR)/$(TEST)-32m
49MERGE64 =	$(BUILDDIR)/$(TEST)-64m
50
51BINS =		$(CONV32) \
52		$(CONV64) \
53		$(MERGE32) \
54		$(MERGE64)
55
56build: $(BINS)
57
58$(BUILDDIR)/%.32.c.o: %.c
59	$(CC) $(CFLAGS32) $(TEST_CFLAGS32) $(DEBUGFLAGS) -o $@ -c $<
60
61$(BUILDDIR)/%.64.c.o: %.c
62	$(CC) $(CFLAGS64) $(TEST_CFLAGS64) $(DEBUGFLAGS) -o $@ -c $<
63
64$(BUILDDIR)/%.32.m.o: %.c
65	$(CC) $(CFLAGS32) $(TEST_CFLAGS32) $(DEBUGFLAGS) -o $@ -c $<
66	$(CTFCONVERT) $@
67
68$(BUILDDIR)/%.64.m.o: %.c
69	$(CC) $(CFLAGS64) $(TEST_CFLAGS64) $(DEBUGFLAGS) -o $@ -c $<
70	$(CTFCONVERT) $@
71
72$(CONV32): $(OBJS_C_32)
73	$(CC) $(CFLAGS32) $(TEST_CFLAGS32) $(DEBUGFLAGS) -o $@ $(OBJS_C_32)
74	$(CTFCONVERT) $@
75
76$(CONV64): $(OBJS_C_64)
77	$(CC) $(CFLAGS64) $(TEST_CFLAGS64) $(DEBUGFLAGS) -o $@ $(OBJS_C_64)
78	$(CTFCONVERT) $@
79
80$(MERGE32): $(OBJS_M_32)
81	$(CC) $(CFLAGS32) $(TEST_CFLAGS32) $(DEBUGFLAGS) -o $@ $(OBJS_M_32)
82	$(CTFMERGE) -t -o $@ $(OBJS_M_32)
83
84$(MERGE64): $(OBJS_M_64)
85	$(CC) $(CFLAGS64) $(TEST_CFLAGS64) $(DEBUGFLAGS) -o $@ $(OBJS_M_64)
86	$(CTFMERGE) -t -o $@ $(OBJS_M_64)
87
88run-test:
89	$(CHECK32) $(CONV32)
90	$(CHECK64) $(CONV64)
91	$(CHECK32) $(MERGE32)
92	$(CHECK64) $(MERGE64)
93