Rev 7299 | Blame | Last modification | View Log | RSS feed
# -*- mode: perl; indent-width: 4; -*-############################################################################### COPYRIGHT - VIX IP PTY LTD ("VIX"). ALL RIGHTS RESERVED.## File: PLATFORM/amx## Contents: AMX support## Defines rules to build the following:## SCF Software configuration# TCF Target configuration# PCF AMX/ES configuration (CJ8xx/386 only)# INS Insight configuration module## Revision History:# 30/08/99 APY ToolsetGenerate/ToolsetObjs# 09/12/99 APY ToolsetDir# 09/03/00 APY Missed ToolsetGenerate/Objs statements for# amx_xxx (AMX/EP) builds.# 13/11/00 APY ${exe} includes embedded '.'# 29/03/02 APY pd386 toolset###############################################################################AmxInit();################################################################################. AMX platform runtime configuration################################################################################sub AmxInit{Init( "amx" );PlatformDefines( "amx.def" );}################################################################################ AmxLib( $name, $amx, $insight )# Builds the rules required to build AMX application objects# into a library## Rules:# $(OBJDIR)/${name}.${a}: \ (assumed image from caller)# objs ...# obj: source# $(CC)|$(AS)# source: axm# $(AXM)#....sub AmxLib{my( $name, $amx, $insight ) = @_;return 0 if (! $amx);AmxCfgRules( $name, $amx, ${a}, $insight );}################################################################################ AmxLink( $name, $amx, $insight, \@objs, \@libraries )# Builds the rules required to link an AMX application## Rules:# $(BINDIR)/${name}${exe}: \ (assumed image from caller)# objs ...# obj: source# $(CC)|$(AS)# source: axm# $(AXM)## Returns:# Appends additional objects and libraries required to build# an AMX based application.#....sub AmxLinkStd{my( $name, $pObjs, $pLibs ) = @_;AmxStdRules( $name );AmxStdStuff( $name, $pObjs, $pLibs );}sub AmxLinkCfg{my( $name, $amx, $insight, $pObjs, $pLibs ) = @_;return 0 if (! $amx);#.. Rules for generated modules#AmxStdRules( $name );AmxCfgRules( $name, $amx, ${exe}, $insight );#.. Objects and libraries required for builds#AmxStdStuff( $name, $pObjs, $pLibs );AmxCfgStuff( $name, $amx, $insight, $pObjs, $pLibs );}################################################################################ AmxStdStuff( $name, $amx, $insight, \@objs, \@libraries )# Appends additional objects and libraries required to build# an AMX based application.#..sub AmxStdStuff{my( $name, $pObjs, $pLibs ) = @_;# Objects## Toolset Objects# wc386 amx_xxx, cjXXXwc# pd386 amx_xxx, cjXXXpd# mri68k cjXXXuf#..if ( $ScmToolset eq "wc386" ){@$pObjs = ( "\$(OBJDIR)/${name}/amx_xxx", @$pObjs );push( @$pObjs, "\$(amx_libdir)/obj\$(amx_calling)/\$(amx_name)wc" );}elsif ( $ScmToolset eq "pd386" ){@$pObjs = ( "\$(OBJDIR)/${name}/amx_xxx", @$pObjs );}elsif ( $ScmToolset eq "mri68k" ){push( @$pObjs, "\$(amx_libdir)/\$(amx_name)uf" );}else{Message( "AMX: unknown toolset '$ScmToolset'\n" );}# Libraries,# Note: Libraries must be pushed (after) APP/EOS libraries.#..# AMX kernelpush( @$pLibs, "\$(amx_libdir)/\$(amx_name)\$(amx_calling)" );push( @$pLibs, "--ifdef=amx_compat" ); # AMX v1 compatpush( @$pLibs, "\$(amx_libdir)/\$(amx_name)cv\$(amx_calling)" );push( @$pLibs, "--ifdef=amx_filesystem" ); # AMX/FS optionalpush( @$pLibs, "\$(amxfs_libdir)/\$(amx_fsname)\$(amx_calling)" );}################################################################################ AmxCfgStuff( $name, $amx, $insight, \@objs, \@libraries )# Appends additional objects and libraries required to build# an AMX module into an application.#..sub AmxCfgLink{my( $name, $amx, $insight, $pObjs, $pLibs ) = @_;@$pObjs = ( "\$(OBJDIR)/${name}/amx_icf", @$pObjs )if ( $insight );@$pObjs = ( "\$(OBJDIR)/${name}/amx_pcf", @$pObjs )if ( $ScmToolset eq "wc386" );@$pObjs = ( "\$(OBJDIR)/${name}/amx_tcf", @$pObjs );@$pObjs = ( "\$(OBJDIR)/${name}/amx_scf", @$pObjs );}################################################################################ AmxStdRules( $name, $amx, $insight )# Builds the rules required to build an AMX application## Rules:# objs ...## ToolsetRules:## obj: source# $(CC)|$(AS)# source: axm# $(AXM)#....sub AmxStdRules{my( $name ) = @_;#.. Add to callers dependencies#MakePrint( "\\\n\t\t\$(OBJDIR)/${name}/amx_xxx.${o}" )if ( $ScmToolset eq "wc386" || $ScmToolset eq "pd386" );#.. Toolset#if ( $ScmToolset eq "wc386" || $ScmToolset eq "pd386" ){ToolsetRule("\$(OBJDIR)/${name}/amx_xxx.${o}: \$(OBJDIR)/${name}/amx_xxx.c\n" ."\t\$(CC)\n" ."\$(OBJDIR)/${name}/amx_xxx.c: \$(SCM_PLATFORM).pl\n" ."\t@\$(mkdir) -p \$(OBJDIR)/${name}\n" ."\t\$(amx_xxx)\n" );ToolsetDir( "\$(OBJDIR)/${name}" );ToolsetGenerate( "\$(OBJDIR)/${name}/amx_xxx.c" );ToolsetObj( "\$(OBJDIR)/${name}/amx_xxx" );}}################################################################################ AmxCfgRules( $name, $amx, $ext, $insight )# Builds the rules required to build AMX configuration objects.## Rules:# objs ...## ToolsetRules:## obj: source# $(CC)|$(AS)# source: axm# $(AXM)#....sub AmxCfgRules{my( $name, $amx, $ext, $insight ) = @_;my( $scf, $tcf ) = @_;$scf = MakeSrcResolve( "${amx}.scf" ); # resolve source name$tcf = MakeSrcResolve( "${amx}.tcf" );#.. Add to callers dependencies#MakePrint( "\\\n\t\t\$(OBJDIR)/${name}/amx_scf.${o}" ."\\\n\t\t\$(OBJDIR)/${name}/amx_tcf.${o}" );#.. Object rules#ToolsetRule("##################################################################\n" ."# AMX configuration for ${name}.${ext}\n" ."#..\n" ."\n" ."\$(OBJDIR)/${name}/amx_scf.${o}: \$(OBJDIR)/${name}/amx_scf.c\n" ."\t\$(CC)\n" ."\$(OBJDIR)/${name}/amx_tcf.${o}: \$(OBJDIR)/${name}/amx_tcf.${s}\n" ."\t\$(AS)\n" ."\$(OBJDIR)/${name}/amx_scf.c: $scf\n" ."\t@\$(mkdir) -p \$(OBJDIR)/${name}\n" ."\t\$(amx_scf)\n" ."\$(OBJDIR)/${name}/amx_tcf.${s}: $tcf\n" ."\t\$(amx_tcf)\n" );ToolsetDir( "\$(OBJDIR)/${name}" );ToolsetGenerate( "\$(OBJDIR)/${name}/amx_scf.c" );ToolsetObj( "\$(OBJDIR)/${name}/amx_scf" );ToolsetGenerate( "\$(OBJDIR)/${name}/amx_tcf.${s}" ); # ObjectToolsetGenerate( "\$(OBJDIR)/${name}/amx_tcf.lst" ); # List fileToolsetObj( "\$(OBJDIR)/${name}/amx_tcf" );if ( $ScmToolset eq "wc386" ) # AMX/ET{#.. Add to callers dependencies#MakePrint( "\\\n\t\t\$(OBJDIR)/${name}/amx_pcf.${o}" );#.. Object rules#ToolsetRule("\$(OBJDIR)/${name}/amx_pcf.${o}: \$(OBJDIR)/${name}/amx_pcf.${s}\n" ."\t\$(AS)\n" ."\$(OBJDIR)/${name}/amx_pcf.${s}: $scf\n" ."\t\$(amx_pcf)\n" );ToolsetGenerate("\$(OBJDIR)/${name}/amx_pcf.${s}"); # ObjectToolsetGenerate("\$(OBJDIR)/${name}/amx_pcf.lst"); # List fileToolsetObj("\$(OBJDIR)/${name}/amx_pcf");}if ( $insight ){#.. Add to callers dependencies#MakePrint( "\\\n\t\$(OBJDIR)/${name}/amx_icf.${o}" );#.. Object rules#ToolsetRule("\$(OBJDIR)/${name}/amx_icf.${o}: \$(OBJDIR)/${name}/amx_icf.c\n" ."\$(OBJDIR)/${name}/amx_icf.c: $scf\n" ."\t\$(amx_icf)\n" );ToolsetGenerate( "\$(OBJDIR)/${name}/amx_icf.c}" );ToolsetObj( "\$(OBJDIR)/${name}/amx_icf" );}ToolsetRule( "\n#\n" );}################################################################################ AmxLibISP( $name, $cfg )# Builds the rules required to build AMX ISP into a library## AmxLinkISP( $name, $cfg, \@objs, \@libs )# Builds the rules required to build AMX ISP into an application## Rules:# $(OBJDIR)/${name}${exe}|${a}: \ (assumed)# objs ...# obj: source# $(CC)|$(AS)# source: axm# $(AXM)#....sub AmxLibISP{my( $name, $cfg ) = @_;AmxIntRules( $name, ${a}, $cfg );}sub AmxLinkISP{my( $name, $cfg, $pObjs, $pLibs ) = @_;AmxIntRules( $name, ${exe}, $cfg );push( @$pObjs, "\$(OBJDIR)/${name}/${cfg}.${o}" );}################################################################################ AmxISPRules( $name, $cfg )# Builds the rules required to build an AMX ISP module## ToolsetRules:## obj: source# $(AS)# source: axm# $(AXM)#....sub AmxIntRules{my( $name, $ext, $cfg ) = @_;my( $icf );#.. Add to callers dependencies#MakePrint( "\\\n\t\t\$(OBJDIR)/${name}/${cfg}.${o}" );#.. Objects rules#$icf = MakeSrcResolve( "${cfg}.icf" ); # resolve source nameToolsetRule("##################################################################\n" ."# AMX Interrupt Service Procedure (ISP) for ${name}.${ext}\n" ."#..\n" ."\n" ."\$(OBJDIR)/${name}/${cfg}.${o}: \$(OBJDIR)/${name}/${cfg}.${s}\n" ."\t\$(AS)\n" ."\$(OBJDIR)/${name}/${cfg}.${s}: $icf\n" ."\t@\$(mkdir) -p \$(OBJDIR)/${name}\n" ."\t\$(amx_int)\n" );ToolsetDir( "\$(OBJDIR)/${name}" );ToolsetGenerate( "\$(OBJDIR)/${name}/${cfg}.${s}" ); # ObjectToolsetGenerate( "\$(OBJDIR)/${name}/${cfg}.lst" ); # List fileToolsetObj( "\$(OBJDIR)/${name}/${cfg}" );ToolsetRule("\n#\n");}