ADD_SUBDIRECTORY(external) ADD_SUBDIRECTORY(global) ADD_SUBDIRECTORY(card) ADD_SUBDIRECTORY(network) ADD_SUBDIRECTORY(settings) ADD_SUBDIRECTORY(services) ADD_SUBDIRECTORY(activation) ADD_SUBDIRECTORY(core) ADD_SUBDIRECTORY(jsonapi) ADD_SUBDIRECTORY(websocket) ADD_SUBDIRECTORY(aidl) IF(DESKTOP) ADD_SUBDIRECTORY(cli) ADD_SUBDIRECTORY(export) ENDIF() ADD_SUBDIRECTORY(qml) # Use this if we can use QSvgPlugin without Widgets # IF(TARGET Qt5::Widgets) # https://bugreports.qt.io/browse/QTBUG-41884 IF(DESKTOP) ADD_SUBDIRECTORY(gui) ENDIF() 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}) FOREACH(entry QtQuick QtQuick.2 QtQml QtGraphicalEffects Qt) FILE(COPY ${QT_HOST_PREFIX}/qml/${entry} DESTINATION ${CMAKE_BINARY_DIR}/qml PATTERN "lib*" EXCLUDE) LIST(APPEND IOS_RESOURCES ${CMAKE_BINARY_DIR}/qml/${entry}) ENDFOREACH() LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/qml) LIST(APPEND IOS_RESOURCES ${CMAKE_CURRENT_BINARY_DIR}/translations) LIST(APPEND IOS_RESOURCES ${CMAKE_CURRENT_BINARY_DIR}/config.json) LIST(APPEND IOS_RESOURCES ${CMAKE_CURRENT_BINARY_DIR}/default-providers.json) LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/qtlogging.ini) # Attention: the file names correspond to values in the Info.plist LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/appIcons/icon29x29@2x.png) LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/appIcons/icon29x29@2x~ipad.png) LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/appIcons/icon29x29@3x.png) LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/appIcons/icon29x29~ipad.png) LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/appIcons/icon40x40@2x.png) LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/appIcons/icon40x40@2x~ipad.png) LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/appIcons/icon40x40@3x.png) LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/appIcons/icon40x40~ipad.png) LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/appIcons/icon60x60@2x.png) LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/appIcons/icon60x60@3x.png) LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/appIcons/icon76x76@2x~ipad.png) LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/appIcons/icon76x76~ipad.png) LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/launchIcons/launchIcon.png) LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/launchIcons/launchIcon6.png) LIST(APPEND IOS_RESOURCES ${RESOURCES_DIR}/images/iOS/launchIcons/launchIcon6p.png) LIST(APPEND IOS_RESOURCES ${RCC}) SET_SOURCE_FILES_PROPERTIES(${RCC} PROPERTIES GENERATED TRUE) ENDIF() SET(MAIN_CPP "main.cpp") 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}) IF(WIN32) SET_PROPERTY(SOURCE ${WINDOWS_RC} APPEND_STRING PROPERTY COMPILE_FLAGS " -DVERSION_MAJOR=${PROJECT_VERSION_MAJOR} -DVERSION_MINOR=${PROJECT_VERSION_MINOR} -DVERSION_PATCH=${PROJECT_VERSION_PATCH} -DVERSION_TWEAK=${PROJECT_VERSION_TWEAK}") ENDIF() ENDIF() ADD_DEPENDENCIES(AusweisApp AusweisAppRcc) ADD_STRING_DEFINITION("${VENDOR}" "VENDOR" ${MAIN_CPP}) IF(VENDOR_GOVERNIKUS) ADD_STRING_DEFINITION("governikus.com" "VENDOR_DOMAIN" ${MAIN_CPP}) ENDIF() IF(VERSION_DVCS) ADD_STRING_DEFINITION(${VERSION_DVCS} "VERSION" ${MAIN_CPP} ${WINDOWS_RC}) ELSE() ADD_STRING_DEFINITION(${PROJECT_VERSION} "VERSION" ${MAIN_CPP} ${WINDOWS_RC}) ENDIF() TARGET_LINK_LIBRARIES(AusweisApp AusweisAppCard AusweisAppCore AusweisAppGlobal AusweisAppExternalHttpParser 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 -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 -L${QT_HOST_PREFIX}/qml/QtQuick.2) TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Dialogs) TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Layouts) TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Window.2) TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQml/Models.2) TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQml/StateMachine) TARGET_LINK_LIBRARIES(AusweisApp -lQt5Network -lQt5Gui -lQt5Core -lQt5Bluetooth -lQt5Svg -lQt5Quick -lQt5Qml) TARGET_LINK_LIBRARIES(AusweisApp -lqtlibpng -lQt5GraphicsSupport -lQt5FontDatabaseSupport -lQt5ClipboardSupport) TARGET_LINK_LIBRARIES(AusweisApp -lqios -lqsvg -lqtpcre -lqtfreetype -lqtquick2plugin -ldialogplugin -lqquicklayoutsplugin -lmodelsplugin -lwindowplugin -lqtqmlstatemachine) 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) TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtGraphicalEffects/private) TARGET_LINK_LIBRARIES(AusweisApp -lqtgraphicaleffectsprivate) TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtGraphicalEffects) TARGET_LINK_LIBRARIES(AusweisApp -lqtgraphicaleffectsplugin) #TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Templates.2) #TARGET_LINK_LIBRARIES(AusweisApp -lqtquicktemplates2plugin) #TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Controls.2) #TARGET_LINK_LIBRARIES(AusweisApp -lqtquickcontrols2plugin) #TARGET_LINK_LIBRARIES(AusweisApp -L${QT_HOST_PREFIX}/qml/QtQuick/Controls/Styles/Flat) #TARGET_LINK_LIBRARIES(AusweisApp -lqtquickextrasflatplugin) SET_TARGET_PROPERTIES(AusweisApp PROPERTIES RESOURCE "${IOS_RESOURCES}") SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2") SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "8.0") SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_ENABLE_BITCODE "NO") # 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 OR (LINUX AND CMAKE_BUILD_TYPE STREQUAL "DEBUG")) TARGET_LINK_LIBRARIES(AusweisApp AusweisAppCardBluetooth) ENDIF() IF(WIN32) TARGET_LINK_LIBRARIES(AusweisApp ${WIN_DEFAULT_LIBS}) ENDIF() IF(IOS OR ANDROID OR WINDOWS_STORE OR ${CMAKE_BUILD_TYPE} STREQUAL "DEBUG") TARGET_LINK_LIBRARIES(AusweisApp AusweisAppQml) TARGET_LINK_LIBRARIES(AusweisApp AusweisAppAidl) ENDIF() IF(DESKTOP) TARGET_LINK_LIBRARIES(AusweisApp AusweisAppCardPcsc AusweisAppCardDrivers AusweisAppActivationWebservice) TARGET_LINK_LIBRARIES(AusweisApp AusweisAppWidget AusweisAppCli) ENDIF() IF(${CMAKE_BUILD_TYPE} STREQUAL "DEBUG") TARGET_LINK_LIBRARIES(AusweisApp AusweisAppWebSocket) ENDIF() INCLUDE(Install) INCLUDE(FeatureSummary) FEATURE_SUMMARY(WHAT ALL)