Commit Graph

178 Commits

Author SHA1 Message Date
Alex Lin
4bf35a9c82 Revert "Merge pull request #533 from nasa/MakefileCleanup"
This reverts commit 269ed77cb4, reversing
changes made to d97f482219.
2018-03-02 08:59:26 -06:00
Alex Lin
9dd302f4b1 Trick makefile output formatting and cleanup. #533
Removed the red from the clean rules.  We'd like to reserve red for
errors.  Ended up removing all color from the clean side.
2018-03-01 08:51:57 -06:00
Alex Lin
9643311f4c Merge branch 'master' into MakefileCleanup 2018-03-01 08:32:08 -06:00
Alex Lin
d97f482219 Allow the FrameLog class to use a different clock #571
Added a clock reference that to the FrameLog class that defaults
to the GetTimeOfDay clock.  This clock has fast access and is
non intrusive to real-time operations using a different clock.

Added a function to set the clock to something else if desired.
2018-02-28 17:33:09 -06:00
John M. Penn
64d44d6fa8 Updates to Trick 17 Tutorial slides. Ref #554 2018-02-22 15:47:40 -06:00
John M. Penn
907cd2c481 Created Trick17 Tutorial Review Slides. Ref #554 2018-02-20 18:25:26 -06:00
Alex Lin
8f76605f3b Create Message client that writes to screen on a separate thread #553
Created a new message class that will copy incoming messages to a
buffer area.  The buffer area is pre allocated during simulation
initialization.  On a separate thread the buffer area is written
to std::cout.
2018-01-25 15:59:19 -06:00
Derek Bankieris
5db74dc804 Prefer simply-expanded variables in makefiles
Closes #538
2018-01-09 12:19:16 -06:00
Alex Lin
c694700148 Add environment variable to ignore types from ICG processing #535
Added a new environment variable TRICK_ICG_IGNORE_TYPES.  Class/struct/enum
types found in this semicolon delimited list will not have attributes written
out.
2017-12-19 10:02:41 -06:00
Christopher LaChance
6e0fcbd947 Updated formating and replaced formating variables. 2017-12-07 15:10:39 -06:00
Christopher LaChance
1bb3ac2a06 Cleaned up 'make clean' output significantly. 2017-12-06 13:12:13 -06:00
Derek Bankieris
380ab024a4 Add --with-udunits path to TRICK_EXCLUDE
Fixes #524
2017-12-04 11:02:03 -06:00
Alex Lin
de012dde71 Feature request: Support checkpointing and logging of std::array #480
Added std::array as an STL type Trick recognizes.  We can now create io code
that can save and restore std::arrays like std::vectors and other similar
types. Like other STL types, an std::array cannot be logged or viewed in
trick-tv.
2017-09-27 16:01:52 -05:00
Alex Lin
e2693de992 Many Trick sims SEGFAULT when built in 32-bit mode #440
Added a switch to trick-ICG to handle the -m32 flag.  When the
flag is present we tell clang to use a 32bit layout when calculating
member offsets.
2017-06-19 14:18:37 -05:00
Derek Bankieris
bb9b136a66 Remove CURDIR in trickify.mk
Reverts the important parts of c909669. Trying to include another
project's build dependencies as part of a sim build doesn't work that
well.

Refs #309
2017-05-30 08:56:06 -05:00
Alex Lin
34c62c5aab Sim build doesn't stop on error #421
PIPESTATUS is only available in bash.  For many of the systems
we use /bin/sh and /bin/bash are the same, but noooo, not on
Ubuntu where it is linked to dash.  I set SHELL := /bin/bash
in our makefile now.
2017-05-18 14:34:32 -05:00
Alex Lin
b2ebe157ed Lost the MAKE_out file when we updated simulation makefiles #412
Added echos to all compile commands to append to MAKE_out.  tee'd
the output of the compile command so that it will go to both the MAKE_out
file and the screen.
2017-04-18 10:26:58 -05:00
Derek Bankieris
2db341cff8 Revert (almost all of) 2e4c3286
Sadly, we cannot yet require SWIG 2.0.

