mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-14 16:34:18 +09:00
freerdp: fix building of libraries for Android
This commit is contained in:
@@ -149,20 +149,37 @@ if(APPLE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl-framework,CoreFoundation")
|
||||
endif()
|
||||
|
||||
# Android
|
||||
if(ANDROID)
|
||||
set(WITH_X11 OFF)
|
||||
set(WITH_CUPS OFF)
|
||||
set(WITH_ALSA OFF)
|
||||
set(WITH_PULSEAUDIO OFF)
|
||||
set(WITH_FFMPEG OFF)
|
||||
set(WITH_GSTREAMER OFF)
|
||||
set(WITH_PCSC OFF)
|
||||
endif()
|
||||
|
||||
if(NOT WIN32)
|
||||
find_required_package(ZLIB)
|
||||
find_optional_package(PulseAudio)
|
||||
find_optional_package(MacAudio)
|
||||
find_optional_package(PCSC)
|
||||
find_suggested_package(Cups)
|
||||
|
||||
if(NOT ANDROID)
|
||||
find_suggested_package(Cups)
|
||||
endif()
|
||||
|
||||
if(NOT APPLE)
|
||||
find_suggested_package(FFmpeg)
|
||||
find_suggested_package(XRandR)
|
||||
find_suggested_package(Gstreamer)
|
||||
find_suggested_package(ALSA)
|
||||
else(NOT APPLE)
|
||||
find_optional_package(FFmpeg)
|
||||
if(NOT ANDROID)
|
||||
find_suggested_package(ALSA)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT ANDROID)
|
||||
find_suggested_package(FFmpeg)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS
|
||||
MODULE freerdp
|
||||
MODULES freerdp-utils)
|
||||
|
||||
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
|
||||
install(TARGETS ${MODULE_NAME} DESTINATION ${FREERDP_PLUGIN_PATH})
|
||||
|
||||
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Channels/${MODULE_NAME}/Client")
|
||||
|
||||
@@ -6,6 +6,10 @@ set(CHANNEL_SPECIFICATIONS "[MS-RDPEFS]")
|
||||
|
||||
string(TOUPPER "WITH_${CHANNEL_SHORT_NAME}" CHANNEL_OPTION)
|
||||
|
||||
option(${CHANNEL_OPTION} "Build ${CHANNEL_SHORT_NAME}" ON)
|
||||
if(ANDROID)
|
||||
option(${CHANNEL_OPTION} "Build ${CHANNEL_SHORT_NAME}" OFF)
|
||||
else()
|
||||
option(${CHANNEL_OPTION} "Build ${CHANNEL_SHORT_NAME}" ON)
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
@@ -32,8 +32,12 @@
|
||||
#include "statvfs.h"
|
||||
#else
|
||||
#include <dirent.h>
|
||||
#ifdef ANDROID
|
||||
#include <sys/vfs.h>
|
||||
#else
|
||||
#include <sys/statvfs.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#define STAT stat
|
||||
@@ -49,8 +53,8 @@
|
||||
#define unlink(a) _unlink(a)
|
||||
#define ftruncate(a,b) _chsize(a,b)
|
||||
|
||||
typedef UINT32 ssize_t ;
|
||||
typedef UINT32 mode_t ;
|
||||
typedef UINT32 ssize_t;
|
||||
typedef UINT32 mode_t;
|
||||
|
||||
#elif defined(__APPLE__) || defined(__FreeBSD__)
|
||||
#define STAT stat
|
||||
|
||||
@@ -35,6 +35,7 @@ set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS
|
||||
MODULE winpr
|
||||
MODULES winpr-interlocked)
|
||||
|
||||
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
|
||||
install(TARGETS ${MODULE_NAME} DESTINATION ${FREERDP_PLUGIN_PATH})
|
||||
|
||||
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Channels/${MODULE_NAME}/Client")
|
||||
|
||||
@@ -32,6 +32,7 @@ set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS
|
||||
MODULE freerdp
|
||||
MODULES freerdp-utils)
|
||||
|
||||
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
|
||||
install(TARGETS ${MODULE_NAME} DESTINATION ${FREERDP_PLUGIN_PATH})
|
||||
|
||||
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Channels/${MODULE_NAME}/Client")
|
||||
|
||||
@@ -22,14 +22,14 @@ if(NOT WIN32)
|
||||
add_subdirectory(Sample)
|
||||
|
||||
# Build X11 Client
|
||||
find_suggested_package(X11)
|
||||
if(WITH_X11)
|
||||
find_suggested_package(X11)
|
||||
add_subdirectory(X11)
|
||||
endif()
|
||||
|
||||
# Build DirectFB Client
|
||||
find_optional_package(DirectFB)
|
||||
if(WITH_DIRECTFB)
|
||||
find_optional_package(DirectFB)
|
||||
add_subdirectory(DirectFB)
|
||||
endif()
|
||||
else()
|
||||
|
||||
@@ -49,18 +49,21 @@ if(CMAKE_SYSTEM_NAME MATCHES Solaris)
|
||||
endif()
|
||||
|
||||
if(NOT WIN32)
|
||||
find_suggested_package(X11)
|
||||
if(WITH_X11)
|
||||
find_suggested_package(X11)
|
||||
|
||||
add_definitions(-DWITH_X11)
|
||||
include_directories(${X11_INCLUDE_DIRS})
|
||||
set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${${MODULE_PREFIX}_X11_SRCS})
|
||||
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} ${X11_LIBRARIES})
|
||||
|
||||
if(WITH_SUN)
|
||||
add_definitions(-DWITH_SUN)
|
||||
set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${${MODULE_PREFIX}_SUN_SRCS})
|
||||
elseif(NOT APPLE)
|
||||
find_suggested_package(XKBFile)
|
||||
endif()
|
||||
|
||||
if(WITH_XKBFILE)
|
||||
add_definitions(-DWITH_XKBFILE)
|
||||
include_directories(${XKBFILE_INCLUDE_DIRS})
|
||||
|
||||
@@ -23,13 +23,17 @@
|
||||
|
||||
#include <errno.h>
|
||||
#include <freerdp/utils/passphrase.h>
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
char* freerdp_passphrase_read(const char* prompt, char* buf, size_t bufsiz, int from_stdin)
|
||||
{
|
||||
errno=ENOSYS;
|
||||
errno = ENOSYS;
|
||||
return NULL;
|
||||
}
|
||||
#else
|
||||
|
||||
#elif (!ANDROID)
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
@@ -125,4 +129,13 @@ char* freerdp_passphrase_read(const char* prompt, char* buf, size_t bufsiz, int
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
char* freerdp_passphrase_read(const char* prompt, char* buf, size_t bufsiz, int from_stdin)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -24,14 +24,19 @@
|
||||
#include <stddef.h>
|
||||
#include <freerdp/utils/signal.h>
|
||||
#include <freerdp/utils/memory.h>
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
int freerdp_handle_signals(void)
|
||||
{
|
||||
errno = ENOSYS;
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
|
||||
#elif (!ANDROID)
|
||||
|
||||
volatile sig_atomic_t terminal_needs_reset = 0;
|
||||
int terminal_fildes = 0;
|
||||
struct termios orig_flags;
|
||||
@@ -117,4 +122,12 @@ int freerdp_handle_signals(void)
|
||||
pthread_sigmask(SIG_SETMASK, &orig_set, NULL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
int freerdp_handle_signals(void)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -44,8 +44,12 @@ void* _aligned_malloc(size_t size, size_t alignment)
|
||||
if (alignment % 2 == 1)
|
||||
return NULL;
|
||||
|
||||
#ifdef ANDROID
|
||||
memptr = memalign(alignment, size);
|
||||
#else
|
||||
if (posix_memalign(&memptr, alignment, size) != 0)
|
||||
return NULL;
|
||||
#endif
|
||||
|
||||
return memptr;
|
||||
}
|
||||
@@ -83,8 +87,12 @@ void* _aligned_offset_malloc(size_t size, size_t alignment, size_t offset)
|
||||
if (alignment < sizeof(void*))
|
||||
alignment = sizeof(void*);
|
||||
|
||||
#ifdef ANDROID
|
||||
memptr = memalign(alignment, size);
|
||||
#else
|
||||
if (posix_memalign(&memptr, alignment, size) != 0)
|
||||
return NULL;
|
||||
#endif
|
||||
|
||||
return memptr;
|
||||
}
|
||||
|
||||
@@ -271,7 +271,29 @@ LONGLONG InterlockedCompareExchange64(LONGLONG volatile *Destination, LONGLONG E
|
||||
return previousValue;
|
||||
}
|
||||
|
||||
#else /* (_WIN32 && (_WIN32_WINNT < 0x0502)) */
|
||||
#elif ANDROID
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
static pthread_mutex_t mutex;
|
||||
|
||||
LONGLONG InterlockedCompareExchange64(LONGLONG volatile *Destination, LONGLONG Exchange, LONGLONG Comperand)
|
||||
{
|
||||
LONGLONG previousValue = 0;
|
||||
|
||||
pthread_mutex_lock(&mutex);
|
||||
|
||||
previousValue = *Destination;
|
||||
|
||||
if (*Destination == Comperand)
|
||||
*Destination = Exchange;
|
||||
|
||||
pthread_mutex_unlock(&mutex);
|
||||
|
||||
return previousValue;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
LONGLONG InterlockedCompareExchange64(LONGLONG volatile *Destination, LONGLONG Exchange, LONGLONG Comperand)
|
||||
{
|
||||
@@ -282,7 +304,7 @@ LONGLONG InterlockedCompareExchange64(LONGLONG volatile *Destination, LONGLONG E
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* (_WIN32 && (_WIN32_WINNT < 0x0502)) */
|
||||
#endif
|
||||
|
||||
/* Doubly-Linked List */
|
||||
|
||||
|
||||
@@ -196,7 +196,9 @@ BOOL TerminateThread(HANDLE hThread, DWORD dwExitCode)
|
||||
|
||||
pthread_mutex_lock(&thread->mutex);
|
||||
|
||||
#ifndef ANDROID
|
||||
pthread_cancel(thread->thread);
|
||||
#endif
|
||||
|
||||
pthread_mutex_unlock(&thread->mutex);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user