INCLUDE_DIRECTORIES(
	.
	gui
	gui/dataMappers
	gui/validators
	gui/widgets
	models
	${CMAKE_BINARY_DIR}
	${CMAKE_BINARY_DIR}/plugins/LogBook/src 
)

LINK_DIRECTORIES(/src)

SET(LogBook_SRCS
	LogBook.hpp
	LogBook.cpp
	LogBookCommon.hpp
	gui/LogBookConfigDialog.hpp
	gui/LogBookConfigDialog.cpp
	gui/ObservationsDialog.hpp
	gui/ObservationsDialog.cpp
	gui/SessionsDialog.hpp
	gui/SessionsDialog.cpp
	gui/StelDialogLogBook.hpp
	gui/StelDialogLogBook.cpp
	gui/TargetsDialog.hpp
	gui/TargetsDialog.cpp
	gui/dataMappers/BarlowsDataMapper.hpp
	gui/dataMappers/BarlowsDataMapper.cpp
	gui/dataMappers/FiltersDataMapper.hpp
	gui/dataMappers/FiltersDataMapper.cpp
	gui/dataMappers/ImagersDataMapper.hpp
	gui/dataMappers/ImagersDataMapper.cpp
	gui/dataMappers/ObserversDataMapper.hpp
	gui/dataMappers/ObserversDataMapper.cpp
	gui/dataMappers/OcularsDataMapper.hpp
	gui/dataMappers/OcularsDataMapper.cpp
	gui/dataMappers/OpticsDataMapper.hpp
	gui/dataMappers/OpticsDataMapper.cpp
	gui/dataMappers/SitesDataMapper.hpp
	gui/dataMappers/SitesDataMapper.cpp
	gui/validators/LimitingDoubleValidator.hpp
	gui/validators/LimitingDoubleValidator.cpp
	gui/validators/LimitingIntValidator.hpp
	gui/validators/LimitingIntValidator.cpp
	gui/validators/NonEmptyStringValidator.hpp
	gui/validators/NonEmptyStringValidator.cpp
	gui/widgets/LogBookTextEdit.hpp
	gui/widgets/LogBookTextEdit.cpp
	models/FieldConcatModel.hpp
	models/FieldConcatModel.cpp
)

### These source groups are only needed for grouping files in an IDE
SOURCE_GROUP(GUI FILES REGULAR_EXPRESSION .*Dialog*.+pp|ui$)
SOURCE_GROUP(DataMappers FILES REGULAR_EXPRESSION .*DataMapper.+pp)
SOURCE_GROUP(Models FILES REGULAR_EXPRESSION .*Model.+pp)
SOURCE_GROUP(Validators FILES REGULAR_EXPRESSION .*Validator*.+pp)


SET(LogBook_RES ../resources/LogBook.qrc)
QT5_ADD_RESOURCES(LogBook_RES_CXX ${LogBook_RES})

################# compiles .ui files ############
SET(LogBook_UIS
	gui/BarlowsWidget.ui
	gui/FiltersWidget.ui
	gui/ImagersWidget.ui
	gui/LogBookConfigDialog.ui
	gui/ObservationsDialog.ui
	gui/ObserversWidget.ui
	gui/OcularsWidget.ui
	gui/OpticsWidget.ui
	gui/SitesWidget.ui
	gui/SessionsDialog.ui
	gui/TargetsDialog.ui
)
QT5_WRAP_UI(LogBook_UIS_H ${LogBook_UIS})

SET(QT_USE_QTSQL TRUE)
INCLUDE(${QT_USE_FILE})

SET(extLinkerOption ${QT_LIBRARIES} ${OPENGL_LIBRARIES} ${ICONV_LIBRARIES} ${INTL_LIBRARIES})

############### For building the dynamic library ######################
IF(BUILD_DYNAMIC_PLUGINS)
	ADD_LIBRARY(LogBook 
		MODULE ${LogBook_SRCS} ${LogBook_RES_CXX} ${LogBook_UIS_H}
	)

	IF(APPLE)
		FIND_LIBRARY(OPENGL_LIBRARY OpenGL)
		MARK_AS_ADVANCED(OPENGL_LIBRARY)
		SET_TARGET_PROPERTIES(LogBook 
			PROPERTIES LINK_FLAGS "-undefined dynamic_lookup" SUFFIX ".dylib"
		)
	ENDIF(APPLE)

	IF(WIN32)
		SET_TARGET_PROPERTIES(LogBook 
			PROPERTIES LINK_FLAGS "-enable-runtime-pseudo-reloc -Wl,--allow-multiple-definition" 
		)
		SET(StelMain stelMain)
	ELSE(WIN32)
		SET(StelMain)
	ENDIF(WIN32)

	TARGET_LINK_LIBRARIES(LogBook ${StelMain} ${extLinkerOption})
	INSTALL(TARGETS LogBook DESTINATION "modules/${PACKAGE}")
ENDIF()

############### For building the static library ######################
IF(BUILD_STATIC_PLUGINS)
	ADD_LIBRARY(LogBook-static 
		STATIC ${LogBook_SRCS} ${LogBook_RES_CXX} ${LogBook_UIS_H}
	)
	SET_TARGET_PROPERTIES(LogBook-static PROPERTIES OUTPUT_NAME "LogBook")
	TARGET_LINK_LIBRARIES(LogBook-static ${StelMain} ${extLinkerOption})
	SET_TARGET_PROPERTIES(LogBook-static PROPERTIES COMPILE_FLAGS "-DQT_STATICPLUGIN")
	ADD_DEPENDENCIES(AllStaticPlugins LogBook-static)
ENDIF()

