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 (the "License").
   6 # You may not use this file except in compliance with the License.
   7 #
   8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9 # or http://www.opensolaris.org/os/licensing.
  10 # See the License for the specific language governing permissions
  11 # and limitations under the License.
  12 #
  13 # When distributing Covered Code, include this CDDL HEADER in each
  14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15 # If applicable, add the following below this CDDL HEADER, with the
  16 # fields enclosed by brackets "[]" replaced with your own identifying
  17 # information: Portions Copyright [yyyy] [name of copyright owner]
  18 #
  19 # CDDL HEADER END
  20 #
  21 
  22 #
  23 # Copyright 2017 Gary Mills
  24 # Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
  25 # Use is subject to license terms.
  26 #
  27 
  28 # cmd/vi/port/Makefile
  29 
  30 PROG= ex
  31 XPG4PROG= ex
  32 XPG6PROG= ex
  33 LIBPROGS= expreserve exrecover
  34 XD4= exobjs.xpg4
  35 XD6= exobjs.xpg6
  36 
  37 EXOBJS= bcopy.o ex.o ex_addr.o ex_cmds.o ex_cmds2.o \
  38         ex_cmdsub.o ex_data.o ex_extern.o ex_get.o \
  39         ex_io.o ex_put.o ex_re.o ex_set.o ex_subr.o \
  40         ex_temp.o ex_tty.o ex_unix.o ex_v.o ex_vadj.o \
  41         ex_vget.o ex_vmain.o ex_voper.o ex_vops.o \
  42         ex_vops2.o ex_vops3.o ex_vput.o ex_vwind.o \
  43         printf.o
  44 EXOBJS_XPG4= $(EXOBJS) compile.o values-xpg4.o
  45 EXOBJS_XPG6= $(EXOBJS) compile.o values-xpg6.o
  46 XPG4EXOBJS= ${EXOBJS_XPG4:%=$(XD4)/%}
  47 XPG6EXOBJS= ${EXOBJS_XPG6:%=$(XD6)/%}
  48 EXRECOVEROBJS=  exrecover.o ex_extern.o
  49 OBJS= $(EXOBJS) $(XPG4EXOBJS) $(XPG6EXOBJS) expreserve.o exrecover.o
  50 SRCS= $(EXOBJS:%.o=%.c) expreserve.c exrecover.c
  51 TXTS = READ_ME makeoptions asfix.c70 ex.news port.mk.370 port.mk.70     \
  52         port.mk.c70 port.mk.usg ovdoprnt.s ovprintf.c rofix
  53 
  54 include ../../Makefile.cmd
  55 
  56 CERRWARN += -_gcc=-Wno-implicit-function-declaration
  57 CERRWARN += -_gcc=-Wno-clobbered
  58 CERRWARN += -_gcc=-Wno-parentheses
  59 CERRWARN += -_gcc=-Wno-unused-variable
  60 CERRWARN += -_gcc=-Wno-unused-label
  61 CERRWARN += -_gcc=-Wno-unused-value
  62 CERRWARN += -_gcc=-Wno-uninitialized
  63 CERRWARN += -_gcc=-Wno-address
  64 
  65 # Suppress errors for: tmp1 n
  66 ex_vmain.o exobjs.xpg4/ex_vmain.o exobjs.xpg6/ex_vmain.o := \
  67     CERRWARN += -_gcc=-Wno-unused-but-set-variable
  68 
  69 #
  70 # For message catalogue files
  71 #
  72 POFILES= $(EXOBJS:%.o=%.po) expreserve.po exrecover.po
  73 POFILE= port.po
  74 
  75 # Include all XPG4 and XPG4ONLY changes in the XPG4 version
  76 $(XPG4) := CFLAGS += -DXPG4 -DXPG4ONLY
  77 
  78 # Include all XPG4 changes, but don't include XPG4ONLY in the XPG6 version
  79 $(XPG6) := CFLAGS += -DXPG4 -DXPG6 -I$(SRC)/lib/libc/inc
  80 
  81 CPPFLAGS +=  -DUSG -DSTDIO -DVMUNIX -DTABS=8 -DSINGLE -DTAG_STACK
  82 
  83 # vi maintains its own versions of various routines from libc and libcurses,
  84 # so localize all symbols to avoid name space collisions.
  85 LDFLAGS +=      $(MAPFILE.NGB:%=-M%)
  86 
  87 CLOBBERFILES += $(LIBPROGS)
  88 ex :=           LDLIBS += -lmapmalloc -lcurses -lgen -lcrypt_i
  89 $(XPG4) :=      LDLIBS += -lmapmalloc -lcurses -lgen -lcrypt_i
  90 $(XPG6) :=      LDLIBS += -lmapmalloc -lcurses -lgen -lcrypt_i
  91 exrecover :=    LDLIBS += -lmapmalloc -lcrypt_i
  92 lint :=         LDLIBS += -lmapmalloc -lcurses -lgen -lcrypt
  93 
  94 ROOTLIBPROGS= $(LIBPROGS:%=$(ROOTLIB)/%)
  95 
  96 # hard links to ex
  97 ROOTLINKS= $(ROOTBIN)/edit $(ROOTHASBIN)/edit $(ROOTBIN)/vedit \
  98         $(ROOTHASBIN)/vedit $(ROOTHASBIN)/vi $(ROOTHASBIN)/view \
  99 
 100 ROOTXPG4LINKS= $(ROOTXPG4BIN)/vi $(ROOTXPG4BIN)/view $(ROOTXPG4BIN)/edit \
 101         $(ROOTXPG4BIN)/vedit
 102 ROOTXPG6LINKS= $(ROOTXPG6BIN)/vi $(ROOTXPG6BIN)/view $(ROOTXPG6BIN)/edit \
 103         $(ROOTXPG6BIN)/vedit
 104 .KEEP_STATE:
 105 
 106 .PARALLEL: $(OBJS)
 107 
 108 all: $(PROG) $(XPG4) $(XPG6) $(LIBPROGS)
 109 
 110 $(PROG): $(EXOBJS)
 111         $(LINK.c) $(EXOBJS) -o $@ $(LDLIBS)
 112         $(POST_PROCESS)
 113 
 114 ex.xpg4: $(XD4) $(XPG4EXOBJS)
 115         $(LINK.c) $(XPG4EXOBJS) -o $@ $(LDLIBS)
 116         $(POST_PROCESS)
 117 
 118 ex.xpg6: $(XD6) $(XPG6EXOBJS)
 119         $(LINK.c) $(XPG6EXOBJS) -o $@ $(LDLIBS)
 120         $(POST_PROCESS)
 121 
 122 $(XD4)/compile.o $(XD6)/compile.o: ../../expr/compile.c
 123         $(COMPILE.c) -o $@ ../../expr/compile.c
 124 
 125 %values-xpg4.o: ../../../lib/common/common/values-xpg4.c
 126         $(COMPILE.c) -o $@ ../../../lib/common/common/values-xpg4.c
 127 
 128 %values-xpg6.o: ../../../lib/common/common/values-xpg6.c
 129         $(COMPILE.c) -o $@ ../../../lib/common/common/values-xpg6.c
 130 
 131 $(XPG4EXOBJS): $(XD4)
 132 
 133 $(XPG6EXOBJS): $(XD6)
 134 
 135 $(XD4)/%.o:     %.c
 136         $(COMPILE.c) -o $@ $<
 137 
 138 $(XD6)/%.o:     %.c
 139         $(COMPILE.c) -o $@ $<
 140 
 141 $(XD4):
 142         -@mkdir -p $@
 143 
 144 $(XD6):
 145         -@mkdir -p $@
 146 
 147 exrecover:      $(EXRECOVEROBJS)
 148         $(LINK.c) $(EXRECOVEROBJS) -o $@ $(LDLIBS)
 149         $(POST_PROCESS)
 150 
 151 catalog: $(MSGDOMAIN) $(POFILE)
 152 
 153 $(POFILE): $(POFILES)
 154         $(RM) $@
 155         cat $(POFILES) > $@
 156 
 157 
 158 install: all $(ROOTHASBINPROG) $(ROOTLIBPROGS) $(ROOTLINKS) \
 159         $(ROOTXPG4PROG) $(ROOTXPG4LINKS) $(ROOTXPG6PROG) $(ROOTXPG6LINKS)
 160 
 161 $(ROOTLINKS): $(ROOTHASBINPROG)
 162         -$(RM) $@
 163         -$(LN) -f $(ROOTHASBINPROG) $@
 164 
 165 $(ROOTXPG4LINKS): $(ROOTXPG4PROG)
 166         -$(RM) $@
 167         -$(LN) -f $(ROOTXPG4PROG) $@
 168 
 169 $(ROOTXPG6LINKS): $(ROOTXPG6PROG)
 170         -$(RM) $@
 171         -$(LN) -f $(ROOTXPG6PROG) $@
 172 
 173 clean:
 174         $(RM) $(OBJS)
 175 
 176 lint: lint_SRCS
 177 
 178 include ../../Makefile.targ