]> git.cworth.org Git - apitrace/blobdiff - CMakeLists.txt
Put license in a separate file.
[apitrace] / CMakeLists.txt
index 46488799726c7ca618da7daece44959f829338c3..f76444c08e1521972dfc39f02d5adcd922d4127c 100755 (executable)
@@ -1,18 +1,12 @@
 cmake_minimum_required (VERSION 2.8)
 
-include (CheckCXXCompilerFlag)
-
 project (apitrace)
 
-set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
 
-# Set default built type
-if (NOT CMAKE_BUILD_TYPE)
-    set (CMAKE_BUILD_TYPE Debug
-        CACHE
-        STRING "Choose the build type, options are: None, Debug, Release, RelWithDebInfo, or MinSizeRel."
-        FORCE)
-endif (NOT CMAKE_BUILD_TYPE)
+##############################################################################
+# Find dependencies
+
+set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
 
 set (CMAKE_USE_PYTHON_VERSION 2.6)
 
@@ -28,15 +22,16 @@ if (NOT WIN32)
     find_package (PNG)
     find_package (X11 REQUIRED)
 
-    # We use GLX on MacOSX, which is in a separate library
-    if (APPLE)
-        find_library (X11_GL_LIB GL ${X11_LIB_SEARCH_PATH})
-        set(X11_LIBRARIES ${X11_LIBRARIES} ${X11_GL_LIB})
-    endif (APPLE)
 else (NOT WIN32)
     find_package (DirectX)
 endif (NOT WIN32)
 
+
+##############################################################################
+# Set global build options
+
+include (CheckCXXCompilerFlag)
+
 if (WIN32)
     # MSVC & MinGW only define & use APIENTRY
     add_definitions (-DGLAPIENTRY=__stdcall)
@@ -87,10 +82,17 @@ else ()
     add_definitions (-Wno-sign-compare) # comparison between signed and unsigned integer expressions
 endif ()
 
+
 # Put all executables into the same top level build directory, regardless of
 # which subdirectory they are declared
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
 
+include_directories (${CMAKE_CURRENT_SOURCE_DIR})
+
+
+##############################################################################
+# Bundled dependencies
+
 # Use bundled ZLIB if system one can't be found
 if (ZLIB_FOUND)
     include_directories (${ZLIB_INCLUDE_DIRS})
@@ -141,7 +143,9 @@ else (PNG_FOUND)
     link_libraries (png)
 endif (PNG_FOUND)
 
-include_directories (${CMAKE_CURRENT_SOURCE_DIR})
+
+##############################################################################
+# Common libraries / utilities
 
 add_custom_command (
     OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/glproc.hpp
@@ -149,6 +153,24 @@ add_custom_command (
     DEPENDS glproc.py dispatch.py wglapi.py glxapi.py glapi.py gltypes.py stdapi.py
 )
 
+if (WIN32)
+    set (os os_win32.cpp)
+    set (glws glws_wgl.cpp)
+else (WIN32)
+    set (os os_posix.cpp)
+    set (glws glws_glx.cpp)
+endif (WIN32)
+
+add_library (trace trace_model.cpp trace_parser.cpp trace_write.cpp ${os})
+
+add_executable (tracedump tracedump.cpp)
+target_link_libraries (tracedump trace)
+install (TARGETS tracedump RUNTIME DESTINATION bin) 
+
+
+##############################################################################
+# API tracers
+
 if (WIN32)
     # d3d8.dll
     if (DirectX_D3D8_INCLUDE_DIR)
@@ -164,6 +186,7 @@ if (WIN32)
             RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
             LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
         )
+        install (TARGETS d3d8 RUNTIME DESTINATION wrappers)
     endif (DirectX_D3D8_INCLUDE_DIR)
 
     # d3d9.dll
@@ -180,6 +203,7 @@ if (WIN32)
             RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
             LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/wrappers
         )
+        install (TARGETS d3d9 RUNTIME DESTINATION wrappers)
     endif (DirectX_D3DX9_INCLUDE_DIR)
 
     # d3d10.dll
@@ -192,6 +216,7 @@ if (WIN32)
     #    )
     #    add_library (d3d10 SHARED d3d10.def d3d10.cpp trace_write.cpp os_win32.cpp)
     #    set_target_properties (d3d10 PROPERTIES PREFIX "")
+    #    install (TARGETS d3d10 RUNTIME DESTINATION wrappers)
     #endif (DirectX_D3D10_INCLUDE_DIR)
 
     # opengl32.dll
@@ -210,6 +235,7 @@ if (WIN32)
     if (MINGW)
         set_target_properties(wgltrace PROPERTIES LINK_FLAGS "-Wl,--enable-stdcall-fixup ${CMAKE_CURRENT_SOURCE_DIR}/opengl32.def")
     endif (MINGW)
+    install (TARGETS wgltrace RUNTIME DESTINATION wrappers)
 
 else ()
     include_directories (${X11_INCLUDE_DIR})
@@ -237,20 +263,13 @@ else ()
     endif (NOT APPLE)
 
     target_link_libraries (glxtrace dl)
+    
+    install (TARGETS glxtrace LIBRARY DESTINATION lib)
 endif ()
 
-if (WIN32)
-    set (os os_win32.cpp)
-    set (glws glws_wgl.cpp)
-else (WIN32)
-    set (os os_posix.cpp)
-    set (glws glws_glx.cpp)
-endif (WIN32)
-
-add_library (trace trace_model.cpp trace_parser.cpp trace_write.cpp ${os})
 
-add_executable (tracedump tracedump.cpp)
-target_link_libraries (tracedump trace)
+##############################################################################
+# API retracers
 
 add_custom_command (
     OUTPUT glretrace_gl.cpp
@@ -293,9 +312,44 @@ target_link_libraries (glretrace
 )
 
 if (NOT WIN32)
-    target_link_libraries (glretrace ${X11_LIBRARIES})
+    target_link_libraries (glretrace ${X11_X11_LIB})
+
+    # We use GLX on MacOSX, which is in a separate library
+    if (APPLE)
+        find_library (X11_GL_LIB GL ${X11_LIB_SEARCH_PATH})
+        target_link_libraries (glretrace ${X11_GL_LIB})
+    endif (APPLE)
 endif (NOT WIN32)
 
+install (TARGETS glretrace RUNTIME DESTINATION bin) 
+
+
+##############################################################################
+# GUI
+
 if (QT4_FOUND AND QJSON_FOUND)
     add_subdirectory(gui)
 endif (QT4_FOUND AND QJSON_FOUND)
+
+
+##############################################################################
+# Packaging
+
+install (FILES LICENSE README TODO DESTINATION doc)
+
+set (CPACK_PACKAGE_VERSION_MAJOR "1")
+set (CPACK_PACKAGE_VERSION_MINOR "0")
+
+# Use current date in YYYYMMDD format as patch number 
+execute_process (
+    COMMAND ${PYTHON_EXECUTABLE} -c "import time, sys; sys.stdout.write(time.strftime('%Y%m%d'))"
+    OUTPUT_VARIABLE CPACK_PACKAGE_VERSION_PATCH
+)
+
+if (WIN32)
+    set (CPACK_GENERATOR "ZIP")
+else (WIN32)
+    set (CPACK_GENERATOR "TGZ")
+endif (WIN32)
+
+include(CPack)