mirror of
https://github.com/FreeRDP/FreeRDP.git
synced 2025-06-03 00:00:20 +00:00
Merge pull request #10944 from akallabeth/cmake-clean-fix
[cmake,configure_file] fix change checks
This commit is contained in:
commit
f2f81eaac2
@ -11,4 +11,5 @@ set(WITH_KRB5 OFF CACHE BOOL "Kerberos support")
|
|||||||
set(WITH_CLIENT_SDL OFF CACHE BOOL "SDL client")
|
set(WITH_CLIENT_SDL OFF CACHE BOOL "SDL client")
|
||||||
set(WITH_SERVER OFF CACHE BOOL "ci default")
|
set(WITH_SERVER OFF CACHE BOOL "ci default")
|
||||||
set(WITH_X11 OFF CACHE BOOL "ci default")
|
set(WITH_X11 OFF CACHE BOOL "ci default")
|
||||||
|
set(WITH_MANPAGES OFF CACHE BOOL "ci default")
|
||||||
set(WITH_LIBRARY_VERSIONING OFF CACHE BOOL "ci default")
|
set(WITH_LIBRARY_VERSIONING OFF CACHE BOOL "ci default")
|
||||||
|
@ -21,11 +21,11 @@ set(MAN_OPTIONS_FILE "${CMAKE_CURRENT_BINARY_DIR}/freerdp-global-options.1")
|
|||||||
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${MAN_OPTIONS_FILE})
|
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${MAN_OPTIONS_FILE})
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${MAN_OPTIONS_FILE} COMMAND ${CMAKE_BINARY_DIR}/client/common/man/generate_argument_manpage
|
OUTPUT ${MAN_OPTIONS_FILE} COMMAND $<TARGET_FILE:generate_argument_manpage> "${MAN_OPTIONS_FILE}"
|
||||||
"${MAN_OPTIONS_FILE}" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS generate_argument_manpage
|
||||||
DEPENDS generate_argument_manpage
|
|
||||||
)
|
)
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
generate_argument_manpage.target DEPENDS ${MAN_OPTIONS_FILE} ${CMAKE_BINARY_DIR}/include/freerdp/config.h
|
generate_argument_manpage.target DEPENDS ${MAN_OPTIONS_FILE} ${CMAKE_BINARY_DIR}/include/freerdp/config.h
|
||||||
generate_argument_manpage WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
$<TARGET_FILE:generate_argument_manpage>
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
)
|
)
|
||||||
|
@ -10,17 +10,28 @@ function(cleaning_configure_file RSRC RDST)
|
|||||||
get_filename_component(SRC "${RSRC}" ABSOLUTE BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
get_filename_component(SRC "${RSRC}" ABSOLUTE BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
get_filename_component(DST "${RDST}" ABSOLUTE BASE_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
get_filename_component(DST "${RDST}" ABSOLUTE BASE_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
get_filename_component(DST_DIR "${DST}" DIRECTORY)
|
get_filename_component(DST_DIR "${DST}" DIRECTORY)
|
||||||
|
get_filename_component(DST_NAME ${DST} NAME)
|
||||||
|
|
||||||
|
# ensure the temporary configuration files are in a different directory
|
||||||
|
set(CFG_DIR "${CMAKE_CURRENT_BINARY_DIR}/cfg")
|
||||||
|
file(MAKE_DIRECTORY "${CFG_DIR}")
|
||||||
|
|
||||||
|
# Generate the temporary configuration files
|
||||||
if(CMAKE_CONFIGURATION_TYPES)
|
if(CMAKE_CONFIGURATION_TYPES)
|
||||||
foreach(CFG ${CMAKE_CONFIGURATION_TYPES})
|
foreach(CFG ${CMAKE_CONFIGURATION_TYPES})
|
||||||
set(CURRENT_BUILD_CONFIG ${CFG})
|
set(CURRENT_BUILD_CONFIG ${CFG})
|
||||||
|
if(NOT SOURCE_CFG_INIT)
|
||||||
|
set(SOURCE_CFG_INIT "${CFG_DIR}/${DST_NAME}_${CFG}")
|
||||||
|
endif()
|
||||||
cflagstovar(CURRENT_C_FLAGS ${CURRENT_BUILD_CONFIG})
|
cflagstovar(CURRENT_C_FLAGS ${CURRENT_BUILD_CONFIG})
|
||||||
configure_file(${SRC} ${DST}_${CFG} ${ARGN})
|
configure_file(${SRC} "${CFG_DIR}/${DST_NAME}_${CFG}" ${ARGN})
|
||||||
unset(CURRENT_BUILD_CONFIG)
|
unset(CURRENT_BUILD_CONFIG)
|
||||||
unset(CURRENT_C_FLAGS)
|
unset(CURRENT_C_FLAGS)
|
||||||
endforeach()
|
endforeach()
|
||||||
|
set(SOURCE_CFG "${CFG_DIR}/${DST_NAME}_$<CONFIG>")
|
||||||
else()
|
else()
|
||||||
# We call this also from CMake scripts without a CMAKE_BUILD_TYPE
|
# We call this also from CMake scripts without a CMAKE_BUILD_TYPE
|
||||||
# Fall back to an explicitly unsupported build type to point out something is wrond
|
# Fall back to an explicitly unsupported build type to point out something is wrong
|
||||||
# if this variable is used during such a call
|
# if this variable is used during such a call
|
||||||
if(CMAKE_BUILD_TYPE)
|
if(CMAKE_BUILD_TYPE)
|
||||||
set(CURRENT_BUILD_CONFIG ${CMAKE_BUILD_TYPE})
|
set(CURRENT_BUILD_CONFIG ${CMAKE_BUILD_TYPE})
|
||||||
@ -28,20 +39,32 @@ function(cleaning_configure_file RSRC RDST)
|
|||||||
set(CURRENT_BUILD_CONFIG "InvalidBuildType")
|
set(CURRENT_BUILD_CONFIG "InvalidBuildType")
|
||||||
endif()
|
endif()
|
||||||
cflagstovar(CURRENT_C_FLAGS ${CURRENT_BUILD_CONFIG})
|
cflagstovar(CURRENT_C_FLAGS ${CURRENT_BUILD_CONFIG})
|
||||||
configure_file(${SRC} ${DST}_${CMAKE_BUILD_TYPE} ${ARGN})
|
set(SOURCE_CFG "${CFG_DIR}/${DST_NAME}_${CMAKE_BUILD_TYPE}")
|
||||||
|
set(SOURCE_CFG_INIT "${SOURCE_CFG}")
|
||||||
|
configure_file(${SRC} "${SOURCE_CFG}" ${ARGN})
|
||||||
unset(CURRENT_BUILD_CONFIG)
|
unset(CURRENT_BUILD_CONFIG)
|
||||||
unset(CURRENT_C_FLAGS)
|
unset(CURRENT_C_FLAGS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
configure_file(${SRC} ${DST} ${ARGN})
|
# Fallback for older CMake: we want to copy only if the destination is different.
|
||||||
|
# First do an initial copy during configuration
|
||||||
|
file(MAKE_DIRECTORY "${DST_DIR}")
|
||||||
|
if(CMAKE_VERSION VERSION_LESS "3.21.0")
|
||||||
|
get_filename_component(CFG_VAR ${SOURCE_CFG_INIT} NAME)
|
||||||
|
file(COPY ${SOURCE_CFG_INIT} DESTINATION ${DST_DIR})
|
||||||
|
set(CFG_VAR_ABS "${DST_DIR}/${CFG_VAR}")
|
||||||
|
file(RENAME ${CFG_VAR_ABS} ${DST})
|
||||||
|
else()
|
||||||
|
file(COPY_FILE ${SOURCE_CFG_INIT} ${DST} ONLY_IF_DIFFERENT)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Create a target to recreate the configuration file if something changes.
|
||||||
string(SHA256 DST_HASH "${DST}")
|
string(SHA256 DST_HASH "${DST}")
|
||||||
if(NOT TARGET ct-${DST_HASH})
|
if(NOT TARGET ct-${DST_HASH})
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
ct-${DST_HASH} ALL COMMAND ${CMAKE_COMMAND} "-E" "make_directory" "${DST_DIR}"
|
ct-${DST_HASH} ALL COMMAND ${CMAKE_COMMAND} "-E" "make_directory" "${DST_DIR}"
|
||||||
COMMAND ${CMAKE_COMMAND} "-E" "copy" "${DST}_$<CONFIG>" "${DST}" COMMAND ${CMAKE_COMMAND} "-E" "sha256sum"
|
COMMAND ${CMAKE_COMMAND} "-E" "copy_if_different" "${SOURCE_CFG}" "${DST}" DEPENDS ${SOURCE_CFG}
|
||||||
"${DST}_$<CONFIG>" > ${DST}.hash
|
BYPRODUCTS ${DST}
|
||||||
DEPENDS ${DST} BYPRODUCTS ${DST}.hash
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
9
cmake/DumpVariables.cmake
Normal file
9
cmake/DumpVariables.cmake
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
function(dump_cmake_variables)
|
||||||
|
get_cmake_property(_variableNames VARIABLES)
|
||||||
|
list(SORT _variableNames)
|
||||||
|
foreach(_variableName ${_variableNames})
|
||||||
|
if((NOT DEFINED ARGV0) OR _variableName MATCHES ${ARGV0})
|
||||||
|
message(STATUS "${_variableName}=${${_variableName}}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endfunction()
|
@ -108,6 +108,7 @@ CMAKE_CMD_ARGS="-DANDROID_NDK=$ANDROID_NDK \
|
|||||||
-DFREERDP_EXTERNAL_PATH=$BUILD_DST \
|
-DFREERDP_EXTERNAL_PATH=$BUILD_DST \
|
||||||
-DWITH_CLIENT_SDL=OFF \
|
-DWITH_CLIENT_SDL=OFF \
|
||||||
-DWITH_SERVER=OFF \
|
-DWITH_SERVER=OFF \
|
||||||
|
-DWITH_MANPAGES=OFF \
|
||||||
-DCMAKE_MAKE_PROGRAM=make"
|
-DCMAKE_MAKE_PROGRAM=make"
|
||||||
|
|
||||||
BASE=$(pwd)
|
BASE=$(pwd)
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
#include <cjson/cJSON.h>
|
#include <cjson/cJSON.h>
|
||||||
#endif
|
#endif
|
||||||
#if defined(WITH_JSONC)
|
#if defined(WITH_JSONC)
|
||||||
#include <json-c/json.h>
|
#include <json.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(WITH_CJSON)
|
#if defined(WITH_CJSON)
|
||||||
|
Loading…
Reference in New Issue
Block a user