@@ -187,7 +187,7 @@ SET(FTN_INTRINSICS_DESC_DEP
187187 red_any.c
188188 red_count.c
189189 red_findloc.c
190- red_iany.c
190+ red_iany.c
191191 red_maxloc.c
192192 red_minloc.c
193193 red_maxval.c
@@ -418,7 +418,7 @@ separate_arguments(SEPARATED_CMAKE_Fortran_FLAGS NATIVE_COMMAND ${CMAKE_Fortran_
418418add_custom_command (
419419 OUTPUT "${I8_FILES_DIR} /ieee_arithmetic.F95"
420420 COMMAND "${CMAKE_Fortran_COMPILER} " -E -cpp ${SEPARATED_CMAKE_Fortran_FLAGS}
421- "${CMAKE_CURRENT_SOURCE_DIR} /ieee_arithmetic.F95" -DDESC_I8
421+ "${CMAKE_CURRENT_SOURCE_DIR} /ieee_arithmetic.F95" -DDESC_I8
422422 > "${I8_FILES_DIR} /ieee_arithmetic.F95"
423423 COMMENT "Preprocessing ieee_arithmetic.F95"
424424 VERBATIM
@@ -428,7 +428,7 @@ add_custom_command(
428428add_custom_command (
429429 OUTPUT "${I8_FILES_DIR} /ieee_exceptions.F95"
430430 COMMAND "${CMAKE_Fortran_COMPILER} " -E -cpp ${SEPARATED_CMAKE_Fortran_FLAGS}
431- "${CMAKE_CURRENT_SOURCE_DIR} /ieee_exceptions.F95" -DDESC_I8
431+ "${CMAKE_CURRENT_SOURCE_DIR} /ieee_exceptions.F95" -DDESC_I8
432432 > "${I8_FILES_DIR} /ieee_exceptions.F95"
433433 COMMENT "Preprocessing ieee_exceptions.F95"
434434 VERBATIM
@@ -460,7 +460,7 @@ FOREACH(file ${FTN_SUPPORT_DESC_DEP})
460460ENDFOREACH (file)
461461
462462LIST (APPEND FTN_SUPPORT_DESC_DEP ieee_arithmetic.F95 ieee_exceptions.F95 norm2_1.F95)
463- LIST (APPEND FTN_SUPPORT_I8
463+ LIST (APPEND FTN_SUPPORT_I8
464464"${I8_FILES_DIR} /ieee_arithmetic.F95"
465465"${I8_FILES_DIR} /ieee_exceptions.F95"
466466"${I8_FILES_DIR} /norm2_1.F95"
@@ -475,7 +475,11 @@ add_flang_library(flang_static
475475 ${FTN_SUPPORT_I8}
476476 ${SHARED_SOURCES}
477477 )
478+ if (MSVC )
479+ set_property (TARGET flang_static PROPERTY OUTPUT_NAME libflang)
480+ else ()
478481set_property (TARGET flang_static PROPERTY OUTPUT_NAME flang)
482+ endif ()
479483
480484set (SHARED_LIBRARY TRUE )
481485add_flang_library(flang_shared
@@ -501,13 +505,17 @@ add_dependencies(flang_shared flang_static)
501505
502506target_link_libraries (flang_shared ${CMAKE_BINARY_DIR} /${CMAKE_CFG_INTDIR} /lib/libflangrti.so)
503507# Resolve symbols against libm and librt
504- target_link_libraries (flang_shared m rt)
508+ if (NOT MSVC )
509+ target_link_libraries (flang_shared m rt)
510+ else ()
511+ set_target_properties (flang_shared PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE )
512+ endif ()
505513
506514set (SHARED_LIBRARY FALSE )
507515
508516set_property (
509517 SOURCE ${FTN_INTRINSICS_DESC_INDEP} ${FTN_INTRINSICS_DESC_DEP} ${SHARED_SOURCES}
510- PROPERTY COMPILE_DEFINITIONS
518+ PROPERTY COMPILE_DEFINITIONS
511519 PGF90
512520 KANJI
513521 INT32PTR64
@@ -517,7 +525,7 @@ set_property(
517525
518526set_property (
519527 SOURCE ${FTN_INTRINSICS_I8}
520- PROPERTY COMPILE_DEFINITIONS
528+ PROPERTY COMPILE_DEFINITIONS
521529 PGF90
522530 KANJI
523531 INT32PTR64
@@ -527,16 +535,16 @@ set_property(
527535 )
528536
529537set_property (
530- SOURCE ${FTN_SUPPORT_DESC_INDEP} ${FTN_SUPPORT_DESC_DEP}
531- PROPERTY COMPILE_DEFINITIONS
538+ SOURCE ${FTN_SUPPORT_DESC_INDEP} ${FTN_SUPPORT_DESC_DEP}
539+ PROPERTY COMPILE_DEFINITIONS
532540 INT32PTR64
533541 TM_I8
534542 HAVE_LONG_LONG_INT
535543 )
536544
537545set_property (
538- SOURCE ${FTN_SUPPORT_I8}
539- PROPERTY COMPILE_DEFINITIONS
546+ SOURCE ${FTN_SUPPORT_I8}
547+ PROPERTY COMPILE_DEFINITIONS
540548 INT32PTR64
541549 TM_I8
542550 DESC_I8
@@ -585,30 +593,30 @@ if(NOT ${CMAKE_GENERATOR} STREQUAL "Ninja")
585593 # State a dependency on the module
586594 set_source_files_properties (
587595 ${I8_FILES_DIR} /ieee_arithmetic.F95
588- PROPERTIES
596+ PROPERTIES
589597 COMPILE_DEFINITIONS DESC_I8
590598 OBJECT_DEPENDS ${CMAKE_Fortran_MODULE_DIRECTORY} /iso_c_binding.mod
591599 OBJECT_OUTPUTS ${CMAKE_Fortran_MODULE_DIRECTORY} /ieee_arithmetic_la.mod
592600 )
593601
594602 set_source_files_properties (
595603 ${I8_FILES_DIR} /ieee_exceptions.F95
596- PROPERTIES
604+ PROPERTIES
597605 COMPILE_DEFINITIONS DESC_I8
598606 OBJECT_DEPENDS ${CMAKE_Fortran_MODULE_DIRECTORY} /iso_c_binding.mod
599607 OBJECT_OUTPUTS ${CMAKE_Fortran_MODULE_DIRECTORY} /ieee_exceptions_la.mod
600608 )
601609
602610 set_source_files_properties (
603611 norm2_1.F95
604- PROPERTIES
612+ PROPERTIES
605613 OBJECT_DEPENDS ${CMAKE_Fortran_MODULE_DIRECTORY} /ieee_arithmetic.mod
606614 OBJECT_DEPENDS ${CMAKE_Fortran_MODULE_DIRECTORY} /ieee_exceptions.mod
607615 )
608616
609617 set_source_files_properties (
610618 ${I8_FILES_DIR} /norm2_1.F95
611- PROPERTIES
619+ PROPERTIES
612620 OBJECT_DEPENDS ${CMAKE_Fortran_MODULE_DIRECTORY} /ieee_arithmetic_la.mod
613621 OBJECT_DEPENDS ${CMAKE_Fortran_MODULE_DIRECTORY} /ieee_exceptions_la.mod
614622 )
@@ -618,8 +626,8 @@ set_target_properties(flang_static flang_shared
618626 PROPERTIES
619627 ARCHIVE_OUTPUT_DIRECTORY ${FLANG_RTE_LIB_DIR}
620628 )
621-
622- target_include_directories (flang_static
629+
630+ target_include_directories (flang_static
623631 PRIVATE
624632 ${CMAKE_CURRENT_SOURCE_DIR}
625633 ${CMAKE_CURRENT_BINARY_DIR}
@@ -632,20 +640,24 @@ target_include_directories(flang_shared
632640 )
633641
634642# Make sure the compiler is built before we bootstrap
635- add_dependencies (flang_static
643+ add_dependencies (flang_static
636644 flang1
637645 flang2
638646 )
639647
640648# Make sure the compiler is built before we bootstrap
641- add_dependencies (flang_shared
649+ add_dependencies (flang_shared
642650 flang1
643651 flang2
644652 )
645653
646- target_compile_options (flang_static PRIVATE -fPIC)
647-
648- target_compile_options (flang_shared PRIVATE -fPIC)
654+ if (NOT MSVC )
655+ target_compile_options (flang_static PRIVATE -fPIC)
656+ target_compile_options (flang_shared PRIVATE -fPIC)
657+ else ()
658+ set_target_properties (flang_static PROPERTIES LINKER_LANGUAGE CXX)
659+ set_target_properties (flang_shared PROPERTIES LINKER_LANGUAGE CXX)
660+ endif ()
649661
650662target_compile_options (flang_static PUBLIC $<$<COMPILE_LANGUAGE:Fortran>:-Mreentrant>)
651663
0 commit comments