blob: 16883619ba1430183da2c70d30e30db0221b7f36 [file] [log] [blame]
James Dong17299ab2010-05-14 15:45:22 -07001#/*
2# ** Copyright 2003-2010, VisualOn, Inc.
3# **
4# ** Licensed under the Apache License, Version 2.0 (the "License");
5# ** you may not use this file except in compliance with the License.
6# ** You may obtain a copy of the License at
7# **
8# ** http://www.apache.org/licenses/LICENSE-2.0
9# **
10# ** Unless required by applicable law or agreed to in writing, software
11# ** distributed under the License is distributed on an "AS IS" BASIS,
12# ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# ** See the License for the specific language governing permissions and
14# ** limitations under the License.
15# */
16
17# special macro definitions for building
18VOPREDEF=-DLINUX -D_LINUX
19
20VOPRJ ?=
21VONJ ?= eclair
22VOTT ?= v6
23# control the version to release out
24# available: eva(evaluation), rel(release)
25VOVER=
26ifeq ($(VOVER), eva)
27VOPREDEF+=-D__VOVER_EVA__
28endif
29
30# for debug or not: yes for debug, any other for release
31VODBG?=ye
32
33# for detecting memory leak
34VODML=
35ifeq ($(VODML), yes)
36VOPREDEF+=-DDMEMLEAK
37endif
38
39VOPREDEF+=-D__VOTT_ARM__ -D__VONJ_ECLAIR__
40TCROOTPATH:=/opt/eclair
41GCCVER:=4.4.0
42TCPATH:=$(TCROOTPATH)/prebuilt/linux-x86/toolchain/arm-eabi-$(GCCVER)
43CCTPRE:=$(TCPATH)/bin/arm-eabi-
44AS:=$(CCTPRE)as
45AR:=$(CCTPRE)ar
46NM:=$(CCTPRE)nm
47CC:=$(CCTPRE)gcc
48GG:=$(CCTPRE)g++
49LD:=$(CCTPRE)ld
50SIZE:=$(CCTPRE)size
51STRIP:=$(CCTPRE)strip
52RANLIB:=$(CCTPRE)ranlib
53OBJCOPY:=$(CCTPRE)objcopy
54OBJDUMP:=$(CCTPRE)objdump
55READELF:=$(CCTPRE)readelf
56STRINGS:=$(CCTPRE)strings
57
58# target product dependcy
59# available: dream, generic
60VOTP:=sapphire-open
61CCTLIB:=$(TCROOTPATH)/out/target/product/$(VOTP)/obj/lib
62CCTINC:=-I$(TCROOTPATH)/system/core/include \
63 -I$(TCROOTPATH)/hardware/libhardware/include \
64 -I$(TCROOTPATH)/hardware/ril/include \
65 -I$(TCROOTPATH)/hardware/libhardware_legacy/include \
66 -I$(TCROOTPATH)/dalvik/libnativehelper/include \
67 -I$(TCROOTPATH)/dalvik/libnativehelper/include/nativehelper \
68 -I$(TCROOTPATH)/frameworks/base/include \
69 -I$(TCROOTPATH)/frameworks/base/core/jni \
70 -I$(TCROOTPATH)/frameworks/base/libs/audioflinger \
71 -I$(TCROOTPATH)/external/skia/include \
72 -I$(TCROOTPATH)/out/target/product/$(VOTP)/obj/include \
73 -I$(TCROOTPATH)/bionic/libc/arch-arm/include \
74 -I$(TCROOTPATH)/bionic/libc/include \
75 -I$(TCROOTPATH)/bionic/libstdc++/include \
76 -I$(TCROOTPATH)/bionic/libc/kernel/common \
77 -I$(TCROOTPATH)/bionic/libc/kernel/arch-arm \
78 -I$(TCROOTPATH)/bionic/libm/include \
79 -I$(TCROOTPATH)/bionic/libm/include/arm \
80 -I$(TCROOTPATH)/bionic/libthread_db/include \
81 -I$(TCROOTPATH)/bionic/libm/arm \
82 -I$(TCROOTPATH)/bionic/libm \
83 -I$(TCROOTPATH)/frameworks/base/include/android_runtime
84 #-I$(TCROOTPATH)/out/target/product/$(VOTP)/obj/SHARED_LIBRARIES/libm_intermediates
85
86CCTCFLAGS:=-msoft-float -mthumb-interwork -fno-exceptions -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -fmessage-length=0 -finline-functions -finline-limit=600 -fno-inline-functions-called-once -fgcse-after-reload -frerun-cse-after-loop -frename-registers -fstrict-aliasing -funswitch-loops
87#-fwide-exec-charset=charset=UTF-32
88
89# for target exe
90TELDFLAGS:=-nostdlib -Bdynamic -Wl,-T,$(TCROOTPATH)/build/core/armelf.x -Wl,-dynamic-linker,/system/bin/linker -Wl,--gc-sections -Wl,-z,nocopyreloc -Wl,--no-undefined -Wl,-rpath-link=$(CCTLIB) -L$(CCTLIB)
91
92VOTEDEPS:=$(CCTLIB)/crtbegin_dynamic.o $(CCTLIB)/crtend_android.o $(TCPATH)/lib/gcc/arm-eabi/$(GCCVER)/interwork/libgcc.a -lc -lm
93
94# for target lib
95TLLDFLAGS:=-nostdlib -Wl,-T,$(TCROOTPATH)/build/core/armelf.xsc -Wl,--gc-sections -Wl,-shared,-Bsymbolic -L$(CCTLIB) -Wl,--no-whole-archive -Wl,--no-undefined $(TCPATH)/lib/gcc/arm-eabi/$(GCCVER)/interwork/libgcc.a
96
97VOTLDEPS:=-lm -lc
98
99
100ifeq ($(VOTT), v4)
101VOCFLAGS:=-mtune=arm9tdmi -march=armv4t
102VOASFLAGS:=-march=armv4t -mfpu=softfpa
103endif
104
105ifeq ($(VOTT), v5)
106VOCFLAGS:=-march=armv5te
107VOASFLAGS:=-march=armv5te -mfpu=vfp
108endif
109
110ifeq ($(VOTT), v5x)
111VOCFLAGS:=-march=armv5te -mtune=xscale
112VOASFLAGS:=-march=armv5te -mfpu=vfp
113endif
114
115ifeq ($(VOTT), v6)
116#VOCFLAGS:=-march=armv6 -mtune=arm1136jf-s
117#VOASFLAGS:=-march=armv6
118VOCFLAGS:=-march=armv6j -mtune=arm1136jf-s -mfpu=vfp -mfloat-abi=softfp -mapcs -mtpcs-leaf-frame -mlong-calls
119VOASFLAGS:=-march=armv6j -mcpu=arm1136jf-s -mfpu=arm1136jf-s -mfloat-abi=softfp -mapcs-float -mapcs-reentrant
120endif
121
122#
123# global link options
124VOLDFLAGS:=-Wl,-x,-X,--as-needed
125
126
127ifeq ($(VOTT), v7)
128VOCFLAGS+=-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
129VOASFLAGS+=-march=armv7-a -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp
130VOLDFLAGS+=-Wl,--fix-cortex-a8
131endif
132
133#global compiling options for ARM target
134ifneq ($(VOTT), pc)
135VOASFLAGS+=--strip-local-absolute -R
136endif
137
138
139ifeq ($(VODBG), yes)
140VOCFLAGS+=-D_DEBUG -g
141else
142VOCFLAGS+=-DNDEBUG -O3
143endif
144
145VOCFLAGS+=$(VOPREDEF) $(VOMM) -Wall -fsigned-char -fomit-frame-pointer -fno-leading-underscore -fpic -fPIC -pipe -ftracer -fforce-addr -fno-bounds-check #-fvisibility=hidden #-fvisibility-inlines-hidden ##-ftree-loop-linear -mthumb -nostdinc -dD -fprefetch-loop-arrays
146
147
148ifneq ($(VOTT), pc)
149VOCFLAGS+=$(CCTCFLAGS) $(CCTINC)
150VOCPPFLAGS:=-fno-rtti $(VOCFLAGS)
151
152ifeq ($(VOMT), exe)
153VOLDFLAGS+=$(TELDFLAGS)
154endif
155
156ifeq ($(VOMT), lib)
157VOLDFLAGS+=$(TLLDFLAGS)
158endif
159else
160VOCPPFLAGS:=$(VOCFLAGS)
161ifeq ($(VOMT), lib)
162VOLDFLAGS+=-shared
163endif
164endif
165
166ifeq ($(VODBG), yes)
167#VOLDFLAGS:=
168endif
169
170# where to place object files
171OBJDIR=obj
172