Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
flang/module/CMakeLists.txt
- This file was copied from flang/tools/f18/CMakeLists.txt.
set(LLVM_LINK_COMPONENTS | |||||
FrontendOpenACC | |||||
FrontendOpenMP | |||||
Support | |||||
) | |||||
set(MODULES | set(MODULES | ||||
"__fortran_builtins" | "__fortran_builtins" | ||||
"__fortran_ieee_exceptions" | "__fortran_ieee_exceptions" | ||||
"__fortran_type_info" | "__fortran_type_info" | ||||
"ieee_arithmetic" | "ieee_arithmetic" | ||||
"ieee_exceptions" | "ieee_exceptions" | ||||
"ieee_features" | "ieee_features" | ||||
"iso_c_binding" | "iso_c_binding" | ||||
"iso_fortran_env" | "iso_fortran_env" | ||||
"omp_lib" | "omp_lib" | ||||
"__fortran_builtins" | "__fortran_builtins" | ||||
"__fortran_type_info" | "__fortran_type_info" | ||||
) | ) | ||||
# Create module files directly from the top-level module source directory | # Create module files | ||||
foreach(filename ${MODULES}) | foreach(filename ${MODULES}) | ||||
set(base ${FLANG_INTRINSIC_MODULES_DIR}/${filename}) | set(base ${FLANG_INTRINSIC_MODULES_DIR}/${filename}) | ||||
sscalpone: I don't know the answer: Do you need to keep the ${FLANG_INTRINSIC_MODULES_DIR} prefix? | |||||
if(${filename} STREQUAL "__fortran_builtins") | if(${filename} STREQUAL "__fortran_builtins") | ||||
set(depends "") | set(depends "") | ||||
else() | else() | ||||
set(depends ${FLANG_INTRINSIC_MODULES_DIR}/__fortran_builtins.mod) | set(depends ${FLANG_INTRINSIC_MODULES_DIR}/__fortran_builtins.mod) | ||||
if(NOT ${filename} STREQUAL "__fortran_type_info") | if(NOT ${filename} STREQUAL "__fortran_type_info") | ||||
set(depends ${FLANG_INTRINSIC_MODULES_DIR}/__fortran_type_info.mod) | set(depends ${FLANG_INTRINSIC_MODULES_DIR}/__fortran_type_info.mod) | ||||
endif() | endif() | ||||
if(${filename} STREQUAL "ieee_arithmetic" OR | if(${filename} STREQUAL "ieee_arithmetic" OR | ||||
${filename} STREQUAL "ieee_exceptions") | ${filename} STREQUAL "ieee_exceptions") | ||||
set(depends ${FLANG_INTRINSIC_MODULES_DIR}/__fortran_ieee_exceptions.mod) | set(depends ${FLANG_INTRINSIC_MODULES_DIR}/__fortran_ieee_exceptions.mod) | ||||
endif() | endif() | ||||
endif() | endif() | ||||
add_custom_command(OUTPUT ${base}.mod | add_custom_command(OUTPUT ${base}.mod | ||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${FLANG_INTRINSIC_MODULES_DIR} | COMMAND ${CMAKE_COMMAND} -E make_directory ${FLANG_INTRINSIC_MODULES_DIR} | ||||
COMMAND flang-new -fc1 -fsyntax-only -module-dir ${FLANG_INTRINSIC_MODULES_DIR} | COMMAND flang-new -fc1 -fsyntax-only -module-dir ${FLANG_INTRINSIC_MODULES_DIR} | ||||
${FLANG_SOURCE_DIR}/module/${filename}.f90 | ${FLANG_SOURCE_DIR}/module/${filename}.f90 | ||||
DEPENDS flang-new ${FLANG_SOURCE_DIR}/module/${filename}.f90 ${depends} | DEPENDS flang-new ${FLANG_SOURCE_DIR}/module/${filename}.f90 ${depends} | ||||
) | ) | ||||
add_custom_command(OUTPUT ${base}.f18.mod | add_custom_command(OUTPUT ${base}.f18.mod | ||||
DEPENDS ${base}.mod | DEPENDS ${base}.mod | ||||
COMMAND ${CMAKE_COMMAND} -E copy ${base}.mod ${base}.f18.mod) | COMMAND ${CMAKE_COMMAND} -E copy ${base}.mod ${base}.f18.mod) | ||||
list(APPEND MODULE_FILES ${base}.mod ${base}.f18.mod) | list(APPEND MODULE_FILES ${base}.mod ${base}.f18.mod) | ||||
Not Done ReplyInline ActionsWhy the name change? *.mod, as you know, is not a source file (although in flang it looks like one). kiranchandramohan: Why the name change? `*.mod`, as you know, is not a source file (although in flang it looks… | |||||
My bad, I misread this. Thanks for catching it! awarzynski: My bad, I misread this. Thanks for catching it! | |||||
install(FILES ${base}.mod ${base}.f18.mod DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/flang") | install(FILES ${base}.mod ${base}.f18.mod DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/flang") | ||||
endforeach() | endforeach() | ||||
add_custom_target(module_files ALL DEPENDS ${MODULE_FILES}) | set(FLANG_MODULES_DEPENDS | ||||
flang-new | |||||
# This flang shell script will only work in a POSIX shell. | ) | ||||
if (NOT WIN32) | list(APPEND FLANG_MODULE_DEPENDS ${MODULE_FILES}) | ||||
add_custom_command( | |||||
OUTPUT ${CMAKE_BINARY_DIR}/bin/flang | |||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/flang | |||||
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/flang ${CMAKE_BINARY_DIR}/bin) | |||||
add_custom_target(flang ALL DEPENDS ${CMAKE_BINARY_DIR}/bin/flang) | |||||
install(PROGRAMS ${CMAKE_BINARY_DIR}/bin/flang DESTINATION "${CMAKE_INSTALL_BINDIR}") | |||||
endif() | |||||
# TODO Move this to a more suitable location | add_custom_target(module_files ALL DEPENDS ${FLANG_MODULE_DEPENDS}) | ||||
file(COPY ${FLANG_SOURCE_DIR}/module/omp_lib.h DESTINATION "${CMAKE_BINARY_DIR}/include/flang/OpenMP/" FILE_PERMISSIONS OWNER_READ OWNER_WRITE) |
I don't know the answer: Do you need to keep the ${FLANG_INTRINSIC_MODULES_DIR} prefix?