Refs #400
2017-03-28 15:59:08 -05:00
Derek Bankieris
b53c52ac33 Separate ICG & SWIG exclusion constructs
Refs #392
2017-03-27 15:19:43 -05:00
Derek Bankieris
2e4c3286a3 Automatically generate dependencies with SWIG
Like gcc, swig supports all those -M options. Use them to automatically
manage *_py.cpp dependencies.
Add dependency generation to trickify.mk as well.
2017-03-14 13:38:09 -05:00
Alex Lin
7c78187abf Using ccache seems to work but prints warnings #390
Found a place in the makefile where TRICK_CC was not being set correctly.
Also found a case in gte.pm where we are not handling ccache properly.
2017-03-13 15:11:57 -05:00
Derek Bankieris
dd2a17e034 Separate convert_swig rule in trickify.mk
Refs #309
2017-02-27 08:56:09 -06:00
Derek Bankieris
c909669f7d Use absolute paths in S_source.d (Trickification)
CURDIR is used to produce absolute paths in S_source.d, which allows it
to be included from external makefiles. It is specifically intended to
be included from a Trickified project's user-facing makefile. That is,
the one the user is intended to include in a sim's S_overrides.mk. This
allows the project to automatically build their Trickified object as
part of a simulation build, but only when necessary as specified by the
dependencies.

Refs #309
2017-02-16 12:58:07 -06:00
Derek Bankieris
76148fda7a Don't echo ld command in trickify.mk
Refs #309
2017-02-15 13:42:58 -06:00
Derek Bankieris
40242601b2 Use partial linking in trickify.mk
Trick uses dlsym to dynamically load symbols at run time. At link time,
it cannot be known which symbols will be needed. When presented with a
library, the linker will only link in symbols that are known to be
needed. Therefore, the use of -whole-archive (Linux) or -force_load
(Mac) is necessary when linking a Trickified library into a sim.

We can simplify this by partially linking into an object instead of
creating a library. The linker will link all symbols in an object
regardless of whether or not they are known to be needed.

Refs #309
2017-02-15 12:57:20 -06:00
Derek Bankieris
90a26ab7c7 Autogenerate dependencies in trickify.mk
By using gcc's dependency generation feature, we can execute ICG only
when necessary, instead of all the time.

Refs #309
2017-02-14 15:41:58 -06:00
Alex Lin
9d587a45c2 S_overrides.mk is included twice when building #360
Moved makefile assignment of S_MAIN out of MAkefile.common to simulation
makefile.  The definition in Makefile.common was causing trouble for
autotesting because it changes TRICK_HOST_CPU.
2017-02-14 08:34:02 -06:00
Alex Lin
337139cacb S_overrides.mk is included twice when building #360
A different approach.  Instead of trying to limit the number of times
S_overrides.mk is included, combine the makefiles so only one
call to make is made.
2017-02-09 09:46:58 -06:00
Derek Bankieris
29bdbee8fa Revert 150ea9f
We've agreed that the long-term solution is to refactor the makefiles so
we don't use recursive make. Until then, continue double including
S_overrides.mk so that the $(S_MAIN) target is available in
S_overrides.mk. Resolve #360 by having Trickified libraries use
target-specific variables (ironically, on $(S_MAIN)) to avoid
duplication of the -whole-archive option.
2017-02-06 15:25:18 -06:00
Derek Bankieris
a8c41d7cb5 Move new Python modules to intended location
They're supposed to be at the top level, not in share. Oops!

Refs #365
2017-01-12 14:52:43 -06:00
Derek Bankieris
93f1828fb9 Introduce Python variable server client module
I also made a wiki page: Python Variable Server Client

Refs #365
2017-01-12 14:43:31 -06:00
Derek Bankieris
7a08829d3d Introduce makefile variable TRICK_SYSTEM_LDFLAGS
Like other TRICK_SYSTEM variables, users should not modify this.

This renders TRICK_LDFLAGS and TRICK_USER_LINK_LIBS redundant. While we
would like to eventually remove TRICK_USER_LINK_LIBS, it's not likely to
ever actually happen.

