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