mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-15 00:44:19 +09:00
fix and improve cJSON detection
This commit is contained in:
committed by
akallabeth
parent
f26dc59a9d
commit
b34bad2b50
@@ -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
19
cmake/FindCJSON.cmake
Normal 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)
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user