AusweisApp2/src/CMakeLists.txt

246 lines
11 KiB
CMake

ADD_SUBDIRECTORY(external)
ADD_SUBDIRECTORY(global)
ADD_SUBDIRECTORY(secure_storage)
ADD_SUBDIRECTORY(configuration)
ADD_SUBDIRECTORY(settings)
ADD_SUBDIRECTORY(card)
ADD_SUBDIRECTORY(network)
ADD_SUBDIRECTORY(services)
ADD_SUBDIRECTORY(activation)
ADD_SUBDIRECTORY(core)
ADD_SUBDIRECTORY(jsonapi)
ADD_SUBDIRECTORY(websocket)
ADD_SUBDIRECTORY(aidl)
ADD_SUBDIRECTORY(remote_device)
ADD_SUBDIRECTORY(file_provider)
ADD_SUBDIRECTORY(export)
IF(DESKTOP)
ADD_SUBDIRECTORY(cli)
ENDIF()
IF(TARGET Qt5::Qml)
ADD_SUBDIRECTORY(qml)
ENDIF()
# Use this if we can use QSvgPlugin without Widgets
# IF(TARGET Qt5::Widgets)
# https://bugreports.qt.io/browse/QTBUG-41884
IF(DESKTOP)
ADD_SUBDIRECTORY(widget)
IF(TARGET Qt5::UiPlugin)
ADD_SUBDIRECTORY(widgetDesignerPlugin)
ENDIF()
ENDIF()
FUNCTION(CONFIGURE_CONFIG_H)
IF(VENDOR_GOVERNIKUS)
SET(VENDOR_DOMAIN governikus.com)
ELSE()
SET(VENDOR_DOMAIN)
ENDIF()
IF(VERSION_DVCS)
SET(VERSION ${VERSION_DVCS})
ELSE()
SET(VERSION ${PROJECT_VERSION})
ENDIF()
SET(PRODUCT ${EXECUTABLE_BASE_NAME})
CONFIGURE_FILE(config.h.in config.h @ONLY)
ENDFUNCTION()
FILE(GLOB TRANSLATION_FILES ${RESOURCES_DIR}/translations/*.ts)
FOREACH(filepath ${TRANSLATION_FILES})
GET_FILENAME_COMPONENT(filename "${filepath}" NAME)
STRING(REGEX MATCH "_(.*)\.ts$" _unused "${filename}")
LIST(APPEND USED_TRANSLATIONS ${CMAKE_MATCH_1})
ENDFOREACH()
SET_PROPERTY(SOURCE ${TRANSLATION_FILES} PROPERTY OUTPUT_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/translations)
FOREACH(locale ${USED_TRANSLATIONS})
FILE(COPY ${QT_TRANSLATIONS_DIR} DESTINATION ${CMAKE_CURRENT_BINARY_DIR} FILES_MATCHING REGEX "qtbase_${locale}")
ENDFOREACH()
OPTION(UPDATE_TRANSLATIONS "Update translations/*.ts files (WARNING: make clean will delete the *.ts files!)")
IF(UPDATE_TRANSLATIONS)
OPTION(UPDATE_TRANSLATIONS_NO_OBSOLETE "Remove obsolete translations from translations/*.ts files )")
SET(LUPDATE_OPTIONS -extensions c,cpp,h,ui,m,mm,qml,js -no-ui-lines)
IF(UPDATE_TRANSLATIONS_NO_OBSOLETE)
QT5_CREATE_TRANSLATION(QM_FILES ${SRC_DIR} ${RESOURCES_DIR} ${TRANSLATION_FILES} OPTIONS ${LUPDATE_OPTIONS} -no-obsolete)
ELSE()
QT5_CREATE_TRANSLATION(QM_FILES ${SRC_DIR} ${RESOURCES_DIR} ${TRANSLATION_FILES} OPTIONS ${LUPDATE_OPTIONS})
ENDIF()
ADD_CUSTOM_TARGET(update.translations DEPENDS ${QM_FILES})
MESSAGE(WARNING "'make clean' will delete *.ts files!")
ELSE()
QT5_ADD_TRANSLATION(QM_FILES ${TRANSLATION_FILES})
ENDIF()
CONFIGURE_DEFAULT_FILES(${CMAKE_CURRENT_BINARY_DIR})
IF(IOS)
SET(MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION})
SET(MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION})
SET(MACOSX_BUNDLE_LONG_VERSION_STRING ${PROJECT_VERSION})
LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/qml)
LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/packaging/ios/de.lproj)
LIST(APPEND IOS_RESOURCES ${CMAKE_CURRENT_BINARY_DIR}/translations)
LIST(APPEND IOS_RESOURCES ${CMAKE_CURRENT_BINARY_DIR}/config.json)
LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/qtlogging.ini)
# Attention: the file names correspond to values in the Info.plist
IF(BUILD_PREVIEW)
MESSAGE(FATAL_ERROR "iOS preview not implemented")
ELSEIF(IS_DEVELOPER_VERSION)
SET(IOS_APPICON_PATH "beta/")
ELSE()
SET(IOS_APPICON_PATH "")
ENDIF()
LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/appIcons/${IOS_APPICON_PATH}Images.xcassets)
LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/launchImages/Default-568h@2x.png)
LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/launchImages/launchImage568@2x.png)
LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/launchImages/launchImage568@3x.png)
LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/launchImages/launchImage667@2x.png)
LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/launchImages/launchImage667@3x.png)
LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/launchImages/launchImage736@2x.png)
LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/launchImages/launchImage736@3x.png)
LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/launchImages/launchImage1024@2x.png)
LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/launchImages/launchImage1024@3x.png)
LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/launchImages/launchImage1112@2x.png)
LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/launchImages/launchImage1112@3x.png)
LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/launchImages/launchImage1366@2x.png)
LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/launchImages/launchImage1366@3x.png)
LIST(APPEND IOS_RESOURCES ${RCC})
SET_SOURCE_FILES_PROPERTIES(${RCC} PROPERTIES GENERATED TRUE)
ENDIF()
FILE(GLOB MAIN_FILES *.cpp)
IF(ANDROID)
ADD_LIBRARY(AusweisApp SHARED ${MAIN_FILES} ${QM_FILES})
ELSEIF(IOS)
ADD_EXECUTABLE(AusweisApp MACOSX_BUNDLE ${MAIN_FILES} ${IOS_RESOURCES} ${QM_FILES})
ELSE()
ADD_EXECUTABLE(AusweisApp WIN32 ${MAIN_FILES} windows.rc ${QM_FILES})
ENDIF()
ADD_DEPENDENCIES(AusweisApp AusweisAppRcc)
CONFIGURE_CONFIG_H()
TARGET_LINK_LIBRARIES(AusweisApp AusweisAppCard AusweisAppCore AusweisAppGlobal AusweisAppNetwork AusweisAppActivation AusweisAppActivationInternal)
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES OUTPUT_NAME "${EXECUTABLE_BASE_NAME}")
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME AusweisApp2)
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES MACOSX_BUNDLE_GUI_IDENTIFIER com.governikus.ausweisapp2)
IF(IOS)
TARGET_LINK_LIBRARIES(AusweisApp OpenSSL::SSL) # remove this if iOS uses shared libraries
TARGET_LINK_LIBRARIES(AusweisApp -L${CMAKE_IOS_SDK_ROOT}/System/Library/Frameworks)
TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/plugins/platforms)
TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/plugins/imageformats)
TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/lib)
TARGET_LINK_LIBRARIES(AusweisApp -lQt5Network -lQt5Gui -lQt5Core -lQt5Bluetooth -lQt5Svg -lQt5Quick -lQt5Qml -lQt5QuickTemplates2 -lQt5QuickControls2)
TARGET_LINK_LIBRARIES(AusweisApp -lqtpcre2 -lqtlibpng -lQt5GraphicsSupport -lQt5FontDatabaseSupport -lQt5ClipboardSupport -lqios -lqsvg -lqjpeg -lqtfreetype)
TARGET_LINK_LIBRARIES(AusweisApp "-lc++ -lz -lm -u _qt_registerPlatformPlugin")
TARGET_LINK_LIBRARIES(AusweisApp ${IOS_ASSETSLIBRARY} ${IOS_UIKIT} ${IOS_COREBLUETOOTH} ${IOS_COREFOUNDATION} ${IOS_OPENGLES} ${IOS_FOUNDATION} ${IOS_QUARTZCORE} ${IOS_CORETEXT} ${IOS_COREGRAPHICS} ${IOS_SECURITY} ${IOS_SYSTEMCONFIGURATION} ${IOS_MOBILECORESERVICES} ${IOS_AUDIOTOOLBOX})
TARGET_LINK_LIBRARIES(AusweisApp -Wl,-e,_qt_main_wrapper)
# Do not delete the comments to avoid searching for the path/filename
TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQml/Models.2 -lmodelsplugin)
TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQml/StateMachine -lqtqmlstatemachine)
TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtGraphicalEffects/private -lqtgraphicaleffectsprivate)
TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtGraphicalEffects -lqtgraphicaleffectsplugin)
TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Controls -lqtquickcontrolsplugin)
TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Controls/Styles/Flat -lqtquickextrasflatplugin)
TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Controls.2 -lqtquickcontrols2plugin)
# TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Controls.2/Material -lqtquickcontrols2materialstyleplugin)
# TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Controls.2/Universal -lqtquickcontrols2universalstyleplugin)
TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Dialogs -ldialogplugin)
# TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Dialogs/Private -ldialogsprivateplugin)
# TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Extras -lqtquickextrasplugin)
TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Layouts -lqquicklayoutsplugin)
# TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/LocalStorage -lqmllocalstorageplugin)
# TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Particles.2 -lparticlesplugin)
TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Templates.2 -lqtquicktemplates2plugin)
TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Window.2 -lwindowplugin)
TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick.2 -lqtquick2plugin)
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES RESOURCE "${IOS_RESOURCES}")
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME "AppIcon")
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_ARCHS "arm64")
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2")
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "10.0")
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_ENABLE_BITCODE "NO")
IF(USE_DISTRIBUTION_PROFILE)
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_PROVISIONING_PROFILE_SPECIFIER "iOS Release (Distribution)")
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Distribution: Governikus GmbH & Co. KG (G7EQCJU4BR)")
ELSE()
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_PROVISIONING_PROFILE_SPECIFIER "iOS Development")
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer: Marco von der Puetten (46ZK7WV8QR)")
ENDIF()
# prevent xcode to convert multiple png files to tiff
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_COMBINE_HIDPI_IMAGES "NO")
TARGET_LINK_LIBRARIES(AusweisApp AusweisAppActivationCustomScheme)
ENDIF()
IF(MAC)
TARGET_LINK_LIBRARIES(AusweisApp ${OSX_APPKIT})
ENDIF()
IF(ANDROID)
TARGET_LINK_LIBRARIES(AusweisApp Qt5::AndroidExtras)
TARGET_LINK_LIBRARIES(AusweisApp AusweisAppCardNfc AusweisAppActivationIntent)
ENDIF()
IF(ANDROID OR IOS)
TARGET_LINK_LIBRARIES(AusweisApp AusweisAppCardBluetooth)
ELSEIF(LINUX)
TARGET_LINK_LIBRARIES(AusweisApp debug AusweisAppCardBluetooth)
ENDIF()
IF(WIN32)
TARGET_LINK_LIBRARIES(AusweisApp ${WIN_DEFAULT_LIBS})
ENDIF()
IF(IOS OR ANDROID OR WINDOWS_STORE)
TARGET_LINK_LIBRARIES(AusweisApp AusweisAppQml)
TARGET_LINK_LIBRARIES(AusweisApp AusweisAppAidl)
ELSE()
TARGET_LINK_LIBRARIES(AusweisApp debug AusweisAppQml)
TARGET_LINK_LIBRARIES(AusweisApp debug AusweisAppAidl)
ENDIF()
IF(DESKTOP)
TARGET_LINK_LIBRARIES(AusweisApp AusweisAppCardPcsc AusweisAppCardDrivers AusweisAppActivationWebservice)
TARGET_LINK_LIBRARIES(AusweisApp AusweisAppWidget AusweisAppCli)
ENDIF()
TARGET_LINK_LIBRARIES(AusweisApp debug AusweisAppWebSocket)
IF(NOT WINDOWS_STORE)
TARGET_LINK_LIBRARIES(AusweisApp AusweisAppCardRemote)
ENDIF()
INCLUDE(Install)
INCLUDE(FeatureSummary)
FEATURE_SUMMARY(WHAT ALL)