[Bf-blender-cvs] [71ea85c] soc-2014-viewport_fx: [Revision] GHOST Context Refactor for X11 (Also can compile GHOST X11 on OSX) This is much like the CGL context in that it is fairly preliminary and does not have all the features of EGL or WGL contexts yet. In order to work on this on OSX, some minor changes were made to CMake to link with X11 on OSX

Jason Wilkins noreply at git.blender.org
Thu Jul 10 04:32:08 CEST 2014


Commit: 71ea85cc616d3fbbd0e3a37408c087d8f04dc46d
Author: Jason Wilkins
Date:   Wed Jul 9 18:19:18 2014 -0500
https://developer.blender.org/rB71ea85cc616d3fbbd0e3a37408c087d8f04dc46d

[Revision] GHOST Context Refactor for X11 (Also can compile GHOST X11 on OSX)
This is much like the CGL context in that it is fairly preliminary and does not have all the features of EGL or WGL contexts yet.
In order to work on this on OSX, some minor changes were made to CMake to link with X11 on OSX

===================================================================

M	CMakeLists.txt
M	extern/CMakeLists.txt
M	intern/ghost/CMakeLists.txt
A	intern/ghost/intern/GHOST_ContextGLX.cpp
A	intern/ghost/intern/GHOST_ContextGLX.h
D	intern/ghost/intern/GHOST_ContextXGL.cpp
D	intern/ghost/intern/GHOST_ContextXGL.h
M	intern/ghost/intern/GHOST_ISystem.cpp
M	intern/ghost/intern/GHOST_SystemX11.cpp
M	intern/ghost/intern/GHOST_SystemX11.h
M	intern/ghost/intern/GHOST_WindowX11.cpp
M	intern/ghost/intern/GHOST_WindowX11.h
M	release/scripts/addons
M	release/scripts/addons_contrib

===================================================================

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7325fbc..104fd4b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -151,26 +151,47 @@ option(WITH_COMPOSITOR    "Enable the tile based nodal compositor" ON)
 option(WITH_GHOST_DEBUG   "Enable debugging output for the GHOST library" OFF)
 mark_as_advanced(WITH_GHOST_DEBUG)
 
-option(WITH_GHOST_SDL    "Enable building blender against SDL for windowing rather then the native APIs" OFF)
+option(WITH_GHOST_SDL     "Enable building blender against SDL for windowing rather then the native APIs" OFF)
 mark_as_advanced(WITH_GHOST_SDL)
 
 # Misc...
 option(WITH_HEADLESS      "Build without graphical support (renderfarm, server mode only)" OFF)
 mark_as_advanced(WITH_HEADLESS)
 
-option(WITH_AUDASPACE    "Build with blenders audio library (only disable if you know what you're doing!)" ON)
+option(WITH_AUDASPACE     "Build with blenders audio library (only disable if you know what you're doing!)" ON)
 mark_as_advanced(WITH_AUDASPACE)
 
 option(WITH_OPENMP        "Enable OpenMP (has to be supported by the compiler)" ON)
 
 if(UNIX AND NOT APPLE)
-	option(WITH_X11_XINPUT "Enable X11 Xinput (tablet support and unicode input)"	ON)
-	option(WITH_X11_XF86VMODE "Enable X11 video mode switching"	ON)
+	set(_WITH_X11 ON)
+else()
+	set(_WITH_X11 OFF)
+endif()
+
+option(WITH_X11 "Use X11 library (on any non-unix system this is for development purposes only)" ${_WITH_X11})
+unset(_WITH_X11)
+mark_as_advanced(WITH_X11)
+
+if(WITH_X11)
+	if(APPLE)
+		set(_X11_EXTRAS OFF)
+	else()
+		set(_X11_EXTRAS ON)
+	endif()
+
+	option(WITH_X11_XINPUT    "Enable X11 Xinput (tablet support and unicode input)"  _X11_EXTRAS)
+	option(WITH_X11_XF86VMODE "Enable X11 video mode switching"                       _X11_EXTRAS)
+
+	unset(_X11_EXTRAS)
+
+	option(WITH_GHOST_XDND    "Enable drag'n'drop support on X11 using XDND protocol" ON)
 
