if(NOT HAVE_Fortran_FILESYSTEM)
  return()
endif()

set_property(DIRECTORY PROPERTY LABELS "Fortran")

set(test_symlink_dir ${CMAKE_CURRENT_BINARY_DIR}/symlink_test_dir)
file(MAKE_DIRECTORY ${test_symlink_dir})
file(GENERATE OUTPUT ${test_symlink_dir}/cmake-test.txt CONTENT "I was generated by CMake")

set(test_symlink_dir2 ${test_symlink_dir}/link.dir)
file(CREATE_LINK ${test_symlink_dir} ${test_symlink_dir2} SYMBOLIC)

set(test_symlink_file ${test_symlink_dir2}/cmake-test.txt.link)
file(CREATE_LINK ${test_symlink_dir2}/cmake-test.txt ${test_symlink_file} SYMBOLIC)
message(VERBOSE "CMake test link file ${test_symlink_file2}")

add_executable(test_is_symlink test_is_symlink.f90)
add_test(NAME Fortran_is_symlink COMMAND test_is_symlink ${test_symlink_file})

add_executable(test_symlink test_symlink.f90)
add_test(NAME Fortran_symlink
COMMAND test_symlink $<OR:$<BOOL:${ffilesystem_WIN32_SYMLINK}>,$<AND:$<BOOL:${WIN32}>,$<NOT:$<BOOL:${HAVE_CXX_FILESYSTEM}>>>>)

set_property(TEST Fortran_symlink PROPERTY SKIP_RETURN_CODE 77)

foreach(t IN ITEMS is_symlink symlink)
  target_link_libraries(test_${t} PRIVATE ffilesystem)
  target_compile_options(test_${t} PRIVATE ${${PROJECT_NAME}_fortran_test_flags})
  set_property(TARGET test_${t} PROPERTY LINKER_LANGUAGE Fortran)
endforeach()
