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:   12290
23# Date:       Wednesday, April 9, 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 Cortex-A8 -c';
38$AS       = 'armasm';
39$AS_OPTS  = '--no_unaligned_access --cpu Cortex-A8';
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    $f=~s/[\n\f\r]//g; # Remove any end-of-line characters
87
88	if(($base, $ext) = $f =~ /(.+)\.(\w)$/)
89	{
90		$objfile = File::Spec->catfile('obj', $base.'.o');
91
92		if($ext eq 'c')
93		{
94			$objlist .= "$objfile ";
95			$command = $CC.' '.$CC_OPTS.' '.$hd.' -o '.$objfile.' '.$file;
96			print "$command\n";
97			system($command);
98		}
99		elsif($ext eq 's')
100		{
101			$objlist .= "$objfile ";
102			$command = $AS.' '.$AS_OPTS.' '.$hd.' -o '.$objfile.' '.$file;
103			print "$command\n";
104			system($command);
105		}
106		else
107		{
108			print "Ignoring file: $f\n";
109		}
110	}
111	else
112	{
113		die "No file extension found: $f\n";
114	}
115}
116
117# Do the final link stage to create the libraries.
118$libfile = File::Spec->catfile('lib', 'omxVC'.$LIB_TYPE);
119$command = $LIB.' '.$LIB_OPTS.' '.$libfile.' '.$objlist;
120print "$command\n";
121(system($command) == 0) and print "Build successful\n";
122
123
124
125
126
127
128
129