+endif()
+
+if(UNIX AND NOT_APPLE)
 	option(WITH_SYSTEM_GLEW "Use GLEW OpenGL wrapper library provided by the operating system" ON)
 	option(WITH_SYSTEM_GLES "Use OpenGL ES library provided by the operating system"           ON)
-
-	option(WITH_GHOST_XDND   "Enable drag'n'drop support on X11 using XDND protocol" ON)
 else()
 	# not an option for other OS's
 	set(WITH_SYSTEM_GLEW OFF)
@@ -528,9 +549,10 @@ if(WITH_INSTALL_PORTABLE)
 endif()
 
 if(WITH_GHOST_SDL OR WITH_HEADLESS)
-	set(WITH_GHOST_XDND OFF)
+	set(WITH_X11           OFF)
+	set(WITH_X11_XINPUT    OFF)
 	set(WITH_X11_XF86VMODE OFF)
-	set(WITH_X11_XINPUT OFF)
+	set(WITH_GHOST_XDND    OFF)
 endif()
 
 TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG)
@@ -612,6 +634,35 @@ set(PLATFORM_LINKFLAGS_DEBUG "")
 #-----------------------------------------------------------------------------
 #Platform specifics
 
+if(WITH_X11)
+	find_package(X11 REQUIRED)
+
+	find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH})
+	mark_as_advanced(X11_XF86keysym_INCLUDE_PATH)
+
+	list(APPEND PLATFORM_LINKLIBS "${X11_X11_LIB}")
+
+	if(WITH_X11_XINPUT)
+		if(X11_Xinput_LIB)
+			set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xinput_LIB}")
+		else()
+			set(WITH_X11_XINPUT OFF)
+		endif()
+	endif()
+
+	if(WITH_X11_XF86VMODE)
+		# XXX, why dont cmake make this available?
+		FIND_LIBRARY(X11_Xxf86vmode_LIB Xxf86vm   ${X11_LIB_SEARCH_PATH})
+		mark_as_advanced(X11_Xxf86vmode_LIB)
+		if(X11_Xxf86vmode_LIB)
+			set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xxf86vmode_LIB}")
+		else()
+			set(WITH_X11_XF86VMODE OFF)
+		endif()
+	endif()
+
+endif()
+
 if(UNIX AND NOT APPLE)
 	macro(find_package_wrapper)
 		string(TOUPPER ${ARGV0} _NAME_UPPER)
@@ -918,34 +969,7 @@ if(UNIX AND NOT APPLE)
 	endif()
 
 	# OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
-	set(PLATFORM_LINKLIBS "-lutil -lc -lm -lpthread")
-
-	if((NOT WITH_HEADLESS) AND (NOT WITH_GHOST_SDL))
-		find_package(X11 REQUIRED)
-		find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH})
-		mark_as_advanced(X11_XF86keysym_INCLUDE_PATH)
-
-		set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_X11_LIB}")
-
-		if(WITH_X11_XINPUT)
-			if(X11_Xinput_LIB)
-				set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xinput_LIB}")
-			else()
-				set(WITH_X11_XINPUT OFF)
-			endif()
-		endif()
-
-		if(WITH_X11_XF86VMODE)
-			# XXX, why dont cmake make this available?
-			FIND_LIBRARY(X11_Xxf86vmode_LIB Xxf86vm   ${X11_LIB_SEARCH_PATH})
-			mark_as_advanced(X11_Xxf86vmode_LIB)
-			if(X11_Xxf86vmode_LIB)
-				set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xxf86vmode_LIB}")
-			else()
-				set(WITH_X11_XF86VMODE OFF)
-			endif()
-		endif()
-	endif()
+	list(APPEND PLATFORM_LINKLIBS -lutil -lc -lm -lpthread)
 
 	if(CMAKE_SYSTEM_NAME MATCHES "Linux")
 		if(NOT WITH_PYTHON_MODULE)
@@ -1002,7 +1026,7 @@ elseif(WIN32)
 
 	if(MSVC)
 
