1#!/usr/bin/perl 2# 3# 4# File Name: build_vc.pl 5# OpenMAX DL: v1.0.2 6# Revision: 12290 7# Date: Wednesday, April 9, 2008 8# 9# (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. 10# 11# 12# 13# This file builds the OpenMAX DL vc domain library omxVC.o. 14# 15 16use File::Spec; 17use strict; 18 19my ($CC, $CC_OPTS, $AS, $AS_OPTS, $LIB, $LIB_OPTS, $LIB_TYPE); 20 21$CC = 'armcc'; 22$CC_OPTS = '--no_unaligned_access --cpu Cortex-A8 -c'; 23$AS = 'armasm'; 24$AS_OPTS = '--no_unaligned_access --cpu Cortex-A8'; 25# $LIB = 'armlink'; 26# $LIB_OPTS = '--partial -o'; 27# $LIB_TYPE = '.o'; 28$LIB = 'armar'; 29$LIB_OPTS = '--create -r'; 30$LIB_TYPE = '.a'; 31 32#------------------------ 33 34my (@headerlist, @filelist, $hd, $file, $ofile, $command, $objlist, $libfile, $h); 35 36# Define the list of directories containing included header files. 37@headerlist = qw(api vc/api vc/m4p2/api vc/m4p10/api); 38 39# Define the list of source files to compile. 40open(FILES, '<filelist_vc.txt') or die("Can't open source file list\n"); 41@filelist = <FILES>; 42close(FILES); 43 44# Fix the file separators in the header paths 45foreach $h (@headerlist) 46{ 47 $h = File::Spec->canonpath($h); 48} 49 50# Create the include path to be passed to the compiler 51$hd = '-I' . join(' -I', @headerlist); 52 53# Create the build directories "/lib/" and "/obj/" (if they are not there already) 54mkdir "obj", 0777 if (! -d "obj"); 55mkdir "lib", 0777 if (! -d "lib"); 56 57$objlist = ''; 58 59# Compile each file 60foreach $file (@filelist) 61{ 62 my $f; 63 my $base; 64 my $ext; 65 my $objfile; 66 67 chomp($file); 68 $file = File::Spec->canonpath($file); 69 70 (undef, undef, $f) = File::Spec->splitpath($file); 71 $f=~s/[\n\f\r]//g; # Remove any end-of-line characters 72 73 if(($base, $ext) = $f =~ /(.+)\.(\w)$/) 74 { 75 $objfile = File::Spec->catfile('obj', $base.'.o'); 76 77 if($ext eq 'c') 78 { 79 $objlist .= "$objfile "; 80 $command = $CC.' '.$CC_OPTS.' '.$hd.' -o '.$objfile.' '.$file; 81 print "$command\n"; 82 system($command); 83 } 84 elsif($ext eq 's') 85 { 86 $objlist .= "$objfile "; 87 $command = $AS.' '.$AS_OPTS.' '.$hd.' -o '.$objfile.' '.$file; 88 print "$command\n"; 89 system($command); 90 } 91 else 92 { 93 print "Ignoring file: $f\n"; 94 } 95 } 96 else 97 { 98 die "No file extension found: $f\n"; 99 } 100} 101 102# Do the final link stage to create the libraries. 103$libfile = File::Spec->catfile('lib', 'omxVC'.$LIB_TYPE); 104$command = $LIB.' '.$LIB_OPTS.' '.$libfile.' '.$objlist; 105print "$command\n"; 106(system($command) == 0) and print "Build successful\n"; 107 108 109 110 111 112 113 114