blob: 5d72c889e09a026c7493ebb6c63e0547aeb4e8a7 [file] [log] [blame]
# -*- python -*-
# Copyright (c) 2012 The Native Client Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
Import('env')
import os
# This directory contains untrusted C and ASM source for low-level
# CPU-specific libraries implicitly supplied by the compiler driver.
# Unlike most untrusted SDK code, conditional compilation may be
# freely used, as the target will never be PNaCl.
# PNaCl does not support the fini/init mechanism.
# Instead the more modern .init_array and .fini_array approach should be used
if env.Bit('bitcode'):
Return()
def GetPlatformSuffix(env):
platform = env.get('TARGET_FULLARCH')
assert platform in ['x86-32', 'x86-64', 'arm', 'mips32']
# we do not like hyphens in file names
return platform.replace('-', '_')
platform = GetPlatformSuffix(env)
# This is a dummy linker script (a source file), not an actual object file.
crt1 = env.InstallAs('crt1.o', 'crt1.x')
env.AddObjectToSdk([crt1])
# TODO(mcgrathr): The multilib in the gcc driver logic defeats -Bx/ under -m32.
# Figure out a way to make -B really override everything else.
if platform == 'x86_32':
env.Install(os.path.join('${LIB_DIR}', '32'), crt1)
bookends = [env.ComponentObject('crti', ['crti_%s.S' % platform]),
env.ComponentObject('crtn', ['crtn_%s.S' % platform])]
env.AddObjectToSdk(bookends)