include (LibAddMacros)

if (CMAKE_MAJOR_VERSION EQUAL 2 AND CMAKE_MINOR_VERSION EQUAL 8)
	if (CMAKE_PATCH_VERSION LESS 12)
		# needed for PRIVATE and PUBLIC flags in target_link_libraries
		# also in tests subdirectory
		# see also https://cmake.org/cmake/help/v3.0/policy/CMP0023.html
		remove_binding(jna "cmake 2.8.12 needed for glib")
		return()
	endif()
endif()

find_package (PkgConfig)
pkg_check_modules (GOBJECT gobject-2.0>=2.36)

if (NOT GOBJECT_FOUND)
	set (REGEX "gi_.*")
	list_filter(BINDINGS REGEX)
	remove_binding (glib "No gobject found using pkg-config, also remove gi bindings because they depend on it")
	remove_binding (gsettings "Because they depend on glib.")
else()
	message(STATUS "Include Binding glib")

	file (GLOB GELEKTRA_HDR_FILES *.h)
	file (GLOB GELEKTRA_SRC_FILES *.c)
	add_headers (ELEKTRA_HEADERS)
	set (SOURCES ${GELEKTRA_SRC_FILES} ${GELEKTRA_HDR_FILES} ${ELEKTRA_HEADERS})

	add_library (${GELEKTRA_LIBRARY} SHARED ${SOURCES})

	target_include_directories (${GELEKTRA_LIBRARY} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
	target_include_directories (${GELEKTRA_LIBRARY} SYSTEM PUBLIC ${GOBJECT_INCLUDE_DIRS})

	target_compile_options (${GELEKTRA_LIBRARY} PUBLIC ${GOBJECT_CFLAGS_OTHER})

	target_link_libraries (${GELEKTRA_LIBRARY} PUBLIC elektra-core elektra-kdb)
	target_link_libraries (${GELEKTRA_LIBRARY} PUBLIC ${GOBJECT_LDFLAGS})

	install (
		TARGETS ${GELEKTRA_LIBRARY}
		LIBRARY DESTINATION lib${LIB_SUFFIX}
	)

	install (
		FILES ${GELEKTRA_HDR_FILES}
		DESTINATION include/${TARGET_INCLUDE_FOLDER}
	)

	configure_file (
		"${CMAKE_CURRENT_SOURCE_DIR}/gelektra-constants.h.in"
		"${CMAKE_CURRENT_BINARY_DIR}/gelektra-constants.h"
		@ONLY
	)

	configure_file (
		"${CMAKE_CURRENT_SOURCE_DIR}/gelektra.pc.in"
		"${CMAKE_CURRENT_BINARY_DIR}/${GELEKTRA_LIBRARY}.pc"
		@ONLY
	)

	install (
		FILES "${CMAKE_CURRENT_BINARY_DIR}/${GELEKTRA_LIBRARY}.pc"
		DESTINATION lib${LIB_SUFFIX}/${TARGET_PKGCONFIG_FOLDER}
	)

	if (BUILD_TESTING)
		add_subdirectory (tests)
	endif (BUILD_TESTING)
endif()