Refs #369
2016-12-14 12:36:21 -06:00
Derek Bankieris
150ea9f094 Remove double include of S_overrides.mk
Refs #360
2016-12-07 14:19:52 -06:00
Derek Bankieris
3600e3880a Infer TRICK_HOME automatically
Refs #358
2016-11-30 14:12:34 -06:00
Alex Lin
55db2fedb3 Create a distclean target in the sim makefile #342
distclean target added to makefile.
2016-11-03 15:20:05 -05:00
Alex Lin
f1cbacd646 ICG exclude of class member variables now defines incorrect memory offsets in io_src #311
This changes back the default behavior to not use offsetof in io_src code.
Added a flag to ICG, -c or --compat15, to globally generate offsetof statements.
Added an ENV variable that can be used to generate offsetof statements by file or directory.
Added in a warning if classes parsed at ICG time are different in size than at runtime.
2016-10-21 13:13:43 -05:00
Derek Bankieris
0039b95a73 Removed compiler option to silence set but unused variable warnings, which was obviated by the prior commit #326 2016-10-20 14:55:00 -05:00
Derek Bankieris
dae2b0e1c3 Corrected SWIG ignore warning number #326 2016-10-19 14:48:28 -05:00
Derek Bankieris
9f4c854353 Pass SWIG_FLAGS when calling SWIG in trickify.mk #326 2016-10-19 14:43:32 -05:00
Derek Bankieris
bc131147c3 Pass TRICK_ICGFLAGS to invocation of ICG #309 2016-10-13 15:16:40 -05:00
Derek Bankieris
c4456e3913 Generate S_define.deps when S_source.hh is created #326 2016-10-12 10:09:20 -05:00
Derek Bankieris
f31da79139 Got rid of the apocalypse target. Make will no longer tolerate frivolity #326 2016-10-11 11:47:37 -05:00
Derek Bankieris
b5b46d9c75 Use immediate instead of deferred assignment when copying TRICK_SYSTEM_CXXFLAGS to TRICK_SYSTEM_CFLAGS 2016-10-06 16:00:22 -05:00
Derek Bankieris
f161ddb18c Made everything about Trick's build process better 2016-10-06 13:54:06 -05:00
dbankieris
29a09cc56f Set variable to nothing instead of using undefine, which is not available before make 3.82 2016-09-26 11:25:15 -05:00
Derek Bankieris
e835ecf515 Improved trickify.mk #309 2016-09-19 16:03:50 -05:00
Derek Bankieris
ba59606b1d Added TRICK_PYTHON_PATH environment variable #313 2016-09-16 09:20:11 -05:00
Derek Bankieris
2aa0287fb9 Generic makefile for building a Trickified project library #309 2016-09-14 11:26:29 -05:00
Derek Bankieris
261af7930e Removed prerequisites from .NOTPARALLEL #303 2016-09-07 10:27:51 -05:00
Alex Lin
2918662767 Create a trick-config script #298
Created trick-config that can print the version, installation prefix,
and compile and link flags that Trick defines.
2016-09-07 09:33:03 -05:00
Alex Lin
fa4664c4ea Move the loop that waits for scheduled threads to finish out of advance_sim_time #292
2 problems found.  Syncing scheduled threads was not happening at all because the job
was not being rescheduled.  Did not want to deal with changing job call times so I
called the new scheuduled_thread_sync routine from advance_sim_time.  That's where
it started, it'll be fine.

