Generate library export flags for a shared library build
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(compiler_t), | intent(in) | :: | self |
Instance of the compiler |
||
character(len=*), | intent(in) | :: | target_dir |
Path and package name |
||
character(len=*), | intent(in) | :: | target_name |
Path and package name |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=:), | public, | allocatable | :: | def_path | |||
character(len=:), | public, | allocatable | :: | implib_path |
function get_export_flags(self, target_dir, target_name) result(export_flags) !> Instance of the compiler class(compiler_t), intent(in) :: self !> Path and package name character(len=*), intent(in) :: target_dir, target_name character(len=:), allocatable :: export_flags character(len=:), allocatable :: implib_path, def_path ! Only apply on Windows if (get_os_type() /= OS_WINDOWS) then export_flags = "" return end if select case (self%id) case (id_gcc, id_caf, id_f95) ! GNU-based: emit both import library and def file implib_path = quote(join_path(target_dir, target_name // ".dll.a") , for_cmd=.true.) def_path = quote(join_path(target_dir, target_name // ".def" ) , for_cmd=.true.) export_flags = " -Wl,--out-implib," // implib_path // & " -Wl,--output-def," // def_path case (id_intel_classic_windows, id_intel_llvm_windows) ! Intel/MSVC-style implib_path = quote(join_path(target_dir, target_name // ".lib") , for_cmd=.true.) def_path = quote(join_path(target_dir, target_name // ".def") , for_cmd=.true.) export_flags = " /IMPLIB:" // implib_path // & " /DEF:" // def_path case default export_flags = "" ! Do nothing elsewhere end select end function get_export_flags