Print this page
cpp: don't handroll an incorrect strtoul(3c), use the one in libc
The previous implementation would parse 0x7ff as 0x755 (etc).
Split |
Close |
Expand all |
Collapse all |
--- old/cpp/Makefile
+++ new/cpp/Makefile
1 1 #
2 2 # CDDL HEADER START
3 3 #
4 4 # The contents of this file are subject to the terms of the
5 5 # Common Development and Distribution License, Version 1.0 only
6 6 # (the "License"). You may not use this file except in compliance
7 7 # with the License.
8 8 #
9 9 # You can obtain a copy of the license at COPYING
10 10 # See the License for the specific language governing permissions
11 11 # and limitations under the License.
12 12 #
13 13 # When distributing Covered Code, include this CDDL HEADER in each
14 14 # file and include the License file at COPYING.
15 15 # If applicable, add the following below this CDDL HEADER, with the
16 16 # fields enclosed by brackets "[]" replaced with your own identifying
17 17 # information: Portions Copyright [yyyy] [name of copyright owner]
18 18 #
19 19 # CDDL HEADER END
20 20 #
21 21 # Copyright (c) 2012 Joyent Inc.
22 22 #
23 23
24 24 include ../Makefile.defs
25 25
26 26 PROG = cpp$(STRAP)
27 27 PROGDIR = /usr/lib
28 28
29 29 OBJS = \
30 30 cpp.o$(STRAP) \
31 31 y.tab.o$(STRAP)
32 32
33 33 CLEANFILES += \
34 34 y.tab.c$(STRAP)
35 35
36 36 CFLAGS += -O2
37 37 LD = $(GCC)
38 38
39 39 COMPILE.c = $(GCC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
40 40 LINK.prog = $(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
41 41 PROTOFILES = $(DESTDIR)$(PROGDIR)/$(PROG)
42 42
43 43 all: $(PROG)
44 44
45 45 install: $(PROTOFILES)
↓ open down ↓ |
45 lines elided |
↑ open up ↑ |
46 46
47 47 clean:
48 48 -rm -f $(OBJS) $(CLEANFILES) $(PROG) *strap
49 49
50 50 $(PROG): $(OBJS)
51 51 $(LINK.prog)
52 52
53 53 %.o$(STRAP): %.c
54 54 $(COMPILE.c)
55 55
56 +y.tab.o$(STRAP): yylex.c
57 +
56 58 #
57 59 # We need to distinguish between the cpp build in the bootstrap and the cpp
58 60 # built normally. However, when we install it, they need to have the same name.
59 61 # To handle this we add a small bit of shell logic. Note that the mv bit is
60 62 # explicitly ignored and instead we do a final check to make sure we have
61 63 # something called cpp at the very end which will either be because of install
62 64 # or because of the later mv.
63 65 #
64 66 $(DESTDIR)$(PROGDIR)/%: %
65 67 mkdir -p $(DESTDIR)$(PROGDIR)
66 68 /usr/sbin/install -m 0755 -f $(DESTDIR)$(PROGDIR) $(PROG)
67 69 -[ "$(PROG)" == "cppstrap" ] && mv -f $(DESTDIR)$(PROGDIR)/$(PROG) \
68 70 $(DESTDIR)$(PROGDIR)/cpp
69 71 [ -f "$(DESTDIR)$(PROGDIR)/cpp" ]
70 72
71 73 y.tab.c: cpy.y
72 74 $(YACC) cpy.y
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX