macro(flightgear_component name sources)
    set(fc ${name})
    set(fh ${name})
    foreach(s ${sources})
        set_property(GLOBAL
            APPEND PROPERTY FG_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/${s}")
        set(fc "${fc}#${CMAKE_CURRENT_SOURCE_DIR}/${s}")

        # becuase we can't require CMake 3.13, we can't use CMP0076
        # so we need to manually resolve relative paths into absolute paths
        target_sources(fgfsObjects PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/${s})

    endforeach()

    foreach(h ${ARGV2})
        set_property(GLOBAL
            APPEND PROPERTY FG_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/${h}")
        set(fh "${fh}#${CMAKE_CURRENT_SOURCE_DIR}/${h}")

        # becuase we can't require CMake 3.13, we can't use CMP0076
        # so we need to manually resolve relative paths into absolute paths
        target_sources(fgfsObjects PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/${h})
    endforeach()

    # third argument is TEST_SOURCES
    foreach(t ${ARGV3})
        set_property(GLOBAL
            APPEND PROPERTY FG_TEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/${t}")
        set(fc "${fh}#${CMAKE_CURRENT_SOURCE_DIR}/${t}")
    endforeach()

    set_property(GLOBAL APPEND PROPERTY FG_GROUPS_C "${fc}@")
    set_property(GLOBAL APPEND PROPERTY FG_GROUPS_H "${fh}@")

endmacro()