Browse Source

Added samples building for cmake.

Hilton Medeiros 15 years ago
parent
commit
ce3bd64c3a
1 changed files with 114 additions and 2 deletions
  1. 114 2
      Build/CMakeLists.txt

+ 114 - 2
Build/CMakeLists.txt

@@ -4,7 +4,7 @@
 
 
 cmake_minimum_required(VERSION 2.6)
 cmake_minimum_required(VERSION 2.6)
 
 
-project(libRocket CXX)
+project(libRocket C CXX)
 
 
 set(LIBROCKET_VERSION_MAJOR 1)
 set(LIBROCKET_VERSION_MAJOR 1)
 set(LIBROCKET_VERSION_MINOR 2)
 set(LIBROCKET_VERSION_MINOR 2)
@@ -36,11 +36,15 @@ endif()
 
 
 option(BUILD_SHARED_LIBS "Build shared libraries" ON)
 option(BUILD_SHARED_LIBS "Build shared libraries" ON)
 option(BUILD_PYTHON_BINDINGS "Build python bindings" OFF)
 option(BUILD_PYTHON_BINDINGS "Build python bindings" OFF)
+option(BUILD_SAMPLES "Build samples" OFF)
 
 
 if(NOT BUILD_SHARED_LIBS)
 if(NOT BUILD_SHARED_LIBS)
     add_definitions(-DSTATIC_LIB)
     add_definitions(-DSTATIC_LIB)
 endif()
 endif()
 
 
+if(CMAKE_COMPILER_IS_GNUCXX)
+    add_definitions(-Wno-conversion-null)
+endif()
 
 
 #===================================
 #===================================
 # Find dependencies ================
 # Find dependencies ================
@@ -75,6 +79,7 @@ if(BUILD_PYTHON_BINDINGS)
 
 
 endif()
 endif()
 
 
+
 #===================================
 #===================================
 # Setup paths ======================
 # Setup paths ======================
 #===================================
 #===================================
@@ -88,6 +93,7 @@ include_directories(
 # Include list of source files
 # Include list of source files
 include(FileList)
 include(FileList)
 
 
+
 #===================================
 #===================================
 # Build libraries ==================
 # Build libraries ==================
 #===================================
 #===================================
@@ -136,7 +142,7 @@ endif()
 
 
 
 
 #===================================
 #===================================
-# Link libraries====================
+# Link libraries ===================
 #===================================
 #===================================
 
 
 target_link_libraries(RocketCore ${CORE_LINK_LIBS})
 target_link_libraries(RocketCore ${CORE_LINK_LIBS})
@@ -147,6 +153,97 @@ if(BUILD_PYTHON_BINDINGS)
 endif()
 endif()
 
 
 
 
+#===================================
+# Build samples ====================
+#===================================
+
+# Build and link the samples
+macro(bl_sample NAME)
+    add_executable(${NAME} ${${NAME}_SRC_FILES}
+                           ${${NAME}_HDR_FILES}
+    )
+
+    target_link_libraries(${NAME} shell)
+endmacro()
+
+if(BUILD_SAMPLES)
+    include(SampleFileList)
+
+    find_package(OpenGL REQUIRED)
+
+    if(OPENGL_FOUND)
+        include_directories(${OPENGL_INCLUDE_DIR})
+    endif()
+
+    set(SAMPLES_DIR opt/Rocket/Samples)
+
+    # The samples use the shell library
+    include_directories(${PROJECT_SOURCE_DIR}/Samples/shell/include)
+
+    # Deal with platform specific sources for sample shell
+    if(WIN32)
+        list(APPEND samples basic_directx)
+        list(APPEND shell_SRC_FILES
+            ${PROJECT_SOURCE_DIR}/Samples/shell/src/win32/ShellWin32.cpp
+            ${PROJECT_SOURCE_DIR}/Samples/shell/src/win32/InputWin32.cpp
+        )
+        list(APPEND shell_HDR_FILES
+            ${PROJECT_SOURCE_DIR}/Samples/shell/include/win32/InputWin32.h
+        )
+    elseif(APPLE)
+        list(APPEND shell_SRC_FILES
+            ${PROJECT_SOURCE_DIR}/Samples/shell/src/macosx/ShellMacOSX.cpp
+            ${PROJECT_SOURCE_DIR}/Samples/shell/src/macosx/InputMacOSX.cpp
+        )
+        list(APPEND shell_HDR_FILES
+            ${PROJECT_SOURCE_DIR}/Samples/shell/include/macosx/InputMacOSX.h
+        )
+    else()
+        list(APPEND shell_SRC_FILES
+            ${PROJECT_SOURCE_DIR}/Samples/shell/src/x11/ShellX11.cpp
+            ${PROJECT_SOURCE_DIR}/Samples/shell/src/x11/InputX11.cpp
+        )
+        list(APPEND shell_HDR_FILES
+            ${PROJECT_SOURCE_DIR}/Samples/shell/include/x11/InputX11.h
+        )
+    endif()
+
+    # Build and install sample shell library
+    add_library(shell ${shell_SRC_FILES}
+                      ${shell_HDR_FILES}
+    )
+
+    target_link_libraries(shell RocketCore RocketControls RocketDebugger ${OPENGL_LIBRARIES})
+
+    install(TARGETS shell
+            LIBRARY DESTINATION lib
+            ARCHIVE DESTINATION lib
+    )
+
+    list(APPEND samples treeview customlog drag loaddocument)
+
+    # Build and install the basic samples
+    foreach(sample ${samples})
+        bl_sample(${sample})
+
+        # The samples always set this as their current working directory
+        install(DIRECTORY DESTINATION ${SAMPLES_DIR}/basic/${sample})
+
+        install(TARGETS ${sample}
+                RUNTIME DESTINATION ${SAMPLES_DIR}
+        )
+    endforeach()
+
+    # Build and install invaders sample
+    bl_sample(invaders)
+    install(DIRECTORY DESTINATION ${SAMPLES_DIR}/invaders)
+    install(TARGETS invaders
+            RUNTIME DESTINATION ${SAMPLES_DIR}/invaders
+    )
+
+endif()
+
+
 #===================================
 #===================================
 # Installation =====================
 # Installation =====================
 #===================================
 #===================================
@@ -164,3 +261,18 @@ else()
             PATTERN "Python" EXCLUDE
             PATTERN "Python" EXCLUDE
     )
     )
 endif()
 endif()
+
+if(BUILD_SAMPLES)
+    install(DIRECTORY ${PROJECT_SOURCE_DIR}/Samples/basic/treeview/data
+            DESTINATION ${SAMPLES_DIR}/basic/treeview
+    )
+    install(DIRECTORY ${PROJECT_SOURCE_DIR}/Samples/basic/drag/data
+            DESTINATION ${SAMPLES_DIR}/basic/drag
+    )
+    install(DIRECTORY ${PROJECT_SOURCE_DIR}/Samples/invaders/data
+            DESTINATION ${SAMPLES_DIR}/invaders
+    )
+    install(DIRECTORY ${PROJECT_SOURCE_DIR}/Samples/assets
+            DESTINATION ${SAMPLES_DIR}
+    )
+endif()