/**
@page LEVEL2 Trick Environment
@anchor Trick_Environment
A very important part of building %Trick simulations is understanding the environment and
how to manipulate it. %Trick maintains a list of variables. Each variable has a default
value that may be overridden by setting the value in the environment. %Trick resolves these
variables by a call to a function called "gte". You can type in "${TRICK_HOME}/bin/gte"
on the command line to see what the "Trick environment" is.
A %Trick simulation may run with no UNIX environment. However, for simulation development,
there is a set of UNIX variables that may be in your UNIX environment. For instance, you
may have TRICK_CFLAGS defined.
The user’s environment is very important to building a correct simulation and it can be
complex at times. If you have questions, please contact a %Trick representative.
@section LEVEL3 TRICK_CFLAGS and TRICK_CXXFLAGS
The contents of TRICK_CFLAGS is included on the command line with each C file compilation.
Similiarly, TRICK_CXXFLAGS is included for each C++ file. Each contain header file search
directories, macro define variables, and compiler flags.
For building a simulation, a user must be proficient at tweaking TRICK_CFLAGS and TRICK_CXXFLAGS.
There are a several ways to do this.
TRICK_CXXFLAGS works exactly like TRICK_CFLAGS.
Example 1: Add "-I/user/mooo/trick_models" to the environment variable.
TRICK_CFLAGS is currently...
UNIX Prompt> echo $TRICK_CFLAGS
-Wall
Now we need to edit the shell startup file where TRICK_CFLAGS is defined.
Add the following line for bash.
TRICK_CFLAGS="$TRICK_CFLAGS -I/user/mooo/trick_models"
Add the following line for [t]csh.
setenv TRICK_CFLAGS "$TRICK_CFLAGS -I/user/mooo/trick_models"
Now source your shell startup file and voila!...
For bash:
UNIX Prompt> . ~/.bash_profile
UNIX Prompt> echo $TRICK_CFLAGS
-Wall -I/user/mooo/trick_models
For [t]csh:
UNIX Prompt> source ~/.cshrc
UNIX Prompt> echo $TRICK_CFLAGS
-Wall -I/user/mooo/trick_models
Example 2: Add "-I/user/mooo/trick_models" through the simulation S_overrides.mk file
~e need to edit the S_overrides.mk file in the simulation to be built.
Add the following line.
TRICK_CFLAGS="$TRICK_CFLAGS -I/user/mooo/trick_models"
This will not show up in the current shell environment, but will be set for each command that
the makefile executtes.
@section LEVEL3 TRICK_CONVERT_SWIG_FLAGS
TRICK_CONVERT_SWIG_FLAGS contains flags sent to the convert_swig utility. Currently the flags only
support "-s" which allows convert_swig to process STLs.
@section LEVEL3 TRICK_EDITOR
TRICK_EDITOR defaults to an empty string. With TRICK_EDITOR is set, when CP encounters an error it
brings up the S_define file automatically using the TRICK_EDITOR command.
@section LEVEL3 TRICK_EXCLUDE
A colon separated list of directories to skip when processing files.
It is possible to instruct all CP functions to skip entire directories using the environment variable
TRICK_EXCLUDE. Set this variable to a colon separated list of directories which you
wish CP to bypass. All header files found in TRICK_EXCLUDE will not be processed. All source code
files found in TRICK_EXCLDUE will not be compiled or linked into the simulation.
This feature is useful to bring in packages as a library.
@section LEVEL3 TRICK_FORCE_32BIT
To force %Trick to compile in 32-bit on 64-bit systems, set the TRICK_FORCE_32BIT environment
variable to 1. Setting this variable appends "-m32" automatically to TRICK_CFLAGS and TRICK_CXXFLAGS.
@section LEVEL3 TRICK_HOST_CPU
%Trick determines a system specific suffix to append to object code directory names. By default
this is determined automatically by %Trick. The user may override this by setting the TRICK_HOST_CPU
environment variable.
@section LEVEL3 TRICK_HOST_TYPE
%Trick determines the current OS type. The user may override this by setting the TRICK_HOST_TYPE.
It is rare to set this variable.
@section LEVEL3 TRICK_ICG_EXCLUDE
A colon separated list of directories to skip when processing header files.
It is possible to instruct ICG to skip entire directories using the environment variable
TRICK_ICG_EXCLUDE. Set this variable to a colon separated list of directories which you
wish ICG to bypass. This is useful when there is code which you do not wish %Trick to have
any knowledge of (i.e. you don’t need any of the parameters recorded or input processable).
@section LEVEL3 TRICK_LDFLAGS
TRICK_LDFLAGS include linker flags. TRICK_LDFLAGS is used when linking the simulation executable.
It is rare to set this variable.
@section LEVEL3 TRICK_MAKE
This variable has been deprecated.
@section LEVEL3 TRICK_SFLAGS
TRICK_SFLAGS includes header file search directories and macro define variables.
TRICK_SFLAGS is used when parsing the S_define file.
@section LEVEL3 TRICK_USER_LINK_LIBS
Additional library and library directories to include when linking a simulation.
An example of adding a library search path, a library to be searched for, and a full
path library.
bash
export TRICK_USER_LINK_LIBS="-L/full/path/to/libs -lfile1 /another/path/to/a/libfile2.a"
[t]csh
setenv TRICK_USER_LINK_LIBS "-L/full/path/to/libs -lfile1 /another/path/to/a/libfile2.a"
@section LEVEL3 MAKEFLAGS
MAKEFLAGS is not a %Trick environment variable. It is used with the GNU make utility.
Invoking make with the -j flag allows make to compile more than one file simultaneously.
Dramatic speedups in compiling can be achieved when using multiple processors.
UNIX Prompt> setenv MAKEFLAGS –j10
(circa 2007?) We have used the parallel make to build %Trick on an 8 core system in a
gee-whiz time of only 25 seconds! In the year 2016, or thereabouts, %Trick will be compiled
in 1 second. Imagine that!!! Of course, we are assuming that there will be such a thing
as %Trick... By then, hopefully, %Trick will be written in a language that needs no compilation.
So really, make will be a thing of the past... And this section will not exist in the
User’s Guide! Assuming of course that the editor, at that time, actually reads the thing.
*/