Skip to content

Commit f674542

Browse files
committed
msvc build fix
1 parent 55a82e6 commit f674542

File tree

4 files changed

+36
-16
lines changed

4 files changed

+36
-16
lines changed

flang-rt/cmake/modules/AddFlangRT.cmake

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,8 @@ function (add_flangrt_library name)
182182
endif ()
183183
add_library(${name}.default ALIAS "${default_target}")
184184

185+
186+
185187
# Provide a build target that builds any enabled library.
186188
# Not intended for target_link_libraries. Either use the ${name}.static,
187189
# ${name}.shared variants, or ${name}.default to let BUILD_SHARED_LIBS
@@ -192,6 +194,12 @@ function (add_flangrt_library name)
192194
endif ()
193195
endif ()
194196

197+
if (build_object)
198+
add_library(${name}.compile ALIAS "${name_object}")
199+
else ()
200+
add_library(${name}.compile ALIAS "${default_target}")
201+
endif ()
202+
195203
foreach (tgtname IN LISTS libtargets)
196204
if (NOT WIN32)
197205
# Use same stem name for .a and .so. Common in UNIX environments.
@@ -284,8 +292,8 @@ function (add_flangrt_library name)
284292
# Disable libstdc++/libc++ assertions, even in an LLVM_ENABLE_ASSERTIONS
285293
# build, to avoid an unwanted dependency on libstdc++/libc++.so.
286294
if (FLANG_RT_SUPPORTS_UNDEFINE_FLAG)
287-
target_compile_options(${tgtname} PUBLIC $<$<COMPILE_LANGUAGE:C,CXX>:-U_GLIBCXX_ASSERTIONS>)
288-
target_compile_options(${tgtname} PUBLIC $<$<COMPILE_LANGUAGE:C,CXX>:-U_LIBCPP_ENABLE_ASSERTIONS>)
295+
target_compile_options(${tgtname} PUBLIC "$<$<COMPILE_LANGUAGE:C,CXX>:-U_GLIBCXX_ASSERTIONS>")
296+
target_compile_options(${tgtname} PUBLIC "$<$<COMPILE_LANGUAGE:C,CXX>:-U_LIBCPP_ENABLE_ASSERTIONS>")
289297
endif ()
290298

291299
# Flang/Clang (including clang-cl) -compiled programs targeting the MSVC ABI

flang-rt/lib/runtime/CMakeLists.txt

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,7 @@ if (NOT WIN32)
318318
add_flangrt_library(flang_rt.intrinsics OBJECT
319319
${intrinsics_sources}
320320
)
321+
flang_module_target(flang_rt.intrinsics)
321322

322323
add_flangrt_library(flang_rt.runtime STATIC SHARED
323324
${sources}
@@ -336,6 +337,8 @@ if (NOT WIN32)
336337
Fortran_BUILDING_INSTRINSIC_MODULES TRUE
337338
)
338339

340+
341+
339342
# TODO: shared (or global)
340343
#target_compile_options(flang_rt.runtime.static PRIVATE "$<$<COMPILE_LANGUAGE:Fortran>:SHELL:-fintrinsic-modules-path>" "$<$<COMPILE_LANGUAGE:Fortran>:${FLANG_RT_OUTPUT_RESOURCE_MOD_DIR}>")
341344

@@ -346,13 +349,19 @@ if (NOT WIN32)
346349
get_target_property(default_target flang_rt.runtime.default ALIASED_TARGET)
347350
add_library(flang_rt.runtime.unittest ALIAS "${default_target}")
348351

349-
add_dependencies(flang-rt-mod flang_rt.intrinsics flang_rt.runtime)
352+
# Delect the target that compiles the sources
353+
get_target_property(compile_target flang_rt.runtime.compile ALIASED_TARGET)
354+
flang_module_target(${compile_target})
355+
add_dependencies(flang-rt-mod flang_rt.intrinsics ${compile_target})
356+
357+
358+
350359
else()
351360
# Target for building all versions of the runtime
352361
add_custom_target(flang_rt.runtime)
353362
set_target_properties(flang_rt.runtime PROPERTIES FOLDER "Flang-RT/Meta")
354363

355-
function (add_win_flangrt_runtime libtype suffix msvc_lib)
364+
function(add_win_flangrt_runtime libtype suffix msvc_lib)
356365
set(name "flang_rt.runtime.${suffix}")
357366