Also found that I was resetting job complete flags too aggressively.  The check to
test if the thread is ready to run was missing.  Added that check back in.
2016-08-30 10:56:18 -05:00
Alex Lin
f5578c2e79 Inconsistency between including headers and SimObjects #294
Added ${TRICK_HOME}/share to the SYSTEM_SFLAGS so you can use a
consistent "trick/sim_objects/default_trick_sys.sm" path if you
want.
2016-08-26 09:08:41 -05:00
Alex Lin
7c57c1d02d Move the loop that waits for scheduled threads to finish out of advance_sim_time #292
Created a new executive job that waits for the scheduled threads to finish.  We
run this right before advancing time.
2016-08-26 09:07:46 -05:00
Alex Lin
0072e7d6f0 Unintended performance issue with integ_loop at end of scheduled job classes #243
Created a new executive job that waits for threads to finish and readies them
for their next frame of execution.  Created a new job class system_thread_sync
after the top of frame jobs and before the input processor is run to sync the
threads.  Along the way cleaned up instrumentation jobs on the threads to fix #290.
2016-08-24 10:55:27 -05:00
Alex Lin
f9f1847385 Changing trick_ver.txt to 17.1.dev 2016-08-23 17:02:29 -05:00
Alex Lin
90552a5053 Move clean rules to makefile in sim directory. #284
Added the clean rules back to Makefile.sim with a addition of
defining a conditional variable.  If this variable is set than
the set of rules in the local makefile will not be defined.  This
should allow the sim to be cleaned whether TRICK_HOME exists or not.
2016-08-23 09:00:03 -05:00
Alex Lin
d0349772d5 configure script doesn't check for clang headers #287
Added a configure check for clang/Basic/LLVM.h.
Also removed -lz from the link libraries.  I don't think we need it.
2016-08-23 08:58:16 -05:00
Alex Lin
c32b239472 Get rid of the real time clock sim objects #286
Removed the objects.
2016-08-19 09:59:07 -05:00
Alex Lin
60473dde03 Move clean rules to makefile in sim directory. #284
Moved the clean rules to the makefile in the sim directory.  They will
always work whether the rest of Trick is set up or not.
2016-08-19 09:57:13 -05:00
Alex Lin
8c8c7130b4 Change release number from 16 to 17. #280
Changed the version in trick_ver.txt
2016-08-15 13:27:23 -05:00
Alex Lin
784d6c86a4 Remove some outdated documentation #279
Removed some old files.
2016-08-10 13:55:16 -05:00
Alex Lin
ce1347de74 Remove sim_services/STL #275
Removed the sim object, directory and the entry in the Makefile to compile it.
2016-08-03 14:12:16 -05:00
Alex Lin
bff1967d4d Add a flag to turn off java version check during configure #276
Added an --enable-java=(yes|no) and --disable-java options to the
configure script.  If java is disabled then the java GUIs are
not compiled.
2016-08-03 09:45:22 -05:00
Alex Lin
ca02209d8f man pages completely out of date #253
Created man pages for each executable we have in bin.  Updated the
couple of man pages we did have in there.  Modified trick-CP
to accept arguments.  Updated the version number reported by ICG
as well.
2016-08-02 09:56:43 -05:00
Alex Lin
4ab584ed55 Support using Python 3
Fixed the configure script to allow the user to specify using a python3
interpreter.  Had to change the the way to load the swig generated python modules.
Also had to change code dealing with python strings, oct, long, and
boolean operations.

refs #258
2016-06-28 13:44:21 -05:00
Alex Lin
1224c43e7f Set and use LD in our makefiles correctly.
Set LD in our makefiles to the ld executable found by configure.
Changed the final sim link to use TRICK_CPPC as the link command since
it was using the compiler anyways.  Changed the places where we use "ld" to
use LD.

refs #131
2016-06-27 12:48:35 -05:00
Alex Lin
6f20aa4b8b Save X11 include and library information from configure
Saved the value of x_libraries variable from the autoconf AC_PATH_X if
the location is not standard.

refs #133
2016-06-27 09:50:04 -05:00
Alex Lin
8921811f7e When running a monte carlo set, don't delete the log files in the master run directory.
Moved the job that removes log files from a default data to a phase 1 initialization
job.  Initialization jobs are not run in the master sim if the sim is a monte carlo
run, so the data is not deleted.

refs #35
2016-06-24 17:20:13 -05:00
Alex Lin
9bcee57b6a S_define_exp needs a list of dependencies
I made S_define_exp a PHONY target in the makefile so it is always
regenerated.  It's fast to regenerate, so I'm taking the easy way
out. :D

refs #138
2016-06-24 15:59:50 -05:00
Alex Lin
11fb71f036 man pages completely out of date
First step to updating man pages, renaming pages to match executable name and deleting man pages for commands long gone.

refs #253
2016-06-20 11:22:45 -05:00
Alex Lin
fb4601734f Need to include SimTime.hh for ICG and swig processing.
Added the sim time header files to files_to_ICG.hh and sim_services.i so it will be processed.

