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")
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()

View File

@@ -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")

View File

@@ -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()

View File

@@ -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

View File

@@ -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")

View File

@@ -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")

View File

@@ -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()

View File

@@ -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})

View File

@@ -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

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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 */

View File

@@ -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);