# A list of files which are generated by Thrift
set(POLONAISE_HEADERS
	${GENERATED_CODE}/polonaise/polonaise_types.h
	${GENERATED_CODE}/polonaise/polonaise_constants.h
	${GENERATED_CODE}/polonaise/Polonaise.h)

set(POLONAISE_SOURCES
	${GENERATED_CODE}/polonaise/polonaise_constants.cpp
	${GENERATED_CODE}/polonaise/Polonaise.cpp
	${GENERATED_CODE}/polonaise/polonaise_types.cpp)

# A command which defines how to generate sources
add_custom_command(
	OUTPUT ${POLONAISE_HEADERS} ${POLONAISE_SOURCES}
	COMMAND ${CMAKE_COMMAND} -E make_directory ${GENERATED_CODE}/polonaise
	COMMAND ${THRIFT_COMPILER} -strict -out ${GENERATED_CODE}/polonaise --gen cpp:include_prefix polonaise/polonaise.thrift
	WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
	COMMENT "Generating sources using Thrift compiler"
	DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/polonaise/polonaise.thrift)

# version.h file
configure_file(version.h.in "${CMAKE_CURRENT_BINARY_DIR}/version.h")

# The polonaise library
include_directories(${GENERATED_CODE})
include_directories(${THRIFT_INCLUDE_DIRS})
add_library(polonaise STATIC ${POLONAISE_SOURCES})
target_link_libraries(polonaise ${THRIFT_LIBRARIES})
set_target_properties(polonaise PROPERTIES
	PUBLIC_HEADER "${POLONAISE_HEADERS};${CMAKE_CURRENT_BINARY_DIR}/version.h"
	OUTPUT_NAME_RELEASE polonaise
	OUTPUT_NAME_DEBUG   polonaise-dbg)

# Installation instructions
install(TARGETS polonaise
	EXPORT PolonaiseTargets
	LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
	ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
	PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/polonaise")
