1 #
   2 # CDDL HEADER START
   3 #
   4 # The contents of this file are subject to the terms of the
   5 # Common Development and Distribution License, Version 1.0 only
   6 # (the "License").  You may not use this file except in compliance
   7 # with the License.
   8 #
   9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  10 # or http://www.opensolaris.org/os/licensing.
  11 # See the License for the specific language governing permissions
  12 # and limitations under the License.
  13 #
  14 # When distributing Covered Code, include this CDDL HEADER in each
  15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16 # If applicable, add the following below this CDDL HEADER, with the
  17 # fields enclosed by brackets "[]" replaced with your own identifying
  18 # information: Portions Copyright [yyyy] [name of copyright owner]
  19 #
  20 # CDDL HEADER END
  21 #
  22 #
  23 # Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
  24 # Use is subject to license terms.
  25 #
  26 # Copyright (c) 2018, Joyent, Inc.
  27 
  28 #
  29 # Debugging targets
  30 #   sort provides a number of debugging options to simplify failure analysis.
  31 #
  32 #   debug               provides symbol information and sets DEBUG; includes
  33 #                       convert, invoke
  34 #   stats               builds binaries with statistics reporting enabled
  35 #   convert             builds convert binaries (converts input to collation
  36 #                       vectors)
  37 #   invoke              builds invoke binaries (allows inspection of options
  38 #                       parser outcome)
  39 #
  40 # Debugging #defines
  41 #   DEBUG               activate assertions; allow wider range of memory
  42 #                       settings (-S)
  43 #   DEBUG_FORCE_WIDE    force all i/o through wide streams
  44 #   DEBUG_DISALLOW_MMAP force all i/o through stdio or wide streams
  45 #   DEBUG_NO_CACHE_TEMP do not cache last sorted portion in memory; write all
  46 #                       data to temporary files before merge
  47 #
  48 
  49 PROG = sort
  50 XPG4PROG = sort
  51 
  52 BASE_OBJS = \
  53         check.o \
  54         fields.o \
  55         initialize.o \
  56         internal.o \
  57         merge.o \
  58         options.o \
  59         streams.o \
  60         streams_array.o \
  61         streams_mmap.o \
  62         streams_stdio.o \
  63         streams_wide.o \
  64         utility.o
  65 OBJS =  main.o $(BASE_OBJS)
  66 INVOKE_OBJS = invoke.o $(BASE_OBJS)
  67 CONVERT_OBJS = convert.o $(BASE_OBJS)
  68 STATS_OBJS = main.o statistics.o $(BASE_OBJS)
  69 
  70 XPG4OBJS = $(OBJS:%.o=xpg4_%.o)
  71 SRCS =  $(OBJS:%.o=../common/%.c)
  72 LNTS =  $(OBJS:%.o=%.ln)
  73 CLEANFILES = $(OBJS) $(XPG4OBJS) $(LNTS)
  74 
  75 include ../../Makefile.cmd
  76 
  77 SED =           sed
  78 DCFILE =        $(PROG).dc
  79 
  80 SPACEFLAG =
  81 SPACEFLAG64 =
  82 
  83 CFLAGS +=       $(CCVERBOSE) $(SORT_DEBUG)
  84 CFLAGS64 +=     $(CCVERBOSE) $(SORT_DEBUG)
  85 CPPFLAGS +=     -D_FILE_OFFSET_BITS=64
  86 LINTFLAGS +=    -U_FILE_OFFSET_BITS
  87 
  88 CERRWARN +=     -_gcc=-Wno-parentheses
  89 CERRWARN +=     -_gcc=-Wno-uninitialized
  90 CERRWARN +=     -_gcc=-Wno-unused-function
  91 
  92 # not linted
  93 SMATCH=off
  94 
  95 $(XPG4) :=      CFLAGS += -DXPG4
  96 
  97 debug :=        SORT_DEBUG = -g -DDEBUG $(ILDOFF)
  98 debug :=        COPTFLAG =
  99 debug :=        COPTFLAG64 =
 100 stats   :=      SORT_DEBUG = -g -DSTATS -DDEBUG $(ILDOFF)
 101 stats   :=      COPTFLAG =
 102 stats   :=      COPTFLAG64 =
 103 
 104 .KEEP_STATE :
 105 
 106 .PARALLEL : $(OBJS) $(XPG4OBJS) $(LNTS)
 107 
 108 all : $(PROG) $(XPG4)
 109 
 110 debug : $(PROG) convert invoke
 111 
 112 lint : $(LNTS)
 113         $(LINT.c) $(LINTFLAGS) $(LNTS) $(LDLIBS)
 114 
 115 clean :
 116         $(RM) $(CLEANFILES)
 117 
 118 include ../../Makefile.targ
 119 
 120 # rules for $(PROG) and $(XPG4)
 121 
 122 $(PROG) : $(OBJS)
 123         $(LINK.c) -o $@ $(OBJS) $(LDLIBS)
 124         $(POST_PROCESS)
 125 
 126 $(XPG4) : $(XPG4OBJS)
 127         $(LINK.c) -o $@ $(XPG4OBJS) $(LDLIBS)
 128         $(POST_PROCESS)
 129 
 130 invoke: $(INVOKE_OBJS)
 131         $(LINK.c) -o $@ $(INVOKE_OBJS) $(LDLIBS)
 132 
 133 convert: $(CONVERT_OBJS)
 134         $(LINK.c) -o $@ $(CONVERT_OBJS) $(LDLIBS)
 135 
 136 stats: $(STATS_OBJS)
 137         $(LINK.c) -o $@ $(STATS_OBJS) $(LDLIBS)
 138 
 139 %.o : ../common/%.c
 140         $(COMPILE.c) -o $@ $<
 141         $(POST_PROCESS_O)
 142 
 143 xpg4_%.o : ../common/%.c
 144         $(COMPILE.c) -o $@ $<
 145         $(POST_PROCESS_O)
 146 
 147 %.o : ../common/%.h types.h
 148 
 149 xpg4_%.o : ../common/%.h types.h
 150 
 151 %.ln: ../common/%.c
 152         $(LINT.c) $(LINTFLAGS) -c $<