diff --git a/client/Windows/CMakeLists.txt b/client/Windows/CMakeLists.txt index c006d1b00..678a9b5a1 100644 --- a/client/Windows/CMakeLists.txt +++ b/client/Windows/CMakeLists.txt @@ -44,7 +44,6 @@ else() add_executable(${MODULE_NAME} WIN32 ${${MODULE_PREFIX}_SRCS}) endif() - set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp-client) set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS diff --git a/client/X11/CMakeLists.txt b/client/X11/CMakeLists.txt index 1b41e3ffb..0461a3550 100644 --- a/client/X11/CMakeLists.txt +++ b/client/X11/CMakeLists.txt @@ -15,8 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -set(MODULE_NAME "xfreerdp") -set(MODULE_PREFIX "FREERDP_CLIENT_X11") +set(MODULE_NAME "xfreerdp-client") +set(MODULE_PREFIX "FREERDP_CLIENT_X11_CONTROL") include(FindXmlto) include_directories(${X11_INCLUDE_DIRS}) @@ -41,11 +41,15 @@ set(${MODULE_PREFIX}_SRCS xf_window.c xf_window.h xf_interface.c - xf_interface.h - xfreerdp.c - xfreerdp.h) + xf_interface.h) -add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +if(WITH_CLIENT_INTERFACE) + add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) + set_target_properties(${MODULE_NAME} PROPERTIES VERSION ${FREERDP_VERSION} SOVERSION ${FREERDP_API_VERSION} PREFIX "lib") +else() + set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} cli/xfreerdp.c cli/xfreerdp.h) + add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +endif() set(${MODULE_PREFIX}_LIBS ${X11_LIBRARIES} @@ -130,6 +134,12 @@ if(WITH_IPP) target_link_libraries(xfreerdp ${IPP_LIBRARY_LIST}) endif() -install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR}) +if(WITH_CLIENT_INTERFACE) + install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries) + add_subdirectory(cli) +else() + install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT client) +endif() set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Client/X11") + diff --git a/client/X11/cli/CMakeLists.txt b/client/X11/cli/CMakeLists.txt new file mode 100644 index 000000000..b4d27b5d7 --- /dev/null +++ b/client/X11/cli/CMakeLists.txt @@ -0,0 +1,36 @@ +# FreeRDP: A Remote Desktop Protocol Implementation +# FreeRDP X11 cmake build script +# +# Copyright 2012 Marc-Andre Moreau +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set(MODULE_NAME "xfreerdp") +set(MODULE_PREFIX "FREERDP_CLIENT_X11") + +include_directories(..) + +set(${MODULE_PREFIX}_SRCS + xfreerdp.c + xfreerdp.h) + +add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) + +set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} xfreerdp-client) + +target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS}) + +install(TARGETS ${MODULE_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT client) + +set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Client/X11") + diff --git a/client/X11/cli/xfreerdp b/client/X11/cli/xfreerdp new file mode 100755 index 000000000..616303382 Binary files /dev/null and b/client/X11/cli/xfreerdp differ diff --git a/client/X11/xfreerdp.c b/client/X11/cli/xfreerdp.c similarity index 100% rename from client/X11/xfreerdp.c rename to client/X11/cli/xfreerdp.c diff --git a/client/X11/xfreerdp.h b/client/X11/cli/xfreerdp.h similarity index 100% rename from client/X11/xfreerdp.h rename to client/X11/cli/xfreerdp.h diff --git a/client/X11/xf_interface.c b/client/X11/xf_interface.c index 3d06dd093..eb72b59e5 100644 --- a/client/X11/xf_interface.c +++ b/client/X11/xf_interface.c @@ -74,8 +74,6 @@ #include "xf_graphics.h" #include "xf_keyboard.h" -#include "xfreerdp.h" - static long xv_port = 0; static const size_t password_size = 512; @@ -1439,6 +1437,8 @@ void* xf_thread(void* param) gdi_free(instance); xf_free(xfi); + exit_code = 123; + ExitThread(exit_code); } diff --git a/winpr/libwinpr/synch/wait.c b/winpr/libwinpr/synch/wait.c index 2e7869597..441d3ced9 100644 --- a/winpr/libwinpr/synch/wait.c +++ b/winpr/libwinpr/synch/wait.c @@ -66,7 +66,7 @@ DWORD WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds) fprintf(stderr, "WaitForSingleObject: pthread_join failure: %d\n", status); if (thread_status) - thread->dwExitCode = ((DWORD*) thread_status); + thread->dwExitCode = ((DWORD) (size_t) thread_status); } else if (Type == HANDLE_TYPE_MUTEX) { diff --git a/winpr/libwinpr/thread/thread.c b/winpr/libwinpr/thread/thread.c index c2fe14a4c..895c14a1e 100644 --- a/winpr/libwinpr/thread/thread.c +++ b/winpr/libwinpr/thread/thread.c @@ -125,7 +125,7 @@ HANDLE CreateRemoteThread(HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttribu VOID ExitThread(DWORD dwExitCode) { - pthread_exit((void*) dwExitCode); + pthread_exit((void*) (size_t) dwExitCode); } BOOL GetExitCodeThread(HANDLE hThread, LPDWORD lpExitCode)