diff --git a/.github/workflows/meson.yml b/.github/workflows/meson.yml index dfd3ecd..1179402 100644 --- a/.github/workflows/meson.yml +++ b/.github/workflows/meson.yml @@ -7,13 +7,14 @@ on: types: [opened, synchronize, reopened] jobs: build: - name: ${{ matrix.os }}/${{ matrix.compiler }}-v${{ matrix.version }} + name: ${{ matrix.os }}/${{ matrix.compiler }}-v${{ matrix.version }}/Int${{ matrix.int }} strategy: fail-fast: false matrix: os: [windows-latest, ubuntu-latest, macos-13] arch: ['x64'] version: ['11'] + int: ['32', '64'] include: - compiler: gcc - os: ubuntu-latest @@ -27,14 +28,14 @@ jobs: version: '2023.2' # - os: ubuntu-latest # compiler: nvidia-hpc - # version: '23.11' + # version: '24.05' runs-on: ${{ matrix.os }} steps: - name: Check out CUTEST uses: actions/checkout@v4 - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.11' @@ -60,7 +61,8 @@ jobs: shell: bash run: | meson setup builddir --buildtype=debug \ - --prefix=$GITHUB_WORKSPACE/cutest + --prefix=$GITHUB_WORKSPACE/cutest \ + -Dquadruple=true - name: Build CUTEST shell: bash diff --git a/meson.build b/meson.build index 4b3b548..726db70 100644 --- a/meson.build +++ b/meson.build @@ -34,59 +34,59 @@ libcutest_include = [] libcutest_include += include_directories('include') # Sources -subdir('src/algencan') -subdir('src/bobyqa') -subdir('src/cg_descent') -subdir('src/cgplus') -subdir('src/cobyla') -subdir('src/curvi') +# subdir('src/algencan') # needs algencan_ +# subdir('src/bobyqa') # needs bobyqa_ +# subdir('src/cg_descent') # needs cg_descent_ +# subdir('src/cgplus') # needs cgfam_ +# subdir('src/cobyla') # needs cobyla_ +# subdir('src/curvi') # needs curvih_, curvif_, curvig_ subdir('src/derchk') -subdir('src/dfo') -subdir('src/directsearch') -subdir('src/e04nqf') -subdir('src/filtersd') -subdir('src/filtersqp') -# subdir('src/gen77') -# subdir('src/gen90') -# subdir('src/genc') -subdir('src/gsl') -subdir('src/highs') +# subdir('src/dfo') # needs dfo_ +# subdir('src/directsearch') # needs nm_, pattrn_, smd_, shh_ +# subdir('src/e04nqf') # needs e04npf_, e04nrf_, e04nqf_ +# subdir('src/filtersd') # needs filtersd_ +# subdir('src/filtersqp') # needs readpar_, readscale_, filtersqp_ +# subdir('src/gen77') # ? +# subdir('src/gen90') # ? +# subdir('src/genc') # ? +# subdir('src/gsl') # needs +# subdir('src/highs') # needs Fortran module highs_fortran_api subdir('src/hrb') -subdir('src/ipopt') -subdir('src/knitro') -subdir('src/la04') -subdir('src/lbfgs') -# subdir('src/lbfgsb') -# subdir('src/lincoa') -# subdir('src/loqo') -# subdir('src/matlab') -# subdir('src/minos') -# subdir('src/newuoa') -# subdir('src/nitsol') -# subdir('src/nlpqlp') -# subdir('src/nomad') -# subdir('src/npsol') -# subdir('src/octave') -# subdir('src/osqp') -# subdir('src/pds') -# subdir('src/pennlp') -# subdir('src/praxis') -# subdir('src/ql') -# subdir('src/qplib') -# subdir('src/ral_nlls') -# subdir('src/snopt') -# subdir('src/spg') -# subdir('src/sqic') -# subdir('src/stats') -# subdir('src/stenmin') -subdir('src/tao') -subdir('src/tenmin') +# subdir('src/ipopt') # needs ipcreate_, ipsolve_, ipfree_ +# subdir('src/knitro') # needs KN_get_release, KN_new, ... +# subdir('src/la04') # needs mc49ad_, la04id_, la04ad_ +# subdir('src/lbfgs') # needs lbfgs_ +# subdir('src/lbfgsb') # needs setulb_ +# subdir('src/lincoa') # needs lincoa_ +# subdir('src/loqo') # needs openlp, nlsetup, solvelp +# subdir('src/matlab') # --- not supported by build system --- +# subdir('src/minos') # needs m1open_, mispec_, minoss_ +# subdir('src/newuoa') # needs newuoa_ +# subdir('src/nitsol') # needs nitsol_, ... +# subdir('src/nlpqlp') # needs nlpqlp_ +subdir('src/nomad') +# subdir('src/npsol') # needs npfile_, npoptn_, npsol_ +# subdir('src/octave') # --- not supported by build system --- +# subdir('src/osqp') # needs osqp.h +# subdir('src/pds') # needs search_, getss_, pds_, result_ +# subdir('src/pennlp') # needs pennlpf_ +# subdir('src/praxis') # needs praxis_ +# subdir('src/ql') # needs ql_ +subdir('src/qplib') +# subdir('src/ral_nlls') # needs the Fortran module RAL_NLLS_precision +# subdir('src/snopt') # needs sninit_, snspec_, snoptb_ +# subdir('src/spg') # needs spg_ +# subdir('src/sqic') # needs crd2spr_, crd2spr_, crd2spr_, ctsqic_ +subdir('src/stats') +# subdir('src/stenmin') # needs stumcd_ +# subdir('src/tao') # needs petsc/finclude/petsctao.h and Fortran module petsctao +# subdir('src/tenmin') # needs tensor_ # subdir('src/test') subdir('src/tools') -subdir('src/tron') -subdir('src/uncmin') -subdir('src/vf13') -subdir('src/worhp') +# subdir('src/tron') # needs dnrm2_, dgpnrm2_ +# subdir('src/uncmin') # needs optif9_ +# subdir('src/vf13') # needs vf13ad_ +# subdir('src/worhp') # needs worhp.h # Preprocessing if fc.get_id() == 'intel-cl' or fc.get_id() == 'intel-llvm-cl' @@ -177,15 +177,17 @@ if build_quadruple endif # Binaries -# foreach binary: cutest_binaries -# binname = binary[0] -# binfile = binary[1] -# executable(binname, -# sources : binfile, -# include_directories : libcutest_include, -# link_with : libcutest_double, -# install : true) -# endforeach +# if get_option('default_library') == 'shared' +# foreach binary: cutest_binaries + cutest_c_binaries +# binname = binary[0] +# binfile = binary[1] +# executable(binname, +# sources : binfile, +# include_directories : libcutest_include, +# link_with : libcutest_double, +# install : true) +# endforeach +# endif # Fortran modules if install_modules diff --git a/src/lbfgsb/meson.build b/src/lbfgsb/meson.build index e69de29..b697341 100644 --- a/src/lbfgsb/meson.build +++ b/src/lbfgsb/meson.build @@ -0,0 +1,2 @@ +cutest_binaries += [['lbfgsb_main', files('lbfgsb_main.F')]] +cutest_tests += [['lbfgsb_test', files('lbfgsb_test.F')]] diff --git a/src/lincoa/meson.build b/src/lincoa/meson.build index e69de29..13d1089 100644 --- a/src/lincoa/meson.build +++ b/src/lincoa/meson.build @@ -0,0 +1,2 @@ +cutest_binaries += [['lincoa_main', files('lincoa_main.F90')]] +cutest_tests += [['lincoa_test', files('lincoa_test.F90')]] diff --git a/src/loqo/meson.build b/src/loqo/meson.build new file mode 100644 index 0000000..ffc924d --- /dev/null +++ b/src/loqo/meson.build @@ -0,0 +1 @@ +cutest_c_binaries += [['loqo_main_c', files('loqo_main.c')]] diff --git a/src/minos/meson.build b/src/minos/meson.build new file mode 100644 index 0000000..c4b5585 --- /dev/null +++ b/src/minos/meson.build @@ -0,0 +1,2 @@ +cutest_binaries += [['minos_main', files('minos_main.F')]] +cutest_tests += [['minos_test', files('minos_test.F')]] diff --git a/src/newuoa/meson.build b/src/newuoa/meson.build new file mode 100644 index 0000000..ab7c481 --- /dev/null +++ b/src/newuoa/meson.build @@ -0,0 +1,2 @@ +cutest_binaries += [['newuoa_main', files('newuoa_main.F90')]] +cutest_tests += [['newuoa_test', files('newuoa_test.F90')]] diff --git a/src/nitsol/meson.build b/src/nitsol/meson.build new file mode 100644 index 0000000..a187b4a --- /dev/null +++ b/src/nitsol/meson.build @@ -0,0 +1,2 @@ +cutest_binaries += [['nitsol_main', files('nitsol_main.F')]] +cutest_tests += [['nitsol_test', files('nitsol_test.F')]] diff --git a/src/nlpqlp/meson.build b/src/nlpqlp/meson.build new file mode 100644 index 0000000..99d18ef --- /dev/null +++ b/src/nlpqlp/meson.build @@ -0,0 +1,2 @@ +cutest_binaries += [['nlpqlp_main', files('nlpqlp_main.F')]] +cutest_tests += [['nlpqlp_test', files('nlpqlp_test.F')]] diff --git a/src/nomad/meson.build b/src/nomad/meson.build new file mode 100644 index 0000000..1d14d00 --- /dev/null +++ b/src/nomad/meson.build @@ -0,0 +1 @@ +cutest_c_binaries += [['nomad_main_c', files('nomad_main.c')]] diff --git a/src/npsol/meson.build b/src/npsol/meson.build new file mode 100644 index 0000000..6c23392 --- /dev/null +++ b/src/npsol/meson.build @@ -0,0 +1,2 @@ +cutest_binaries += [['npsol_main', files('npsol_main.F')]] +cutest_tests += [['npsol_test', files('npsol_test.F')]] diff --git a/src/osqp/meson.build b/src/osqp/meson.build new file mode 100644 index 0000000..c149ab3 --- /dev/null +++ b/src/osqp/meson.build @@ -0,0 +1,2 @@ +cutest_c_binaries += [['osqp_main_c', files('osqp_main.c')]] +cutest_c_tests += [['osqp_test_c', files('osqp_test.c')]] diff --git a/src/pds/meson.build b/src/pds/meson.build new file mode 100644 index 0000000..0132f17 --- /dev/null +++ b/src/pds/meson.build @@ -0,0 +1,2 @@ +cutest_binaries += [['pds_main', files('pds_main.F')]] +cutest_tests += [['pds_test', files('pds_test.F')]] diff --git a/src/pennlp/meson.build b/src/pennlp/meson.build new file mode 100644 index 0000000..97d3860 --- /dev/null +++ b/src/pennlp/meson.build @@ -0,0 +1,2 @@ +cutest_binaries += [['pennlp_main', files('pennlp_main.F')]] +cutest_tests += [['pennlp_test', files('pennlp_test.F')]] diff --git a/src/praxis/meson.build b/src/praxis/meson.build new file mode 100644 index 0000000..14ac8e1 --- /dev/null +++ b/src/praxis/meson.build @@ -0,0 +1,2 @@ +cutest_binaries += [['praxis_main', files('praxis_main.F')]] +cutest_tests += [['praxis_test', files('praxis_test.F')]] diff --git a/src/ql/meson.build b/src/ql/meson.build new file mode 100644 index 0000000..f4ad779 --- /dev/null +++ b/src/ql/meson.build @@ -0,0 +1,2 @@ +cutest_binaries += [['ql_main', files('ql_main.F')]] +cutest_tests += [['ql_test', files('ql_test.F')]] diff --git a/src/qplib/meson.build b/src/qplib/meson.build new file mode 100644 index 0000000..6771c04 --- /dev/null +++ b/src/qplib/meson.build @@ -0,0 +1 @@ +cutest_binaries += [['qplib_main', files('qplib_main.F90')]] diff --git a/src/ral_nlls/meson.build b/src/ral_nlls/meson.build new file mode 100644 index 0000000..3dd44ae --- /dev/null +++ b/src/ral_nlls/meson.build @@ -0,0 +1,2 @@ +cutest_binaries += [['ral_nlls_main', files('ral_nlls_main.F90')]] +cutest_tests += [['ral_nlls_test', files('ral_nlls_test.F90')]] diff --git a/src/ral_nlls/ral_nlls_dummy.F90 b/src/ral_nlls/ral_nlls_dummy.F90 deleted file mode 120000 index fd10aa3..0000000 --- a/src/ral_nlls/ral_nlls_dummy.F90 +++ /dev/null @@ -1 +0,0 @@ -ral_nlls_test.F90 \ No newline at end of file diff --git a/src/snopt/meson.build b/src/snopt/meson.build new file mode 100644 index 0000000..edec9d3 --- /dev/null +++ b/src/snopt/meson.build @@ -0,0 +1,2 @@ +cutest_binaries += [['snopt_main', files('snopt_main.F')]] +cutest_tests += [['snopt_test', files('snopt_test.F')]] diff --git a/src/spg/meson.build b/src/spg/meson.build new file mode 100644 index 0000000..ae90ae3 --- /dev/null +++ b/src/spg/meson.build @@ -0,0 +1,2 @@ +cutest_binaries += [['spg_main', files('spg_main.F')]] +cutest_tests += [['spg_test', files('spg_test.F')]] diff --git a/src/sqic/meson.build b/src/sqic/meson.build new file mode 100644 index 0000000..46f6192 --- /dev/null +++ b/src/sqic/meson.build @@ -0,0 +1,2 @@ +cutest_binaries += [['sqic_main', files('sqic_main.F90')]] +cutest_tests += [['sqic_test', files('sqic_test.F90')]] diff --git a/src/stats/meson.build b/src/stats/meson.build new file mode 100644 index 0000000..18ada54 --- /dev/null +++ b/src/stats/meson.build @@ -0,0 +1 @@ +cutest_binaries += [['stats_main', files('stats_main.F90')]] diff --git a/src/stenmin/meson.build b/src/stenmin/meson.build new file mode 100644 index 0000000..1c0c911 --- /dev/null +++ b/src/stenmin/meson.build @@ -0,0 +1,2 @@ +cutest_binaries += [['stenmin_main', files('stenmin_main.F')]] +cutest_tests += [['stenmin_test', files('stenmin_test.F')]] diff --git a/src/tools/cutest_delegate.f90 b/src/tools/cutest_delegate.f90 new file mode 100644 index 0000000..f477c2b --- /dev/null +++ b/src/tools/cutest_delegate.f90 @@ -0,0 +1,111 @@ +#ifdef REAL_32 +#define cutest_delegate_r cutest_delegate_s +#define LOAD_ROUTINE_NAME "load_routines_s_" +#define ELFUN_BIND_NAME "elfun_s_" +#define GROUP_BIND_NAME "group_s_" +#define RANGE_BIND_NAME "range_s_" +#elif REAL_128 +#define cutest_delegate_r cutest_delegate_q +#define LOAD_ROUTINE_NAME "load_routines_q" +#define ELFUN_BIND_NAME "elfun_q_" +#define GROUP_BIND_NAME "group_q_" +#define RANGE_BIND_NAME "range_q_" +#else +#define cutest_delegate_r cutest_delegate_d +#define LOAD_ROUTINE_NAME "load_routines_" +#define ELFUN_BIND_NAME "elfun_" +#define GROUP_BIND_NAME "group_" +#define RANGE_BIND_NAME "range_" +#endif + +module cutest_delegate_r + use, intrinsic :: iso_c_binding + implicit none + + ! Interface pour dlopen + interface + function dlopen(name, mode) bind(C, name="dlopen") + use iso_c_binding, only: c_ptr, c_int, c_char + type(c_ptr) :: dlopen + character(kind=c_char), dimension(*) :: name + integer(kind=c_int) :: mode + end function dlopen + end interface + + ! Interface pour dlsym + interface + function dlsym(handle, symbol) bind(C, name="dlsym") + use iso_c_binding, only: c_funptr, c_ptr, c_char + type(c_funptr) :: dlsym + type(c_ptr), value :: handle + character(kind=c_char), dimension(*) :: symbol + end function dlsym + end interface + + ! Constantes pour les modes d'ouverture de bibliothèques + integer, parameter :: RTLD_LAZY = 1 + + ! Handles pour les fonctions externes + type(c_ptr) :: lib_handle + type(c_funptr) :: ptr_elfun + type(c_funptr) :: ptr_group + type(c_funptr) :: ptr_range + + ! Pointeurs de procédure pour les fonctions externes + procedure(), pointer :: fun_elfun => null() + procedure(), pointer :: fun_group => null() + procedure(), pointer :: fun_range => null() + +contains + + ! Routine pour charger les routines depuis la bibliothèque dynamique + subroutine load_routines(libname) bind(C, name=LOAD_ROUTINE_NAME) + use iso_c_binding + implicit none + character(kind=c_char), dimension(*), intent(in) :: libname + + ! Charge la bibliothèque dynamique + lib_handle = dlopen(libname, RTLD_LAZY) + if (.not. c_associated(lib_handle)) then + stop "Unable to load library" + end if + + ! Récupère les adresses des fonctions + ptr_elfun = dlsym(lib_handle, "elfun"//c_null_char) + ptr_group = dlsym(lib_handle, "group"//c_null_char) + ptr_range = dlsym(lib_handle, "range"//c_null_char) + + ! Associe les pointeurs de procédure Fortran avec les adresses obtenues + call c_f_procpointer(ptr_elfun, fun_elfun) + call c_f_procpointer(ptr_group, fun_group) + call c_f_procpointer(ptr_range, fun_range) + end subroutine load_routines + + ! Routine pour appeler la fonction elfun + subroutine elfun() bind(C, name=ELFUN_BIND_NAME) + if (associated(fun_elfun)) then + call fun_elfun() + else + print *, "Error: fun_elfun is not associated." + end if + end subroutine elfun + + ! Routine pour appeler la fonction group + subroutine group() bind(C, name=GROUP_BIND_NAME) + if (associated(fun_group)) then + call fun_group() + else + print *, "Error: fun_group is not associated." + end if + end subroutine group + + ! Routine pour appeler la fonction range + subroutine range() bind(C, name=RANGE_BIND_NAME) + if (associated(fun_range)) then + call fun_range() + else + print *, "Error: fun_range is not associated." + end if + end subroutine range + +end module cutest_delegate_r diff --git a/src/tools/meson.build b/src/tools/meson.build index 1c7ac0e..9bbcb75 100644 --- a/src/tools/meson.build +++ b/src/tools/meson.build @@ -1,94 +1,96 @@ -libcutest_src += files('ccfg.F90') -libcutest_src += files('ccfsg.F90') -libcutest_src += files('cchprods.F90') -libcutest_src += files('cchprodsp.F90') -libcutest_src += files('ccifg.F90') -libcutest_src += files('ccifsg.F90') -libcutest_src += files('cconst.F90') libcutest_c_src += files('ccutest.c') -libcutest_src += files('cdh.F90') -libcutest_src += files('cdhc.F90') -libcutest_src += files('cdhj.F90') -libcutest_src += files('cdimchp.F90') -libcutest_src += files('cdimen.F90') -libcutest_src += files('cdimohp.F90') -libcutest_src += files('cdimse.F90') -libcutest_src += files('cdimsg.F90') -libcutest_src += files('cdimsh.F90') -libcutest_src += files('cdimsj.F90') -libcutest_src += files('ceh.F90') -libcutest_src += files('cfn.F90') -libcutest_src += files('cgr.F90') -libcutest_src += files('cgrdh.F90') -libcutest_src += files('chcprod.F90') -libcutest_src += files('chjprod.F90') -libcutest_src += files('chprod.F90') -libcutest_src += files('cidh.F90') -libcutest_src += files('cifn.F90') -libcutest_src += files('cigr.F90') -libcutest_src += files('cisgr.F90') -libcutest_src += files('cisgrp.F90') -libcutest_src += files('cish.F90') -libcutest_src += files('cjprod.F90') -libcutest_src += files('clfg.F90') -libcutest_src += files('cnames.F90') -libcutest_src += files('cnoobj.F90') -libcutest_src += files('cofg.F90') -libcutest_src += files('cofsg.F90') -libcutest_src += files('cohprods.F90') -libcutest_src += files('cohprodsp.F90') -libcutest_src += files('connames.F90') -libcutest_src += files('creport.F90') -libcutest_src += files('csetup.F90') -libcutest_src += files('csgr.F90') -libcutest_src += files('csgreh.F90') -libcutest_src += files('csgrp.F90') -libcutest_src += files('csgrsh.F90') -libcutest_src += files('csgrshp.F90') -libcutest_src += files('csh.F90') -libcutest_src += files('cshc.F90') -libcutest_src += files('cshcprod.F90') -libcutest_src += files('cshj.F90') -libcutest_src += files('cshp.F90') -libcutest_src += files('cshprod.F90') -libcutest_src += files('csjp.F90') -libcutest_src += files('csjprod.F90') -libcutest_src += files('cstats.F90') -libcutest_src += files('cterminate.F90') -libcutest_src += files('cutest.F90') -libcutest_src += files('cvartype.F90') -libcutest_src += files('fortran_ops.F90') -libcutest_src += files('interface.F90') -libcutest_src += files('kinds.F90') -libcutest_src += files('lqp.F90') -libcutest_src += files('newthread.F90') -libcutest_src += files('pname.F90') -libcutest_src += files('problem.F90') -libcutest_src += files('probname.F90') -libcutest_src += files('readin.F90') -libcutest_src += files('timings.F90') -libcutest_src += files('ubandh.F90') -libcutest_src += files('udh.F90') -libcutest_src += files('udimen.F90') -libcutest_src += files('udimse.F90') -libcutest_src += files('udimsh.F90') -libcutest_src += files('ueh.F90') -libcutest_src += files('ufn.F90') -libcutest_src += files('ugr.F90') -libcutest_src += files('ugrdh.F90') -libcutest_src += files('ugreh.F90') -libcutest_src += files('ugrsh.F90') -libcutest_src += files('uhprod.F90') -libcutest_src += files('unames.F90') -libcutest_src += files('uofg.F90') -libcutest_src += files('ureport.F90') -libcutest_src += files('usetup.F90') -libcutest_src += files('ush.F90') -libcutest_src += files('ushp.F90') -libcutest_src += files('ushprod.F90') -libcutest_src += files('uterminate.F90') -libcutest_src += files('uvartype.F90') -libcutest_src += files('varnames.F90') -# libcutest_delegate_src += files('cutest_delegate.f90') -# libcutest_src += files('cutest_delegate.f90') +libcutest_src += files('ccfg.F90', + 'ccfsg.F90', + 'cchprods.F90', + 'cchprodsp.F90', + 'ccifg.F90', + 'ccifsg.F90', + 'cconst.F90', + 'cdh.F90', + 'cdhc.F90', + 'cdhj.F90', + 'cdimchp.F90', + 'cdimen.F90', + 'cdimohp.F90', + 'cdimse.F90', + 'cdimsg.F90', + 'cdimsh.F90', + 'cdimsj.F90', + 'ceh.F90', + 'cfn.F90', + 'cgr.F90', + 'cgrdh.F90', + 'chcprod.F90', + 'chjprod.F90', + 'chprod.F90', + 'cidh.F90', + 'cifn.F90', + 'cigr.F90', + 'cisgr.F90', + 'cisgrp.F90', + 'cish.F90', + 'cjprod.F90', + 'clfg.F90', + 'cnames.F90', + 'cnoobj.F90', + 'cofg.F90', + 'cofsg.F90', + 'cohprods.F90', + 'cohprodsp.F90', + 'connames.F90', + 'creport.F90', + 'csetup.F90', + 'csgr.F90', + 'csgreh.F90', + 'csgrp.F90', + 'csgrsh.F90', + 'csgrshp.F90', + 'csh.F90', + 'cshc.F90', + 'cshcprod.F90', + 'cshj.F90', + 'cshp.F90', + 'cshprod.F90', + 'csjp.F90', + 'csjprod.F90', + 'cstats.F90', + 'cterminate.F90', + 'cutest.F90', + 'cvartype.F90', + 'fortran_ops.F90', + 'interface.F90', + 'kinds.F90', + 'lqp.F90', + 'newthread.F90', + 'pname.F90', + 'problem.F90', + 'probname.F90', + 'readin.F90', + 'timings.F90', + 'ubandh.F90', + 'udh.F90', + 'udimen.F90', + 'udimse.F90', + 'udimsh.F90', + 'ueh.F90', + 'ufn.F90', + 'ugr.F90', + 'ugrdh.F90', + 'ugreh.F90', + 'ugrsh.F90', + 'uhprod.F90', + 'unames.F90', + 'uofg.F90', + 'ureport.F90', + 'usetup.F90', + 'ush.F90', + 'ushp.F90', + 'ushprod.F90', + 'uterminate.F90', + 'uvartype.F90', + 'varnames.F90') + +if get_option('default_library') == 'shared' + libcutest_src += files('cutest_delegate.f90') +endif