refs #247
2016-06-15 16:11:09 -05:00
John M. Penn
5b53f8155a Delete these tutorial files because they are going into the wiki rather than here. Ref #241 2016-05-25 17:06:33 -05:00
John M. Penn
323ea2a40a First four sections of rewritten tutorial. Refs #241 2016-05-25 15:58:06 -05:00
Alex Lin
f19c002365 ./configure needs to properly enforce java version dependency
Really strange, all of the python flags changed.  Must have been
using an old autoconf cache for a long time.

refs #234
2016-05-12 09:31:05 -05:00
Alex Lin
83e299f618 ./configure needs to properly enforce java version dependency
Somewhere along the way the configure variable PYTHON_LDFLAGS changed
to PYTHON_LIBS.

refs #234
2016-05-12 09:27:17 -05:00
Alex Lin
929372e863 Use udunits package for units conversions
Created a UDUNITS_LDFLAGS to store an link library path and -luduints2.

refs #231
2016-05-11 14:43:53 -05:00
Alex Lin
1454236a81 Use udunits package for units conversions
Created a check in the configure script looking for the udunits header
files.  Also added a sim to test some of the new units capabilities.

refs #231
2016-05-09 16:40:48 -05:00
Alex Lin
6defa99b34 Use udunits package for units conversions
Changed the include for udunits to #include <udunits2.h> to work
on all platforms.  Added the include directory /usr/include/udunits2
for Linux.

refs #231
2016-05-09 10:23:19 -05:00
Alex Lin
684f0e6bdc Use udunits package for units conversions
Initial checkin of using udunits for measurement units conversions.  Replaced
our conversion code in ICG and swig code to use udunits.

Also added code to convert unit symbols that we used in Trick that are different
names in udunits.

Added a sim_object that will eventually allow users to specify a custom
set of files to read units information.

refs #231
2016-05-05 14:49:49 -05:00
Alex Lin
d503d52bd8 Debugger command on mac is now lldb not gdb
Added a test to set the debugger command to gdb or lldb depending
on availability.  Created a new script for lldb to run.  Modified
the script for gdb to backtrace all threads.

refs #227
2016-04-20 14:12:03 -05:00
Alex Lin
c8a39f4a44 Add direct STL checkpointing
Removed the previous attempts at STL checkpointing. Removed
the header files and sims.  Also simplified the names of some of
the templates.

refs #206
2016-03-31 14:50:27 -05:00
Alex Lin
46aec08b80 Add direct STL checkpointing
Initial checkin of STL checkpointing.  This checkin only covers the sequential
STLs, vector, list, deque, set, and multiset.  This checkin does include the
changes in Trick header files to include/exclude our STLs properly to make a
restartable checkpoint.

refs #206
2016-03-29 09:26:49 -05:00
Alex Lin
d884370175 Split test sims and fun sims into separate directories.
Moved SIM_segments to test.

refs #191
2016-02-23 16:53:19 -06:00
Alex Lin
90fd0ff9f8 Split test sims and fun sims into separate directories.
Moved SIM_test_ip and a couple of other sims that depend on the same model set
to a new test directory.  I'm doing a couple of sims at a time.

refs #191
2016-02-23 10:23:55 -06:00
Alex Lin
83572b20cb Print some timing statistics when the sim exits
Saved the timestamps on the default gettimeofday clock as close to
the beginning of the simulation, after initialization is finished and
at the end of shutdown.  Printed out the elapsed time as well as
the number of overruns counted by RealtimeSync.

refs #183
2016-02-17 16:27:37 -06:00
Alex Lin
4c3015851f Merge in the er7_utils integrators
Taking in the latest er7_utils directory and adding it into Trick in the
same location it was as an external repository.  Made one change to
the files_to_ICG.hh file in the repository to remove the CheckpointHelper
header files.  Those go in the Trick files_to_ICG.hh file.

refs #180
2016-02-10 09:32:53 -06:00
Alex Lin
87a48b36f5 make javadoc broken
The makefile rule javadoc was misnamed docs in trick_source/java/makefile. I fixed hundreds
of warnings and errors that were present when creating the java docs.