-		set(PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi)
+		list(APPEND PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi)
 
 		add_definitions(
 			-D_CRT_NONSTDC_NO_DEPRECATE
@@ -1386,7 +1410,7 @@ elseif(WIN32)
 			endif()
 		endif()
 		
-		set(PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi")
+		list(APPEND PLATFORM_LINKLIBS -lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi)
 		set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
 
 		if(WITH_MINGW64)
@@ -1749,9 +1773,9 @@ elseif(APPLE)
 	)
 	mark_as_advanced(SYSTEMSTUBS_LIBRARY)
 	if(SYSTEMSTUBS_LIBRARY)
-		set(PLATFORM_LINKLIBS stdc++ SystemStubs)
+		list(APPEND PLATFORM_LINKLIBS stdc++ SystemStubs)
 	else()
-		set(PLATFORM_LINKLIBS stdc++)
+		list(APPEND PLATFORM_LINKLIBS stdc++)
 	endif()
 
 	set(PLATFORM_CFLAGS "-pipe -funsigned-char")
@@ -2056,7 +2080,10 @@ endif()
 #-----------------------------------------------------------------------------
 # Configure OpenGL.
 
-if(WITH_GL_CONTEXT_DESKTOP OR WITH_GLU OR (WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_GUI))
+if(APPLE AND WITH_X11)
+	set(OPENGL_gl_LIBRARY  "/usr/X11R6/lib/libGL.dylib")
+	set(OPENGL_glu_LIBRARY "/usr/X11R6/lib/libGLU.dylib")
+elseif(WITH_GL_CONTEXT_DESKTOP OR WITH_GLU OR (WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_GUI))
 	find_package(OpenGL)
 endif()
 
@@ -2188,6 +2215,10 @@ if(WITH_GLEW_MX)
 	set(GL_DEFINITIONS "${GL_DEFINITIONS} -DGLEW_MX")
 endif()
 
+if(APPLE AND WITH_X11)
+	list(APPEND GL_DEFINITIONS -DGLEW_APPLE_GLX)
+endif()
+
 if(WITH_SYSTEM_GLEW)
 	find_package(GLEW)
 
diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt
index ca7c5ff..8c6c0ae 100644
--- a/extern/CMakeLists.txt
+++ b/extern/CMakeLists.txt
@@ -81,10 +81,8 @@ if(WITH_MOD_BOOLEAN)
 	add_subdirectory(carve)
 endif()
 
-if(WITH_GHOST_XDND)
-	if(UNIX AND NOT APPLE)
-		add_subdirectory(xdnd)
-	endif()
+if(WITH_X11 AND WITH_GHOST_XDND)
+	add_subdirectory(xdnd)
 endif()
 
 if(WITH_GTESTS)
diff --git a/intern/ghost/CMakeLists.txt b/intern/ghost/CMakeLists.txt
index 6ade149..5e6554b 100644
--- a/intern/ghost/CMakeLists.txt
+++ b/intern/ghost/CMakeLists.txt
@@ -133,50 +133,20 @@ if(WITH_HEADLESS OR WITH_GHOST_SDL)
 		add_definitions(-DWITH_GHOST_SDL)
 	endif()
 
-	# ack, this is still system dependant
-	if(APPLE)
-		list(APPEND SRC
-			intern/GHOST_SystemPathsCocoa.mm
-			intern/GHOST_SystemPathsCocoa.h
-		)
-
-	elseif(UNIX)
-		list(APPEND SRC
-			intern/GHOST_SystemPathsX11.cpp
-			intern/GHOST_SystemPathsX11.h
-		)
-
-		if(NOT WITH_INSTALL_PORTABLE)
-			add_definitions(-DPREFIX="${CMAKE_INSTALL_PREFIX}")
-		endif()
-
-	elseif(WIN32)
-		list(APPEND SRC
-			intern/GHOST_SystemPathsWin32.cpp
-			intern/GHOST_SystemPathsWin32.h
-		)
-
-		list(APPEND INC
-			../utfconv
-		)
-	endif()
-
 	if(NOT WITH_HEADLESS)
 		list(APPEND INC_SYS
 			${SDL_INCLUDE_DIR}
 		)
 	endif()
 
-elseif(APPLE)
+elseif(APPLE AND NOT WITH_X11)
 	list(APPEND SRC
 		intern/GHOST_DisplayManagerCocoa.mm
 		intern/GHOST_SystemCocoa.mm
-		intern/GHOST_SystemPathsCocoa.mm
 		intern/GHOST_WindowCocoa.mm
 
 		intern/GHOST_DisplayManagerCocoa.h
 		intern/GHOST_SystemCocoa.h
-		intern/GHOST_SystemPathsCocoa.h
 		intern/GHOST_WindowCocoa.h
 	)
 
@@ -205,7 +175,7 @@ elseif(APPLE)
 		add_definitions(-DWITH_QUICKTIME)
 	endif()
 
-elseif(UNIX)
+elseif(WITH_X11)
 	list(APPEND INC_SYS
 		${X11_X11_INCLUDE_PATH}
 	)
@@ -213,20 +183,18 @@ elseif(UNIX)
 	list(APPEND SRC
 		intern/GHOST_DisplayManagerX11.cpp
 		intern/GHOST_SystemX11.cpp
-		intern/GHOST_SystemPathsX11.cpp
 		intern/GHOST_WindowX11.cpp
 
 		intern/GHOST_DisplayManagerX11.h
 		intern/GHOST_SystemX11.h
-		intern/GHOST_SystemPathsX11.h
 		intern/GHOST_WindowX11.h
 	)
 
 	if (WITH_GL_CONTEXT_DESKTOP)
 		list(APPEND SRC
-			intern/GHOST_ContextXGL.cpp
+			intern/GHOST_ContextGLX.cpp
 
-			intern/GHOST_ContextXGL.h
+			intern/GHOST_ContextGLX.h
 		)
 	endif()
 
@@ -277,6 +245,8 @@ elseif(UNIX)
 		)
 	endif()
 
