Add fortran test with an install:yes static library

This adds a test which makes use of an install:yes static library that
depends on another static library. This triggers a promotion to
link_whole_target inside meson which takes different code paths in
certain places.

Also makes use of .F90 source (capital F) to test for case
(in)sensitivity.
pull/8226/head
Jonas Lundholm Bertelsen 4 years ago
parent 2636eebd64
commit d3ae808742
  1. 4
      test cases/fortran/21 install static/main.f90
  2. 16
      test cases/fortran/21 install static/main_lib.f90
  3. 20
      test cases/fortran/21 install static/meson.build
  4. 12
      test cases/fortran/21 install static/subprojects/static_hello/meson.build
  5. 17
      test cases/fortran/21 install static/subprojects/static_hello/static_hello.f90
  6. 5
      test cases/fortran/21 install static/test.json

@ -0,0 +1,4 @@
use main_lib
implicit none
call main_hello()
end program

@ -0,0 +1,16 @@
module main_lib
use static_hello
implicit none
private
public :: main_hello
contains
subroutine main_hello
call static_say_hello()
print *, "Main hello routine finished."
end subroutine main_hello
end module main_lib

@ -0,0 +1,20 @@
# Based on 'fortran/5 static', but:
# - Uses a subproject dependency
# - Is an install:true static library to trigger certain codepath (promotion to link_whole)
# - Does fortran code 'generation' with configure_file
# - Uses .F90 ext (capital F typically denotes a dependence on preprocessor treatment, which however is not used)
project('try-static-subproject-dependency', 'fortran', default_options: ['default_library=static'])
static_dep = dependency('static_hello', fallback: ['static_hello', 'static_hello_dep'])
mainsrc = 'main_lib.f90'
mainsrc = configure_file(
command: [find_program('cp'), '@INPUT@', '@OUTPUT@'],
input: mainsrc,
output: 'main_lib_output.F90'
)
main_lib = library('mainstatic', mainsrc, dependencies: static_dep, install: true)
main_dep = declare_dependency(link_with: main_lib)
main_exe = executable('main_exe', 'main.f90', dependencies: main_dep)
test('static_subproject_test', main_exe)

@ -0,0 +1,12 @@
project('static-hello', 'fortran')
# staticlibsource = 'static_hello.f90'
staticlibsource = configure_file(
command: [find_program('cp'), '@INPUT@', '@OUTPUT@'],
input: 'static_hello.f90',
output: 'static_hello_output.F90'
)
static_hello_lib = static_library('static_hello', staticlibsource, install: false)
static_hello_dep = declare_dependency(link_with: static_hello_lib)

@ -0,0 +1,17 @@
module static_hello
implicit none
private
public :: static_say_hello
interface static_say_hello
module procedure say_hello
end interface static_say_hello
contains
subroutine say_hello
print *, "Static library called."
end subroutine say_hello
end module static_hello

@ -0,0 +1,5 @@
{
"installed": [
{"file": "usr/lib/libmainstatic.a", "type": "file"}
]
}
Loading…
Cancel
Save