build_vc.pl revision 78e52bfac041d71ce53b5b13c2abf78af742b09d
1/* 2 * Copyright (C) 2007-2008 ARM Limited 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 * 16 */ 17#!/usr/bin/perl 18# 19# 20# File Name: build_vc.pl 21# OpenMAX DL: v1.0.2 22# Revision: 9641 23# Date: Thursday, February 7, 2008 24# 25# 26# 27# 28# This file builds the OpenMAX DL vc domain library omxVC.o. 29# 30 31use File::Spec; 32use strict; 33 34my ($CC, $CC_OPTS, $AS, $AS_OPTS, $LIB, $LIB_OPTS, $LIB_TYPE); 35 36$CC = 'armcc'; 37$CC_OPTS = '--no_unaligned_access --cpu ARM7TDMI -c'; 38$AS = 'armasm'; 39$AS_OPTS = '--no_unaligned_access --cpu ARM7TDMI'; 40# $LIB = 'armlink'; 41# $LIB_OPTS = '--partial -o'; 42# $LIB_TYPE = '.o'; 43$LIB = 'armar'; 44$LIB_OPTS = '--create -r'; 45$LIB_TYPE = '.a'; 46 47#------------------------ 48 49my (@headerlist, @filelist, $hd, $file, $ofile, $command, $objlist, $libfile, $h); 50 51# Define the list of directories containing included header files. 52@headerlist = qw(api vc/api vc/m4p2/api vc/m4p10/api); 53 54# Define the list of source files to compile. 55open(FILES, '<filelist_vc.txt') or die("Can't open source file list\n"); 56@filelist = <FILES>; 57close(FILES); 58 59# Fix the file separators in the header paths 60foreach $h (@headerlist) 61{ 62 $h = File::Spec->canonpath($h); 63} 64 65# Create the include path to be passed to the compiler 66$hd = '-I' . join(' -I', @headerlist); 67 68# Create the build directories "/lib/" and "/obj/" (if they are not there already) 69mkdir "obj", 0777 if (! -d "obj"); 70mkdir "lib", 0777 if (! -d "lib"); 71 72$objlist = ''; 73 74# Compile each file 75foreach $file (@filelist) 76{ 77 my $f; 78 my $base; 79 my $ext; 80 my $objfile; 81 82 chomp($file); 83 $file = File::Spec->canonpath($file); 84 85 (undef, undef, $f) = File::Spec->splitpath($file); 86 if(($base, $ext) = $f =~ /(.+)\.(\w)$/) 87 { 88 $objfile = File::Spec->catfile('obj', $base.'.o'); 89 90 if($ext eq 'c') 91 { 92 $objlist .= "$objfile "; 93 $command = $CC.' '.$CC_OPTS.' '.$hd.' -o '.$objfile.' '.$file; 94 print "$command\n"; 95 system($command); 96 } 97 elsif($ext eq 's') 98 { 99 $objlist .= "$objfile "; 100 $command = $AS.' '.$AS_OPTS.' '.$hd.' -o '.$objfile.' '.$file; 101 print "$command\n"; 102 system($command); 103 } 104 else 105 { 106 print "Ignoring file: $f\n"; 107 } 108 } 109 else 110 { 111 die "No file extension found: $f\n"; 112 } 113} 114 115# Do the final link stage to create the libraries. 116$libfile = File::Spec->catfile('lib', 'omxVC'.$LIB_TYPE); 117$command = $LIB.' '.$LIB_OPTS.' '.$libfile.' '.$objlist; 118print "$command\n"; 119(system($command) == 0) and print "Build successful\n"; 120 121 122 123 124 125 126 127