enable_language(C)

function(check_components value)
  get_cmake_property(comp COMPONENTS)
  if(NOT comp STREQUAL value)
    message(FATAL_ERROR "Expected value of COMPONENTS:\n  ${value}\nActual value of COMPONENTS:\n  ${comp}")
  endif()
endfunction()

if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
  add_library(tgt MODULE obj1.c)
else()
  add_executable(tgt main.c)
endif()

install(TARGETS tgt
  RUNTIME_DEPENDENCIES
  RUNTIME DESTINATION bin COMPONENT bin1
  LIBRARY DESTINATION lib COMPONENT lib1
  FRAMEWORK DESTINATION fw COMPONENT fw1
  )
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
  check_components("bin1;fw1;lib1")
else()
  check_components("bin1;lib1")
endif()

install(RUNTIME_DEPENDENCY_SET deps
  RUNTIME DESTINATION bin COMPONENT bin2
  LIBRARY DESTINATION lib COMPONENT lib2
  FRAMEWORK DESTINATION fw COMPONENT fw2
  )
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
  check_components("bin1;fw1;fw2;lib1;lib2")
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
  check_components("bin1;bin2;lib1")
elseif()
  check_components("bin1;lib1;lib2")
endif()