Initialize model compiler flags from CLI settings and package configuration
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fpm_model_t), | intent(inout) | :: | model | |||
| type(fpm_build_settings), | intent(in) | :: | settings | |||
| type(package_config_t), | intent(in) | :: | package |
subroutine new_compiler_flags(model, settings, package) type(fpm_model_t), intent(inout) :: model type(fpm_build_settings), intent(in) :: settings type(package_config_t), intent(in) :: package logical :: release_request, debug_request, need_defaults character(len=:), allocatable :: fallback ! Default: "debug" if not requested release_request = .false. debug_request = .not.allocated(settings%profile) if (allocated(settings%profile)) release_request = settings%profile == "release" if (allocated(settings%profile)) debug_request = settings%profile == "debug" need_defaults = release_request .or. debug_request ! Backward-compatible: if debug/release requested, but a user-defined profile is not defined, ! apply fpm compiler defaults if (need_defaults) then need_defaults = (release_request .and. package%find_profile("release")<=0) & .or. (debug_request .and. package%find_profile("debug")<=0) end if ! Fix: Always include compiler default flags for Intel ifx -fPIC issue if (need_defaults) then fallback = model%compiler%get_default_flags(release_request) elseif (any(model%compiler%id==[id_intel_classic_mac, & id_intel_classic_nix, & id_intel_llvm_nix, & id_intel_llvm_unknown])) then ! Intel compilers need -fPIC for shared libraries (except Windows) fallback = " -fPIC" else if (allocated(fallback)) deallocate(fallback) ! trigger .not.present endif model%fortran_compile_flags = assemble_flags(settings%flag, package%flags, fallback) model%c_compile_flags = assemble_flags(settings%cflag, package%c_flags) model%cxx_compile_flags = assemble_flags(settings%cxxflag, package%cxx_flags) model%link_flags = assemble_flags(settings%ldflag, package%link_time_flags) end subroutine new_compiler_flags