SET(SRC_LIST
	character.c
	config.c
	gamestate.c
	internal.c
	libsuperderpy.c
	mainloop.c
	maths.c
	particle.c
	shader.c
	timeline.c
	tween.c
	utils.c
)
if (EMSCRIPTEN)
	list(APPEND SRC_LIST emscripten-audio-stream.c)
endif()

if (LIBSUPERDERPY_EMBEDDED_ALLEGRO)
	option(SHARED "Build embedded Allegro as a shared library" OFF) # Allegro doesn't namespace this...
	add_subdirectory("3rdparty/allegro5" EXCLUDE_FROM_ALL)
	set_property(TARGET "allegro" PROPERTY POSITION_INDEPENDENT_CODE ON)
	set_property(TARGET "allegro_font" PROPERTY POSITION_INDEPENDENT_CODE ON)
	set_property(TARGET "allegro_ttf" PROPERTY POSITION_INDEPENDENT_CODE ON)
	set_property(TARGET "allegro_primitives" PROPERTY POSITION_INDEPENDENT_CODE ON)
	set_property(TARGET "allegro_audio" PROPERTY POSITION_INDEPENDENT_CODE ON)
	set_property(TARGET "allegro_acodec" PROPERTY POSITION_INDEPENDENT_CODE ON)
	set_property(TARGET "allegro_image" PROPERTY POSITION_INDEPENDENT_CODE ON)
	set_property(TARGET "allegro_color" PROPERTY POSITION_INDEPENDENT_CODE ON)
	set_property(TARGET "allegro_video" PROPERTY POSITION_INDEPENDENT_CODE ON)
	set_property(TARGET "allegro_main" PROPERTY POSITION_INDEPENDENT_CODE ON)
endif (LIBSUPERDERPY_EMBEDDED_ALLEGRO)

if (LIBSUPERDERPY_IMGUI)
	set(IMGUI_STATIC ON CACHE STRING "" FORCE)
	add_subdirectory(3rdparty/cimgui EXCLUDE_FROM_ALL)
	set_property(TARGET "cimgui" PROPERTY POSITION_INDEPENDENT_CODE ON)

	list(APPEND SRC_LIST imgui/imgui_impl_allegro5.c)
endif (LIBSUPERDERPY_IMGUI)

if (LIBSUPERDERPY_STATIC)
	add_library("libsuperderpy" STATIC ${SRC_LIST})
	set_property(TARGET "libsuperderpy" PROPERTY POSITION_INDEPENDENT_CODE ON)
else (LIBSUPERDERPY_STATIC)
	add_library("libsuperderpy" SHARED ${SRC_LIST})
endif (LIBSUPERDERPY_STATIC)

SET_TARGET_PROPERTIES("libsuperderpy" PROPERTIES PREFIX "")

if (NOT LIBSUPERDERPY_STATIC_GAMESTATES)
	if (WIN32 AND LIBSUPERDERPY_DLFCN)
		set(BUILD_SHARED_LIBS OFF CACHE STRING "" FORCE)
		add_subdirectory(3rdparty/dlfcn-win32 EXCLUDE_FROM_ALL)
		set_property(TARGET "dl" PROPERTY POSITION_INDEPENDENT_CODE ON)
	endif(WIN32 AND LIBSUPERDERPY_DLFCN)
	target_link_libraries("libsuperderpy" dl)
endif()

target_link_libraries("libsuperderpy" ${Allegro5TTF_LIBRARIES} ${Allegro5Font_LIBRARIES} ${Allegro5Primitives_LIBRARIES} ${Allegro5ACodec_LIBRARIES} ${Allegro5Audio_LIBRARIES} ${Allegro5Video_LIBRARIES} ${Allegro5Color_LIBRARIES} ${Allegro5Image_LIBRARIES} ${Allegro5_LIBRARIES} m)

if (LIBSUPERDERPY_IMGUI)
	target_link_libraries("libsuperderpy" cimgui)
endif (LIBSUPERDERPY_IMGUI)

if (WIN32 AND LIBSUPERDERPY_DLFCN)
	target_link_libraries("libsuperderpy" psapi)
endif (WIN32 AND LIBSUPERDERPY_DLFCN)

if (ANDROID)
	target_link_libraries("libsuperderpy" log)
endif (ANDROID)

if (NOT LIBSUPERDERPY_STATIC)
	install(TARGETS "libsuperderpy" DESTINATION ${CMAKE_INSTALL_PREFIX}/${LIB_DIR})
endif (NOT LIBSUPERDERPY_STATIC)
