freerdp: fix building of libraries for Android

This commit is contained in:
Marc-André Moreau
2012-10-13 20:31:01 -04:00
parent 229438dbf3
commit e764c81ad5
13 changed files with 105 additions and 16 deletions

View File

@@ -149,20 +149,37 @@ if(APPLE)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl-framework,CoreFoundation") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl-framework,CoreFoundation")
endif() 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) if(NOT WIN32)
find_required_package(ZLIB) find_required_package(ZLIB)
find_optional_package(PulseAudio) find_optional_package(PulseAudio)
find_optional_package(MacAudio) find_optional_package(MacAudio)
find_optional_package(PCSC) find_optional_package(PCSC)
find_suggested_package(Cups)
if(NOT ANDROID)
find_suggested_package(Cups)
endif()
if(NOT APPLE) if(NOT APPLE)
find_suggested_package(FFmpeg)
find_suggested_package(XRandR) find_suggested_package(XRandR)
find_suggested_package(Gstreamer) find_suggested_package(Gstreamer)
find_suggested_package(ALSA) if(NOT ANDROID)
else(NOT APPLE) find_suggested_package(ALSA)
find_optional_package(FFmpeg) endif()
endif()
if(NOT ANDROID)
find_suggested_package(FFmpeg)
endif() endif()
endif() endif()

View File

@@ -32,6 +32,7 @@ set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS
MODULE freerdp MODULE freerdp
MODULES freerdp-utils) MODULES freerdp-utils)
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
install(TARGETS ${MODULE_NAME} DESTINATION ${FREERDP_PLUGIN_PATH}) install(TARGETS ${MODULE_NAME} DESTINATION ${FREERDP_PLUGIN_PATH})
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Channels/${MODULE_NAME}/Client") set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Channels/${MODULE_NAME}/Client")

View File

@@ -6,6 +6,10 @@ set(CHANNEL_SPECIFICATIONS "[MS-RDPEFS]")
string(TOUPPER "WITH_${CHANNEL_SHORT_NAME}" CHANNEL_OPTION) 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()

View File

@@ -32,8 +32,12 @@
#include "statvfs.h" #include "statvfs.h"
#else #else
#include <dirent.h> #include <dirent.h>
#ifdef ANDROID
#include <sys/vfs.h>
#else
#include <sys/statvfs.h> #include <sys/statvfs.h>
#endif #endif
#endif
#ifdef _WIN32 #ifdef _WIN32
#define STAT stat #define STAT stat
@@ -49,8 +53,8 @@
#define unlink(a) _unlink(a) #define unlink(a) _unlink(a)
#define ftruncate(a,b) _chsize(a,b) #define ftruncate(a,b) _chsize(a,b)
typedef UINT32 ssize_t ; typedef UINT32 ssize_t;
typedef UINT32 mode_t ; typedef UINT32 mode_t;
#elif defined(__APPLE__) || defined(__FreeBSD__) #elif defined(__APPLE__) || defined(__FreeBSD__)
#define STAT stat #define STAT stat

View File

@@ -35,6 +35,7 @@ set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS
MODULE winpr MODULE winpr
MODULES winpr-interlocked) MODULES winpr-interlocked)
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
install(TARGETS ${MODULE_NAME} DESTINATION ${FREERDP_PLUGIN_PATH}) install(TARGETS ${MODULE_NAME} DESTINATION ${FREERDP_PLUGIN_PATH})
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Channels/${MODULE_NAME}/Client") set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Channels/${MODULE_NAME}/Client")

View File

@@ -32,6 +32,7 @@ set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS
MODULE freerdp MODULE freerdp
MODULES freerdp-utils) MODULES freerdp-utils)
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
install(TARGETS ${MODULE_NAME} DESTINATION ${FREERDP_PLUGIN_PATH}) install(TARGETS ${MODULE_NAME} DESTINATION ${FREERDP_PLUGIN_PATH})
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Channels/${MODULE_NAME}/Client") set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Channels/${MODULE_NAME}/Client")

View File

@@ -22,14 +22,14 @@ if(NOT WIN32)
add_subdirectory(Sample) add_subdirectory(Sample)
# Build X11 Client # Build X11 Client
find_suggested_package(X11)
if(WITH_X11) if(WITH_X11)
find_suggested_package(X11)
add_subdirectory(X11) add_subdirectory(X11)
endif() endif()
# Build DirectFB Client # Build DirectFB Client
find_optional_package(DirectFB)
if(WITH_DIRECTFB) if(WITH_DIRECTFB)
find_optional_package(DirectFB)
add_subdirectory(DirectFB) add_subdirectory(DirectFB)
endif() endif()
else() else()

View File

