diff --git a/CMakeLists.txt b/CMakeLists.txt index 33847752a..478269937 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,6 +40,10 @@ if(NOT DEFINED PRODUCT) set(PRODUCT "FreeRDP" CACHE STRING "FreeRDP package name") endif() +if(NOT DEFINED PROJECT_URL) + set(PROJECT_URL "https://freerdp.com" CACHE STRING "FreeRDP package url") +endif() + if(NOT DEFINED FREERDP_VENDOR) set(FREERDP_VENDOR 1) endif() diff --git a/client/SDL/SDL3/CMakeLists.txt b/client/SDL/SDL3/CMakeLists.txt index 39b382c27..d6b8e4851 100644 --- a/client/SDL/SDL3/CMakeLists.txt +++ b/client/SDL/SDL3/CMakeLists.txt @@ -67,16 +67,23 @@ else() endif() set_target_properties(SDL3::Headers PROPERTIES SYSTEM TRUE) +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + addtargetwithresourcefile(${MODULE_NAME} "${WIN32_GUI_FLAG}" "${PROJECT_VERSION}" SRCS) target_link_libraries(${MODULE_NAME} PRIVATE ${LIBS}) set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Client/SDL") +get_target_property(SDL_CLIENT_BINARY_NAME ${MODULE_NAME} OUTPUT_NAME) if(NOT WITH_CLIENT_SDL_VERSIONED) - get_target_property(OUT_NAME ${MODULE_NAME} OUTPUT_NAME) - string(REPLACE "${MODULE_NAME}" "${PROJECT_NAME}" OUT_NAME "${OUT_NAME}") - set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME ${OUT_NAME}) + string(REPLACE "${MODULE_NAME}" "${PROJECT_NAME}" SDL_CLIENT_BINARY_NAME "${SDL_CLIENT_BINARY_NAME}") + set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME ${SDL_CLIENT_BINARY_NAME}) endif() + +string(TIMESTAMP SDL_CLIENT_YEAR "%Y") +set(SDL_CLIENT_UUID "com.freerdp.client.sdl3") +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/sdl_config.hpp.in ${CMAKE_CURRENT_BINARY_DIR}/sdl_config.hpp @ONLY) + install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT client) install_freerdp_desktop("${MODULE_NAME}" "${MODULE_NAME}") diff --git a/client/SDL/SDL3/sdl_config.hpp.in b/client/SDL/SDL3/sdl_config.hpp.in new file mode 100644 index 000000000..a8742fc29 --- /dev/null +++ b/client/SDL/SDL3/sdl_config.hpp.in @@ -0,0 +1,28 @@ +/** + * FreeRDP: A Remote Desktop Protocol Implementation + * SDL config template + * + * Copyright 2025 Armin Novak + * Copyright 2025 Thinast Technologies GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once + +static const char SDL_CLIENT_NAME[] = "@SDL_CLIENT_BINARY_NAME@"; +static const char SDL_CLIENT_VERSION[] = "@FREERDP_VERSION_FULL@ (@GIT_REVISION@)"; +static const char SDL_CLIENT_VENDOR[] = "@VENDOR@"; +static const char SDL_CLIENT_UUID[] = "@SDL_CLIENT_UUID@"; +static const char SDL_CLIENT_COPYRIGHT[] = "FreeRDP project"; +static const char SDL_CLIENT_URL[] = "@PROJECT_URL@"; +static const char SDL_CLIENT_TYPE[] = "application"; diff --git a/client/SDL/SDL3/sdl_freerdp.cpp b/client/SDL/SDL3/sdl_freerdp.cpp index 4c702d0a6..439062121 100644 --- a/client/SDL/SDL3/sdl_freerdp.cpp +++ b/client/SDL/SDL3/sdl_freerdp.cpp @@ -53,6 +53,8 @@ #include #include +#include + #include "dialogs/sdl_connection_dialog_hider.hpp" #include "dialogs/sdl_dialogs.hpp" #include "scoped_guard.hpp" @@ -1739,6 +1741,14 @@ SdlContext::SdlContext(rdpContext* context) primary(nullptr, SDL_DestroySurface), rdp_thread_running(false) { WINPR_ASSERT(context); + + SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_NAME_STRING, SDL_CLIENT_NAME); + SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_VERSION_STRING, SDL_CLIENT_VERSION); + SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_IDENTIFIER_STRING, SDL_CLIENT_UUID); + SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_CREATOR_STRING, SDL_CLIENT_VENDOR); + SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_COPYRIGHT_STRING, SDL_CLIENT_COPYRIGHT); + SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_URL_STRING, SDL_CLIENT_URL); + SDL_SetAppMetadataProperty(SDL_PROP_APP_METADATA_TYPE_STRING, SDL_CLIENT_TYPE); } void SdlContext::setHasCursor(bool val) diff --git a/client/SDL/common/aad/CMakeLists.txt b/client/SDL/common/aad/CMakeLists.txt index 5b7da7285..ee08a8ce4 100644 --- a/client/SDL/common/aad/CMakeLists.txt +++ b/client/SDL/common/aad/CMakeLists.txt @@ -49,7 +49,7 @@ cleaning_configure_file(sdl_config.hpp.in sdl_config.hpp @ONLY) include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_library(sdl-common-aad-view STATIC ${SRCS}) -set_property(TARGET sdl-common-aad-view PROPERTY FOLDER "Client/Common") +set_property(TARGET sdl-common-aad-view PROPERTY FOLDER "Client/SDL/Common") target_include_directories(sdl-common-aad-view PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) target_link_libraries(sdl-common-aad-view PRIVATE ${LIBS})