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 += $(CNOWARN_UNINIT) 90 CERRWARN += -_gcc=-Wno-unused-function 91 92 # not linted 93 SMATCH=off 94 95 $(XPG4) := CFLAGS += -DXPG4 96 97 debug := SORT_DEBUG = $(CCGDEBUG) -DDEBUG $(ILDOFF) 98 debug := COPTFLAG = 99 debug := COPTFLAG64 = 100 stats := SORT_DEBUG = $(CCGDEBUG) -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 $<