SConscript revision 6313
17934SN/A# -*- mode:python -*-
27934SN/A
39199Sandreas.hansson@arm.com# Copyright (c) 2004-2005 The Regents of The University of Michigan
49199Sandreas.hansson@arm.com# All rights reserved.
59199Sandreas.hansson@arm.com#
67934SN/A# Redistribution and use in source and binary forms, with or without
79265SAli.Saidi@ARM.com# modification, are permitted provided that the following conditions are
89265SAli.Saidi@ARM.com# met: redistributions of source code must retain the above copyright
99265SAli.Saidi@ARM.com# notice, this list of conditions and the following disclaimer;
109265SAli.Saidi@ARM.com# redistributions in binary form must reproduce the above copyright
119265SAli.Saidi@ARM.com# notice, this list of conditions and the following disclaimer in the
129199Sandreas.hansson@arm.com# documentation and/or other materials provided with the distribution;
139199Sandreas.hansson@arm.com# neither the name of the copyright holders nor the names of its
149199Sandreas.hansson@arm.com# contributors may be used to endorse or promote products derived from
159199Sandreas.hansson@arm.com# this software without specific prior written permission.
169199Sandreas.hansson@arm.com#
179199Sandreas.hansson@arm.com# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
189199Sandreas.hansson@arm.com# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
199199Sandreas.hansson@arm.com# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
209199Sandreas.hansson@arm.com# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
219199Sandreas.hansson@arm.com# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
229199Sandreas.hansson@arm.com# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
239199Sandreas.hansson@arm.com# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
249199Sandreas.hansson@arm.com# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
259199Sandreas.hansson@arm.com# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
269199Sandreas.hansson@arm.com# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
279199Sandreas.hansson@arm.com# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
289199Sandreas.hansson@arm.com#
299199Sandreas.hansson@arm.com# Authors: Nathan Binkert
309199Sandreas.hansson@arm.com
319199Sandreas.hansson@arm.comimport os, subprocess
329199Sandreas.hansson@arm.com
339199Sandreas.hansson@arm.comImport('main')
349199Sandreas.hansson@arm.com
359199Sandreas.hansson@arm.comelf_files = []
369199Sandreas.hansson@arm.comdef ElfFile(filename):
379199Sandreas.hansson@arm.com    elf_files.append(File(filename))
389199Sandreas.hansson@arm.com
399199Sandreas.hansson@arm.comElfFile('elf_begin.c')
409199Sandreas.hansson@arm.comElfFile('elf_cntl.c')
419199Sandreas.hansson@arm.comElfFile('elf_data.c')
429199Sandreas.hansson@arm.comElfFile('elf_end.c')
439199Sandreas.hansson@arm.comElfFile('elf_fill.c')
449199Sandreas.hansson@arm.comElfFile('elf_flag.c')
459199Sandreas.hansson@arm.comElfFile('elf_getarhdr.c')
469199Sandreas.hansson@arm.comElfFile('elf_getarsym.c')
479199Sandreas.hansson@arm.comElfFile('elf_getbase.c')
489199Sandreas.hansson@arm.comElfFile('elf_getident.c')
499199Sandreas.hansson@arm.comElfFile('elf_hash.c')
509199Sandreas.hansson@arm.comElfFile('elf_kind.c')
519199Sandreas.hansson@arm.comElfFile('elf_memory.c')
529265SAli.Saidi@ARM.comElfFile('elf_next.c')
539265SAli.Saidi@ARM.comElfFile('elf_phnum.c')
549265SAli.Saidi@ARM.comElfFile('elf_rand.c')
559265SAli.Saidi@ARM.comElfFile('elf_rawfile.c')
569265SAli.Saidi@ARM.comElfFile('elf_scn.c')
579265SAli.Saidi@ARM.comElfFile('elf_shnum.c')
589265SAli.Saidi@ARM.comElfFile('elf_shstrndx.c')
599265SAli.Saidi@ARM.comElfFile('elf_strptr.c')
609265SAli.Saidi@ARM.comElfFile('elf_update.c')
619265SAli.Saidi@ARM.comElfFile('elf_version.c')
629265SAli.Saidi@ARM.comElfFile('gelf_checksum.c')
639265SAli.Saidi@ARM.comElfFile('gelf_dyn.c')
649199Sandreas.hansson@arm.comElfFile('gelf_ehdr.c')
659199Sandreas.hansson@arm.comElfFile('gelf_fsize.c')
669199Sandreas.hansson@arm.comElfFile('gelf_getclass.c')
679199Sandreas.hansson@arm.comElfFile('gelf_phdr.c')
689199Sandreas.hansson@arm.comElfFile('gelf_rel.c')
699199Sandreas.hansson@arm.comElfFile('gelf_rela.c')
709199Sandreas.hansson@arm.comElfFile('gelf_shdr.c')
719199Sandreas.hansson@arm.comElfFile('gelf_sym.c')
729199Sandreas.hansson@arm.comElfFile('gelf_symshndx.c')
739199Sandreas.hansson@arm.comElfFile('gelf_xlate.c')
749199Sandreas.hansson@arm.comElfFile('libelf.c')
759199Sandreas.hansson@arm.comElfFile('libelf_align.c')
769199Sandreas.hansson@arm.comElfFile('libelf_allocate.c')
779079SAli.Saidi@ARM.comElfFile('libelf_ar.c')
789199Sandreas.hansson@arm.comElfFile('libelf_checksum.c')
799199Sandreas.hansson@arm.comElfFile('libelf_data.c')
809199Sandreas.hansson@arm.comElfFile('libelf_ehdr.c')
819199Sandreas.hansson@arm.comElfFile('libelf_extended.c')
829199Sandreas.hansson@arm.comElfFile('libelf_phdr.c')
839199Sandreas.hansson@arm.comElfFile('libelf_shdr.c')
849199Sandreas.hansson@arm.comElfFile('libelf_xlate.c')
859199Sandreas.hansson@arm.com
869199Sandreas.hansson@arm.comElfFile('libelf_convert.c')
879199Sandreas.hansson@arm.comElfFile('libelf_fsize.c')
888835SAli.Saidi@ARM.comElfFile('libelf_msize.c')
898528SN/A
909199Sandreas.hansson@arm.comm4env = main.Clone()
919199Sandreas.hansson@arm.comif m4env['GCC']:
929199Sandreas.hansson@arm.com    major,minor,dot = [ int(x) for x in m4env['CXXVERSION'].split('.')]
939199Sandreas.hansson@arm.com    if major >= 4:
949199Sandreas.hansson@arm.com        m4env.Append(CCFLAGS=['-Wno-pointer-sign'])
959199Sandreas.hansson@arm.comm4env.Append(CCFLAGS=['-Wno-implicit'])
969199Sandreas.hansson@arm.comdel m4env['CPPPATH']
979199Sandreas.hansson@arm.com
989199Sandreas.hansson@arm.com# If we have gm4 use it
999199Sandreas.hansson@arm.comif m4env.Detect('gm4'):
1009199Sandreas.hansson@arm.com    m4env['M4'] = 'gm4'
1019199Sandreas.hansson@arm.com
1029199Sandreas.hansson@arm.com# Check that m4 is available
1039096Sandreas.hansson@arm.comimport SCons.Tool.m4
1049199Sandreas.hansson@arm.comif not SCons.Tool.m4.exists(m4env):
1059199Sandreas.hansson@arm.com   print "Error: Can't find version of M4 macro processor.  " + \
1069199Sandreas.hansson@arm.com         "Please install M4 and try again."
1079199Sandreas.hansson@arm.com   Exit(1)
1089199Sandreas.hansson@arm.com
1099199Sandreas.hansson@arm.comm4env.Append(M4FLAGS='-DSRCDIR=%s' % Dir('.').path)
1109199Sandreas.hansson@arm.comm4env['M4COM'] = '$M4 $M4FLAGS $SOURCES > $TARGET'
1119199Sandreas.hansson@arm.comm4env.M4(target=File('libelf_convert.c'),
1129096Sandreas.hansson@arm.com         source=[File('elf_types.m4'), File('libelf_convert.m4')])
1139199Sandreas.hansson@arm.comm4env.M4(target=File('libelf_fsize.c'),
1149199Sandreas.hansson@arm.com         source=[File('elf_types.m4'), File('libelf_fsize.m4')])
1159199Sandreas.hansson@arm.comm4env.M4(target=File('libelf_msize.c'),
1169199Sandreas.hansson@arm.com         source=[File('elf_types.m4'), File('libelf_msize.m4')])
1179096Sandreas.hansson@arm.com
1189199Sandreas.hansson@arm.com# Build libelf as a static library with PIC code so it can be linked
1199199Sandreas.hansson@arm.com# into either m5 or the library
1209199Sandreas.hansson@arm.comm4env.Library('elf', [m4env.SharedObject(f) for f in elf_files])
1219199Sandreas.hansson@arm.com
1229096Sandreas.hansson@arm.commain.Prepend(CPPPATH=Dir('.'))
1239199Sandreas.hansson@arm.commain.Append(LIBS=['elf'])
1249199Sandreas.hansson@arm.commain.Prepend(LIBPATH=[Dir('.')])
1259199Sandreas.hansson@arm.com
1268835SAli.Saidi@ARM.com