Index: SConstruct |
=================================================================== |
--- SConstruct (revision 1565) |
+++ SConstruct (working copy) |
@@ -35,7 +35,38 @@ |
sys.path.append(join(root_dir, 'tools')) |
import js2c, utils |
+TOP = os.environ.get('TOP') |
+if TOP is None: |
+ TOP="" |
+ANDROID_FLAGS = ['-march=armv5te', |
+ '-mtune=xscale', |
+ '-msoft-float', |
+ '-fpic', |
+ '-mthumb-interwork', |
+ '-funwind-tables', |
+ '-fstack-protector', |
+ '-fno-short-enums', |
+ '-fmessage-length=0', |
+ '-finline-functions', |
+ '-fno-inline-functions-called-once', |
+ '-fgcse-after-reload', |
+ '-frerun-cse-after-loop', |
+ '-frename-registers', |
+ '-fomit-frame-pointer', |
+ '-fno-strict-aliasing', |
+ '-finline-limit=64', |
+ '-MD'] |
+ |
+ANDROID_INCLUDES = [TOP + '/bionic/libc/arch-arm/include', |
+ TOP + '/bionic/libc/include', |
+ TOP + '/bionic/libstdc++/include', |
+ TOP + '/bionic/libc/kernel/common', |
+ TOP + '/bionic/libc/kernel/arch-arm', |
+ TOP + '/bionic/libm/include', |
+ TOP + '/bionic/libm/include/arch/arm', |
+ TOP + '/bionic/libthread_db/include'] |
+ |
LIBRARY_FLAGS = { |
'all': { |
'CPPDEFINES': ['ENABLE_LOGGING_AND_PROFILING'] |
@@ -65,6 +96,12 @@ |
'CCFLAGS': ['-DWIN32'], |
'CXXFLAGS': ['-DWIN32'], |
}, |
+ 'os:android': { |
+ 'CPPDEFINES': ['ANDROID', '__ARM_ARCH_5__', '__ARM_ARCH_5T__', '__ARM_ARCH_5E__', '__ARM_ARCH_5TE__', 'SK_RELEASE', 'NDEBUG'], |
+ 'CCFLAGS': ANDROID_FLAGS, |
+ 'WARNINGFLAGS': ['-Wall', '-Wno-unused', '-Werror=return-type', '-Wstrict-aliasing=2'], |
+ 'CPPPATH': ANDROID_INCLUDES, |
+ }, |
'wordsize:64': { |
'CCFLAGS': ['-m32'], |
'LINKFLAGS': ['-m32'] |
@@ -114,15 +151,24 @@ |
'gcc': { |
'all': { |
'CXXFLAGS': [], #['-fvisibility=hidden'], |
- 'WARNINGFLAGS': ['-pedantic', '-Wall', '-Werror', '-W', |
+ 'WARNINGFLAGS': ['-Wall', '-Werror', '-W', |
'-Wno-unused-parameter'] |
}, |
'arch:arm': { |
'CPPDEFINES': ['ARM'] |
}, |
+ 'arch:android': { |
+ 'CPPDEFINES': ['ARM'] |
+ }, |
'os:win32': { |
- 'WARNINGFLAGS': ['-Wno-long-long'] |
+ 'WARNINGFLAGS': ['-pedantic', '-Wno-long-long'] |
}, |
+ 'os:linux': { |
+ 'WARNINGFLAGS': ['-pedantic'] |
+ }, |
+ 'os:macos': { |
+ 'WARNINGFLAGS': ['-pedantic'] |
+ }, |
'disassembler:on': { |
'CPPDEFINES': ['ENABLE_DISASSEMBLER'] |
} |
@@ -174,7 +220,7 @@ |
DTOA_EXTRA_FLAGS = { |
'gcc': { |
'all': { |
- 'WARNINGFLAGS': ['-Werror'] |
+ 'WARNINGFLAGS': ['-Werror', '-Wno-uninitialized'] |
} |
}, |
'msvc': { |
@@ -230,7 +276,8 @@ |
}, |
'gcc': { |
'all': { |
- 'LIBPATH': ['.'] |
+ 'LIBPATH': ['.'], |
+ 'CCFLAGS': ['-fno-rtti', '-fno-exceptions'] |
}, |
'os:linux': { |
'LIBS': ['pthread', 'rt'], |
@@ -244,9 +291,13 @@ |
'os:win32': { |
'LIBS': ['winmm', 'ws2_32'] |
}, |
- 'wordsize:64': { |
- 'CCFLAGS': ['-m32'], |
- 'LINKFLAGS': ['-m32'] |
+ 'os:android': { |
+ 'CPPDEFINES': ['ANDROID', '__ARM_ARCH_5__', '__ARM_ARCH_5T__', '__ARM_ARCH_5E__', '__ARM_ARCH_5TE__', 'SK_RELEASE', 'NDEBUG'], |
+ 'CCFLAGS': ANDROID_FLAGS, |
+ 'CPPPATH': ANDROID_INCLUDES, |
+ 'LIBPATH': [TOP + '/out/target/product/generic/obj/lib'], |
+ 'LINKFLAGS': ['-nostdlib', '-Bdynamic', '-Wl,-T,' + TOP + '/build/core/armelf.x', '-Wl,-dynamic-linker,/system/bin/linker', '-Wl,--gc-sections', '-Wl,-z,nocopyreloc', '-Wl,-rpath-link=' + TOP + '/out/target/product/generic/obj/lib', TOP + '/out/target/product/generic/obj/lib/crtbegin_dynamic.o', TOP + '/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/lib/gcc/arm-eabi/4.2.1/interwork/libgcc.a', TOP + '/out/target/product/generic/obj/lib/crtend_android.o'], |
+ 'LIBS': ['c', 'stdc++', 'm'], |
}, |
'mode:release': { |
'CCFLAGS': ['-O2'] |
@@ -355,7 +406,7 @@ |
'help': 'the toolchain to use' |
}, |
'os': { |
- 'values': ['freebsd', 'linux', 'macos', 'win32'], |
+ 'values': ['freebsd', 'linux', 'macos', 'win32', 'android'], |
'default': OS_GUESS, |
'help': 'the os to build for' |
}, |
@@ -510,6 +561,8 @@ |
options[key] = prefix + value |
def ConfigureObject(self, env, input, **kw): |
+ if (kw.has_key('CPPPATH') and env.has_key('CPPPATH')): |
+ kw['CPPPATH'] += env['CPPPATH'] |
if self.options['library'] == 'static': |
return env.StaticObject(input, **kw) |
else: |