Skip to content
Snippets Groups Projects
  1. Jul 28, 2019
  2. Jul 14, 2019
  3. Jun 14, 2019
  4. Jun 13, 2019
  5. Jun 09, 2019
  6. Jun 07, 2019
  7. Jun 04, 2019
  8. Jun 03, 2019
    • Mark OLESEN's avatar
      ENH: add wmake -debug option · fc11c408
      Mark OLESEN authored
      - forces c++DBUG='-DFULLDEBUG -g -O0' for the compilation, to allow
        localized debugging during development without file editing and
        while retaining the WM_COMPILE_OPTION (eg, Opt)
      
        Note that switching between 'wmake' and 'wmake -debug' will not
        cause existing targets to be rebuilt. As before, these are driven by
        the dependencies. An intermediate wclean may thus be required.
      fc11c408
  9. Apr 29, 2019
  10. Apr 28, 2019
  11. Apr 26, 2019
  12. Apr 16, 2019
    • Mark OLESEN's avatar
      STYLE: formatting in makefiles, config files · 2d7c266d
      Mark OLESEN authored
      - fix typo in makefiles/info that affected wmake -show-compile-c
      
      - additional safeguard in src/OpenFOAM/Make/options against self-linking.
        This is not normally required unless PROJECT_LIBS has been added into
        the link stage.
      2d7c266d
  13. Apr 12, 2019
  14. Apr 10, 2019
  15. Apr 05, 2019
    • Mark OLESEN's avatar
      ENH: provide 'sanitized' values for wmake -show compiler information (#1256) · 63a18262
      Mark OLESEN authored
      - with the wmake rules we may have some compiler options bound to the
        internal compiler variable. For example,
      
           CC  = g++ -std=c++11 -m64
      
           c++FLAGS = ...
      
        So shift any flags from CC to CXXFLAGS for the output of
        'wmake -show-cxx', 'wmake -show-cxxflags', etc.
      
        This makes it much easier to handle the values correctly elsewhere.
        Eg,
      
            CXX="$(wmake -show-cxx)" CXXFLAGS="$(wmake -show-cxxflags)" \
               ./configure
      63a18262
    • Mark OLESEN's avatar
      ENH: improve handling of pt-scotch headers/libraries · cd91a252
      Mark OLESEN authored
      - provide dedicated detection 'have_ptscotch' function that can be
        used after the 'have_scotch' function.
      
        It sets the PTSCOTCH_ARCH_PATH, PTSCOTCH_INC_DIR, PTSCOTCH_LIB_DIR
        and helps when the serial and parallel versions are located with
        different logic.
      cd91a252
  16. Apr 03, 2019
  17. Apr 01, 2019
  18. Mar 14, 2019
  19. Mar 11, 2019
  20. Mar 01, 2019
  21. May 25, 2019
    • Mark OLESEN's avatar
      COMP: force dlOpen for windows application binaries (#1238) · 66a10099
      Mark OLESEN authored
      - when windows portable executables (.exe or .dll) files are loaded,
        their dependent libraries not fully loaded. For OpenFOAM this means
        that the static constructors which are responsible for populating
        run-time selection tables are not triggered, and most of the run-time
        selectable models will simply not be available.
      
      Possible Solution
      =================
      
        Avoid this problem by defining an additional library symbol such as
        the following:
      
            extern "C" void libName_Load() {}
      
        in the respective library, and tag this symbol as 'unresolved' for
        the linker so that it will attempt to resolve it at run-time by
        loading the known libraries until it finds it. The link line would
        resemble the following:
      
            -L/some/path -llibName -ulibName_Load
      
        Pros:
          - Allows precise control of forced library loading
      
        Cons:
          - Moderately verbose adjustment of some source files (even with macro
            wrapping for the declaration).
          - Adjustment of numerous Make/options files and somewhat ad hoc
            in nature.
          - Requires additional care when implementing future libraries and/or
            applications.
      
        - This is the solution taken by the symscape patches (Richard Smith)
      
      Possible Solution
      =================
      
        Avoid this problem by simply force loading all linked libraries.
        This is done by "scraping" the information out of the respective
        Make/options file (after pre-processing) and using that to define
        the library list that will be passed to Foam::dlOpen() at run-time.
      
        Pros:
          - One-time (very) minimal adjustment of the sources and wmake toolchain
          - Automatically applies to future applications
      
        Cons:
          - Possibly larger memory footprint of application (since all dependent
            libraries are loaded).
          - Possible impact on startup time (while loading libraries)
          - More sensitive to build failures. Since the options files are
            read and modified based on the existence of the dependent
            libraries as a preprocessor step, if the libraries are initially
            unavailable for the first attempt at building the application,
            the dependencies will be inaccurate for later (successful) builds.
      
        - This is solution taken by the bluecape patches (Bruno Santos)
      
      Adopted Solution
      ================
      
        The approach taken by Bruno was adopted in a modified form since
        this appears to be the most easily maintained.
      
      Additional Notes
      ================
      
        It is always possible to solve this problem by defining a corresponding
        'libs (...)' entry in the case system/controlDict, which forces a dlOpen
        of the listed libraries. This is obviously less than ideal for large-scale
        changes, but can work to resolve an individual problem.
      
        The peldd utility (https://github.com/gsauthof/pe-util), which is
        also packaged as part of MXE could provide yet another alternative.
        Like ldd it can be used to determine the library dependencies of
        binaries or libraries. This information could be used to define an
        additional load layer for Windows.
      66a10099
  22. Jan 28, 2019
    • Mark OLESEN's avatar
      ENH: enable MPI library variants (#1153) · 473e000b
      Mark OLESEN authored
      - in addition to managing different vendors and versions, it may also
        be necessary or desirable to have a particular variant
        (eg, profiling, release, etc).
      
        Devise a new meaningful name for the variant and create a
        corresponding wmake rule.
      
        Eg, SYSTEMOPENMPI-profiling with a corresponding
            "wmake/rules/linux64Gcc/mplibSYSTEMOPENMPI-profiling" file
        that has suitable content for your system.
      
      CONFIG: intel-mpi use intel64/ paths only for config and wmake rules (#1153)
      
      - previously adjusted the config files, but missed the changes
        required for the wmake rules too.
      
        Now simply migrate to using  "intel64/{include,bin,lib}"
        instead of the older naming  "{include,bin,lib}64"
      
        These changes work since at least intel-mpi 2015 (5.x), but possibly
        earlier as well
      473e000b
  23. Jan 10, 2019
    • Mark OLESEN's avatar
      ENH: make use of FOAM_API for environment as well (issue #1158) · 63d8e7e5
      Mark OLESEN authored
      - was WM_PROJECT_API in the environment and FOAM_API in dictionaries.
      
        Make these both consistently FOAM_API.
        This is a non-breaking change, since the value of WM_PROJECT_API
        (added in 1812) and/or FOAM_API is purely informative.
        For the current correct values, always use
      
          * foamEtcFile -show-api
          * wmakeBuildInfo -show-api
      63d8e7e5
  24. Feb 14, 2019
    • Mark OLESEN's avatar
      CONFIG: update MPICH and MVAPICH versions/rules · fd8379fd
      Mark OLESEN authored
      - Note: mpich now builds libmpi.so instead of libmpich.so
      
      - define both -DMPICH_SKIP_MPICXX and -DOMPI_SKIP_MPICXX regardless of
        using openmpi or mpich. This simplifies the files and does not harm.
      fd8379fd
  25. Feb 06, 2019
  26. Jan 26, 2019
    • Mark OLESEN's avatar
      STYLE: reorganize some legacy and less frequently used components · b0fafd18
      Mark OLESEN authored
      - older emacs tools into legacy
      - old process tools
      
      * Less frequently used scripts into bin/tools/
      
        - findEmptyMake
        - foamAllHC
        - foamUpdateCaseFileHeader
      
      * Infrastructure file (only used by foamNewApp)
      
        - wmake/wmakeFilesAndOptions -> wmake/scripts/wmakeFilesAndOptions
      
      * Merge wmakeRoot convenience as 'wmake -pwd'
      * Remove obsolete wmakePrintBuild (superseded by wmakeBuildInfo)
      * Remove unused mergeHistory file
      b0fafd18
  27. Jan 25, 2019
    • Mark OLESEN's avatar
      CONFIG: combine wmake rules for KNL architecture as a compile option · ef6c2ef5
      Mark OLESEN authored
      - instead of
      
            WM_COMPILER=GccKNL WM_COMPILE_OPTION=Opt
      
            -> linux64GccKNLDPInt32Opt
      
        now specify
      
            WM_COMPILER=Gcc  WM_COMPILE_OPTION=OptKNL
      
            -> linux64GccDPInt32OptKNL
      
      This makes it easier (and more obvious) for adding different tweaks
      without needing to generate too many files.
      Eg,
      
          cd wmake/rules/linux64Gcc
      
          cp cOpt   cOptBdw
          cp c++Opt c++OptBdw
      
          edit these two files and then use WM_COMPILE_OPTION=OptBdw
      
      CONFIG: provide some default c/c++ flags in General compiler rules
      
      - can make is easier when deriving new compile options, and ensures
        that '-02' is enabled as an initial default.
      ef6c2ef5