⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 knladdprj.tcl

📁 firewall PNE 3.3 source code, running at more than vxworks6.x version.
💻 TCL
字号:
# knlAddPrj.tcl - tcl script to add a wmb project to a Tornado Project## Copyright 2004, Wind River Systems, Inc.## modification history# --------------------# 01e,16mar06,tlu  updated the version of web-cli version to 4.5# 01d,02jun05,zhu  removed the dependency on WM_BASE# 01c,12may05,zhu  updated for vxWork 6.1 and workbench# 01b,12may04,jws  put "common" include at end of flags# 01a,18feb04,jws  written## DESCRIPTION## This is a template script for adding wmb projects to an existing# Tornado project.  Usually that project would be a kernel.  The script is run# from the directory in which you have created a WMIT project.  The# script modifies the "default" build spec of the target project by adding# include paths.  It then adds source files to the project.## One argument is needed by the script; the name of the target .wpj file.## To run this script, you must be in a Tornado command line# environment, usually established by running "torVars" in a# Tornado installation or view.  A sample invocation is:## wtxtcl knlAddPrj.tcl ../aKnl/aKnl.wpj## The file readme.txt, in this directory, contains more information# about this, and other, scripts.#proc itMightBeAFile line {    upvar $line lineread    set lineread [string trim $lineread]    if { [string length $lineread] == 0 }  { return 0 }    if { [string index $lineread 0] == "#" }  { return 0 }    return 1}# One argument is required.if {$argc != 1} {	puts "Argument must be <kernel_project_file>"	exit 1	}# source some tcl libraries# package require OsConfigsource [wtxPath host resource tcl OsConfig]cmpScriptLib.tclsource [wtxPath host resource tcl OsConfig]Utils.tcl#source [wtxPath host resource tcl app-config Project]WorkspaceDoc.tcl################################################################################# cmpBuildFlagsAddAfter - add flags to the build## This routine is just a quick way to append to the build macros# CFLAGS and CFLAGS_AS. It could also be acheived using# cmpBuildMacro[GS]et## PARAMETERS#    flags : flags to add to CFLAGS and CFLAGS_AS# # RETURNS: N/A#proc cmpBuildFlagsAddAfter flags {    global cmpProjHandle    set hProj $cmpProjHandle    set build [prjBuildCurrentGet $hProj]    set tc [prjBuildTcGet $hProj $build]    set cc [${tc}::toolFindByFile foo.c]    set as [${tc}::toolFindByFile foo.s]    set cflags   "[prjBuildFlagsGet $hProj $build $cc] $flags"    set asflags  "[prjBuildFlagsGet $hProj $build $as] $flags"    prjBuildFlagsSet $hProj $build $cc  $cflags    prjBuildFlagsSet $hProj $build $as  $asflags}# set CPU [lindex $argv 0]# set TOOL [lindex $argv 1]set projFile [lindex $argv 0]# import WIND_HOMEset windHome $env(WIND_HOME)# Determine where WindManage stuff is.if {[info exists env(WM_BASE)]} {    set wmBase $env(WM_BASE)} else {    set wmBase $windHome/components/webcli-4.5}# Set the project base.  Oddly enough, if we don't use the full# pathname, the generated Makefile can have problems.set projBase [pwd]# The project directory will be in $projBase.  Note that this is the# WMIT project dirctory, NOT the kernel project directory!## For this version of things, the project base directory is the same as the# project directory and projBase is not necessary, but we will# leave it, for now.set projDir $projBase# Read info from .rcp file.  The result is that prjType is a string# consisting of any combination of "c" (CLI), "m" (Mibway), and "w"# (Web).  The construction of this string is done for historical reasons.# dirSrc and dirHdr contain the (DOS! format) pathnames to# source and header directories input to WMIT.  For these pathnames,# the trailing "\" has been removed.set prjType ""set dirSrc  ""set dirHdr  ""set chan [open $projDir/[file tail $projDir].rcp]# Crude, but functional, parsing using regular expressions.while { [gets $chan lineread] >= 0 } {    if { [regexp {blade.+type="([^"]*)"} "$lineread" regMatch regSub1] } {        if { $regSub1 == "RCW" } { append prjType "w" }        if { $regSub1 == "RCCLI" } { append prjType "c" }        if { $regSub1 == "RCM" } { append prjType "m" }}     if { [regexp {dirC="([^"]*)\\"} "$lineread" regMatch regSub1] } {#       puts "$regSub1"        set dirSrc $regSub1}     if { [regexp {dirH="([^"]*)\\"} "$lineread" regMatch regSub1] } {#       puts "$regSub1"        set dirHdr $regSub1}}close $chan# If we do not use a full pathname for projFile, strange things# can happen when computing dependencies!cmpProjOpen $projFilecmpBuildSpecSet default# ----- Now we customize the project -----set ourBase $projDir# Add include directories for WindManage.# The "common" path must be after the bsp directory.  This covers# up the fact that common contains a file named config.h.cmpBuildFlagsAddAfter -I$wmBase/target/h/wrn/wm/commoncmpBuildFlagsAdd -I$wmBase/target/h/wrn/wm/backplanecmpBuildFlagsAdd -I$wmBase/target/h/wrn/wm/wmmcmpBuildFlagsAdd -I$wmBase/target/h/wrn/wm/clicmpBuildFlagsAdd -I$wmBase/target/h/wrn/wm/httpcmpBuildFlagsAdd -I$wmBase/target/h/wrn/wm/common/zlib/vxWorks# cmpBuildFlagsAdd -I$wmBase/target/h/wrn/emcmpBuildFlagsAdd -I$wmBase/target/h# These next are project specific and must match the directories# specified to WMIT.# This turns "\" to "/" in the headers pathname.  We then turn this# into an absolute pathname so that the project manipulating tcl# scripts can turn it back to a relative pathname, if possible!regsub -all {\\} $dirHdr {/} dirHdrcd $dirHdrset dirHdr [pwd]cd $projDirputs "Adding include directory $dirHdr"cmpBuildFlagsAdd -I$dirHdr# Add any sources files we need starting with WindManage stuff# Exactly what we need is project specific.set wmSrcPath $wmBase/target/src/wrn/wm# First, files that everybody needs in the common and# backplane directories.  This includes the zlib files.set chan [open $wmSrcPath/common/project.files]while { [gets $chan lineread] >= 0 } {    if { [itMightBeAFile lineread] } { cmpFileAdd $wmSrcPath/$lineread }}close $chan# Now, mibway project related files, if necessary.  Always pull the# snmp files from WIND_BASE.if { [string first m $prjType] != -1 } {puts "Including Mibway files..."# cmpBuildFlagsAdd -I$wmBase/target/h/wrn/wm/snmp/engineset chan [open $wmSrcPath/wmm/project.files]while { [gets $chan lineread] >= 0 } {    if { [itMightBeAFile lineread] } { cmpFileAdd $wmSrcPath/$lineread }}close $chan}# Now, cli project related files, if necessary.if { [string first c $prjType] != -1 } {puts "Including CLI files..."set chan [open $wmSrcPath/cli/project.files]while { [gets $chan lineread] >= 0 } {    if { [itMightBeAFile lineread] } { cmpFileAdd $wmSrcPath/$lineread }}close $chan}# Now, web project related files, if necessary.if { [string first w $prjType] != -1 } {puts "Including WEB files..."set chan [open $wmSrcPath/http/project.files]while { [gets $chan lineread] >= 0 } {    if { [itMightBeAFile lineread] } { cmpFileAdd $wmSrcPath/$lineread }}close $chan}# Now add the WMIT created and other project specific files.# The locations of some of these files are set in WMIT.# The exact files are project specific.# Do the same stuff as for the header pathname.regsub -all {\\} $dirSrc {/} dirSrc# puts $dirSrccd $dirSrcset fileSrcPath [pwd]cd $projDirset ourSourceFiles [glob $fileSrcPath/*.c]foreach srcFile $ourSourceFiles {    puts "adding $srcFile to project"    cmpFileAdd $srcFile}# Finally, extra user source files, if any.  In order to avoid# later problems, we want to pass an absolute pathname to# cmpFileAdd.if { [file readable $projDir/custom.files] } {puts "Including extra user files..."set chan [open $projDir/custom.files]while { [gets $chan lineread] >= 0 } {    # Clean up the input and check for comments and empty lines.#    set lineread [string trim $lineread]#    if { [string length $lineread] == 0 }  { continue }#    if { [string index $lineread 0] == "#" }  { continue }     if { ![itMightBeAFile lineread] } { continue }    # Now, glob, then process    set files [glob $lineread]    foreach aFile $files {        if { [file pathtype $aFile] != "absolute" } {            set aFile $projDir/$aFile        }        if { [file isdirectory $aFile] } {            cmpBuildFlagsAdd -I$aFile            puts "adding $aFile to include path"        } else {            cmpFileAdd $aFile            puts "adding $aFile to project"        }    }}close $chan}cmpProjClose

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -