Hi everyone,
I am currently working on linking a FORTRAN simulation with a dependency on a C++ library after compiling it. I successfully managed to compile the two static libraries the code depends upon, and also compile the main simulation code. It is at this stage that I seem to have misconfigured Meson as the linker is unable to find the library as evidenced by error messages such as
/usr/bin/ld: blub_file_bin.F:(.text+0x279eb): undefined reference to `tecini112_'
When I check the library file with nm libdummy.a | grep tecini112, I find the respective routine:
0000000000004050 T tecini112
Within the source code references to the library are mostly made through the use of a .for file , i.e. for, i.e. within 3 files of the simulation source it is imported through
include "dummy/dummy.for"
Which defines the interface, i.e. for tecini112:
      INTERFACE
      INTEGER(4) FUNCTION tecini112
      & (Title,
      &  Variables,
      &  FName,
      &  ScratchDir,
      &  FileType,
      &  Debug,
      &  VIsDouble)
          CHARACTER(LEN=*) Title
          CHARACTER(LEN=*) Variables
          CHARACTER(LEN=*) FName
          CHARACTER(LEN=*) ScratchDir
          INTEGER(4)       FileType
          INTEGER(4)       Debug
          INTEGER(4)       VIsDouble
      END FUNCTION tecini112
      END INTERFACE
There also exist accompanying .f90, and .inc files to the .for file, all of which are not included in meson right now. Which is also where the error might originate from. dummy/include is the incdir, and lib_one is built from dummy/src, i.e. the library is then built by
lib_one = static_library(
    'dummy',
    sources: dummy_src,
    include_directories: incdir,
    dependencies: mpicpp,
    install: false,
)
and the executable is built as
executable(
    'Simulator',
    sources: srcs,
    link_with: [lib_one, lib_two],
    link_args: ['-g', '-lquadmath', '-fbacktrace'],
    fortran_args: [<bunch of flags>],
    dependencies: mpif,
)
Here is furthermore the link command of meson:
gcc  -o SIMULATOR <a bunch of object files> -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -Wl,--start-group libdummy.a lib2t.a -g -lquadmath -fbacktrace -pthread -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags -L/usr/local/lib -lmpi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags -L/usr/local/lib -lmpi -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags -L/usr/local/lib -lmpi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi -lgfortran -lm -Wl,--end-group
Would be really thankful for any pointers.
Thank you for reading this far,
Ludger