fix and improve cJSON detection

This commit is contained in:
Marc-André Moreau
2023-03-10 14:55:50 -05:00
committed by akallabeth
parent f26dc59a9d
commit b34bad2b50
5 changed files with 35 additions and 37 deletions

View File

@@ -612,6 +612,10 @@ set(PCSC_FEATURE_TYPE "RECOMMENDED")
set(PCSC_FEATURE_PURPOSE "smart card")
set(PCSC_FEATURE_DESCRIPTION "smart card device redirection")
set(CJSON_FEATURE_TYPE "RECOMMENDED")
set(CJSON_FEATURE_PURPOSE "JSON")
set(CJSON_FEATURE_DESCRIPTION "Azure AD, RDS AAD authentication")
set(FFMPEG_FEATURE_TYPE "RECOMMENDED")
set(FFMPEG_FEATURE_PURPOSE "multimedia")
set(FFMPEG_FEATURE_DESCRIPTION "multimedia redirection, audio and video playback")
@@ -731,6 +735,8 @@ find_feature(Pulse ${PULSE_FEATURE_TYPE} ${PULSE_FEATURE_PURPOSE} ${PULSE_FEATUR
find_feature(Cups ${CUPS_FEATURE_TYPE} ${CUPS_FEATURE_PURPOSE} ${CUPS_FEATURE_DESCRIPTION})
find_feature(PCSC ${PCSC_FEATURE_TYPE} ${PCSC_FEATURE_PURPOSE} ${PCSC_FEATURE_DESCRIPTION})
find_feature(CJSON ${CJSON_FEATURE_TYPE} ${CJSON_FEATURE_PURPOSE} ${CJSON_FEATURE_DESCRIPTION})
if (WITH_DSP_FFMPEG OR WITH_VIDEO_FFMPEG OR WITH_FFMPEG)
set(FFMPEG_FEATURE_TYPE "REQUIRED" )
endif()

19
cmake/FindCJSON.cmake Normal file
View File

@@ -0,0 +1,19 @@
# - Try to find CJSON
# Once done this will define
# CJSON_FOUND - cJSON was found
# CJSON_INCLUDE_DIRS - cJSON include directories
# CJSON_LIBRARIES - cJSON libraries for linking
find_path(CJSON_INCLUDE_DIR
NAMES cjson/cJSON.h)
find_library(CJSON_LIBRARY
NAMES cjson)
if (CJSON_INCLUDE_DIR AND CJSON_LIBRARY)
set(CJSON_FOUND ON)
set(CJSON_INCLUDE_DIRS ${CJSON_INCLUDE_DIR})
set(CJSON_LIBRARIES ${CJSON_LIBRARY})
endif()
mark_as_advanced(CJSON_INCLUDE_DIRS CJSON_LIBRARIES)

View File

@@ -20,6 +20,7 @@
#cmakedefine WITH_CUPS
#cmakedefine WITH_JPEG
#cmakedefine WITH_WIN8
#cmakedefine WITH_CJSON
#cmakedefine WITH_CAIRO
#cmakedefine WITH_SWSCALE
#cmakedefine WITH_RDPSND_DSOUND

View File

@@ -82,39 +82,6 @@ macro (freerdp_definition_add)
set (LIBFREERDP_DEFINITIONS ${LIBFREERDP_DEFINITIONS} PARENT_SCOPE)
endmacro()
find_package(cJSON)
# some very enthusiastic packagers forgot to package the cJSONConfig.cmake
# so try to find the paths manually
if (NOT CJSON_FOUND)
find_file(CJSON_INCLUDE_HEADER
NAMES cJSON.h
PATH_SUFFIXES cjson
)
# Extract the include base path from the header file path.
# first remove the filename, and then the last directory component as we expect
# somepath/cjson/cJSON.h (#include <cjson/cJSON.h>)
get_filename_component(CJSON_INCLUDE_DIRS ${CJSON_INCLUDE_HEADER} DIRECTORY)
get_filename_component(CJSON_INCLUDE_DIRS ${CJSON_INCLUDE_DIRS} DIRECTORY)
find_library(CJSON_LIBRARIES
NAMES cjson
)
if (CJSON_INCLUDE_DIRS AND CJSON_LIBRARIES)
set(CJSON_FOUND ON)
endif()
endif()
if (CJSON_FOUND)
freerdp_definition_add(-DCJSON_FOUND)
freerdp_include_directory_add(${CJSON_INCLUDE_DIRS})
freerdp_library_add(${CJSON_LIBRARIES})
else()
message(WARNING "building without cJSON, AAD authentication disabled for this build")
endif()
if (WITH_SWSCALE)
find_package(SWScale REQUIRED)
endif(WITH_SWSCALE)
@@ -252,6 +219,11 @@ if(FAAC_FOUND)
include_directories(${FAAC_INCLUDE_DIRS})
endif()
if(WITH_CJSON)
freerdp_library_add(${CJSON_LIBRARIES})
include_directories(${CJSON_INCLUDE_DIRS})
endif()
if(WITH_NEON)
check_symbol_exists("_M_AMD64" "" MSVC_ARM64)
check_symbol_exists("__aarch64__" "" ARCH_ARM64)

View File

@@ -24,7 +24,7 @@
#include <freerdp/crypto/crypto.h>
#if defined(CJSON_FOUND)
#ifdef WITH_CJSON
#include <cjson/cJSON.h>
#endif
@@ -39,7 +39,7 @@
#include "aad.h"
#if defined(CJSON_FOUND)
#ifdef WITH_CJSON
#if CJSON_VERSION_MAJOR == 1
#if CJSON_VERSION_MINOR <= 7
#if CJSON_VERSION_PATCH < 13
@@ -62,7 +62,7 @@ struct rdp_aad
wLog* log;
};
#if defined(CJSON_FOUND)
#ifdef WITH_CJSON
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
#include <openssl/core_names.h>
#else
@@ -1208,7 +1208,7 @@ AAD_STATE aad_get_state(rdpAad* aad)
BOOL aad_is_supported(void)
{
#if defined(CJSON_FOUND)
#ifdef WITH_CJSON
return TRUE;
#else
return FALSE;