You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			68 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Diff
		
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Diff
		
	
>From 7a15d1c9a908afe429c1aba1c27516d18bdea299 Mon Sep 17 00:00:00 2001
 | 
						|
From: DRC <information@virtualgl.org>
 | 
						|
Date: Tue, 26 Feb 2013 03:37:12 -0600
 | 
						|
Subject: [PATCH 1/4] Add BUILD_STATIC feature from TigerVNC to (optionally)
 | 
						|
 prevent FLTK from depending on libgcc and libstdc++
 | 
						|
 | 
						|
---
 | 
						|
 CMakeLists.txt | 43 +++++++++++++++++++++++++++++++++++++++++++
 | 
						|
 1 file changed, 43 insertions(+)
 | 
						|
 | 
						|
diff --git a/CMakeLists.txt b/CMakeLists.txt
 | 
						|
index a1ee285..7d9d94b 100644
 | 
						|
--- a/CMakeLists.txt
 | 
						|
+++ b/CMakeLists.txt
 | 
						|
@@ -150,6 +150,49 @@ mark_as_advanced(LIB_CAIRO LIB_fontconfig LIB_freetype)
 | 
						|
 mark_as_advanced(LIB_GL LIB_MesaGL)
 | 
						|
 mark_as_advanced(LIB_jpeg LIB_png LIB_zlib)
 | 
						|
 
 | 
						|
+# This ensures that we don't depend on libstdc++ or libgcc
 | 
						|
+if(CMAKE_COMPILER_IS_GNUCXX AND NOT APPLE AND NOT CYGWIN)
 | 
						|
+  option(BUILD_STATIC
 | 
						|
+    "Link statically against libgcc and libstdc++, if possible" OFF)
 | 
						|
+  if(BUILD_STATIC)
 | 
						|
+    # For some reason, simply passing ${CMAKE_CXX_FLAGS} to the compiler in
 | 
						|
+    # execute_process() doesn't work.  Grrr...
 | 
						|
+    if(CMAKE_SIZEOF_VOID_P MATCHES 8)
 | 
						|
+      execute_process(COMMAND ${CMAKE_CXX_COMPILER} -m64
 | 
						|
+        --print-file-name=libstdc++.a OUTPUT_VARIABLE LIBSTDCPLUSPLUS
 | 
						|
+        RESULT_VARIABLE RESULT)
 | 
						|
+    else()
 | 
						|
+      execute_process(COMMAND ${CMAKE_CXX_COMPILER} -m32
 | 
						|
+        --print-file-name=libstdc++.a OUTPUT_VARIABLE LIBSTDCPLUSPLUS
 | 
						|
+        RESULT_VARIABLE RESULT)
 | 
						|
+    endif()
 | 
						|
+    string(REGEX REPLACE "\n" "" LIBSTDCPLUSPLUS ${LIBSTDCPLUSPLUS})
 | 
						|
+    if(RESULT MATCHES 0 AND LIBSTDCPLUSPLUS)
 | 
						|
+      message(STATUS "Linking with static libstdc++:\n   ${LIBSTDCPLUSPLUS}")
 | 
						|
+      file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/staticlib)
 | 
						|
+      execute_process(COMMAND ${CMAKE_COMMAND} -E remove
 | 
						|
+        ${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++.  TigerVNC will depend on dynamic libstdc++.)
 | 
						|
+    endif()
 | 
						|
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc")
 | 
						|
+    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc")
 | 
						|
+    set(CMAKE_SHARED_LINKER_FLAGS
 | 
						|
+      "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc")
 | 
						|
+  endif()
 | 
						|
+endif()
 | 
						|
+
 | 
						|
 #######################################################################
 | 
						|
 # functions
 | 
						|
 include(CheckFunctionExists)
 | 
						|
-- 
 | 
						|
1.8.1.3
 | 
						|
 |