358367
add_flangrt_library(${name}.intrinsics OBJECT
@@ -380,9 +389,9 @@ else()
380389

381390
# "$<$<COMPILE_LANGUAGE:Fortran>:-Xflang>"
382391
#TODO: Better as -fintrinsic-modules-path, need added option
383-
target_compile_options(${name} PRIVATE "$<$<COMPILE_LANGUAGE:Fortran>:SHELL:-fintrinsic-modules-path>" "$<$<COMPILE_LANGUAGE:Fortran>:${CMAKE_CURRENT_BINARY_DIR}/module.${suffix}>")
384-
target_compile_options(${name}.intrinsics PRIVATE "$<$<COMPILE_LANGUAGE:Fortran>:SHELL:-fintrinsic-modules-path>" "$<$<COMPILE_LANGUAGE:Fortran>:${CMAKE_CURRENT_BINARY_DIR}/module.${suffix}>")
385-
target_compile_options(${name} PRIVATE $<$<COMPILE_LANGUAGE:Fortran>:SHELL:-fintrinsic-modules-path> $<$<COMPILE_LANGUAGE:Fortran>:${RUNTIMES_OUTPUT_RESOURCE_MOD_DIR}>)
392+
target_compile_options(${name} PRIVATE "$<$<COMPILE_LANGUAGE:Fortran>:-fintrinsic-modules-path=${CMAKE_CURRENT_BINARY_DIR}/module.${suffix}>")
393+
target_compile_options(${name}.intrinsics PRIVATE "$<$<COMPILE_LANGUAGE:Fortran>:-fintrinsic-modules-path=${CMAKE_CURRENT_BINARY_DIR}/module.${suffix}>")
394+
target_compile_options(${name} PRIVATE "$<$<COMPILE_LANGUAGE:Fortran>:-fintrinsic-modules-path=${RUNTIMES_OUTPUT_RESOURCE_MOD_DIR}>")
386395

387396
if (msvc_lib)
388397
set_target_properties(${name}
@@ -394,12 +403,19 @@ else()
394403
# Setting an unique Fortran_MODULE_DIRECTORY is required for each variant to
395404
# write a different .mod file.
396405
# Except for one selected one (the first)
397-
if (_has_main_intrinsics)
398-
set_property(TARGET ${name} ${name}.intrinsics
399-
PROPERTY Fortran_MODULE_DIRECTORY "module.${suffix}"
400-
)
406+
if (NOT _has_main_intrinsics)
407+
flang_module_target(${name}.intrinsics)
408+
409+
get_target_property(compile_target ${name}.compile ALIASED_TARGET)
410+
flang_module_target(${compile_target})
411+
add_dependencies(flang-rt-mod ${name}.intrinsics ${compile_target})
412+
413+
#set_property(TARGET ${name} ${name}.intrinsics
414+
# PROPERTY Fortran_MODULE_DIRECTORY "module.${suffix}"
415+
#)
416+
set(_has_main_intrinsics "YES" PARENT_SCOPE)
401417
else ()
402-
set(_has_main_intrinsics "YES" PARENT_SCOPE)
418+
#set(_has_main_intrinsics "YES" PARENT_SCOPE)
403419
endif ()
404420

405421

openmp/runtime/src/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010

1111
include(ExtendPath)
1212

13-
14-
1513
# Configure omp.h, kmp_config.h and omp-tools.h if necessary
1614
configure_file(${LIBOMP_INC_DIR}/omp.h.var ${LIBOMP_HEADERS_INTDIR}/omp.h @ONLY)
1715
configure_file(${LIBOMP_INC_DIR}/ompx.h.var ${LIBOMP_HEADERS_INTDIR}/ompx.h @ONLY)

runtimes/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -508,5 +508,3 @@ if(CMAKE_EXPORT_COMPILE_COMMANDS AND NOT ("${LLVM_BINARY_DIR}" STREQUAL "${CMAKE
508508
DEPENDS ${CMAKE_BINARY_DIR}/compile_commands.json)
509509
add_custom_target(merge_runtime_commands ALL DEPENDS ${LLVM_BINARY_DIR}/compile_commands.json)
510510
endif()
511-
512-

0 commit comments

Comments
 (0)