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 COPYING 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 COPYING. 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 # Copyright (c) 2012 Joyent Inc. 22 # 23 24 include ../Makefile.defs 25 26 PROG = cpp$(STRAP) 27 PROGDIR = /usr/lib 28 29 OBJS = \ 30 cpp.o$(STRAP) \ 31 y.tab.o$(STRAP) 32 33 CLEANFILES += \ 34 y.tab.c$(STRAP) 35 36 CFLAGS += -O2 37 LD = $(GCC) 38 39 COMPILE.c = $(GCC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ 40 LINK.prog = $(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) 41 PROTOFILES = $(DESTDIR)$(PROGDIR)/$(PROG) 42 43 all: $(PROG) 44 45 install: $(PROTOFILES) 46 47 clean: 48 -rm -f $(OBJS) $(CLEANFILES) $(PROG) *strap 49 50 $(PROG): $(OBJS) 51 $(LINK.prog) 52 53 %.o$(STRAP): %.c 54 $(COMPILE.c) 55 56 y.tab.o$(STRAP): yylex.c 57 58 # 59 # We need to distinguish between the cpp build in the bootstrap and the cpp 60 # built normally. However, when we install it, they need to have the same name. 61 # To handle this we add a small bit of shell logic. Note that the mv bit is 62 # explicitly ignored and instead we do a final check to make sure we have 63 # something called cpp at the very end which will either be because of install 64 # or because of the later mv. 65 # 66 $(DESTDIR)$(PROGDIR)/%: % 67 mkdir -p $(DESTDIR)$(PROGDIR) 68 /usr/sbin/install -m 0755 -f $(DESTDIR)$(PROGDIR) $(PROG) 69 -[ "$(PROG)" == "cppstrap" ] && mv -f $(DESTDIR)$(PROGDIR)/$(PROG) \ 70 $(DESTDIR)$(PROGDIR)/cpp 71 [ -f "$(DESTDIR)$(PROGDIR)/cpp" ] 72 73 y.tab.c: cpy.y 74 $(YACC) cpy.y