find_package(OpenGL REQUIRED)

add_library(lincity_gui  STATIC
		Button.cpp
		CheckButton.cpp
		Child.cpp
		Color.cpp
		Component.cpp
		ComponentFactory.cpp
		ComponentLoader.cpp
		Desktop.cpp
		Document.cpp
		DocumentImage.cpp
		Event.cpp
		FilledRectangle.cpp
		Filter.cpp
		FontManager.cpp
		Gradient.cpp
		Image.cpp
		Panel.cpp
		Paragraph.cpp
		RadioButtonGroup.cpp
		Rect2D.cpp
		ScrollBar.cpp
		ScrollView.cpp
		Style.cpp
		SwitchComponent.cpp
		TableLayout.cpp
		TextureManager.cpp
		TooltipManager.cpp
		Vector2.cpp
		Window.cpp
		WindowManager.cpp
		XmlReader.cpp

		Button.hpp
		CheckButton.hpp
		Child.hpp
		Color.hpp
		Component.hpp
		ComponentFactory.hpp
		ComponentLoader.hpp
		Desktop.hpp
		Document.hpp
		DocumentElement.hpp
		DocumentImage.hpp
		Event.hpp
		FilledRectangle.hpp
		Filter.hpp
		FontManager.hpp
		Gradient.hpp
		Image.hpp
		Painter.hpp
		Panel.hpp
		Paragraph.hpp
		RadioButtonGroup.hpp
		Rect2D.hpp
		ScrollBar.hpp
		ScrollView.hpp
		Signal.hpp
		Style.hpp
		SwitchComponent.hpp
		TableLayout.hpp
		Texture.hpp
		TextureManager.hpp
		TooltipManager.hpp
		Vector2.hpp
		Window.hpp
		WindowManager.hpp
		XmlReader.hpp

		PainterGL/PainterGL.cpp
		PainterGL/PainterGL.hpp
		PainterGL/TextureGL.cpp
		PainterGL/TextureGL.hpp
		PainterGL/TextureManagerGL.cpp
		PainterGL/TextureManagerGL.hpp

		PainterSDL/PainterSDL.cpp
		PainterSDL/PainterSDL.hpp
		PainterSDL/TextureSDL.cpp
		PainterSDL/TextureSDL.hpp
		PainterSDL/TextureManagerSDL.cpp
		PainterSDL/TextureManagerSDL.hpp
		)

add_library(LinCity::gui ALIAS lincity_gui)

target_link_libraries(lincity_gui
		PUBLIC
		LibXml2::LibXml2
		$<IF:$<TARGET_EXISTS:SDL2::SDL2>,SDL2::SDL2,SDL2::SDL2-static>
		$<IF:$<TARGET_EXISTS:SDL2_ttf::SDL2_ttf>,SDL2_ttf::SDL2_ttf,SDL2_ttf::SDL2_ttf-static>
		OpenGL::GL
		PRIVATE
		tinygettext
		physfsrwops
		SDL2::SDL2_gfx
		${PHYSFS_LIBRARY}
)

target_include_directories(lincity_gui
		PRIVATE
		${PHYSFS_INCLUDE_DIR}
		PUBLIC
		${LIBXML2_INCLUDE_DIR})
target_link_libraries(lincity_gui PRIVATE ${PHYSFS_LIBRARY})

include_directories(.)
