#pragma
preprocessor directives.
CScout uses the following pragmas:
#pragma echo "STRING"
Example:
#pragma echo "Processing workspace date\n"
#pragma ro_prefix "STRING"
Example:
#pragma ro_prefix "C:\gcc"
#pragma project "STRING"
Example:
#pragma project "date"
#pragma block_enter
block_enter
will enter the project scope
(linkage unit); the second encountered nested
block_enter
will enter the file scope
(compilation unit).
#pragma block_exit
block_enter
pragmas should match the number of
block_exit
pragmas and there should never be more
than two block_enter
pragmas in effect.
#pragma process "STRING"
Example:
#pragma process "date.d"
#pragma pushd "STRING"
Example:
#pragma pushd "cp"
#pragma popd
pushd
pragmas should match the number of
popd
pragmas.
#pragma includepath "STRING"
Example:
#pragma includepath "/usr/lib/gcc-lib/i386-redhat-linux/2.96/include"
#pragma clear_include
#pragma clear_defines
#define
C preprocessor directive.
// workspace bin #pragma echo "Processing workspace bin\n" #pragma ro_prefix "/usr/include" #pragma echo "Entering directory /usr/src/bin" #pragma pushd "/usr/src/bin" // project date #pragma echo "Processing project date\n" #pragma project "date" #pragma block_enter #pragma echo "Entering directory date" #pragma pushd "date" // file date.c #pragma echo "Processing file date.c\n" #pragma block_enter #pragma clear_defines #pragma clear_include #include "/home/dds/src/cscout/cscout_defs.h" #include "/home/dds/src/cscout/cscout_incs.h" #pragma process "date.c" #pragma block_exit #pragma echo "Done processing file date.c\n" #pragma echo "Exiting directory date\n" #pragma popd #pragma block_exit #pragma echo "Done processing project date\n" #pragma echo "Exiting directory /usr/src/bin\n" #pragma popd #pragma echo "Done processing workspace bin\n"
config LINT
make depend
)
and compile
(make
).
This step is used to create all automatically generated C and header files.
Also during this step note the include path used, in order to provide
CScout with the same specification.
rm *.o
).
.include "$S/conf/kern.pre.mk" The code below was added after the line above NORMAL_C= echo '\#pragma echo "Processing file ${.IMPSRC}\n"' >>kernel.cs ;\ echo '\#pragma block_enter' >>kernel.cs ;\ echo '\#pragma clear_defines' >>kernel.cs ;\ echo '\#pragma clear_include' >>kernel.cs ;\ echo '\#include "cscout_defs.h"' >>kernel.cs ;\ for i in $(INCLUDES) ; \ do \ case $$i in \ -nostdinc) continue ;; \ -I-) continue ;; \ esac ; \ i=`echo $$i | sed 's/-I//'` ; \ echo '\#pragma includepath "'$$i'"' >>kernel.cs ; \ done ; \ echo '\#define _KERNEL 1' >>kernel.cs ;\ echo '\#pragma process "opt_global.h"' >>kernel.cs ;\ echo '\#pragma process "${.IMPSRC}"' >>kernel.cs ;\ echo '\#pragma block_exit' >>kernel.cs ;\ echo '\#pragma echo "Done processing file ${.IMPSRC}\n"' >>kernel.cs
cscout_incs.h
file for each different architecture.
#pragma echo "Processing workspace FreeBSD kernel\n" #pragma echo "Entering directory sys/i386/compile/LINT\n" #pragma pushd "sys/i386/compile/LINT" #pragma echo "Processing project i386\n" #pragma project "i386" #pragma block_enter #include "kernel.cs" #pragma echo "Exiting directory sys/i386/compile/LINT\n" #pragma popd #pragma echo "Done processing project i386\n" #pragma block_exit #pragma echo "Entering directory sys/amd64/compile/GENERIC\n" // [...] // and so on for all architectures // [...] #pragma echo "Exiting directory sys/sparc64/compile/LINT\n" #pragma popd #pragma echo "Done processing project sparc64\n" #pragma block_exitNote that the
block_enter
and
block_exit
pragmas
are furnished by this top-level file.
CScout HomeFile MetricsWritable FilesNumber of files: 4310
|
Contents | « Previous Next (CScout Execution) » |