refs #159
2016-01-12 16:39:47 -06:00
Alex Lin
32da702aeb configure script does not check for clang/llvm
We were using "llvm-config --bindir" to set the path for clang.  But
on some systems clang is not in that directory.  Changed the configure
script to search for clang in the bindir first, if not found, search
the normal locations.

refs #130
2015-12-16 16:53:06 -06:00
Alex Lin
9daa108950 Bad permissions on files copied to the SIM directory
Changed the commands to force the copy files in the the SIM directory
from "cp" to "cp -f".   Added a rule in Makefile.sim to properly
call the configuration processor if the build directory is missing.
Also added a loop to filter the files found to be in an external
library.  Those files need to be tested to see if they include ICG: (No)

refs #156
2015-12-15 15:05:13 -06:00
Alex Lin
bdc24072e5 Including GSL in the configure script does not work if GSL not in standard path
Added lines to -I/gsl/include/path to Makefile.common if the path is not either
/usr or /usr/local.

refs #147
2015-12-02 10:26:41 -06:00
Alex Lin
ca51142553 Configure script does not set up GSL correctly
The configure script does not set up the defines for GSL correctly which causes our GSL
support code not to compile correctly. Fixed it.

refs #143
2015-11-18 08:30:21 -06:00
Alex Lin
0f3d900539 The moose want to retire
Retiring the moose.

refs #135
2015-10-06 16:40:06 -05:00
Alex Lin
c6e2a4acb5 Change new get_val;ue_by_ref name to var_get
Changed the name.

refs #125
2015-09-22 09:10:46 -05:00
Alex Lin
57c76041f5 Get the value of a variable not parsed by SWIG in python
Wrote a python routine called get_value_by_ref_name that takes
a variable name string as an argument.  The string is passed to
ref_attributes to find the address and returns a REF2 structure.  The REF2
structure is passed to ref_to_value and the type and value of the variable
is returned in a structure.  We call vval_<type> to extract the raw value
from the structure and return that to python space.

Made a couple of other bug fixes in the FieldVisior and cpp input file
example found while investigating this issue.

refs #123
2015-09-18 09:03:24 -05:00
Alex Lin
2de18b9174 configure script reports missing motif as error.
So I found that I didn't write many of the autoconf rules correctly including
the one searching for motif.  I also messed up the checks for bison, flex, and
perl.  I added new rules to search for Xwindows headers and libraries.  The
motif rule is only executed if we find fermi-ware where it is used.

refs #119
2015-09-18 08:46:53 -05:00
Alex Lin
a61dd2c031 Removed unused code in libexec
See title.

refs #97
2015-08-04 09:30:43 -05:00
Alex Lin
a5929dbe6c Move search for library dependencies to make_makefile
Moved the search for all library dependencies into make_makefile.
Made a couple of minor clean up edits as well.

refs #92
2015-07-24 16:16:22 -05:00
Alex Lin
cde32e6f60 Trick should not modify TRICK_CFLAGS and TRICK_CXXFLAGS
Jenkins not happy with me.  Jenkins has empty TRICK_CFLAGS and
TRICK_CXXFLAGS.  There was an if statement in Makefile.common that
did something different if it was empty.

refs #90
2015-07-22 16:28:25 -05:00
Alex Lin
b3d1a1d162 Trick should not modify TRICK_CFLAGS and TRICK_CXXFLAGS
Well sims compiled, but I forgot to test if Trick itself
would compile.  It didn't.  Added TRICK_SYSTEM_CFLAGS and
TRICK_SYSTEM_CXXFLAGS where needed.

refs #90
2015-07-22 15:34:54 -05:00
Alex Lin
90c85c73fc Trick should not modify TRICK_CFLAGS and TRICK_CXXFLAGS
Created TRICK_SYSTEM_CFLAGS, TRICK_SYSTEM_CXXFLAGS, and TRICK_SYSTEM_SFLAGS
that Trick uses to add the Trick system includes, defines and other
compilation flags.  TRICK_CFLAGS and TRICK_CXXFLAGS are now in
full control of the user.

refs #90
2015-07-22 14:20:36 -05:00