/* * 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, '; 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";