###################### # # Copyright (C) 2010 - 2015 EngSaS - Engineering Solutions and Services Langenbach. All rights reserved. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301 USA. # ###################### ADD_SUBDIRECTORY(icons) IF(BINDINGS_QT4) SET(QT_USE_QTXML TRUE) SET(QT_USE_QTXMLPATTERNS TRUE) SET(QT_USE_QTSQL TRUE) SET(QT_USE_QTNETWORK TRUE) ENDIF(BINDINGS_QT4) IF(L10N_DE) SET(libengsas_TS ${libengsas_TS} lang/libengsas-core_de.ts) ENDIF(L10N_DE) IF(L10N_EN) SET(libengsas_TS ${libengsas_TS} lang/libengsas-core_en.ts) ENDIF(L10N_EN) IF(L10N_FR) SET(libengsas_TS ${libengsas_TS} lang/libengsas-core_fr.ts) ENDIF(L10N_FR) SET(libengsas_UI internal/esearchexternalapp.ui esettingsdialog.ui internal/emimetypesettingswidget.ui internal/esettingsgeneral.ui edependenciesdialog.ui esetupwizard.ui internal/esqllogindialog.ui edbupdatewidget.ui edbbackup.ui edbsettings.ui eaboutdialog.ui eupdatenoticedialog.ui eupdatenoticesettings.ui emodulestatedialog.ui emodulestatewidget.ui internal/efileservicesettings.ui edbsettingswidget.ui internal/espreadsheetsettings.ui internal/eribbonsubmenuwidget.ui eribbonwidget.ui ) SET(libengsas_CPP # base classes eglobal.h elibrary.cpp eversion.cpp eobject.cpp epart.h internal/esettings.cpp eabstractitemmodel.cpp esettingsmodel.cpp esettingsmodelitem.cpp internal/emimemodelitem.h internal/emimeprogram.cpp internal/emimetype.cpp internal/emimetypemodel.cpp internal/esearchexternalapp.cpp eopenfileexternal.cpp internal/emimetypesettingswidget.cpp internal/esettingsgeneral.cpp ehelpcenter.cpp ehelpcentersetup.h exmlitem.cpp exmlmodel.cpp exmlparseritem.cpp exmlstandardrootitem.cpp edependencyitem.cpp edependencymodel.cpp ecmdlineargs.cpp ecmdlineoption.cpp edependenciesdialog.cpp eaboutdialog.cpp eaboutperson.cpp eaboutmodel.cpp esetupwizard.cpp esetupwizardobject.cpp eupdatenoticedialog.cpp eupdatenoticesettings.cpp internal/version.cpp epluginloader.h emodulelistwidgetitem.cpp enetworkaccessmanager.cpp elogobject.cpp internal/elogobjectprivate.cpp etreemodelsortfilterproxymodel.cpp # gui elements (available also at the DesignerPlugin) eaction.cpp edialog.cpp efiledialog.cpp internal/efiledialogprivate.cpp ewidget.cpp emainwindow.cpp epartmainwindow.cpp epushbutton.cpp elistaddbutton.cpp elistremovebutton.cpp esearchbutton.cpp esettingswidget.cpp esettingsdialog.cpp etableview.cpp esetupwizardwidget.cpp emodulestatedialog.cpp emodulestatewidget.cpp etoolbar.cpp escaledimage.cpp eheaderviewbase.cpp eheaderviewverticaltext.cpp eheaderviewcustom.cpp eheaderviewspanned.cpp eribbonwidget.cpp internal/eribbonmenuwidget.cpp internal/eribbonsubmenuwidget.cpp # database stuff edelegateforeignkey.cpp esqlinit.cpp esqltable.cpp esqlfield.cpp edbupdatewidget.cpp esetupwizarddbdump.cpp esqllogin.cpp internal/esqllogindialog.cpp esqldatabase.cpp edbbackup.cpp edbbackupdialog.cpp edbsettings.cpp esetupwizarddb.cpp equerythread.cpp internal/equeryworker.cpp edbsettingswidget.cpp # file management efileinfo.cpp efileserviceplugin.h efileservice.cpp internal/efileservicesettings.cpp # spreadsheet espreadsheet.cpp espreadsheetcell.cpp espreadsheethandler.cpp espreadsheetprovider.h internal/espreadsheetsettings.cpp ) INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/internal ${CMAKE_CURRENT_SOURCE_DIR}/internal ) IF(BINDINGS_QT4) # QT5 does not declare and does not need QT_INCLUDES SET(INCLUDE_DIRECTORIES ${INCLUDES_DIRECTORIES} ${QT_INCLUDES}) INCLUDE(${QT_USE_FILE}) ENDIF(BINDINGS_QT4) ADD_DEFINITIONS(-DE_BUILD_CORE_LIB) SET(LINK_LIBRARIES ${QT_LIBRARIES}) IF(BINDINGS_KDE) INCLUDE_DIRECTORIES(${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR}) SET(LINK_LIBRARIES ${LINK_LIBRARIES} ${KDE_KDECORE_LIBS} ${KDE4_KPARTS_LIBS} ${KDE4_KIO_LIBS}) ENDIF(BINDINGS_KDE) SET(LIBOUTDIR ${LIBRARY_OUTPUT_PATH}) SET(SHAREDIR ${share_DIR}) CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/elibconfig.h.in ${CMAKE_CURRENT_BINARY_DIR}/elibconfig.h ) CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/eversion.h.in ${CMAKE_CURRENT_BINARY_DIR}/eversion.h ) IF(BINDINGS_QT4) QT4_AUTOMOC(${libengsas_CPP}) QT4_WRAP_UI(libengsas_UI_H ${libengsas_UI}) QT4_ADD_TRANSLATION(libengsas_TRANS ${libengsas_TS}) ENDIF(BINDINGS_QT4) IF(BINDINGS_QT5) QT5_WRAP_UI(libengsas_UI_H ${libengsas_UI}) QT5_ADD_TRANSLATION(libengsas_TRANS ${libengsas_TS}) ENDIF(BINDINGS_QT5) ADD_LIBRARY(libengsas SHARED ${libengsas_CPP} ${libengsas_UI_H} ${libengsas_TRANS} ) TARGET_LINK_LIBRARIES(libengsas ${LINK_LIBRARIES} ) IF(BINDINGS_QT5) qt5_use_modules(libengsas Core Widgets Xml XmlPatterns Sql Network) ENDIF(BINDINGS_QT5) SET_TARGET_PROPERTIES(libengsas PROPERTIES OUTPUT_NAME "engsas" VERSION ${TARGET_VERSION_MAJOR}.${TARGET_VERSION_MINOR}.${${PROJECT_NAME}_PATCH_LEVEL} SOVERSION ${TARGET_VERSION_MAJOR}) IF(WIN32) # this extra install command is needed by the nsis installer INSTALL(TARGETS libengsas RUNTIME DESTINATION ${LIB_INSTALL_DIR} COMPONENT library ) IF(MSVC) INSTALL(FILES ${LIBRARY_OUTPUT_PATH}/engsas.lib DESTINATION ${LIB_INSTALL_DIR} COMPONENT library) ENDIF(MSVC) ELSE(WIN32) INSTALL(TARGETS libengsas ARCHIVE DESTINATION ${LIB_INSTALL_DIR} LIBRARY DESTINATION ${LIB_INSTALL_DIR} COMPONENT library ) ENDIF(WIN32) INSTALL( FILES ${libengsas_TRANS} DESTINATION ${qm_DIR} COMPONENT library ) SET(LIBENGSAS_VERSION ${${PROJECT_NAME}_VERSION}) SET(QTVERSION "${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}") SET(depends_XML ${CMAKE_BINARY_DIR}/depends/libengsas-core.xml) CONFIGURE_FILE(libengsas-core.xml.in ${depends_XML}) INSTALL( FILES ${depends_XML} DESTINATION ${depends_DIR} COMPONENT library ) IF(PACK_WIN32_STUFF) # Qt translation files # en has no translation files IF(L10N_DE) FILE(GLOB pack_qt_translations_de "${QT_BINARY_DIR}/../translations/*_de.qm") INSTALL( FILES ${pack_qt_translations_de} DESTINATION ${qm_DIR} COMPONENT library ) ENDIF(L10N_DE) IF(L10N_FR) FILE(GLOB pack_qt_translations_fr "${QT_BINARY_DIR}/../translations/*_fr.qm") INSTALL( FILES ${pack_qt_translations_fr} DESTINATION ${qm_DIR} COMPONENT library ) ENDIF(L10N_FR) # Qt itself FIND_FILE(pack_qtcore QtCore4.dll HINTS ${PACK_HINTS} NO_DEFAULT_PATH) FIND_FILE(pack_qtgui QtGui4.dll HINTS ${PACK_HINTS} NO_DEFAULT_PATH) FIND_FILE(pack_qtnetwork QtNetwork4.dll HINTS ${PACK_HINTS} NO_DEFAULT_PATH) FIND_FILE(pack_qtsql QtSql4.dll HINTS ${PACK_HINTS} NO_DEFAULT_PATH) FIND_FILE(pack_qtxml QtXml4.dll HINTS ${PACK_HINTS} NO_DEFAULT_PATH) FIND_FILE(pack_qtxml_patterns QtXmlPatterns4.dll HINTS ${PACK_HINTS} NO_DEFAULT_PATH) FIND_FILE(pack_libmysql libmysql.dll libmysqlclient-18.dll PATHS ${PACK_HINTS} NO_DEFAULT_PATH) IF(NOT MSVC AND NOT CMAKE_CROSSCOMPILING) FIND_FILE(pack_mingwm10 mingwm10.dll HINTS ${PACK_HINTS} NO_DEFAULT_PATH) FIND_FILE(pack_libgcc_s_dw libgcc_s_dw2-1.dll HINTS ${PACK_HINTS} NO_DEFAULT_PATH) SET(pack_extra_libraries ${pack_mingwm10} ${pack_libgcc_s_dw} ) ELSEIF(CMAKE_CROSSCOMPILING) FIND_FILE(pack_libstdcpp libstdc++-6.dll HINTS ${PACK_HINTS} NO_DEFAULT_PATH) FIND_FILE(pack_libpng libpng16-16.dll HINTS ${PACK_HINTS} NO_DEFAULT_PATH) SET(pack_extra_libraries ${pack_libstdcpp} ${pack_libpng} ) ENDIF() INSTALL( FILES ${pack_qtcore} ${pack_qtgui} ${pack_qtnetwork} ${pack_qtsql} ${pack_libmysql} ${pack_qtxml} ${pack_qtxml_patterns} ${pack_extra_libraries} DESTINATION ${bin_DIR} COMPONENT qtlibs ) IF(CMAKE_CROSSCOMPILING) FIND_FILE(pack_qsqlmysql qsqlmysql4.dll PATHS ${PACK_HINTS}/plugins/sqldrivers NO_DEFAULT_PATH) ELSE() FIND_FILE(pack_qsqlmysql qsqlmysql4.dll PATHS ${PACK_HINTS}/../plugins/sqldrivers NO_DEFAULT_PATH) ENDIF() INSTALL( FILES ${pack_qsqlmysql} DESTINATION ${bin_DIR}/sqldrivers COMPONENT qtlibs ) ENDIF() IF(BUILD_DEV) FILE(GLOB header "${CMAKE_CURRENT_SOURCE_DIR}/*.h") INSTALL( FILES ${header} "${CMAKE_CURRENT_BINARY_DIR}/eversion.h" DESTINATION ${include_DIR}/core COMPONENT headerfiles ) # Install FindLibEngsas.cmake SET(LIBENGSAS_LIBRARY_DIR "\${LIBENGSAS_LIBRARY_DIR}") SET(PC_LIBENGSAS_CFLAGS_OTHER "\${PC_LIBENGSAS_CFLAGS_OTHER}") SET(PC_LIBENGSAS_LIBDIR "\${PC_LIBENGSAS_LIBDIR}") SET(PC_LIBENGSAS_LIBRARY_DIRS "\${PC_LIBENGSAS_LIBRARY_DIRS}") SET(PC_LIBENGSAS_INCLUDEDIR "\${PC_LIBENGSAS_INCLUDEDIR}") SET(PC_LIBENGSAS_INCLUDE_DIRS "\${PC_LIBENGSAS_INCLUDE_DIRS}") SET(LIBENGSAS_TESTING_LIBRARY_DIR "\${LIBENGSAS_TESTING_LIBRARY_DIR}") SET(PC_LIBENGSAS_TESTING_CFLAGS_OTHER "\${PC_LIBENGSAS_CFLAGS_OTHER}") SET(PC_LIBENGSAS_TESTING_LIBDIR "\${PC_LIBENGSAS_LIBDIR}") SET(PC_LIBENGSAS_TESTING_LIBRARY_DIRS "\${PC_LIBENGSAS_LIBRARY_DIRS}") SET(PC_LIBENGSAS_TESTING_INCLUDEDIR "\${PC_LIBENGSAS_INCLUDEDIR}") SET(PC_LIBENGSAS_TESTING_INCLUDE_DIRS "\${PC_LIBENGSAS_INCLUDE_DIRS}") SET(LIBENGSAS_CHARTS_LIBRARY_DIR "\${LIBENGSAS_CHARTS_LIBRARY_DIR}") SET(PC_LIBENGSAS_CHARTS_LIBDIR "\${PC_LIBENGSAS_CHARTS_LIBDIR}") SET(PC_LIBENGSAS_CHARTS_LIBRARY_DIRS "\${PC_LIBENGSAS_LIBRARY_DIRS}") SET(PC_LIBENGSAS_CHARTS_INCLUDEDIR "\${PC_LIBENGSAS_INCLUDEDIR}") SET(PC_LIBENGSAS_CHARTS_INCLUDE_DIRS "\${PC_LIBENGSAS_INCLUDE_DIRS}") SET(LIBENGSAS_GRAPHS_LIBRARY_DIR "\${LIBENGSAS_GRAPHS_LIBRARY_DIR}") SET(PC_LIBENGSAS_GRAPHS_LIBDIR "\${PC_LIBENGSAS_GRAPHS_LIBDIR}") SET(PC_LIBENGSAS_GRAPHS_LIBRARY_DIRS "\${PC_LIBENGSAS_LIBRARY_DIRS}") SET(PC_LIBENGSAS_GRAPHS_INCLUDEDIR "\${PC_LIBENGSAS_INCLUDEDIR}") SET(PC_LIBENGSAS_GRAPHS_INCLUDE_DIRS "\${PC_LIBENGSAS_INCLUDE_DIRS}") SET(LIBENGSAS_PATCH_LEVEL ${${PROJECT_NAME}_PATCH_LEVEL}) CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/FindLibEngsas.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FindLibEngsas.cmake ) INSTALL( FILES ${CMAKE_CURRENT_BINARY_DIR}/FindLibEngsas.cmake DESTINATION ${find_cmake_DIR} COMPONENT devfinding ) # CMake overrides ${var} during configuration, therefore we insert it with cmake SET(prefix ${CMAKE_INSTALL_PREFIX}) SET(exec_prefix "\${prefix}") SET(libdir "\${exec_prefix}/lib") SET(includedir "\${prefix}/include/engsas") SET(lib_flag "\${libdir}") SET(include_flag "\${includedir}") SET(LIBNAME engsas) SET(REQUIRES "QtCore >= 4, QtGui >= 4, QtXml >= 4, QtXmlPatterns >= 4") # KDE has no pkgconfig .pc file # IF(BINDINGS_KDE) # SET(REQUIRES "${REQUIRES}, KDELibs >= 4") # ENDIF(BINDINGS_KDE) CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/libengsas.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libengsas.pc ) # Install pkgconfig file INSTALL( FILES ${CMAKE_CURRENT_BINARY_DIR}/libengsas.pc DESTINATION ${pkgconfig_DIR} COMPONENT devfinding ) ENDIF(BUILD_DEV)