#!/usr/bin/perl #begin settings $LIB_WINDIR = "d:\\h8\\lib"; $WRITER_CYGWINPATH = "/cygdrive/e/H8WriteTurbo/h8wt.exe"; $PROJECT_NAME = "project01"; $OPTIMIZE = 1; $CPU = "300ha"; $LINKSCRIPT = "linkscript.SUB"; $ASM_EXT = "mar"; @C_SRCS = ("c01","c02"); @C_DEPENDS1 = ("c01.h","c01_additional.c"); @C_DEPENDS2 = ("c02.h","c02_additional.c"); @C_DEPENDS3 = (); @ASM_SRCS = ("startup","asm02"); #end settings open LINKSCRIPT, ">$LINKSCRIPT"; print LINKSCRIPT <Makefile"; $OBJ_MAKE_ABS=""; $OBJ_L38H=""; $flag=0; foreach $src ((@ASM_SRCS,@C_SRCS)){ if($flag){ $OBJ_MAKE_ABS = $OBJ_MAKE_ABS." "; $OBJ_L38H = $OBJ_L38H .","; }else{ $flag=1; } $OBJ_MAKE_ABS = $OBJ_MAKE_ABS.$src.".OBJ"; $OBJ_L38H = $OBJ_L38H .$src; } $LIB_WINDIR=~s/\\/\\\\/g; print MAKEFILE < $PROJECT_NAME.log echo "/*------------- log begin -------------*/" >> $PROJECT_NAME.log echo "start make $PROJECT_NAME---" >> $PROJECT_NAME.log cat *.OBJ.log $PROJECT_NAME.ABS.log $PROJECT_NAME.MOT.log >> $PROJECT_NAME.log echo "/*-------------- log end --------------*/" >> $PROJECT_NAME.log cat $PROJECT_NAME.log $PROJECT_NAME.MOT: $PROJECT_NAME.ABS echo "--make $PROJECT_NAME.MOT---" > $PROJECT_NAME.MOT.log C38H.EXE $PROJECT_NAME.ABS >> $PROJECT_NAME.MOT.log $PROJECT_NAME.ABS: $OBJ_MAKE_ABS $LINKSCRIPT echo "--make $PROJECT_NAME.ABS---" > $PROJECT_NAME.ABS.log L38H.EXE $OBJ_L38H -output=$PROJECT_NAME -print=$PROJECT_NAME -subcommand=$LINKSCRIPT >> $PROJECT_NAME.ABS.log PERL_MAKEFILE_HEAD $i=1; foreach $c_src (@C_SRCS){ if ($i==1){@c_includes = @C_DEPENDS1;} elsif($i==2){@c_includes = @C_DEPENDS2;} elsif($i==3){@c_includes = @C_DEPENDS3;} $c_include_str=""; foreach $c_include (@c_includes){ $c_include_str=$c_include_str.$c_include." "; } print MAKEFILE < $c_src.OBJ.log CC38H.EXE -optimize=\$(OPTIMIZE) -cpu=\$(CPU) -include=\$(LIB) $c_src.c >> $c_src.OBJ.log mv $c_src.obj tmp.dat mv tmp.dat $c_src.OBJ PERL_MAKEFILE_CC $i++; } $i=1; foreach $asm_src (@ASM_SRCS){ print MAKEFILE < $asm_src.OBJ.log A38H.EXE $asm_src.c >> $asm_src.OBJ.log mv $asm_src.obj tmp.dat mv tmp.dat $asm_src.OBJ PERL_MAKEFILE_ASM $i++; } print MAKEFILE < $PROJECT_NAME.log PERL_MAKEFILE_TAIL close MAKEFILE;