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 could be simplified substantially. However, it does
  18 # everything explicitly to try and work with a wide variety of different
  19 # makes.
  20 #
  21 # The following values should be passed in by the invoker of the
  22 # Makefile:
  23 #
  24 #       CC              C Compiler to use
  25 #       CFLAGS32        32-bit CFLAGS
  26 #       CFLAGS64        64-bit CFLAGS
  27 #       CTFCONVERT      Path to ctfconvert
  28 #       CTFMERGE        Path to ctfmerge
  29 #       DEBUGFLAGS      The set of debug flags to use
  30 #       BUILDDIR        Directory things should be built in
  31 #       CHECK32         Program to check 32-bit output
  32 #       CHECK64         Program to check 64-bit output
  33 #
  34 
  35 OBJS_C_32 =     $(BUILDDIR)/test-global.32.c.o \
  36                 $(BUILDDIR)/test-scoped.32.c.o
  37 
  38 OBJS_C_64 =     $(BUILDDIR)/test-global.64.c.o \
  39                 $(BUILDDIR)/test-scoped.64.c.o
  40 
  41 OBJS_M_32 =     $(BUILDDIR)/test-global.32.m.o \
  42                 $(BUILDDIR)/test-scoped.32.m.o
  43 
  44 OBJS_M_64 =     $(BUILDDIR)/test-global.64.m.o \
  45                 $(BUILDDIR)/test-scoped.64.m.o
  46 
  47 BINS =          $(BUILDDIR)/test-merge-reduction-32c.so.1 \
  48                 $(BUILDDIR)/test-merge-reduction-32m.so.1 \
  49                 $(BUILDDIR)/test-merge-reduction-64c.so.1 \
  50                 $(BUILDDIR)/test-merge-reduction-64m.so.1 \
  51 
  52 CFLAGS = -fPIC
  53 LDFLAGS = -shared -Wl,-Mmapfile-vers -Wl,-ztext -Wl,-zdefs \
  54           -htest-merge-reduction.so.1
  55 
  56 build: $(BINS)
  57 
  58 $(BUILDDIR)/%.32.c.o: %.c
  59         $(CC) $(CFLAGS) $(CFLAGS32) $(DEBUGFLAGS) -o $@ -c $<
  60 
  61 $(BUILDDIR)/%.64.c.o: %.c
  62         $(CC) $(CFLAGS) $(CFLAGS64) $(DEBUGFLAGS) -o $@ -c $<
  63 
  64 $(BUILDDIR)/%.32.m.o: %.c
  65         $(CC) $(CFLAGS) $(CFLAGS32) $(DEBUGFLAGS) -o $@ -c $<
  66         $(CTFCONVERT) $@
  67 
  68 $(BUILDDIR)/%.64.m.o: %.c
  69         $(CC) $(CFLAGS) $(CFLAGS64) $(DEBUGFLAGS) -o $@ -c $<
  70         $(CTFCONVERT) $@
  71 
  72 $(BUILDDIR)/test-merge-reduction-32c.so.1: $(OBJS_C_32)
  73         $(CC) $(CFLAGS32) $(CFLAGS) $(LDFLAGS) $(DEBUGFLAGS) -o $@ $(OBJS_C_32)
  74         $(CTFCONVERT) $@
  75 
  76 $(BUILDDIR)/test-merge-reduction-64c.so.1: $(OBJS_C_64)
  77         $(CC) $(CFLAGS64) $(CFLAGS) $(LDFLAGS) $(DEBUGFLAGS) -o $@ $(OBJS_C_64)
  78         $(CTFCONVERT) $@
  79 
  80 $(BUILDDIR)/test-merge-reduction-32m.so.1: $(OBJS_M_32)
  81         $(CC) $(CFLAGS32) $(CFLAGS) $(LDFLAGS) $(DEBUGFLAGS) -o $@ $(OBJS_M_32)
  82         $(CTFMERGE) -t -o $@ $(OBJS_M_32)
  83 
  84 $(BUILDDIR)/test-merge-reduction-64m.so.1: $(OBJS_M_64)
  85         $(CC) $(CFLAGS64) $(CFLAGS) $(LDFLAGS) $(DEBUGFLAGS) -o $@ $(OBJS_M_64)
  86         $(CTFMERGE) -t -o $@ $(OBJS_M_64)
  87 
  88 run-test:
  89         $(CHECK32) $(BUILDDIR)/test-merge-reduction-32c.so.1
  90         $(CHECK64) $(BUILDDIR)/test-merge-reduction-64c.so.1
  91         $(CHECK32) $(BUILDDIR)/test-merge-reduction-32m.so.1
  92         $(CHECK64) $(BUILDDIR)/test-merge-reduction-64m.so.1