blob: e59cded03a7117cfbf6b3faeea267f08c80d8a0e [file] [log] [blame]
/*
* Copyright (C) 2007-2008 ARM Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
#!/usr/bin/perl
#
#
# File Name: build_vc.pl
# OpenMAX DL: v1.0.2
# Revision: 9641
# Date: Thursday, February 7, 2008
#
#
#
#
# This file builds the OpenMAX DL vc domain library omxVC.o.
#
use File::Spec;
use strict;
my ($CC, $CC_OPTS, $AS, $AS_OPTS, $LIB, $LIB_OPTS, $LIB_TYPE);
$CC = 'armcc';
$CC_OPTS = '--no_unaligned_access --cpu ARM7TDMI -c';
$AS = 'armasm';
$AS_OPTS = '--no_unaligned_access --cpu ARM7TDMI';
# $LIB = 'armlink';
# $LIB_OPTS = '--partial -o';
# $LIB_TYPE = '.o';
$LIB = 'armar';
$LIB_OPTS = '--create -r';
$LIB_TYPE = '.a';
#------------------------
my (@headerlist, @filelist, $hd, $file, $ofile, $command, $objlist, $libfile, $h);
# Define the list of directories containing included header files.
@headerlist = qw(api vc/api vc/m4p2/api vc/m4p10/api);
# Define the list of source files to compile.
open(FILES, '<filelist_vc.txt') or die("Can't open source file list\n");
@filelist = <FILES>;
close(FILES);
# Fix the file separators in the header paths
foreach $h (@headerlist)
{
$h = File::Spec->canonpath($h);
}
# Create the include path to be passed to the compiler
$hd = '-I' . join(' -I', @headerlist);
# Create the build directories "/lib/" and "/obj/" (if they are not there already)
mkdir "obj", 0777 if (! -d "obj");
mkdir "lib", 0777 if (! -d "lib");
$objlist = '';
# Compile each file
foreach $file (@filelist)
{
my $f;
my $base;
my $ext;
my $objfile;
chomp($file);
$file = File::Spec->canonpath($file);
(undef, undef, $f) = File::Spec->splitpath($file);
if(($base, $ext) = $f =~ /(.+)\.(\w)$/)
{
$objfile = File::Spec->catfile('obj', $base.'.o');
if($ext eq 'c')
{
$objlist .= "$objfile ";
$command = $CC.' '.$CC_OPTS.' '.$hd.' -o '.$objfile.' '.$file;
print "$command\n";
system($command);
}
elsif($ext eq 's')
{
$objlist .= "$objfile ";
$command = $AS.' '.$AS_OPTS.' '.$hd.' -o '.$objfile.' '.$file;
print "$command\n";
system($command);
}
else
{
print "Ignoring file: $f\n";
}
}
else
{
die "No file extension found: $f\n";
}
}
# Do the final link stage to create the libraries.
$libfile = File::Spec->catfile('lib', 'omxVC'.$LIB_TYPE);
$command = $LIB.' '.$LIB_OPTS.' '.$libfile.' '.$objlist;
print "$command\n";
(system($command) == 0) and print "Build successful\n";