@@ -130,6 +130,10 @@ if (NOT WIN32)
130130 add_library (flang_rt.static ALIAS flang_rt)
131131 add_library (flang_rt.unittest ALIAS flang_rt)
132132else ()
133+ # Target for building all versions of the runtime
134+ add_custom_target (flang_rt)
135+ set_target_properties (flang_rt PROPERTIES FOLDER "Fortran Runtime/Meta" )
136+
133137 function (add_win_flangrt_library libtype suffix msvc_lib)
134138 set (name "flang_rt.${suffix} " )
135139 add_flangrt_library(${name} ${libtype}
@@ -149,6 +153,7 @@ else()
149153
150154 enable_cuda_compilation(${name} "${supported_sources} " )
151155 enable_omp_offload_compilation(${name} "${supported_sources} " )
156+ add_dependencies (flang_rt ${name} )
152157 endfunction ()
153158
154159 add_win_flangrt_library(STATIC static MultiThreaded)
@@ -157,18 +162,19 @@ else()
157162 # unittests link against LLVMSupport which is compiled with /MD
158163 add_win_flangrt_library(STATIC unittest MultiThreadedDLL EXCLUDE_FROM_ALL )
159164
160- # FIXME: Before DLL versions of the runtime can be used, exported definitions
161- # must be annotated with __declspec(dllexport).
162- add_win_flangrt_library(SHARED dynamic MultiThreadedDLL)
163- add_win_flangrt_library(SHARED dynamic_dbg MultiThreadedDebugDLL)
164-
165- # Target for building all versions of the runtime
166- add_custom_target (flang_rt)
167- set_target_properties (flang_rt PROPERTIES FOLDER "Fortran Runtime/Meta" )
168- add_dependencies (flang_rt
169- flang_rt.static
170- flang_rt.static_dbg
171- flang_rt.dynamic
172- flang_rt.dynamic_dbg
173- )
165+ # FIXME: Generating runtime DLLs is currently not possible. There are two
166+ # roadblocks:
167+ #
168+ # * Flang emits /DEFAULTLIB:flang_rt.dynamic.lib into
169+ # iso_fortran_env_impl.f90.obj. Since that file is itself part of
170+ # flang_rt.dynamic, this results in a recursive dependency when invoking
171+ # the linker.
172+ #
173+ # * The externally-visible functions must either by annotated with
174+ # __declspec(dllexport), or listed in a exports file. A possible workaround
175+ # is CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS which would also export the internal
176+ # C++ symbols.
177+ #
178+ #add_win_flangrt_library(SHARED dynamic MultiThreadedDLL)
179+ #add_win_flangrt_library(SHARED dynamic_dbg MultiThreadedDebugDLL)
174180endif ()
0 commit comments