瀏覽代碼

Initial work on getting CMake to download and build dependencies.

Cameron Hart 14 年之前
父節點
當前提交
b6f4f3a69e
共有 7 個文件被更改,包括 71 次插入6 次删除
  1. 5 0
      BUILD.txt
  2. 2 2
      Build/CMakeModules/FindBox2D.cmake
  3. 8 4
      CMakeLists.txt
  4. 2 0
      Core/CMakeLists.txt
  5. 1 0
      Core/Contents/CMakeLists.txt
  6. 28 0
      Modules/CMakeLists.txt
  7. 25 0
      Tools/CMakeLists.txt

+ 5 - 0
BUILD.txt

@@ -37,3 +37,8 @@ http://box2d.googlecode.com/files/Box2D_v2.1.2.zip
 
 Bullet
 http://bullet.googlecode.com/files/bullet-2.78.zip
+
+Tools
+
+Assimp
+http://sourceforge.net/projects/assimp/files/assimp-2.0/assimp--2.0.863-sdk.zip/download

+ 2 - 2
Build/CMakeModules/FindBox2D.cmake

@@ -11,8 +11,8 @@ IF(BOX2D_INCLUDE_DIR)
   SET(BOX2D_FIND_QUIETLY TRUE)
 ENDIF(BOX2D_INCLUDE_DIR)
 
-FIND_PATH(BOX2D_INCLUDE_DIR Box2D.h
-  PATH_SUFFIXES include/Box2D include
+FIND_PATH(BOX2D_INCLUDE_DIR Box2D/Box2D.h
+  PATH_SUFFIXES include
 )
 
 SET(BOX2D_NAMES box2d Box2d BOX2D Box2D)

+ 8 - 4
CMakeLists.txt

@@ -7,6 +7,7 @@ IF(NOT CMAKE_BUILD_TYPE)
 #   SET(CMAKE_BUILD_TYPE "Release")
 ENDIF(NOT CMAKE_BUILD_TYPE)
 
+# Options for what components to build
 OPTION(POLYCODE_BUILD_SHARED "Build Polycode shared libraries" ON)
 OPTION(POLYCODE_BUILD_STATIC "Build Polycode static libraries" OFF)
 OPTION(POLYCODE_BUILD_BINDINGS "Build Polycode Lua bindings" ON)
@@ -15,6 +16,10 @@ OPTION(POLYCODE_BUILD_MODULES "Build Polycode modules" ON)
 OPTION(POLYCODE_BUILD_PLAYER "Build Polycode standalone player" ON)
 OPTION(POLYCODE_BUILD_TOOLS "Build Polycode tools" ON)
 
+# Options for what components should be downloaded and built
+OPTION(POLYCODE_BUILD_BOX2D "Download and build the Box2D package" ON)
+OPTION(POLYCODE_BUILD_ASSIMP "Download and build the Assimp package" ON)
+
 OPTION(POLYCODE_INSTALL_FRAMEWORK "Install Polycode Core, Modules and Tools" ON)
 
 # Some non-standard CMake modules
@@ -71,9 +76,9 @@ IF(POLYCODE_BUILD_EXAMPLES)
 ENDIF(POLYCODE_BUILD_EXAMPLES)
 
 IF(POLYCODE_BUILD_MODULES)
-    FIND_PACKAGE(Box2D)
+    #FIND_PACKAGE(Box2D)
     FIND_PACKAGE(Bullet)
-    ADD_SUBDIRECTORY(Modules/Contents)
+    ADD_SUBDIRECTORY(Modules)
 ENDIF(POLYCODE_BUILD_MODULES)
 
 IF(POLYCODE_BUILD_PLAYER)
@@ -82,8 +87,7 @@ IF(POLYCODE_BUILD_PLAYER)
 ENDIF(POLYCODE_BUILD_PLAYER)
 
 IF(POLYCODE_BUILD_TOOLS)
-    FIND_PACKAGE(Assimp REQUIRED)
-    ADD_SUBDIRECTORY(Tools/Contents)
+    ADD_SUBDIRECTORY(Tools)
 ENDIF(POLYCODE_BUILD_TOOLS)
 
 # Install assets and dependencies

+ 2 - 0
Core/CMakeLists.txt

@@ -0,0 +1,2 @@
+
+

+ 1 - 0
Core/Contents/CMakeLists.txt

@@ -210,6 +210,7 @@ IF(POLYCODE_BUILD_SHARED)
         ${FREETYPE_LIBRARIES}
         ${PHYSFS_LIBRARY}
         ${VORBISFILE_LIBRARY}
+        ${SDL_LIBRARY}
     )
 ENDIF(POLYCODE_BUILD_SHARED)
 

+ 28 - 0
Modules/CMakeLists.txt

@@ -0,0 +1,28 @@
+IF(POLYCODE_BUILD_BOX2D)
+    
+    INCLUDE(ExternalProject)
+
+    SET(box2d_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/Dependencies/Box2D)
+    
+    # Needs fpic to link in shared lib on Linux
+    IF(CMAKE_COMPILER_IS_GNUCXX)
+        SET(box2d_CXX_ARGS -DCMAKE_CXX_FLAGS=-fPIC)
+    ENDIF(CMAKE_COMPILER_IS_GNUCXX)
+    
+    ExternalProject_Add(box2d
+        PREFIX ${box2d_PREFIX}
+        
+        URL http://box2d.googlecode.com/files/Box2D_v2.1.2.zip
+        URL_MD5 59d142cd8d4d73e8832c7b67591f590c
+
+        # Box2D's source isn't in the top level directory so add a dummy file to set cmake right
+        PATCH_COMMAND cmake -E echo ADD_SUBDIRECTORY(Box2D) > <SOURCE_DIR>/CMakeLists.txt
+        CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DBOX2D_BUILD_EXAMPLES=OFF ${box2d_CXX_ARGS}
+    )
+    
+    SET(CMAKE_PREFIX_PATH ${box2d_PREFIX})
+ENDIF(POLYCODE_BUILD_BOX2D)
+
+FIND_PACKAGE(Box2D)
+
+ADD_SUBDIRECTORY(Contents)

+ 25 - 0
Tools/CMakeLists.txt

@@ -0,0 +1,25 @@
+IF(POLYCODE_BUILD_ASSIMP)
+    # Build a local version
+    INCLUDE(ExternalProject)
+    
+    SET(assimp_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/Dependencies/Assimp)
+
+    #SET(assimp_SVN https://assimp.svn.sourceforge.net/svnroot/assimp/tags/2.0)
+    SET(assimp_GIT_REPO git://github.com/assimp/assimp.git)
+    SET(assimp_GIT_TAG b12d8be8ca61fc2e7fc1a49b311a5f0d65d77bd1) # TAG 2.0
+    
+    ExternalProject_Add(assimp
+        PREFIX ${assimp_PREFIX}
+        GIT_REPOSITORY ${assimp_GIT_REPO}
+        GIT_TAG ${assimp_GIT_TAG}
+        CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
+    )
+    
+    # tell CMake to look for our version
+    SET(CMAKE_PREFIX_PATH ${assimp_PREFIX})
+ENDIF(POLYCODE_BUILD_ASSIMP)
+
+FIND_PACKAGE(Assimp REQUIRED)
+
+#SUB_DIRECTORY(Contents/polybuild)
+ADD_SUBDIRECTORY(Contents/polyimport)