1set(LLVM_LINK_COMPONENTS 2 FrontendOpenACC 3 FrontendOpenMP 4 Support 5 ) 6 7set(MODULES 8 "__fortran_builtins" 9 "__fortran_ieee_exceptions" 10 "__fortran_type_info" 11 "ieee_arithmetic" 12 "ieee_exceptions" 13 "ieee_features" 14 "iso_c_binding" 15 "iso_fortran_env" 16 "omp_lib" 17 "__fortran_builtins" 18 "__fortran_type_info" 19) 20 21# Create module files directly from the top-level module source directory 22foreach(filename ${MODULES}) 23 set(base ${FLANG_INTRINSIC_MODULES_DIR}/${filename}) 24 if(${filename} STREQUAL "__fortran_builtins") 25 set(depends "") 26 else() 27 set(depends ${FLANG_INTRINSIC_MODULES_DIR}/__fortran_builtins.mod) 28 if(NOT ${filename} STREQUAL "__fortran_type_info") 29 set(depends ${FLANG_INTRINSIC_MODULES_DIR}/__fortran_type_info.mod) 30 endif() 31 if(${filename} STREQUAL "ieee_arithmetic" OR 32 ${filename} STREQUAL "ieee_exceptions") 33 set(depends ${FLANG_INTRINSIC_MODULES_DIR}/__fortran_ieee_exceptions.mod) 34 endif() 35 endif() 36 add_custom_command(OUTPUT ${base}.mod 37 COMMAND ${CMAKE_COMMAND} -E make_directory ${FLANG_INTRINSIC_MODULES_DIR} 38 COMMAND flang-new -fc1 -fsyntax-only -module-dir ${FLANG_INTRINSIC_MODULES_DIR} 39 ${FLANG_SOURCE_DIR}/module/${filename}.f90 40 DEPENDS flang-new ${FLANG_SOURCE_DIR}/module/${filename}.f90 ${depends} 41 ) 42 add_custom_command(OUTPUT ${base}.f18.mod 43 DEPENDS ${base}.mod 44 COMMAND ${CMAKE_COMMAND} -E copy ${base}.mod ${base}.f18.mod) 45 list(APPEND MODULE_FILES ${base}.mod ${base}.f18.mod) 46 install(FILES ${base}.mod ${base}.f18.mod DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/flang") 47endforeach() 48 49add_custom_target(module_files ALL DEPENDS ${MODULE_FILES}) 50 51# This flang shell script will only work in a POSIX shell. 52if (NOT WIN32) 53 configure_file( 54 ${CMAKE_CURRENT_SOURCE_DIR}/flang-to-external-fc.in 55 ${CMAKE_BINARY_DIR}/bin/flang-to-external-fc 56 @ONLY 57 ) 58 add_custom_target(flang-to-external-fc ALL DEPENDS ${CMAKE_BINARY_DIR}/bin/flang-to-external-fc) 59 install(PROGRAMS ${CMAKE_BINARY_DIR}/bin/flang-to-external-fc DESTINATION "${CMAKE_INSTALL_BINDIR}") 60endif() 61 62# TODO Move this to a more suitable location 63file(COPY ${FLANG_SOURCE_DIR}/module/omp_lib.h DESTINATION "${CMAKE_BINARY_DIR}/include/flang/OpenMP/" FILE_PERMISSIONS OWNER_READ OWNER_WRITE) 64