1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
# $Id$
# VxWorks 5.2-5.3.1 with GNU g++ 2.7.2
#### Notes:
#### 1) This file requires that the WIND_BASE and WIND_HOST_TYPE environment
#### variables be set. If the target CPU is not a PPC604, then your CPU
#### environment variable must be set. On Windows hosts, you'll also need
#### to set PERL_PATH if perl is not on your path.
####
#### 2) If you have problems with munch output not being compilable
#### because it contains identifiers with ".", e.g., ".cpp", in them:
#### add a global variable or function to that .cpp file. See
#### ace/IOStream_T.cpp for an explanation and example.
VXWORKS = 1
CROSS-COMPILE = 1
debug = 1
optimize = 1
shared_libs =
static_libs = 1
ifeq (,$(WIND_BASE))
default:
@ERROR: you must set your WIND_BASE environment variable
endif # WIND_BASE
ifeq (,$(WIND_HOST_TYPE))
default:
@ERROR: you must set your WIND_HOST_TYPE environment variable
endif # WIND_HOST_TYPE
HOST_DIR = $(WIND_BASE)/host/$(WIND_HOST_TYPE)
ifeq (,$(findstring $(HOST_DIR)/bin,$PATH))
PATH +=:$(HOST_DIR)/bin
endif # PATH
#### BEGIN target CPU-specific settings
#### This is kind of messy so that it can support multiple
#### targets. You'll need to set CPU to a supported CPU
#### using one of these methods (unless your CPU is a PowerPC 604):
#### 1) create a $ACE_ROOT/include/makeinclude/platform_macros.GNU
#### that contains something like:
####
#### WIND_BASE = /project/doc/wind
#### WIND_HOST_TYPE = sun4-solaris2
#### CPU = I80486
####
#### include $(ACE_ROOT)/include/makeinclude/platform_vxworks5.x_g++.GNU
####
#### 2) modify the code below to set CPU, or
#### 3) set CPU on the command line, e.g., "make CPU=I80486"
ifeq ($(CPU),)
CPU = PPC604
endif # default CPU
ifeq ($(CPU),PPC604)
CFLAGS += -B$(GCCLIB_DIR)/ -DCPU=PPC604
GCCLIB_DIR = $(HOST_DIR)/lib/gcc-lib/powerpc-wrs-vxworks/cygnus-2.7.2-960126
TOOLENV = ppc
else
ifeq ($(CPU),I80486)
CFLAGS += -DCPU=I80486 -m486
TOOLENV = 386
endif # I80486
endif # PPC604
#### END target CPU-specific settings
#### Set up Win32 vs. Unix host specific macros.
ifeq ($(WIND_HOST_TYPE),x86-win32)
CXX = cc$(TOOLENV)
else # ! x86-win32
CXX = g++$(TOOLENV)
PIPE_OPT = -pipe
endif # ! x86-win32
CC = cc$(TOOLENV)
CFLAGS += -DVXWORKS -D_REENTRANT -ansi -fno-builtin -fno-defer-pop -fvolatile -nostdinc -nostdlib $(PIPE_OPT) -Wall
#### Note: -f-no-implicit-templates doesn't seem to work well with
#### g++ cygnus-2.7.2-960126 for pc486 target. Some
#### member functions don't get instantiated. Wind River knows
#### about this problem (SPR 8483).
CCFLAGS += $(CFLAGS) #### -fno-implicit-templates
DCFLAGS += -g
INCLDIRS += -I$(WIND_BASE)/target/h
LD = $(PERL_PATH) $(ACE_ROOT)/bin/ace_ld -c \
"$(COMPILE.c) -traditional" \
-m "munch" -n "nm$(TOOLENV)" ld$(TOOLENV)
LDFLAGS += -X -r
#### WindRiver only recommends -O, not -O2, with some CPUs, including
#### the i386 family. And -O2 causes some compilation failures.
OCFLAGS += -O
PIC =
AR = ar$(TOOLENV)
ARFLAGS = rv
RANLIB = /bin/true
#### ld can't handle INCLDIRS, so override LINK definitions.
LINK.c = override
LINK.c.override = $(LD) $(LDFLAGS) $(LDLIBS) $(LIBS)
LINK.cc = override
LINK.cc.override = $(LD)
#### The symbol table extractor is target-dependent.
ifeq ($(CPU),I80486)
BINXSYM_NAME = xsymDec
else
ifeq ($(CPU),I80386)
BINXSYM_NAME = xsymDec
else
BINXSYM_NAME = xsym
endif # I80486
endif # I80386
#### To extract the symbol table from each executable, uncomment the POSTLINK
#### definition below.
## POSTLINK = ; VX_CPU_FAMILY=$(TOOLENV) $(BINXSYM_NAME) < $@ > $@.sym
|