function(LinkAppleFrameworks TARGET)
    target_link_libraries(${TARGET}
                          PUBLIC "-framework CoreFoundation"
                          PUBLIC "-framework Foundation"
                          PUBLIC "-framework CoreImage"
                          PUBLIC "-framework CoreVideo"
                          PUBLIC "-framework CoreGraphics"
                          PUBLIC "-framework Metal"
                          PUBLIC "-framework MetalPerformanceShaders"
                          PUBLIC "-framework MetalKit"
                          PUBLIC "-framework IOSurface"
                          PUBLIC "-framework QuartzCore"
                          PUBLIC "-lstdc++"
                          PUBLIC c++
                          PUBLIC c
    )

    if(IOS)
        target_link_libraries(${TARGET} PUBLIC "-framework ARKit")
    endif()

    # Locate system libraries on iOS
    find_library(UIKIT UIKit)
    find_library(FOUNDATION Foundation)
    find_library(MOBILECORESERVICES MobileCoreServices)
    find_library(CFNETWORK CFNetwork)
    find_library(SYSTEMCONFIGURATION SystemConfiguration)
	find_library(APPKIT AppKit)
	find_library(IOSURFACE IOSurface)
	find_library(QUARTZ Quartz)

    # link the frameworks located above
    if(IOS)
    	target_link_libraries(${TARGET} PUBLIC ${UIKIT})
   		target_link_libraries(${TARGET} PUBLIC ${MOBILECORESERVICES})
   	else()
        target_link_libraries(${TARGET} PUBLIC ${APPKIT})
        target_link_libraries(${TARGET} PUBLIC ${QUARTZ})
    endif()
    target_link_libraries(${TARGET} PUBLIC ${IOSURFACE})
    target_link_libraries(${TARGET} PUBLIC ${FOUNDATION})
    target_link_libraries(${TARGET} PUBLIC ${CFNETWORK})
    target_link_libraries(${TARGET} PUBLIC ${SYSTEMCONFIGURATION})
endfunction()