@@ -49,18 +49,21 @@ if(CMAKE_SYSTEM_NAME MATCHES Solaris)
endif() endif()
if(NOT WIN32) if(NOT WIN32)
find_suggested_package(X11)
if(WITH_X11) if(WITH_X11)
find_suggested_package(X11)
add_definitions(-DWITH_X11) add_definitions(-DWITH_X11)
include_directories(${X11_INCLUDE_DIRS}) include_directories(${X11_INCLUDE_DIRS})
set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${${MODULE_PREFIX}_X11_SRCS}) set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${${MODULE_PREFIX}_X11_SRCS})
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} ${X11_LIBRARIES}) set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} ${X11_LIBRARIES})
if(WITH_SUN) if(WITH_SUN)
add_definitions(-DWITH_SUN) add_definitions(-DWITH_SUN)
set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${${MODULE_PREFIX}_SUN_SRCS}) set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${${MODULE_PREFIX}_SUN_SRCS})
elseif(NOT APPLE) elseif(NOT APPLE)
find_suggested_package(XKBFile) find_suggested_package(XKBFile)
endif() endif()
if(WITH_XKBFILE) if(WITH_XKBFILE)
add_definitions(-DWITH_XKBFILE) add_definitions(-DWITH_XKBFILE)
include_directories(${XKBFILE_INCLUDE_DIRS}) include_directories(${XKBFILE_INCLUDE_DIRS})

View File

@@ -23,13 +23,17 @@
#include <errno.h> #include <errno.h>
#include <freerdp/utils/passphrase.h> #include <freerdp/utils/passphrase.h>
#ifdef _WIN32 #ifdef _WIN32
char* freerdp_passphrase_read(const char* prompt, char* buf, size_t bufsiz, int from_stdin) char* freerdp_passphrase_read(const char* prompt, char* buf, size_t bufsiz, int from_stdin)
{ {
errno=ENOSYS; errno = ENOSYS;
return NULL; return NULL;
} }
#else
#elif (!ANDROID)
#include <fcntl.h> #include <fcntl.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
@@ -125,4 +129,13 @@ char* freerdp_passphrase_read(const char* prompt, char* buf, size_t bufsiz, int
return NULL; return NULL;
} }
} }
#else
char* freerdp_passphrase_read(const char* prompt, char* buf, size_t bufsiz, int from_stdin)
{
return NULL;
}
#endif #endif

View File

@@ -24,14 +24,19 @@
#include <stddef.h> #include <stddef.h>
#include <freerdp/utils/signal.h> #include <freerdp/utils/signal.h>
#include <freerdp/utils/memory.h> #include <freerdp/utils/memory.h>
#ifdef _WIN32 #ifdef _WIN32
#include <errno.h> #include <errno.h>
int freerdp_handle_signals(void) int freerdp_handle_signals(void)
{ {
errno = ENOSYS; errno = ENOSYS;
return -1; return -1;
} }
#else
#elif (!ANDROID)
volatile sig_atomic_t terminal_needs_reset = 0; volatile sig_atomic_t terminal_needs_reset = 0;
int terminal_fildes = 0; int terminal_fildes = 0;
struct termios orig_flags; struct termios orig_flags;
@@ -117,4 +122,12 @@ int freerdp_handle_signals(void)
pthread_sigmask(SIG_SETMASK, &orig_set, NULL); pthread_sigmask(SIG_SETMASK, &orig_set, NULL);
return 0; return 0;
} }
#else
int freerdp_handle_signals(void)
{
return -1;
}
#endif #endif

View File

@@ -44,8 +44,12 @@ void* _aligned_malloc(size_t size, size_t alignment)
if (alignment % 2 == 1) if (alignment % 2 == 1)
return NULL; return NULL;
#ifdef ANDROID
memptr = memalign(alignment, size);
#else
if (posix_memalign(&memptr, alignment, size) != 0) if (posix_memalign(&memptr, alignment, size) != 0)
return NULL; return NULL;
#endif
return memptr; return memptr;
} }
@@ -83,8 +87,12 @@ void* _aligned_offset_malloc(size_t size, size_t alignment, size_t offset)
if (alignment < sizeof(void*)) if (alignment < sizeof(void*))
alignment = sizeof(void*); alignment = sizeof(void*);
#ifdef ANDROID
memptr = memalign(alignment, size);
#else
if (posix_memalign(&memptr, alignment, size) != 0) if (posix_memalign(&memptr, alignment, size) != 0)
return NULL; return NULL;
#endif
return memptr; return memptr;
} }

View File

@@ -271,7 +271,29 @@ LONGLONG InterlockedCompareExchange64(LONGLONG volatile *Destination, LONGLONG E
return previousValue; 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) LONGLONG InterlockedCompareExchange64(LONGLONG volatile *Destination, LONGLONG Exchange, LONGLONG Comperand)
{ {
@@ -282,7 +304,7 @@ LONGLONG InterlockedCompareExchange64(LONGLONG volatile *Destination, LONGLONG E
#endif #endif
} }
#endif /* (_WIN32 && (_WIN32_WINNT < 0x0502)) */ #endif
/* Doubly-Linked List */ /* Doubly-Linked List */

View File

@@ -196,7 +196,9 @@ BOOL TerminateThread(HANDLE hThread, DWORD dwExitCode)
pthread_mutex_lock(&thread->mutex); pthread_mutex_lock(&thread->mutex);
#ifndef ANDROID
pthread_cancel(thread->thread); pthread_cancel(thread->thread);
#endif
pthread_mutex_unlock(&thread->mutex); pthread_mutex_unlock(&thread->mutex);