View Single Post
  #1   Spotlight this post!  
Unread 18-12-2004, 18:49
Michael Auchter Michael Auchter is offline
Registered User
#0068 (Truck Town Thunder)
 
Join Date: Jan 2004
Location: Clarkston, MI
Posts: 15
Michael Auchter is on a distinguished road
Perl FRC builder in Linux

I developed a program for building the robot code in Perl. I know that there is already an actual makefile which makes use of "make," but on my laptop, I have several directories full of code, and thought it would be nice to have one centralized utility to build them.

When you execute the program, it will compile all .c files in the current directory.

Installation Instructions:
cp ./frcbuild /usr/bin
chmod 755 /usr/bin/frcbuild

Type "frcbuild" in your code directory to build.

Comments/criticism would be greatly appreciated.

Code:
#!/usr/bin/perl -w

# Builder for MCC18
# FIRST Team 68, Truck Town Thunder

# Coded by: Michael Auchter (auchter.phire.org)
# Questions? Comments? michael.auchter@gmail.com

use strict;
# Variable Declaration.  Pretty self explanatory...
my $MCC   = "/opt/mcc18";
my $MCC18 = "$MCC/bin/mcc18.exe -p=18F8520";
my $LINK  = "$MCC/bin/mplink.exe";
my $WINE  = "/usr/bin/wine";
my $OPT   = "\"$MCC/h\" -D_FRC_BOARD -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-";
my $DRIVE = "Z";
my $LIB = "$DRIVE:$MCC/lib/";

# Compilation
while (<*.c>) {                 # Case sensitive, change if .C
 print "Compiling: $_\n";
 my $o = $_;
 $o =~ s|\.c$|\.o|i;
 system("$WINE $MCC18 \"$_\" -fo=\"$o\" /i$OPT") unless (/print_f/);
 system("$WINE $MCC18 \"$_\" -fo=\"$o\" /i\"$MCC/h\"") if (/print_f/);
}

# Build
print "Building FrcCode.hex\n";
my $files = "";
$files = "$files $_ " while (<*.o>);
system("$WINE $LINK /l\"$DRIVE:$MCC/lib/\" \"18f8520user.lkr\" $files \"FRC_library.lib\" /m\"FrcCode.map\" /o\"FrcCode.cof\"");

print "Removing *.o\n";
system("rm $_") while (<*.o>);
Attached Files
File Type: txt frcbuild.txt (1.0 KB, 16 views)

Last edited by Michael Auchter : 18-12-2004 at 21:12.