From e4e604f6ff1f6da459dac5fd529eed52fa3577b0 Mon Sep 17 00:00:00 2001 From: DRC Date: Sat, 1 Oct 2011 17:54:36 +0000 Subject: [PATCH] Fix BUILD_STATIC on MinGW and document the feature git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4683 3789f03b-4d11-0410-bbf8-ca57d06f2519 --- BUILDING.txt | 22 +++++++++++----------- CMakeLists.txt | 11 ++++++++--- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/BUILDING.txt b/BUILDING.txt index c33ddc66..c4975240 100644 --- a/BUILDING.txt +++ b/BUILDING.txt @@ -211,8 +211,8 @@ will clean both the Xvnc and vncviewer builds without destroying any of the build configuration or module dependencies. -Building the TigerVNC Viewer/Server with Visual C++ (Command Line) ------------------------------------------------------------------- +Building the Windows TigerVNC Viewer/Server with Visual C++ (Command Line) +-------------------------------------------------------------------------- cd {build_directory} cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release [additional CMake flags] {source_directory} @@ -222,8 +222,8 @@ This will build either a 32-bit or a 64-bit version of TigerVNC, depending on which version of cl.exe is in the PATH. -Building the TigerVNC Viewer/Server with Visual C++ (IDE) ---------------------------------------------------------- +Building the Windows TigerVNC Viewer/Server with Visual C++ (IDE) +----------------------------------------------------------------- Choose the appropriate CMake generator option for your version of Visual Studio (run "cmake" with no arguments for a list of available generators.) For @@ -237,8 +237,8 @@ configurations in that project ("Debug", "Release", etc.) to generate a full build of TigerVNC. -Building the TigerVNC Viewer with MinGW ---------------------------------------- +Building the Windows TigerVNC Viewer with MinGW +----------------------------------------------- cd {build_directory} cmake -G "MSYS Makefiles" [additional CMake flags] {source_directory} @@ -256,13 +256,13 @@ NMake, remove "-DCMAKE_BUILD_TYPE=Release" (Debug builds are the default with NMake.) -Self-Contained MinGW Build --------------------------- +Self-Contained GCC Build +------------------------ -If TigerVNC is built using MinGW, then it may depend on the MinGW libgcc DLL. -To eliminate this dependency, add +If TigerVNC is built using GCC (including MinGW), then it may depend on the +libgcc or libstdc++ dynamic libraries. To eliminate this dependency, add - -DCMAKE_C_FLAGS=-static-libgcc -DCMAKE_CXX_FLAGS=-static-libgcc + -DBUILD_STATIC=1 to the CMake command line. diff --git a/CMakeLists.txt b/CMakeLists.txt index 3cee4a60..e330dc6e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -134,14 +134,19 @@ if(CMAKE_COMPILER_IS_GNUCXX AND NOT APPLE AND NOT CYGWIN) file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/staticlib) execute_process(COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_BINARY_DIR}/staticlib/libstdc++.a) - execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink - ${LIBSTDCPLUSPLUS} ${CMAKE_BINARY_DIR}/staticlib/libstdc++.a) + if(MINGW) + execute_process(COMMAND ${CMAKE_COMMAND} -E copy + ${LIBSTDCPLUSPLUS} ${CMAKE_BINARY_DIR}/staticlib/libstdc++.a) + else() + execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink + ${LIBSTDCPLUSPLUS} ${CMAKE_BINARY_DIR}/staticlib/libstdc++.a) + endif() set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_BINARY_DIR}/staticlib") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -L${CMAKE_BINARY_DIR}/staticlib") else() - message(WARNING Cannot find static libstdc++. VirtualGL will depend on dynamic libstdc++.) + message(WARNING Cannot find static libstdc++. TigerVNC will depend on dynamic libstdc++.) endif() add_definitions(-static-libgcc) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc") -- 2.39.5