Browse Source

Some additions to cmake script.

Dynamic libraries versions, some basic environment tests,
build type options, dependency handling and installation.
Hilton Medeiros 15 years ago
parent
commit
f507c27858
1 changed files with 88 additions and 18 deletions
  1. 88 18
      Build/CMakeLists.txt

+ 88 - 18
Build/CMakeLists.txt

@@ -1,32 +1,102 @@
+#===================================
+# Build script for libRocket =======
+#===================================
+
 cmake_minimum_required(VERSION 2.6)
 cmake_minimum_required(VERSION 2.6)
 
 
-project(libRocket)
+project(libRocket CXX)
+
+set(LIBROCKET_VERSION_MAJOR 1)
+set(LIBROCKET_VERSION_MINOR 2)
+set(LIBROCKET_VERSION_PATCH 0)
+set(PROJECT_VERSION ${LIBROCKET_VERSION_MAJOR}.${LIBROCKET_VERSION_MINOR}.${LIBROCKET_VERSION_PATCH})
+
+
+#===================================
+# Environment tests ================
+#===================================
+
+include(TestForANSIForScope)
+include(TestForANSIStreamHeaders)
+include(TestForSTDNamespace)
+
+
+#===================================
+# Build options ====================
+#===================================
+
+if(NOT CMAKE_BUILD_TYPE)
+    set(CMAKE_BUILD_TYPE Debug CACHE STRING
+        "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
+        FORCE)
+endif()
+
+option(BUILD_SHARED_LIBS "Build shared libraries" ON)
+
+if(NOT BUILD_SHARED_LIBS)
+    add_definitions(-DSTATIC_LIB)
+endif()
+
+
+#===================================
+# Find dependencies ================
+#===================================
+
+find_package(Freetype REQUIRED)
+
+if(FREETYPE_FOUND)
+    include_directories(${FREETYPE_INCLUDE_DIRS})
+    list(APPEND CORE_LINK_LIBS ${FREETYPE_LIBRARY})
+endif()
 
 
-# Set up build options
-option(STATIC_LIB "Build the libRocket using static libraries." OFF)
-set(FREETYPE_INCLUDE "/usr/include/freetype2" CACHE STRING "Path to freetype")
 
 
-# Configure shared/static libraries
-if(STATIC_LIB)
-	set(LIBRARY_TYPE STATIC)
-	add_definitions(-DSTATIC_LIB)
-else(STATIC_LIB)
-	set(LIBRARY_TYPE SHARED)
-endif(STATIC_LIB)
+#===================================
+# Setup paths ======================
+#===================================
+
+include_directories(
+    ${PROJECT_SOURCE_DIR}/../Include
+)
 
 
-# Set up paths
-set(INCLUDE "../Include;${FREETYPE_INCLUDE}")
 set(SOURCE "../Source")
 set(SOURCE "../Source")
-set(LIBRARIES Core Controls Debugger)
 
 
-include_directories(${INCLUDE})
 
 
-# Build each library
+#===================================
+# Build libraries ==================
+#===================================
+
+set(LIBRARIES Core Controls Debugger)
+
 foreach(library ${LIBRARIES})
 foreach(library ${LIBRARIES})
 	set(LIB_SOURCE_PATH "${SOURCE}/${library}")
 	set(LIB_SOURCE_PATH "${SOURCE}/${library}")
 	set(NAME "Rocket${library}")
 	set(NAME "Rocket${library}")
-	
+
 	aux_source_directory(${LIB_SOURCE_PATH} LIB_SOURCES)
 	aux_source_directory(${LIB_SOURCE_PATH} LIB_SOURCES)
-	add_library(${NAME} ${LIBRARY_TYPE} ${LIB_SOURCES})
+	add_library(${NAME} ${LIB_SOURCES})
+    set_target_properties(${NAME} PROPERTIES
+                           VERSION ${PROJECT_VERSION}
+                           SOVERSION ${LIBROCKET_VERSION_MAJOR}
+    )
 	set(LIB_SOURCES)
 	set(LIB_SOURCES)
+
+    install(TARGETS ${NAME}
+            LIBRARY DESTINATION lib
+            ARCHIVE DESTINATION lib
+    )
 endforeach(library)
 endforeach(library)
+
+
+#===================================
+# Link libraries====================
+#===================================
+
+target_link_libraries(RocketCore ${CORE_LINK_LIBS})
+
+
+#===================================
+# Installation =====================
+#===================================
+
+install(DIRECTORY ${PROJECT_SOURCE_DIR}/../Include/Rocket
+        DESTINATION include
+)