+	add_definitions(-DWITH_X11)
+
 elseif(WIN32)
 	## Warnings as errors, this is too strict!
 	#if(MSVC)
@@ -294,14 +264,12 @@ elseif(WIN32)
 	list(APPEND SRC
 		intern/GHOST_DisplayManagerWin32.cpp
 		intern/GHOST_SystemWin32.cpp
-		intern/GHOST_SystemPathsWin32.cpp
 		intern/GHOST_WindowWin32.cpp
 		intern/GHOST_DropTargetWin32.cpp
 
 		intern/GHOST_DisplayManagerWin32.h
 		intern/GHOST_DropTargetWin32.h
 		intern/GHOST_SystemWin32.h
-		intern/GHOST_SystemPathsWin32.h
 		intern/GHOST_WindowWin32.h
 		intern/GHOST_TaskbarWin32.h
 	)
@@ -332,6 +300,33 @@ if(WITH_GL_CONTEXT_EMBEDDED AND NOT (WITH_HEADLESS OR WITH_GHOST_SDL))
 	)
 endif()
 
+if(APPLE)
+	list(APPEND SRC
+		intern/GHOST_SystemPathsCocoa.mm
+		intern/GHOST_SystemPathsCocoa.h
+	)
+
+elseif(UNIX)
+	list(APPEND SRC
+		intern/GHOST_SystemPathsX11.cpp
+		intern/GHOST_SystemPathsX11.h
+	)
+
+	if(NOT WITH_INSTALL_PORTABLE)
+		add_definitions(-DPREFIX="${CMAKE_INSTALL_PREFIX}")
+	endif()
+
+elseif(WIN32)
+	list(APPEND SRC
+		intern/GHOST_SystemPathsWin32.cpp
+		intern/GHOST_SystemPathsWin32.h
+	)
+
+	list(APPEND INC
+		../utfconv
+	)
+endif()
+
 add_definitions(${GL_DEFINITIONS})
 
 blender_add_lib(bf_intern_ghost "${SRC}" "${INC}" "${INC_SYS}")
diff --git a/

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list