set(LIBCLINICA_SRC
    AboutDialog.vala
    Application.vala
    AuthDomain.vala
    AuthenticationDialog.vala
    BackupEngine.vala
    Buildable.vala
    Builder.vala
    CalendarEventList.vala
    CalendarHeader.vala
    CalendarToolbar.vala
    Calendar.vala
    CalendarView.vala
    CalendarWindow.vala
    CoreActivatable.vala
    DataProvider.vala
    DataServer.vala
    DateHandler.vala
    DateSwitcher.vala
    DateTimePicker.vala
    Day.vala
    DoctorContextMenu.vala
    DoctorEditor.vala
    DoctorFilteredStore.vala
    DoctorListPage.vala
    DoctorListStore.vala
    DoctorListView.vala
    Doctor.vala
    EmptyVisitIterator.vala
    EventDetail.vala
    EventEditor.vala
    EventIterator.vala
    EventListStore.vala
    Event.vala
    FileDetail.vala
    FileObject.vala
    FileStore.vala
    FindEntry.vala
    ImportDialog.vala
    LocalFileStore.vala
    LocalMedicinesDatabase.vala
    MedicineBrowserDialog.vala
    MedicineDetailDialog.vala
    MedicineEditor.vala
    MedicineSearchEngine.vala
    MedicineSearchPage.vala
    MedicineTreeView.vala
    Medicine.vala
    NetworkedDataProvider.vala
    Page.vala
    PatientContextMenu.vala
    PatientDetail.vala
    PatientEditorActivatable.vala
    PatientEditor.vala
    PatientEntry.vala
    PatientFilteredStore.vala
    PatientListPage.vala
    PatientListStore.vala
    PatientListView.vala
    Patient.vala
    ResourceManager.vala
    Service.vala
    SettingsManager.vala
    Settings.vala
    Sidebar.vala
    SidebarCalendarEntry.vala
    SidebarEntry.vala
    SidebarPageEntry.vala
    SqliteDataProvider.vala
    SqliteDoctorIterator.vala
    SqlitePatientIterator.vala
    SqliteVisitIterator.vala
    StartPage.vala
    Toolbar.vala
    ToolbarItem.vala
    UIManager.vala
    UserInterfaceActivatable.vala
    UserInterface.vala
    Utils.vala
    VisitActions.vala
    VisitBrowser.vala
    VisitDetail.vala
    VisitFileManager.vala
    VisitListStore.vala
    VisitPage.vala
    VisitPrinter.vala
    VisitSchedulerDialog.vala
    VisitTab.vala
    VisitToolbar.vala
    Visit.vala
    WaitDialog.vala
)

IF (NOT DISABLE_PLUGINS)
  set (LIBCLINICA_PLUGINS_SRC
      PluginEngine.vala
      PluginManager.vala
  )

  set (LIBCLINICA_PLUGINS_SRC_C
      CoreActivatableExtensionSet.c
      PatientEditorExtensionSet.c
      UserInterfaceExtensionSet.c
  )
ENDIF (NOT DISABLE_PLUGINS)

set(LIBCLINICA_PACKAGES
	${CLINICA_USED_PACKAGES}
)

# Libclinica building steps
set (CFLAGS
	${DEPS_CFLAGS}
	${DEPS_CFLAGS_OTHER}
)

vala_precompile (LIBCLINICA_C libclinica-vala
	${LIBCLINICA_SRC}
        ${LIBCLINICA_PLUGINS_SRC}
PACKAGES
	${LIBCLINICA_PACKAGES}
GENERATE_VAPI
	clinica
GENERATE_HEADER
    clinica
OPTIONS
	${CLINICA_VALAFLAGS}
	--thread
	--gir=Clinica-0.3.gir
	--library=Clinica-0.3
)

add_custom_command (
	OUTPUT Resources.c
	COMMAND ${GLIB_COMPILE_RESOURCES} --generate --target Resources.c ${CMAKE_SOURCE_DIR}/data/clinica.gresource.xml --sourcedir ${CMAKE_SOURCE_DIR}/data/resources
)

add_definitions (${CLINICA_USED_CFLAGS})
add_library(clinica SHARED ${LIBCLINICA_C} ${LIBCLINICA_PLUGINS_SRC_C} Resources.c)
set_target_properties (clinica
	PROPERTIES
	VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}"
	SOVERSION "${MAJOR_VERSION}"
)
target_link_libraries(clinica ${CLINICA_USED_LIBRARIES})

add_custom_command (
	OUTPUT Clinica-0.3.typelib
	COMMAND ${G_IR_COMPILER} --shared-library libclinica.so --output Clinica-0.3.typelib Clinica-0.3.gir
	DEPENDS clinica
)
add_custom_target (clinica-gir ALL DEPENDS Clinica-0.3.typelib)

install (FILES ${CMAKE_BINARY_DIR}/libclinica/Clinica-0.3.gir
	DESTINATION share/gir-1.0
)

install (FILES ${CMAKE_BINARY_DIR}/libclinica/Clinica-0.3.typelib
	DESTINATION lib/girepository-1.0
)

install (TARGETS clinica
	LIBRARY DESTINATION lib
	RUNTIME DESTINATION bin
	ARCHIVE DESTINATION lib)

install (FILES ${CMAKE_BINARY_DIR}/libclinica/clinica.h
	DESTINATION include
)
