file(GLOB GX_SOURCES
    "*.cpp"
    "buffer/*.cpp"
    "font/*.cpp"
    "shader/*.cpp"
    "texture/*.cpp"
)

if(WHOA_SYSTEM_WIN)
    file(GLOB D3D_SOURCES "d3d/*.cpp")
    list(APPEND GX_SOURCES ${D3D_SOURCES})
endif()

if(WHOA_SYSTEM_MAC)
    file(GLOB GLL_SOURCES "gll/*.cpp" "gll/*.mm")
    set_source_files_properties(${GLL_SOURCES}
        PROPERTIES COMPILE_FLAGS "-x objective-c++"
    )
    list(APPEND GX_SOURCES ${GLL_SOURCES})
endif()

add_library(gx STATIC ${GX_SOURCES})

target_include_directories(gx
    PRIVATE
        ${CMAKE_SOURCE_DIR}/src
)

target_link_libraries(gx
    PRIVATE
        event
        math
        model
        ui
        util
    PUBLIC
        bc
        freetype-2.0
        storm
        tempest
)

if(WHOA_SYSTEM_WIN)
    target_link_libraries(gx
        PRIVATE
            d3d9.lib
    )
endif()

if(WHOA_SYSTEM_MAC)
    target_link_libraries(gx
        PRIVATE
            "-framework AppKit"
            "-framework OpenGL"
    )
endif()
