Parent Directory
|
Revision Log
|
Revision Graph
Links to HEAD: | (view) (download) (annotate) |
Links to checkpoint61: | (view) (download) (annotate) |
Sticky Tag: |
Add rule for .flow.FLOW and pass all .flow files through CPP
don't attempt to redo a symbolic link when a dependency has been rebuild. This change is necessary because header files may now depend on modules.
From Constantinos : add a ".F" to ".o" rule for source files with no "#include" (such as port_rand.F); otherwise, default ignores FOPTIM and just uses FFLAGS.
replace (4 times) make genmake_tc_1.o >> genmake_warnings 2>&1 with COMM="$CC $CFLAGS -c genmake_tc_1.c" echo $COMM >> genmake_warnings $COMM >> genmake_warnings 2>&1 to make genmake2 always see the value of CC as specified in the optfile. This change may break testreport or building the code on some platforms where the default value of CC does not point to anything useful. In that case, setting CC will fix the problem.
if exits, "source" genmake_local only once (was originaly the case, until version 1.11, no idea why it was done twice in version 1.12 and newer)
add some taf temporary files to the Makefile "Clean" command.
per Jean-Michel's request, this genmake2 contains an extra shell variable FEXTRAFLAGS to be set in your build options file. FEXTRAFLAGS is empty by default and can be used to pass flags to the fortran compiler at build time of the "mitgcmuv" that would break most of the neat tests in genmake2, particularly the flags of the sxf90 that are required for inlining where I need to specify filenames of files where it is supposed to look for the routines to be inlined (example in SUPER-UX_SX8_sxf90+mpi_awi). This is a risky flag, not very general but solves my immediate problem, until we find something better
Fixed for proper setup of the showflops timing package
improve output to genmake_warnings
fix length of package dependency rules
if unable to compile NetCDF code, disable "profiles" package (+ echo a WARNING)
Added support for the --devel flag & more support for NetCDF libraries with a separate Fortran library component.
Switch off explicit cpp for .F90
Adding icc to C compiler search, adding ifort, g95 to F compiler search.
Split rm *.f *.o etc. process during clean into several steps to account for platforms (such as SP4, SP5) with limited wildcard buffer size.
Do not exit if mpi_headers cannot be generated. If MPI is not used in the first place it is not needed.
fixed bug in netcdf test
have genmake run make in a number of the pkg/ dirs
the genmake2 netcdf compilation test now uses FFLAGS and FOPTIM flags for both compilation *and* linking so that it more closely matches the way the Makefile works -- pointed out by JMC
replace target "ad_taf" by $(EXE_AD) ; add $(EXE_AD) to the make CLEAN list.
two quick and completely unrelated fixes: - properly quote shell arguments for the various adjoint makefile vars - cleanup the HAVE_SETRLSTK flag handling
make it easier to remove signal registration using HAVE_SIGREG=f within optfiles
Use CPP more consistently -- *always* read CPP input from a pipe (stdin) and never from an actual file. This makes it easier to use "gcc -E -traditional -P -" as our CPP implementation.
Ooops - forgot a "fi" :-(
Updates to support PCL performance counters, fix real*4 bug for PAPIS and enhance PAPI counter support (including IPC per timestep output)
fix annoying overly-general check reported by PH using method suggested by JMC
go back half way to previous version (v.143): genmake_local is used and must not be removed when doing "make CLEAN"
do a better job of cleanup with "make CLEAN"
add help entry for the -ignoretime options
add warning about inappropriate user masks and/or file permissions that will cause the file dependency code to break (I think this fixes the problem reported by S. Vinogradov -- will need testing) : http://forge.csail.mit.edu/pipermail/mitgcm-support/2006-February/003781.html
o add "--embed-source" option to genmake2 which, when the supporting tools can be compiled (as determined by genmake2) will turn on the embed_files package which then embeds the entire MITgcm source code (*.[fFhc] + Makefile) used for the build within the executable - requested by CNH but off by default - adds a paltry <9MB to the mitgcmuv executable in most cases - only writes the output when useEMBEDSRC in eedata is true
Moved echo for DIVA directory creation to within if region.
Added support for enabling timing per timestep (-ts), PAPI MFlop/s per timestep (-papis), variations of the above for TAF (add a "-foolad"), PAPI (-papi) or HPMT (-hpmt) performance monitoring per timed section and support for runtime floating point environment modification (-gsl). No tests for establishing the locations of these libraries are provided. Also added hooks for automatic trick to create the MPI header directory for DIVA and patch mpif.h on AIX systems.
o fix bad syntax -- as reported by Martin Losch
o add a signal handler so that a user can run "killall mitgcmuv" and the model will, at the end of the current iteration, write out all the normal checkpoint files and gracefully stop - off by default so its very unlikely to hurt anything - TODO: can be extended with an MPI global sum that will allow it to work the same way in an MPI environment
o small cleanup of the default-compiler-selection code
o fix the compile tests per Martin's bug report: http://mitgcm.org/pipermail/mitgcm-devel/2005-November/001760.html and add more output to the genmake_warnings file so that its easier to diagnose what goes wrong with tests such as netcdf, etc.
o removed buggy $DEFINES which had been, in error, used as command-line options for some of the Fortran compiler tests -- this should fix some problems pointed out by Jeff Polton
o echo more information so that its easier to read genmake_warnings and see why netCDF test-builds fail
Added extra experimental target to create .a library when I need to. note - this is not written poratably yet, its only for experimental Linux use.
o In response to JMC's bug report, genmake2 now ignores any soft-links that it finds in the *current* directory when searching for files. Soft-links found in any other source directories will still work as they did before. And regular (non-soft-link) files will also work as before.
o add HAVE_SETRLSTK define and useSETRLSTK flag (eedata) which calls a C routine to unlimit the stack size - very helpful on clusters of workstations since the ulimit/limit behavior can (otherwise) only be inherited from parent processes which is difficult with some MPI-over-ssh/rsh implementations
o another Fortran syntax fix
o fix syntax per Martin's bug report
Fixed $F90FILES definition.
Added -ts/--ts flag to setup timing for time per timestep (-DTIME_PER_TIMESTEP) in terms of user/system/wallclock time.
o make the THISVER logic a bit more robust
o add IGNORE_TIME define and -ignore_time option to genmake2 as an end-run around the C/Fortran linking horror in eesup/src/timers.F
o add gfortran optfile with comments about NAMELIST failures - tested with Fedora Core 4-test-2
o forgot the dot !!!
o change adjoint rules to work with generic fortran file extensions
o fix for Ed's fix to genmake2: - moved "RV1=$?" two lines up, so that it reports the status of the 'makedepend genmake_tc.f' line and not the 'test -f $MAKEFILE".tst" && mv -f $MAKEFILE".tst" $MAKEFILE' line. Let's hope that this was unintentional.
o re-work $MAKEFILE handling for systems where the local makedepend implementation will die if it cannot locate a makefile
o make genmake2 more portable by using ".$FS" instead of ".f" for more of the test compilations (eg. IBM xlf on Mac OSX w/HFS filesys)
o convert check_netcdf_libs() to the more platform-independent "file.$FS" convention as determined by check_for_broken_Ff()
o use sed '-y/a...z/A..Z/' instead of awk (per AJA)
o "-F." for annoying old Sun awk
o awk syntax for older Unixes (Suns) and some tiny default changes
o add ability to skip the NetCDF check by defining the SKIP_NETCDF_CHECK variable in the optfile - also, add '#include "mpif.h"' to the NetCDF test-compile program if MPI is used per Martin's request
o use $AWK everywhere (not "awk")
o add better warnings to the can-we-build-netcdf test o add optfiles for the ACESgrid cluster
o fix Matt Mazloff's problem permanently by always removing any stray test files in pkg/mnc
o modified targets for SVD o new adof template
o give MNC the ability to create additional files rather than exceeding a specified file size limit - run-time configurable (in data.mnc) as "MNC_MAX_FSIZE" - the default is just less than 2GB which is a practical limit on many systems (eg. Baylor's and Helen's recent problems) - tested and works on Linux/g77 -- needs testing elsewhere
o remove the totally pointless XLIBS variable
o converted the 8 spaces to a single tab character since make syntax requires it
Added targets for adjoint to o add STOP after cost_final (make onlyfwd) o switch off KPP, GM/Redi in reverse (make adtrick)
o make our builds easier in the Cygwin environment
o remove debugging output
fix quoting of arguments
o use older-style make syntax - works with Gnu make and Sun make - NEEDS TO BE TESTED on Cygwin
o fix the disabling-of-mnc feature -- the problem was that the disabling was not done soon enough within the script and thus did not keep mnc out of the list of source dirs
o disable the mnc package if the test compile fails - also remove the Nnetcdf test execution since some machines (eg. the Itanium-hosted SX-6 that PH uses) are cross-compilers that will _always_ fail to execute the non-native code
o fix minor BUILD_INFO.h problem
o add header info to both the NetCDF output and the model stdout - requested by Steph
o correctly handle the case where $FC != $LINK
o fix small syntax error in the --help option
o fix typo
o make the CC default a better guess and make it work with the CC environment variable which was the previous behavior
o fix missing CC entry
o genmake2: add ability to search for C compilers and cleanup test output - fixes recent SX-6 problems and should help with others (eg. HP-UX)
o make it easy to specify the "cyrus" makedepend
o netcdf (mnc) now compiles and runs on halem
o convert "test -e" to "test -f" which seems to be more portable - the "sh" shell on NEC SX-6 machines dies without it!
o remove bash-isms (such as "${##/*/}") and further simplify the syntax so that even the old and balky sh shell on halem will successfully run genmake2
o http://mitgcm.org/pipermail/mitgcm-support/2004-July/002343.html
o fix the "find a working makedepend" bug found by JMC
o do a better job of finding makedepend even when an optfile is specified
Fixed .SUFFIXES order o order must reflect order of dependencies o now works with all flavors of "make" not just gmake
New and improved test for ETIME actually finds it when it is there.
Update to genmake that makes it check for ETIME and sets HAVE_ETIME accordingly. #ifdef HAVE_ETIME added to timers.F for this
o invoke "sh" instead of "bash" -- hopefully its more portable
o add description of "-adof" and synonymous options to the "--help" output
Better clean up of STD* files
o MITgcm now builds and runs on cygwin - Note that there is still a problem due to directories in verification named "aux". Apparently, windows is such broken crap that that you cannot use "aux" as a file or dir name. In the mean time, check out the code using: cvs co MITgcm_verif_basic and you can avoid those directories.
o more changes to allow for arbitrary Fortran 77/90 file extensions on fundamentally broken environments (eg. cygwin, MacOS HFS+) that cannot distinguish between .F and .f files - works with arbitrary extensions on Linux - needs more testing on cygwin and MacOS
o first step towards fixing the *.F/*.f problem that exists within cygwin and MacOSX environments
o expand_pkg_groups now returns a state indicating whether it did an expansion or not o expand_pkg_groups is called repeatedly until all expansions are complete o implemented -pkg in packages.conf (thought we were already doing this but it didn't seem to be there)
o fix for arguments requiring quotes to protect them from the shell eg: -mods="../a ../b" becomes " -mods=../a ../b" in the Makefile
o more small fixes for CRAY SV1 systems
o fixes for baroque-n CRAY systems - replace all "echo -n" commands with the more portable "printf" - add a "-bash /path/to/shell" option so that a Bourne- or BASH-compatible shell can be explicitly specified within the Makefile
o add "LDADD" variable
o increase static sizes within the Cyrus makedepend o add new makedepend code to genmake2
Missing E
o fixed -fc=* so that an appropriate optfile is used if it exists o created place-holders for -mpi and -mpi=PATH functionality for when the automatic MPI configuration is written o -mpi now turns on MPI cpp flags x these are still present in the optfiles and should be removed from them but I'm deferring that until we tidy up the optfiles
o add automatic "discovery" of the -lnetcdf library - Note that this will work if the NetCDF files are installed in standard locations such as /usr/lib or /usr/local/lib. If the NetCDF files are installed in a non-standard location, then the user will have to specify the path ("-L /path/to/the/lib") within the optfile.
Fix TOOLSDIR error message typo
o new version of MNC "internals" with per-file association of all entities o first version with NetCDF read support o fixed the cleanup of internal lookup tables at file closure o numerous small bug fixes
o Add a check for $CPP in /lib - NOTE: this should eventually be replaced with a more general function that searches for executables and is marked as such
o build the templates for type conversion in MNC o small fixes to error handling
o minor output-redirecton fix
o add test for ability to build & execute NetCDF code
o fix afe syntax error
forgotten changes to genmake2 and hs94.cs-32x32x5/code
o change --standarddirs option so that one can specify -standarddirs="" and actually remove all the standard directories from use
o add conversion "x86_64" -> "amd64"
no more DEFINES="-DALLOW_AIM" ; no longer "REALLY ugly", but still a little
*** empty log message ***
o add "# OPTFILE='...' comment to the Makefile so that it can be later extracted by the testing/verification scripts
o FC_NAMEMANGLE.h is now created by make o modularized the CPP macro checking of CPP_OPTIONS.h o introduced check for CPP_EEOPTIONS.h but we are not calling it yet
o changed rule for building without make depend - having all depend on links always led to re-linking because links never exists o Added run.log and *.bak to Clean
o fix typo in the "-ad"/"-adof" options handling
o changed the shell invocation syntax to "#! /usr/bin/env ${SHELL}" and verified that this works on the following machines: - all available Linux boxes - Mac OS X - OSF1 eg. halem - AIX SP[34] clusters eg. bluesky/blackforest/babyblue @ NCAR - SGI O[23]k clusters eg. turing/lomax/chapman @ nas.nasa.gov - Solaris [89] eg. slough.mit.edu
removed 'links' dependencies from ad/ftl targets to enforce use of 'make depend'. This is required to enable successive adtaf, ftltaf usage.
o Corrected spelling mistake in Warning comment o Switched to using the convert script to generate the initial .h files
o Fixed missing barrier in PACKAGES_CONFIG.h o Changed order of #define, #undef to #undef, #define to fix problem with aim and aim_v23
adding 'links' to adall ftlall dependency list
o Created mechanism for make makefile to use $TOOLSDIR variable of Makefile - previously it recorded the actual invocation of genmake2 which meant that editing TOOLSDIR was not sufficient to be able to move the set-up o In addition to everything else, we now record the pkg configuration in the Makefile - previously the configuration was only recorded in PACKAGES_CONFIG.h and gm_state o Created targets for Makefile: PACKAGES_CONFIG.h: this allows "make" to create the pkg config file given the configuration state that is now recorded in Makefile AD_CONFIG.h: creates the appropriate null adj config file for compiling the forward model o The switching of AD_CONFIG.h is unchanged but the files used for comparison of the state are now created only briefly by make and only for the duration of the comparison - previously these files were left in place and an inadvertent deletion required a new invocation of genmake2 o Added new "generic" script for converting cmd-line cpp options to cpp statements in a file o Created a file in tools/adjoint_sed containing the sed commands needed to patch back myThid in adjoint code. This file used to be created in the CWD by genmake2 Comments: o genmake2, make now works without the make depend phase - this is necessary (and was an old feature) for occasions when makedepend is not available and xmakedepend doesn't work or is too slow to be useful o make clean now deletes all temporary files (except FC_NAMEMANGLE.h) so that make CLEAN only leaves the Makefile and the Makefile now contains sufficient information to rebuild everything. This was a capability of the old genmake.
o fix FC_NAMEMANGLE handling for the efc compiler on Altix systems
Added genmake_warnings to target Clean
o cleanups: add better description of options and remove dead options
add target ftltafonly in addition to target adtafonly
o yet another attempt to fix my pervious errors
o cleanup test-compilation files
added target 'adtafonly' to enable splitting of build process into local compile and remote taf (where it is available)
o remove "make -C" syntax that fails with older (non-GNU) make implementations
o make "ln -s" handling smarter and remove it from the options files
o fix Bourne shell ("sh") compatibility issue - tested on AIX machine by PH
Added backup selection of xmakedepend in TOOLSDIR for occasions when makedepend does not exist on the system (e.g. new and partial Linux installs).
o add test file cleanup
o improve the FORTRAN <==> C name-mangling detection algorithm - tested on: linux_ia32_g77, linux_ia64_g77, darwin_ppc_g77, darwin_ppc_xlf, AIX SP4 (blackforest)
o have xmakedepend use the genmake2 output in order to select the C pre-processor
o add various compilation tests to genmake2 so that it acts more like a typical autoconf-generated "./configure" script: - HAVE_SYSTEM - HAVE_FDATE - FC_NAMEMANGLE.h o small code modifications to use the above #define-s
o cleanup: convert DISABLE_MOM_FLUXFORM & DISABLE_MOM_VECINV to the newer ALLOW_${pkg} form - the only remaining package-based "special case" within genmake2 is the one for AIM vs. AIM_V23
o cleanup: convert '#ifndef DISABLE_DEBUGMODE"' to '#ifdef ALLOW_DEBUG"'
changed dependency list for AD from SRCFILES to AD_FILES
o add platform detection for OSX ('darwin') on PPC ('Power Macintosh') hardware
Added genmake2 settings for Intel compiler on ia64 (efc) and included efc in searched for compiler names lisst in genmake2. Settings were tested on orion.jpl.nasa.gov SGI Altix system.
o check-in of all PH's changes: continued efforts to get the adjoint working with genmake2
o added the [#include "AD_CONFIG.h"] statement to all files that need it for adjoint/tl #defines o re-worked the build logic in genmake2 to support AD_CONFIG.h o removed tools/genmake since it no longer works
o added convenience targets and changed the executable names to mitgcmuv_[ ad | ftl | svd ] to reflect how they were built o minor cleanups to remove temporary files
Correcting '_ftl' for TAF forward mode output.
o fix TAF/TAMC default o fix typo: flt --> ftl
o remove bad target
o add -taf_extra='...' and -tamc_extra='...' flags so that its easy to support TAF's -pure and -mpi options for DIVA and DIVA+MPI
o add remaining TAF/TAMC targets to the Makefile
o fix genmake2 for broken SUNOS awk implementations
o first version of genmake2 that works with TAF -- note that only the "ad_taf" target has been confirmed to work and the others are in progress
o fix $CPP "check-if-working" bug discovered by JMC
o first check-in for the "branch-genmake2" merge o verification suite as run on shelley (gcc 3.2.2): Wed Oct 8 23:42:29 EDT 2003 T S U V G D M c m s m s m s m s E p a R g m m e . m m e . m m e . m m e . N n k u 2 i a a d i a a d i a a d i a a d 2 d e n d n x n . n x n . n x n . n x n . OPTFILE=NONE Y Y Y Y 13 16 16 16 0 16 16 16 16 16 16 16 16 13 12 0 0 pass adjustment.128x64x1 Y Y Y Y 16 16 16 16 0 16 16 16 16 16 16 0 0 16 16 0 0 pass adjustment.cs-32x32x1 Y Y Y Y 16 16 16 16 0 16 16 16 16 16 16 22 0 16 16 22 0 pass adjust_nlfs.cs-32x32x1 Y Y Y Y -- 13 13 16 16 13 13 13 13 16 16 16 16 16 16 16 16 N/O advect_cs Y Y Y Y -- 22 16 16 16 16 16 16 13 16 16 16 16 16 16 16 16 N/O advect_xy Y Y Y Y -- 13 16 13 16 16 16 16 16 16 16 22 16 16 16 16 16 N/O advect_xz Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 pass aim.5l_cs Y Y Y Y 14 16 16 16 16 16 16 16 16 13 16 16 16 16 16 13 16 pass aim.5l_Equatorial_Channel Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 13 16 16 13 13 16 pass aim.5l_LatLon Y Y Y Y 13 16 16 16 16 16 16 16 16 16 13 12 13 13 16 13 16 pass exp0 Y Y Y Y 14 16 16 16 16 16 16 16 22 16 16 16 13 16 16 22 16 pass exp1 Y Y Y Y 13 13 16 13 16 16 16 16 16 13 13 16 16 13 13 13 13 pass exp2 Y Y Y Y 16 16 16 16 16 16 16 16 22 16 16 16 16 16 16 16 16 pass exp4 Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 22 16 16 16 22 16 pass exp5 Y Y Y Y 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 pass front_relax Y Y Y Y 14 16 16 13 13 16 16 13 13 16 13 13 16 12 13 13 16 pass global_ocean.90x40x15 Y Y Y Y 10 16 16 13 13 16 13 16 16 13 13 13 13 16 16 13 16 FAIL global_ocean.cs32x15 Y Y Y Y 6 11 12 13 13 12 13 16 13 9 9 9 9 10 9 9 11 FAIL global_ocean_pressure Y Y Y Y 14 16 16 13 16 16 16 13 13 13 13 13 16 12 16 13 16 pass global_with_exf Y Y Y Y 14 16 16 16 16 16 16 16 16 11 13 22 13 16 16 9 16 pass hs94.128x64x5 Y Y Y Y 13 16 16 16 16 16 16 16 16 11 16 16 16 13 16 22 13 pass hs94.1x64x5 Y Y Y Y 14 16 16 16 16 16 16 16 16 13 16 13 13 16 16 22 13 pass hs94.cs-32x32x5 Y Y Y Y 10 10 16 13 13 16 16 16 22 16 13 13 13 13 13 22 13 FAIL ideal_2D_oce Y Y Y Y 8 16 16 16 16 16 16 16 16 13 13 8 16 16 16 16 16 FAIL internal_wave Y Y Y Y 14 16 16 16 16 16 16 16 16 13 13 22 13 13 13 22 16 pass inverted_barometer Y Y Y Y 12 16 16 16 16 16 16 16 16 16 13 12 13 13 13 13 13 FAIL lab_sea Y Y Y Y 11 16 16 16 16 16 16 16 13 13 13 12 13 16 13 12 13 FAIL natl_box Y Y Y Y 16 16 16 16 16 16 16 16 22 16 16 16 16 16 16 16 16 pass plume_on_slope Y Y Y Y 13 16 16 16 16 13 16 16 16 16 16 16 16 13 16 16 16 pass solid-body.cs-32x32x1
o added a platform-detection mechanism to guess at the optfile to use when none are specified o changed some optfile names to reflect the new platform naming convention--more work still needed in this area o added parsing of MITGCM_* environment variables
o Bug fix for following scenario: Compiling in verification/expt/code/ or working with a local real file version of CPP_OPTIONS.h then genmake2 fails because it can not find a copy of CPP_OPTIONS.h o also change on screen comment corresponding to changed code x Note! This breaks the functionality of the original genmake(1) because it assumes that a CPP_OPTIONS.h should take priority over a ./CPP_OPTIONS.h
Bug fix for following scenario: % genmake2 % make links % genmake2 % make CLEAN % make links Results in symbolic links pointing to themselves.
Verify that FC, LINK, CPP, and S64 are defined. If not, provide helpful errors.
- fix absolute path on f90mkdepend - add EXEHOOK to the Makefile
two small changes to fix compilation on the IBM sp4 "bluesky"
Small cleanups to genmake2 and its "optfiles". Initial check-in of "testreport" which functions similarly to "testscript" but supports more genmake2 options and emails results to a central address for automated testing.
fix errors in "-opt opt_arg"-style options parsing
Changes that should only affect when there are .F90 files present e.g. ESMF drivers etc...
Remove (accidental) bash v2 syntax so genmake2 is compatible with bash v1. Still need to test against Bourne shell.
This is the first version of "genmake2" and "testscript2" (and support files) that pass all the standard verification tests on faulks. Since they have new names, they can be run side-by-side (no known conflicts) with the existing genmake and testscript versions. If you get a chance, please try them on your system and mail the output to <eh3@mit.edu>.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
ViewVC Help | |
Powered by ViewVC 1.1.22 |