summaryrefslogtreecommitdiff
path: root/include/makeinclude/platform_vxworks5.x_g++.GNU
blob: acaf8cb4197a5d6cab357bf42cf7a9a78a48217f (plain)
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
128
129
130
131
132
133
134
135
136
137
# $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.  If perl is not on your path,
####    you'll also need to set your PERL_PATH environment variable to
####    the full path to perl.
#### 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))
  #### Use := instead of += because += inserts a space.
  PATH := $(PATH):$(HOST_DIR)/bin
endif # PATH

PERL_PATH = perl

ifeq (win32,$(findstring win32,$(WIND_HOST_TYPE)))
  #### GNU make on WIN32 needs double double quotes.
  ACE_QUOTE =""
else  # ! win32 host
  ACE_QUOTE ="
endif # ! win32 host

#### 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/pkg/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          += -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 \
                  $(ACE_QUOTE)$(COMPILE.c) -traditional$(ACE_QUOTE) \
                  -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