Home | History | Annotate | Download | only in reference
      1 #!/usr/bin/perl
      2 #
      3 # 
      4 # File Name:  build_vc.pl
      5 # OpenMAX DL: v1.0.2
      6 # Revision:   9641
      7 # Date:       Thursday, February 7, 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 
     16 use File::Spec;
     17 use strict;
     18 
     19 my ($CC, $CC_OPTS, $AS, $AS_OPTS, $LIB, $LIB_OPTS, $LIB_TYPE);
     20 
     21 $CC       = 'armcc';
     22 $CC_OPTS  = '--no_unaligned_access --cpu ARM7TDMI -c';
     23 $AS       = 'armasm';
     24 $AS_OPTS  = '--no_unaligned_access --cpu ARM7TDMI';
     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 
     34 my (@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.
     40 open(FILES, '<filelist_vc.txt') or die("Can't open source file list\n");
     41 @filelist = <FILES>;
     42 close(FILES);
     43 
     44 # Fix the file separators in the header paths
     45 foreach $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)
     54 mkdir "obj", 0777 if (! -d "obj");
     55 mkdir "lib", 0777 if (! -d "lib");
     56 
     57 $objlist = '';
     58 
     59 # Compile each file
     60 foreach $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 	if(($base, $ext) = $f =~ /(.+)\.(\w)$/)
     72 	{
     73 		$objfile = File::Spec->catfile('obj', $base.'.o');
     74 
     75 		if($ext eq 'c')
     76 		{
     77 			$objlist .= "$objfile ";
     78 			$command = $CC.' '.$CC_OPTS.' '.$hd.' -o '.$objfile.' '.$file;
     79 			print "$command\n";
     80 			system($command);
     81 		}
     82 		elsif($ext eq 's')
     83 		{
     84 			$objlist .= "$objfile ";
     85 			$command = $AS.' '.$AS_OPTS.' '.$hd.' -o '.$objfile.' '.$file;
     86 			print "$command\n";
     87 			system($command);
     88 		}
     89 		else
     90 		{
     91 			print "Ignoring file: $f\n";
     92 		}
     93 	}
     94 	else
     95 	{
     96 		die "No file extension found: $f\n";
     97 	}
     98 }
     99 
    100 # Do the final link stage to create the libraries.
    101 $libfile = File::Spec->catfile('lib', 'omxVC'.$LIB_TYPE);
    102 $command = $LIB.' '.$LIB_OPTS.' '.$libfile.' '.$objlist;
    103 print "$command\n";
    104 (system($command) == 0) and print "Build successful\n";
    105 
    106 
    107 
    108 
    109 
    110 
    111 
    112