#----------------------------------*-sh-*-------------------------------------- # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | www.openfoam.com # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2018-2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # File # etc/config.csh/setup # - sourced by OpenFOAM-*/etc/cshrc # # Description # Finalize setup of OpenFOAM environment for C-shell (csh, tcsh) # # Environment # FOAM_CONFIG_MODE (search mode for etc config files - see foamEtcFile) # - eg, FOAM_CONFIG_MODE="o" to only use OpenFOAM config files # # FOAM_VERBOSE (set/unset) # - add extra verbosity when sourcing files # #------------------------------------------------------------------------------ # [FOAM_API] - The API level for the project setenv FOAM_API `$WM_PROJECT_DIR/bin/foamEtcFile -show-api` # The installation parent directory set prefixDir="${WM_PROJECT_DIR:h}" # Load shell "functions" (actually aliases) source "$WM_PROJECT_DIR/etc/config.csh/functions" # [WM_THIRD_PARTY_DIR] - Location of third-party software components # \- This may be installed in a directory parallel to the OpenFOAM project # directory, with the same version name or using the API value. # It may also not be required at all, in which case use a dummy # "ThirdParty" inside of the OpenFOAM project directory. # # Test out-of-source directories for an "Allwmake" file (source) # or a "platforms/" directory (runtime-only) setenv WM_THIRD_PARTY_DIR "" # Empty value (before detection) if ( -e "$WM_PROJECT_DIR/ThirdParty" ) then # Directory or file (masks use of ThirdParty entirely) setenv WM_THIRD_PARTY_DIR "$WM_PROJECT_DIR/ThirdParty" else _foamEcho "Locating ThirdParty directory" foreach foundDir (\ "$prefixDir/ThirdParty-$WM_PROJECT_VERSION" \ "$prefixDir/ThirdParty-v$FOAM_API" \ "$prefixDir/ThirdParty-$FOAM_API" \ "$prefixDir/ThirdParty-common" \ ) _foamEcho "... $foundDir" if ( -d "$foundDir" ) then if ( -f "$foundDir/Allwmake" || -d "$foundDir/platforms" ) then setenv WM_THIRD_PARTY_DIR "$foundDir" break else _foamEcho " does not have Allwmake or platforms/" endif endif end endif if ("${WM_THIRD_PARTY_DIR}" == "") then # Dummy fallback value setenv WM_THIRD_PARTY_DIR "$WM_PROJECT_DIR/ThirdParty" _foamEcho "Dummy ThirdParty $WM_THIRD_PARTY_DIR" else _foamEcho "ThirdParty $WM_THIRD_PARTY_DIR" endif # Done with ThirdParty discovery # Overrides via # 1. Always use (O)ther values from the OpenFOAM project etc/ directory _foamEtc -mode=o prefs.csh # 2. (U)ser or (G)roup values (unless disabled). Could use some more work if ($?FOAM_CONFIG_MODE) then set configMode="${FOAM_CONFIG_MODE:s/o//}" # Already handled O(ther) else set configMode="ug" endif # Is the remainder valid - has U(ser) or G(roup)? switch ("$configMode") case *[ug]*: _foamEtc -mode="$configMode" prefs.csh breaksw endsw # Capture and evaluate any command-line parameters # These can be used to set/unset values, specify additional files etc. setenv FOAM_SETTINGS "$argv[*]" while ( $#argv > 0 ) switch ($argv[1]) case -*: # Stray option (not meant for us here) -> get out break breaksw case *=: # name= -> unsetenv name _foamEcho "unsetenv $argv[1]:s/=//" eval "unsetenv $argv[1]:s/=//" breaksw case *=*: # name=value -> setenv name value _foamEcho "setenv $argv[1]:s/=/ /" eval "setenv $argv[1]:s/=/ /" breaksw default: # Filename: source it if ( -f "$argv[1]" ) then _foamEcho "Using: $argv[1]" source "$argv[1]" else _foamEtc -silent "$argv[1]" endif breaksw endsw shift end # Verify FOAM_CONFIG_ETC (from calling environment or from prefs) if ( $?FOAM_CONFIG_ETC ) then if ( "$FOAM_CONFIG_ETC" == "etc" || "$FOAM_CONFIG_ETC" == "$WM_PROJECT_DIR/etc" ) then # Redundant value unsetenv FOAM_CONFIG_ETC endif endif # Clean standard environment variables (PATH, MANPATH, LD_LIBRARY_PATH) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Prevent local variables from shadowing setenv variables unset PATH MANPATH LD_LIBRARY_PATH DYLD_LIBRARY_PATH if (! $?MANPATH ) setenv MANPATH if (! $?LD_LIBRARY_PATH ) setenv LD_LIBRARY_PATH _foamClean PATH "$foamOldDirs" _foamClean MANPATH "$foamOldDirs" _foamClean LD_LIBRARY_PATH "$foamOldDirs" # Setup for OpenFOAM compilation etc # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _foamEtc -config settings # Setup for third-party packages # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _foamEtc -config mpi _foamEtc -config paraview -- "$FOAM_SETTINGS" # Pass through for evaluation _foamEtc -config vtk _foamEtc -config adios2 _foamEtc -config CGAL _foamEtc -config FFTW if ( -d "$WM_PROJECT_DIR/doc/man1" ) then _foamAddMan "$WM_PROJECT_DIR/doc" endif # Interactive shell if ($?prompt) then _foamEtc -config aliases _foamEtc -config tcsh_completion endif # Clean environment paths again. Only remove duplicates # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _foamClean PATH _foamClean MANPATH _foamClean LD_LIBRARY_PATH # Add trailing ':' for system manpages if ( $?MANPATH ) then setenv MANPATH "${MANPATH}:" endif if ($?LD_LIBRARY_PATH) then if ("${LD_LIBRARY_PATH}" == "") unsetenv LD_LIBRARY_PATH endif # Darwin if ($?DYLD_LIBRARY_PATH) then if ("${DYLD_LIBRARY_PATH}" == "") unsetenv DYLD_LIBRARY_PATH endif # Cleanup temporary information # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Unload shell "functions" unalias _foamClean unalias _foamEcho unalias _foamEtc unalias _foamAddPath unalias _foamAddMan unalias _foamAddLib unalias _foamAddLibAuto # Variables (done as final statement for a clean exit code) unset cleaned foamOldDirs foundDir prefixDir #------------------------------------------------------------------------------