]> git.notmuchmail.org Git - apitrace/blobdiff - CMakeLists.txt
Dump D3D9 shaders as text, as done previously.
[apitrace] / CMakeLists.txt
index 253d27d35a0460b84fa62fe39abf35750c8bcfac..cd2c8f972cb1a7e51c562f16064b7855578146f0 100755 (executable)
@@ -1,5 +1,7 @@
 cmake_minimum_required (VERSION 2.8)
 
+include (CheckCXXCompilerFlag)
+
 project (apitrace)
 
 set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
@@ -16,7 +18,7 @@ set (CMAKE_USE_PYTHON_VERSION 2.6)
 
 find_package (PythonInterp REQUIRED)
 find_package (OpenGL REQUIRED)
-find_package (Qt4 COMPONENTS QtCore QtGui QtWebKit)
+find_package (Qt4 4.7 COMPONENTS QtCore QtGui QtWebKit)
 find_package (QJSON)
 
 if (NOT WIN32)
@@ -38,6 +40,11 @@ endif (NOT WIN32)
 if (WIN32)
     # MSVC & MinGW only define & use APIENTRY
     add_definitions (-DGLAPIENTRY=__stdcall)
+else (WIN32)
+    CHECK_CXX_COMPILER_FLAG("-fvisibility=hidden" CXX_COMPILER_FLAG_VISIBILITY)
+    if (CXX_COMPILER_FLAG_VISIBILITY)
+        add_definitions ("-fvisibility=hidden")
+    endif (CXX_COMPILER_FLAG_VISIBILITY)
 endif (WIN32)
 
 if (MSVC)
@@ -140,11 +147,8 @@ add_custom_command (
 )
 
 if (WIN32)
-    # Put wrappers in a separate directory
-    set (LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/wrappers)
-
     # d3d8.dll
-    #if (DirectX_D3D8_FOUND)
+    #if (DirectX_D3D8_INCLUDE_DIR)
     #    include_directories (${DirectX_D3D8_INCLUDE_DIR})
     #    add_custom_command (
     #        OUTPUT d3d8.cpp
@@ -153,10 +157,10 @@ if (WIN32)
     #    )
     #    add_library (d3d8 SHARED d3d8.def d3d8.cpp trace_write.cpp os_win32.cpp)
     #    set_target_properties (d3d8 PROPERTIES PREFIX "")
-    #endif (DirectX_D3D8_FOUND)
+    #endif (DirectX_D3D8_INCLUDE_DIR)
 
     # d3d9.dll
-    if (DirectX_D3DX9_FOUND)
+    if (DirectX_D3DX9_INCLUDE_DIR)
         include_directories (${DirectX_D3DX9_INCLUDE_DIR})
         add_custom_command (
             OUTPUT d3d9.cpp
@@ -164,11 +168,15 @@ if (WIN32)
             DEPENDS d3d9.py trace.py d3d9types.py d3d9caps.py d3dshader.py winapi.py stdapi.py
         )
         add_library (d3d9 SHARED d3d9.def d3d9.cpp trace_write.cpp os_win32.cpp)
-        set_target_properties (d3d9 PROPERTIES PREFIX "")
-    endif (DirectX_D3DX9_FOUND)
+        set_target_properties (d3d9
+            PROPERTIES PREFIX ""
+            RUNTIME_OUTPUT_PATH ${PROJECT_BINARY_DIR}/wrappers
+            LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/wrappers
+        )
+    endif (DirectX_D3DX9_INCLUDE_DIR)
 
     # d3d10.dll
-    #if (DirectX_D3D10_FOUND)
+    #if (DirectX_D3D10_INCLUDE_DIR)
     #    include_directories (${DirectX_D3D10_INCLUDE_DIR})
     #    add_custom_command (
     #        OUTPUT d3d10.cpp
@@ -177,7 +185,7 @@ if (WIN32)
     #    )
     #    add_library (d3d10 SHARED d3d10.def d3d10.cpp trace_write.cpp os_win32.cpp)
     #    set_target_properties (d3d10 PROPERTIES PREFIX "")
-    #endif (DirectX_D3D10_FOUND)
+    #endif (DirectX_D3D10_INCLUDE_DIR)
 
     # opengl32.dll
     add_custom_command (
@@ -185,12 +193,15 @@ if (WIN32)
         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/wgltrace.py > ${CMAKE_CURRENT_BINARY_DIR}/wgltrace.cpp
         DEPENDS wgltrace.py gltrace.py trace.py wglapi.py wglenum.py glapi.py glenum.py winapi.py stdapi.py
     )
-    add_library (opengl SHARED opengl32.def wgltrace.cpp trace_write.cpp os_win32.cpp ${CMAKE_CURRENT_BINARY_DIR}/glproc.hpp)
-    set_target_properties (opengl PROPERTIES
+    add_library (wgltrace SHARED opengl32.def wgltrace.cpp trace_write.cpp os_win32.cpp ${CMAKE_CURRENT_BINARY_DIR}/glproc.hpp)
+    set_target_properties (wgltrace PROPERTIES
         PREFIX ""
-        OUTPUT_NAME opengl32)
+        OUTPUT_NAME opengl32
+        RUNTIME_OUTPUT_PATH ${PROJECT_BINARY_DIR}/wrappers
+        LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/wrappers
+    )
     if (MINGW)
-        set_target_properties(opengl PROPERTIES LINK_FLAGS "-Wl,--enable-stdcall-fixup ${CMAKE_CURRENT_SOURCE_DIR}/opengl32.def")
+        set_target_properties(wgltrace PROPERTIES LINK_FLAGS "-Wl,--enable-stdcall-fixup ${CMAKE_CURRENT_SOURCE_DIR}/opengl32.def")
     endif (MINGW)
 
 else ()
@@ -200,15 +211,24 @@ else ()
     add_custom_command (
         OUTPUT glxtrace.cpp
         COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/glxtrace.py > ${CMAKE_CURRENT_BINARY_DIR}/glxtrace.cpp
-        DEPENDS glxtrace.py gltrace.py trace.py glxapi.py glapi.py glenum.py stdapi.py
+        DEPENDS glxtrace.py gltrace.py trace.py glxapi.py glapi.py glstate.py glenum.py stdapi.py
     )
 
     add_library (glxtrace SHARED glxtrace.cpp trace_write.cpp os_posix.cpp ${CMAKE_CURRENT_BINARY_DIR}/glproc.hpp)
 
     set_target_properties (glxtrace PROPERTIES
+        # avoid the default "lib" prefix
         PREFIX ""
     )
 
+    # Prevent symbol relocations internal to our wrapper library to be
+    # overwritten by the application.
+    if (NOT APPLE)
+        set_target_properties (glxtrace PROPERTIES
+            LINK_FLAGS "-Wl,-Bsymbolic -Wl,-Bsymbolic-functions"
+        )
+    endif (NOT APPLE)
+
     target_link_libraries (glxtrace dl)
 endif ()
 
@@ -261,8 +281,6 @@ set_property (
 target_link_libraries (glretrace
     trace
     ${OPENGL_gl_LIBRARY}
-    ${OPENGL_glu_LIBRARY}
-    ${X11_LIBRARIES}
 )
 
 if (NOT WIN32)