From b04271ae2dab043538d1c19b6e84413d897a43f9 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Thu, 21 Dec 2023 17:27:54 +0100 Subject: [PATCH] [cmake] add executable versioning optionally append API version to generated binaries --- client/Mac/cli/CMakeLists.txt | 3 +++ client/SDL/CMakeLists.txt | 3 +++ client/Sample/CMakeLists.txt | 3 +++ client/Wayland/CMakeLists.txt | 3 +++ client/Windows/CMakeLists.txt | 6 +++++- client/Windows/cli/CMakeLists.txt | 3 +++ client/X11/CMakeLists.txt | 3 +++ client/X11/cli/CMakeLists.txt | 8 +++++++- client/iOS/CMakeLists.txt | 3 +++ rdtk/sample/CMakeLists.txt | 3 +++ server/Mac/CMakeLists.txt | 3 +++ server/Sample/CMakeLists.txt | 3 +++ server/Windows/CMakeLists.txt | 3 +++ server/Windows/cli/CMakeLists.txt | 6 +++++- server/proxy/cli/CMakeLists.txt | 8 +++++++- server/shadow/CMakeLists.txt | 4 ++++ winpr/tools/hash-cli/CMakeLists.txt | 3 +++ winpr/tools/makecert-cli/CMakeLists.txt | 3 +++ 18 files changed, 67 insertions(+), 4 deletions(-) diff --git a/client/Mac/cli/CMakeLists.txt b/client/Mac/cli/CMakeLists.txt index 13a169645..900fbade6 100644 --- a/client/Mac/cli/CMakeLists.txt +++ b/client/Mac/cli/CMakeLists.txt @@ -66,6 +66,9 @@ add_executable(${PROJECT_NAME} ${SOURCES} ${RESOURCES}) +if (WITH_BINARY_VERSIONING) + set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}${PROJECT_VERSION_MAJOR}${CMAKE_EXECUTABLE_SUFFIX}") +endif() set_target_properties(${PROJECT_NAME} PROPERTIES RESOURCE "${RESOURCES}") set_target_properties(${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist) diff --git a/client/SDL/CMakeLists.txt b/client/SDL/CMakeLists.txt index 3485f3364..f3b4cee2f 100644 --- a/client/SDL/CMakeLists.txt +++ b/client/SDL/CMakeLists.txt @@ -117,6 +117,9 @@ add_executable(${PROJECT_NAME} ${SRCS} ) +if (WITH_BINARY_VERSIONING) + set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}${PROJECT_VERSION_MAJOR}${CMAKE_EXECUTABLE_SUFFIX}") +endif() target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBS}) set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER "Client/SDL") install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT client) diff --git a/client/Sample/CMakeLists.txt b/client/Sample/CMakeLists.txt index 601feee3b..d4ec9c89e 100644 --- a/client/Sample/CMakeLists.txt +++ b/client/Sample/CMakeLists.txt @@ -82,5 +82,8 @@ set(LIBS ) target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBS}) +if (WITH_BINARY_VERSIONING) + set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}${PROJECT_VERSION_MAJOR}${CMAKE_EXECUTABLE_SUFFIX}") +endif() set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER "Client/Sample") install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT client) diff --git a/client/Wayland/CMakeLists.txt b/client/Wayland/CMakeLists.txt index 9c29b0083..e1b973db7 100644 --- a/client/Wayland/CMakeLists.txt +++ b/client/Wayland/CMakeLists.txt @@ -48,6 +48,9 @@ list (APPEND ${MODULE_PREFIX}_LIBS freerdp-client freerdp uwac) add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +if (WITH_BINARY_VERSIONING) + set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "${MODULE_NAME}${FREERDP_API_VERSION}${CMAKE_EXECUTABLE_SUFFIX}") +endif() target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS}) install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT client) diff --git a/client/Windows/CMakeLists.txt b/client/Windows/CMakeLists.txt index cc94b99f0..ee0d83771 100644 --- a/client/Windows/CMakeLists.txt +++ b/client/Windows/CMakeLists.txt @@ -93,7 +93,11 @@ else() set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} cli/wfreerdp.c cli/wfreerdp.h) add_executable(${MODULE_NAME} ${WIN32_GUI_FLAG} ${${MODULE_PREFIX}_SRCS}) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) - set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "wfreerdp") + if (WITH_BINARY_VERSIONING) + set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "${MODULE_NAME}${FREERDP_API_VERSION}${CMAKE_EXECUTABLE_SUFFIX}") + else() + set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "${MODULE_NAME}${CMAKE_EXECUTABLE_SUFFIX}") + endif() endif() list(APPEND LIBS freerdp-client) diff --git a/client/Windows/cli/CMakeLists.txt b/client/Windows/cli/CMakeLists.txt index 17f9ae0b3..de5bb3fcd 100644 --- a/client/Windows/cli/CMakeLists.txt +++ b/client/Windows/cli/CMakeLists.txt @@ -42,6 +42,9 @@ if (WIN32) endif() add_executable(${MODULE_NAME} ${WIN32_GUI_FLAG} ${${MODULE_PREFIX}_SRCS}) +if (WITH_BINARY_VERSIONING) + set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "${MODULE_NAME}${PROJECT_VERSION_MAJOR}${CMAKE_EXECUTABLE_SUFFIX}") +endif() set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} wfreerdp-client) target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS}) diff --git a/client/X11/CMakeLists.txt b/client/X11/CMakeLists.txt index 33b3367cc..144608ee0 100644 --- a/client/X11/CMakeLists.txt +++ b/client/X11/CMakeLists.txt @@ -113,6 +113,9 @@ else() cli/xfreerdp.c xfreerdp.h ) add_executable(${PROJECT_NAME} ${SRCS}) + if (WITH_BINARY_VERSIONING) + set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}${PROJECT_VERSION_MAJOR}${CMAKE_EXECUTABLE_SUFFIX}") + endif() include_directories(..) endif() diff --git a/client/X11/cli/CMakeLists.txt b/client/X11/cli/CMakeLists.txt index 93ba323f3..09bcfd7f4 100644 --- a/client/X11/cli/CMakeLists.txt +++ b/client/X11/cli/CMakeLists.txt @@ -23,7 +23,13 @@ set(SRCS ) add_executable(${MODULE_NAME} ${SRCS}) -set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "xfreerdp" RUNTIME_OUTPUT_DIRECTORY "..") + +if (WITH_BINARY_VERSIONING) + set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "xfreerdp${PROJECT_VERSION_MAJOR}${CMAKE_EXECUTABLE_SUFFIX}") +else() + set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "xfreerdp${CMAKE_EXECUTABLE_SUFFIX}") +endif() +set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "..") list(APPEND LIBS xfreerdp-client freerdp-client diff --git a/client/iOS/CMakeLists.txt b/client/iOS/CMakeLists.txt index 6ff69bfc6..6e4237f83 100644 --- a/client/iOS/CMakeLists.txt +++ b/client/iOS/CMakeLists.txt @@ -120,6 +120,9 @@ add_executable(${MODULE_NAME} ${${MODULE_NAME}_RESOURCES} ) +if (WITH_BINARY_VERSIONING) + set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "${MODULE_NAME}${PROJECT_VERSION_MAJOR}${CMAKE_EXECUTABLE_SUFFIX}") +endif() set_target_properties(${MODULE_NAME} PROPERTIES RESOURCE "${${MODULE_NAME}_RESOURCES}") set(EXECUTABLE_NAME "\${EXECUTABLE_NAME}") diff --git a/rdtk/sample/CMakeLists.txt b/rdtk/sample/CMakeLists.txt index d97e17cb9..0568f8e9d 100644 --- a/rdtk/sample/CMakeLists.txt +++ b/rdtk/sample/CMakeLists.txt @@ -26,6 +26,9 @@ set(SRCS rdtk_x11.c) add_executable(${MODULE_NAME} ${SRCS}) +if (WITH_BINARY_VERSIONING) + set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "${MODULE_NAME}${RDTK_API_VERSION}${CMAKE_EXECUTABLE_SUFFIX}") +endif() set(LIBS rdtk) diff --git a/server/Mac/CMakeLists.txt b/server/Mac/CMakeLists.txt index 4217d5477..49f6535ac 100644 --- a/server/Mac/CMakeLists.txt +++ b/server/Mac/CMakeLists.txt @@ -56,6 +56,9 @@ if(CHANNEL_RDPSND_SERVER) endif() add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +if (WITH_BINARY_VERSIONING) + set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "${MODULE_NAME}${FREERDP_API_VERSION}${CMAKE_EXECUTABLE_SUFFIX}") +endif() set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp-server diff --git a/server/Sample/CMakeLists.txt b/server/Sample/CMakeLists.txt index bc88364cb..5820dafe9 100644 --- a/server/Sample/CMakeLists.txt +++ b/server/Sample/CMakeLists.txt @@ -52,6 +52,9 @@ endif() file(COPY test_icon.ppm DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) add_executable(${MODULE_NAME} ${SRCS}) +if (WITH_BINARY_VERSIONING) + set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "${MODULE_NAME}${FREERDP_API_VERSION}${CMAKE_EXECUTABLE_SUFFIX}") +endif() list(APPEND LIBS freerdp-server) list(APPEND LIBS winpr freerdp) diff --git a/server/Windows/CMakeLists.txt b/server/Windows/CMakeLists.txt index 87d7e052c..7ead2b254 100644 --- a/server/Windows/CMakeLists.txt +++ b/server/Windows/CMakeLists.txt @@ -89,6 +89,9 @@ if(WITH_SERVER_INTERFACE) else() set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} cli/wfreerdp.c cli/wfreerdp.h) add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) + if (WITH_BINARY_VERSIONING) + set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "${MODULE_NAME}${FREERDP_API_VERSION}${CMAKE_EXECUTABLE_SUFFIX}") + endif() endif() diff --git a/server/Windows/cli/CMakeLists.txt b/server/Windows/cli/CMakeLists.txt index 58d5df0e4..409728007 100644 --- a/server/Windows/cli/CMakeLists.txt +++ b/server/Windows/cli/CMakeLists.txt @@ -41,7 +41,11 @@ set (${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/ add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) -set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME ${OUTPUT_NAME}) +if (WITH_BINARY_VERSIONING) + set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "${OUTPUT_NAME}${FREERDP_API_VERSION}${CMAKE_EXECUTABLE_SUFFIX}") +else() + set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "${OUTPUT_NAME}${CMAKE_EXECUTABLE_SUFFIX}") +endif() set(${MODULE_PREFIX}_LIBS wfreerdp-server) diff --git a/server/proxy/cli/CMakeLists.txt b/server/proxy/cli/CMakeLists.txt index 7308809d3..ca3263cfd 100644 --- a/server/proxy/cli/CMakeLists.txt +++ b/server/proxy/cli/CMakeLists.txt @@ -36,7 +36,13 @@ endif() set(APP_NAME "freerdp-proxy") add_executable(${APP_NAME} - ${PROXY_APP_SRCS}) + ${PROXY_APP_SRCS} +) + +if (WITH_BINARY_VERSIONING) + set_target_properties(${APP_NAME} PROPERTIES OUTPUT_NAME "${APP_NAME}${FREERDP_API_VERSION}${CMAKE_EXECUTABLE_SUFFIX}") +endif() + target_link_libraries(${APP_NAME} ${MODULE_NAME}) install(TARGETS ${APP_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT server) if (WITH_DEBUG_SYMBOLS AND MSVC) diff --git a/server/shadow/CMakeLists.txt b/server/shadow/CMakeLists.txt index 52a49b5b8..48791bc5e 100644 --- a/server/shadow/CMakeLists.txt +++ b/server/shadow/CMakeLists.txt @@ -202,6 +202,10 @@ endif() add_executable(${MODULE_NAME} ${SRCS}) +if (WITH_BINARY_VERSIONING) + set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "${MODULE_NAME}${FREERDP_API_VERSION}${CMAKE_EXECUTABLE_SUFFIX}") +endif() + list(APPEND LIBS freerdp-shadow-subsystem freerdp-shadow freerdp winpr) target_link_libraries(${MODULE_NAME} PRIVATE ${LIBS}) diff --git a/winpr/tools/hash-cli/CMakeLists.txt b/winpr/tools/hash-cli/CMakeLists.txt index 18a638ab1..4a6374ee4 100644 --- a/winpr/tools/hash-cli/CMakeLists.txt +++ b/winpr/tools/hash-cli/CMakeLists.txt @@ -41,6 +41,9 @@ add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) set(${MODULE_PREFIX}_LIBS winpr) +if (WITH_BINARY_VERSIONING) + set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "${MODULE_NAME}${WINPR_API_VERSION}${CMAKE_EXECUTABLE_SUFFIX}") +endif() target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS}) install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT tools EXPORT WinPRTargets) diff --git a/winpr/tools/makecert-cli/CMakeLists.txt b/winpr/tools/makecert-cli/CMakeLists.txt index b5e835c8f..d4d5b1b1a 100644 --- a/winpr/tools/makecert-cli/CMakeLists.txt +++ b/winpr/tools/makecert-cli/CMakeLists.txt @@ -44,6 +44,9 @@ set(${MODULE_PREFIX}_LIBS winpr-tools) target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS} winpr) +if (WITH_BINARY_VERSIONING) + set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "${MODULE_NAME}${WINPR_API_VERSION}${CMAKE_EXECUTABLE_SUFFIX}") +endif() set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "WinPR/Tools") install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT tools EXPORT WinPRTargets)