Sfoglia il codice sorgente

Externals build work in progress. Main build proably broken.

Cameron Hart 14 anni fa
parent
commit
eb1b7e6252

+ 1 - 0
.gitignore

@@ -31,6 +31,7 @@
 *.opensdf
 *.user.*
 
+/Externals/Build
 /Core/Build/Mac\ OS\ X/build
 /IDE/Build/Mac\ OS\ X/build
 /Modules/Build/Mac\ OS\ X/build

+ 0 - 3
BUILD.txt

@@ -6,12 +6,9 @@ zlib
 http://zlib.net/zlib125.zip
 
 PNG
-ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.5.4.tar.gz
-http://download.sourceforge.net/libpng/libpng-1.5.4.tar.gz
 http://cdnetworks-us-1.dl.sourceforge.net/project/libpng/libpng15/1.5.2/lpng152.zip
 
 Freetype2
-http://download.savannah.gnu.org/releases/freetype/freetype-2.4.5.tar.gz
 http://surfnet.dl.sourceforge.net/project/freetype/freetype2/2.4.5/ft245.zip
 
 PhysFS

+ 0 - 23
Build/CMakeModules/ExternalAssimp.cmake

@@ -1,23 +0,0 @@
-# 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(ASSIMP_FOUND TRUE)
-SET(ASSIMP_INCLUDE_DIR ${assimp_PREFIX}/include)
-#SET(ASSIMP_LIBRARY ${assimp_PREFIX}/lib)
-#SET(ASSIMP_LIBRARIES
-
-#SET(CMAKE_PREFIX_PATH ${assimp_PREFIX})

+ 0 - 27
Build/CMakeModules/ExternalFreetype.cmake

@@ -1,27 +0,0 @@
-# Build a local version
-INCLUDE(ExternalProject)
-
-SET(freetype_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/Dependencies/freetype)
-
-# Set the build target for the appropriate build
-# TODO add other platforms
-IF(MSVC10)
-	# BUILD_COMMAND would be better but it returns a single string which is escaped when it shouldn't be
-	SET(freetype_BUILD msbuild.exe builds/win32/vc2010/freetype.sln /p:Configuration=Release)
-    SET(freetype_LIB ${freetype_PREFIX}/src/freetype/objs/win32/vc2010/freetype245.lib)
-ENDIF(MSVC10)
-
-ExternalProject_Add(freetype
-	PREFIX ${freetype_PREFIX}
-	URL http://download.savannah.gnu.org/releases/freetype/freetype-2.4.5.tar.gz
-	URL_MD5 0e67460b312df905dc1cc1586690e7b2
-	CONFIGURE_COMMAND cmake -E echo "Skipping configure step"
-	BUILD_IN_SOURCE 1
-	BUILD_COMMAND ${freetype_BUILD}
-	INSTALL_COMMAND cmake -E echo "Skipping install step"
-)
-
-# tell CMake to use this version
-SET(FREETYPE_INCLUDE_DIR ${freetype_PREFIX}/src/freetype/include)
-
-

+ 0 - 17
Build/CMakeModules/ExternalOpenAL.cmake

@@ -1,17 +0,0 @@
-# Build a local version
-INCLUDE(ExternalProject)
-
-SET(openal_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/Dependencies/OpenAL)
-
-ExternalProject_Add(openal
-	PREFIX ${openal_PREFIX}
-	#URL http://connect.creativelabs.com/openal/Downloads/oalinst.zip
-	URL http://kcat.strangesoft.net/openal-releases/openal-soft-1.13.tar.bz2
-	URL_MD5 58b7d2809790c70681b825644c5f3614
-	CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
-)
-
-# tell CMake to use this version
-SET(OPENAL_INCLUDE_DIR ${openal_PREFIX}/include)
-SET(OPENAL_LIBRARY ${openal_PREFIX}/lib/OpenAL32${CMAKE_LINK_LIBRARY_SUFFIX})
-

+ 0 - 28
Build/CMakeModules/ExternalPNG.cmake

@@ -1,28 +0,0 @@
-# Build a local version of zlib and libpng
-INCLUDE(ExternalProject)
-
-SET(zlib_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/Dependencies/zlib)
-
-EXTERNALPROJECT_ADD(zlib
-	PREFIX ${zlib_PREFIX}
-	URL http://zlib.net/zlib-1.2.5.tar.gz
-	URL_MD5 c735eab2d659a96e5a594c9e8541ad63
-	PATCH_COMMAND ${CMAKE_COMMAND} -E remove <SOURCE_DIR>/zconf.h
-	CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
-)
-
-SET(png_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/Dependencies/libpng)
-
-EXTERNALPROJECT_ADD(libpng
-	DEPENDS zlib
-	PREFIX ${png_PREFIX}
-	URL ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.5.4.tar.gz
-	URL_MD5 dea4d1fd671160424923e92ff0cdda78
-	CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${zlib_PREFIX} # to find zlib
-)
-
-# tell CMake to use this version
-SET(PNG_INCLUDE_DIR ${png_PREFIX}/include)
-SET(PNG_LIBRARY ${png_PREFIX}/lib/libpng15.${CMAKE_LINK_LIBRARY_SUFFIX})
-
-

+ 0 - 15
Build/CMakeModules/ExternalPhysFS.cmake

@@ -1,15 +0,0 @@
-# Build a local version
-INCLUDE(ExternalProject)
-
-SET(physfs_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/Dependencies/physfs)
-
-ExternalProject_Add(physfs
-	PREFIX ${physfs_PREFIX}
-	URL http://offload1.icculus.org:9090/physfs/downloads/physfs-2.0.2.tar.gz
-	URL_MD5 4e8927c3d30279b03e2592106eb9184a
-	CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
-)
-
-# tell CMake to use this version
-SET(PHYSFS_INCLUDE_DIR ${physfs_PREFIX}/include)
-SET(PHYSFS_LIBRARY physfs ${physfs_PREFIX}/lib/physfs${CMAKE_LINK_LIBRARY_SUFFIX})

+ 0 - 48
Build/CMakeModules/ExternalVorbisFile.cmake

@@ -1,48 +0,0 @@
-# Build a local version of libogg, libvorbis and libvorbisfile
-INCLUDE(ExternalProject)
-
-SET(ogg_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/Dependencies/vorbisfile)
-
-SET(vorbis_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/Dependencies/vorbisfile)
-
-# Set the build target for the appropriate build
-# TODO add other platforms
-IF(MSVC10)
-	# BUILD_COMMAND would be better but it returns a single string which is escaped when it shouldn't be
-	SET(ogg_BUILD msbuild.exe win32/VS2010/libogg_dynamic.sln /p:Configuration=Release)
-ENDIF(MSVC10)
-
-EXTERNALPROJECT_ADD(ogg
-	PREFIX ${ogg_PREFIX}
-	URL http://downloads.xiph.org/releases/ogg/libogg-1.2.2.tar.gz
-	URL_MD5 5a9fcabc9a1b7c6f1cd75ddc78f36c56
-	CONFIGURE_COMMAND cmake -E echo "Skipping configure step"
-	BUILD_IN_SOURCE 1
-	BUILD_COMMAND ${ogg_BUILD}
-	INSTALL_COMMAND cmake -E echo "Skipping install step"
-)
-
-
-# Set the build target for the appropriate build
-IF(MSVC10)
-	SET(vorbis_BUILD msbuild.exe win32/VS2010/vorbis_dynamic.sln /p:Configuration=Release)
-    SET(VORBISFILE_LIBRARY src/vorbis/win32/VS2010/Win32/Release/libvorbisfile.lib)
-ENDIF(MSVC10)
-
-EXTERNALPROJECT_ADD(vorbis
-	DEPENDS ogg
-	PREFIX ${vorbis_PREFIX}
-	URL http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.2.tar.gz
-	URL_MD5 c870b9bd5858a0ecb5275c14486d9554
-	PATCH_COMMAND 
-	CONFIGURE_COMMAND cmake -E echo "Skipping configure step"
-	BUILD_IN_SOURCE 1
-	BUILD_COMMAND ${vorbis_BUILD}
-	INSTALL_COMMAND cmake -E echo "Skipping install step"
-)
-
-# tell CMake to use this version
-SET(OGG_INCLUDE_DIR ${vorbis_PREFIX}/src/ogg/include)
-SET(VORBISFILE_INCLUDE_DIR ${vorbis_PREFIX}/src/vorbis/include)
-
-

+ 20 - 0
CMake/ExternalAssimp.cmake

@@ -0,0 +1,20 @@
+# Build a local version
+INCLUDE(ExternalProject)
+
+SET(assimp_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/assimp)
+
+ExternalProject_Add(assimp
+    PREFIX ${assimp_PREFIX}
+    URL http://download.sourceforge.net/assimp/assimp--2.0.863-sdk.zip
+    URL_MD5 9f41662501bd9d9533c4cf03b7c25d5b
+    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DENABLE_BOOST_WORKAROUND=ON -DBUILD_ASSIMP_TOOLS=OFF -DBUILD_TESTS=OFF
+)
+
+# install built files
+INSTALL(DIRECTORY ${install_dir}/include 
+    DESTINATION ${POLYCODE_EXTERNALS_MODULES_PREFIX}
+    FILES_MATCHING PATTERN "*.h")
+INSTALL(DIRECTORY ${install_dir}/bin
+    DESTINATION ${POLYCODE_EXTERNALS_MODULES_PREFIX}/bin)
+INSTALL(DIRECTORY ${install_dir}/lib
+    DESTINATION ${POLYCODE_EXTERNALS_MODULES_PREFIX}/lib)

+ 30 - 0
CMake/ExternalBox2D.cmake

@@ -0,0 +1,30 @@
+INCLUDE(ExternalProject)
+
+SET(box2d_PREFIX ${PROJECT_BINARY_DIR}/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_INSTALL=ON -DBOX2D_BUILD_EXAMPLES=OFF ${box2d_CXX_ARGS}
+)
+
+ExternalProject_Get_Property(box2d install_dir)
+
+# install built files
+INSTALL(DIRECTORY ${install_dir}/include 
+    DESTINATION ${POLYCODE_EXTERNALS_MODULES_PREFIX}
+    FILES_MATCHING PATTERN "*.h")
+#INSTALL(DIRECTORY ${install_dir}/bin
+#    DESTINATION ${POLYCODE_EXTERNALS_MODULES_PREFIX}/bin)
+INSTALL(DIRECTORY ${install_dir}/lib
+    DESTINATION ${POLYCODE_EXTERNALS_MODULES_PREFIX}/lib)

+ 36 - 0
CMake/ExternalBullet.cmake

@@ -0,0 +1,36 @@
+INCLUDE(ExternalProject)
+
+SET(bullet_PREFIX ${PROJECT_BINARY_DIR}/bullet)
+
+SET(bullet_CMAKE_ARGS 
+    -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
+    -DINSTALL_LIBS=ON
+    -DBUILD_DEMOS=OFF
+    -DBUILD_EXTRAS=OFF
+    -DBUILD_UNIT_TESTS=OFF
+)
+
+IF(CMAKE_COMPILER_IS_GNUCXX)
+    # Needs fpic to link in shared lib on Linux with GCC
+    LIST(APPEND bullet_CMAKE_ARGS -DCMAKE_CXX_FLAGS=-fPIC)
+ENDIF(CMAKE_COMPILER_IS_GNUCXX)
+
+ExternalProject_Add(bullet
+    PREFIX ${bullet_PREFIX}
+    
+    URL http://bullet.googlecode.com/files/bullet-2.78.zip
+    URL_MD5 99d4070864c9f73521481ba9cda25038
+
+    CMAKE_ARGS ${bullet_CMAKE_ARGS}
+)
+
+ExternalProject_Get_Property(bullet install_dir)
+
+# install built files
+INSTALL(DIRECTORY ${install_dir}/include 
+    DESTINATION ${POLYCODE_EXTERNALS_MODULES_PREFIX}
+    FILES_MATCHING PATTERN "*.h")
+#INSTALL(DIRECTORY ${install_dir}/bin
+#    DESTINATION ${POLYCODE_EXTERNALS_MODULES_PREFIX}/bin)
+INSTALL(DIRECTORY ${install_dir}/lib
+    DESTINATION ${POLYCODE_EXTERNALS_MODULES_PREFIX}/lib)

+ 49 - 0
CMake/ExternalFreetype.cmake

@@ -0,0 +1,49 @@
+# Build a local version
+INCLUDE(ExternalProject)
+
+SET(freetype_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/freetype)
+
+# Set the build target for the appropriate build
+# TODO add other platforms
+IF(MSVC10)
+    SET(platform_dir "win32/vc2010")
+ELSE()
+    MESSAGE(ERROR "Generator support not implemented yet.")
+ENDIF(MSVC10)
+
+BUILD_COMMAND(build_TEMP 
+    TARGET builds/${platform_dir}/freetype)
+
+# split build command string into list
+STRING(REPLACE " " ";" freetype_BUILD ${build_TEMP})
+
+MESSAGE(DEBUG ${freetype_BUILD})
+
+ExternalProject_Add(freetype
+    PREFIX ${freetype_PREFIX}
+    URL http://download.savannah.gnu.org/releases/freetype/freetype-2.4.5.tar.gz
+    URL_MD5 0e67460b312df905dc1cc1586690e7b2
+    CONFIGURE_COMMAND ${CMAKE_COMMAND} -E echo "Skipping configure step"
+    BUILD_IN_SOURCE 1
+    BUILD_COMMAND ${freetype_BUILD}
+    INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Skipping install step"
+)
+
+# get the source dir for in source build
+ExternalProject_Get_Property(freetype source_dir)
+
+MESSAGE(DEBUG ${source_dir})
+
+# install built files
+INSTALL(DIRECTORY ${source_dir}/include 
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}
+    FILES_MATCHING PATTERN "*.h")
+INSTALL(DIRECTORY ${source_dir}/objs/${platform_dir}/
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}/lib/
+    FILES_MATCHING PATTERN "*${CMAKE_LINK_LIBRARY_SUFFIX}")
+    
+#ExternalProject_Add_Step(freetype install_headers
+#    COMMAND ${CMAKE_COMMAND} -E echo e1
+#    DEPENDEES build
+#    DEPENDERS install
+#)

+ 14 - 0
CMake/ExternalGLExt.cmake

@@ -0,0 +1,14 @@
+# download some headers missing from Windows
+SET(GLEXT_H ${POLYCODE_EXTERNALS_CORE_PREFIX}/include/GL/glext.h)
+IF(NOT EXISTS ${GLEXT_H})
+    FILE(DOWNLOAD http://www.opengl.org/registry/api/glext.h 
+        ${GLEXT_H}
+        SHOW_PROGRESS)
+ENDIF(NOT EXISTS ${GLEXT_H})
+
+SET(WGLEXT_H ${POLYCODE_EXTERNALS_CORE_PREFIX}/include/GL/wglext.h)
+IF(NOT EXISTS ${WGLEXT_H})
+    FILE(DOWNLOAD http://www.opengl.org/registry/api/wglext.h 
+        ${WGLEXT_H}
+        SHOW_PROGRESS)
+ENDIF(NOT EXISTS ${WGLEXT_H})

+ 22 - 0
CMake/ExternalOpenAL.cmake

@@ -0,0 +1,22 @@
+# Build a local version
+INCLUDE(ExternalProject)
+
+SET(openal_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/openal)
+
+ExternalProject_Add(openal
+    PREFIX ${openal_PREFIX}
+    URL http://kcat.strangesoft.net/openal-releases/openal-soft-1.13.tar.bz2
+    URL_MD5 58b7d2809790c70681b825644c5f3614
+    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
+)
+
+ExternalProject_Get_Property(openal install_dir)
+
+# install built files
+INSTALL(DIRECTORY ${install_dir}/include 
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}
+    FILES_MATCHING PATTERN "*.h")
+INSTALL(DIRECTORY ${install_dir}/bin
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}/bin)
+INSTALL(DIRECTORY ${install_dir}/lib
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}/lib)

+ 35 - 0
CMake/ExternalPNG.cmake

@@ -0,0 +1,35 @@
+# Build a local version of zlib and libpng
+INCLUDE(ExternalProject)
+
+SET(png_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/png)
+
+EXTERNALPROJECT_ADD(zlib
+    PREFIX ${png_PREFIX}
+    URL http://zlib.net/zlib-1.2.5.tar.gz
+    URL_MD5 c735eab2d659a96e5a594c9e8541ad63
+    PATCH_COMMAND ${CMAKE_COMMAND} -E remove <SOURCE_DIR>/zconf.h
+    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
+)
+
+ExternalProject_Get_Property(zlib install_dir)
+
+EXTERNALPROJECT_ADD(libpng
+    DEPENDS zlib
+    PREFIX ${png_PREFIX}
+    URL ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.5.4.tar.gz
+    URL_MD5 dea4d1fd671160424923e92ff0cdda78
+    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_PREFIX_PATH=${install_dir} # to find zlib
+)
+
+ExternalProject_Get_Property(libpng install_dir)
+
+# install built files
+INSTALL(DIRECTORY ${install_dir}/include 
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}
+    FILES_MATCHING PATTERN "*.h")
+INSTALL(DIRECTORY ${install_dir}/bin
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}/bin)
+INSTALL(DIRECTORY ${install_dir}/lib
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}/lib)
+
+

+ 24 - 0
CMake/ExternalPhysFS.cmake

@@ -0,0 +1,24 @@
+# Build a local version
+INCLUDE(ExternalProject)
+
+SET(physfs_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/physfs)
+
+ExternalProject_Add(physfs
+    PREFIX ${physfs_PREFIX}
+    URL http://offload1.icculus.org:9090/physfs/downloads/physfs-2.0.2.tar.gz
+    URL_MD5 4e8927c3d30279b03e2592106eb9184a
+    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
+)
+
+ExternalProject_Get_Property(physfs install_dir)
+
+# install built files
+INSTALL(DIRECTORY ${install_dir}/include 
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}
+    FILES_MATCHING PATTERN "*.h")
+INSTALL(DIRECTORY ${install_dir}/bin
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}/bin)
+INSTALL(DIRECTORY ${install_dir}/lib
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}/lib)
+
+

+ 101 - 0
CMake/ExternalVorbisFile.cmake

@@ -0,0 +1,101 @@
+# Build a local version of libogg, libvorbis and libvorbisfile
+INCLUDE(ExternalProject)
+
+SET(oggvorbis_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/oggvorbis)
+
+IF(MSVC10)
+    SET(target_dir "win32/VS2010")
+    SET(ogg_TARGET_DIR ${target_dir})
+    SET(vorbis_TARGET_DIR ${target_dir}/libvorbis)
+    SET(vorbisfile_TARGET_DIR ${target_dir}/libvorbisfile)
+    SET(vorbis_CONFIG "Release")
+    SET(ogg_LIB_DIR ${target_dir}/Win32/Release)
+    SET(vorbis_LIB_DIR ${vorbis_TARGET_DIR}/Win32/Release)
+    SET(vorbisfile_LIB_DIR ${vorbisfile_TARGET_DIR}/Win32/Release)
+    # copy libvorbis.lib where the libvorbisfile project will find it - only a problem because build_command won't build the solution
+    SET(vorbis_INSTALL ${CMAKE_COMMAND} -E copy_if_different ${vorbis_LIB_DIR}/libvorbis.lib ${vorbis_TARGET_DIR}/../win32/release/libvorbis.lib)
+ELSE()
+    MESSAGE(ERROR "Generator support not implemented yet.")
+ENDIF(MSVC10)
+
+BUILD_COMMAND(ogg_TEMP TARGET ${ogg_TARGET_DIR}/libogg_dynamic CONFIGURATION ${vorbis_CONFIG})
+BUILD_COMMAND(vorbis_TEMP TARGET ${vorbis_TARGET_DIR}/libvorbis_dynamic CONFIGURATION ${vorbis_CONFIG})
+BUILD_COMMAND(vorbisfile_TEMP TARGET ${vorbisfile_TARGET_DIR}/libvorbisfile_dynamic CONFIGURATION ${vorbis_CONFIG})
+
+# split build command string into list
+STRING(REPLACE " " ";" ogg_BUILD ${ogg_TEMP})
+STRING(REPLACE " " ";" vorbis_BUILD ${vorbis_TEMP})
+STRING(REPLACE " " ";" vorbisfile_BUILD ${vorbisfile_TEMP})
+
+ExternalProject_Add(ogg
+    PREFIX ${oggvorbis_PREFIX}
+    URL http://downloads.xiph.org/releases/ogg/libogg-1.2.2.tar.gz
+    URL_MD5 5a9fcabc9a1b7c6f1cd75ddc78f36c56
+    CONFIGURE_COMMAND ${CMAKE_COMMAND} -E echo "Skipping configure step"
+    BUILD_IN_SOURCE 1
+    BUILD_COMMAND ${ogg_BUILD}
+    INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Skipping install step"
+)
+
+ExternalProject_Add(vorbis
+    DEPENDS ogg
+    PREFIX ${oggvorbis_PREFIX}
+    URL http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.2.tar.gz
+    URL_MD5 c870b9bd5858a0ecb5275c14486d9554
+    CONFIGURE_COMMAND ${CMAKE_COMMAND} -E echo "Skipping configure step"
+    BUILD_IN_SOURCE 1
+    BUILD_COMMAND ${vorbis_BUILD}
+    INSTALL_COMMAND ${vorbis_INSTALL}
+)
+
+ExternalProject_Get_Property(vorbis source_dir)
+
+ExternalProject_Add(vorbisfile
+    DEPENDS vorbis
+    PREFIX ${oggvorbis_PREFIX}
+    SOURCE_DIR ${source_dir}
+    CONFIGURE_COMMAND ${CMAKE_COMMAND} -E echo "Skipping configure step"
+    BUILD_IN_SOURCE 1
+    BUILD_COMMAND ${vorbisfile_BUILD}
+    INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Skipping install step"
+)
+
+# get the source dir for in source build
+ExternalProject_Get_Property(ogg source_dir)
+
+# install built files
+
+# ogg headers and includes
+INSTALL(DIRECTORY ${source_dir}/include 
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}
+    FILES_MATCHING PATTERN "*.h")
+INSTALL(DIRECTORY ${source_dir}/${ogg_LIB_DIR}/
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}/bin/
+    FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}")
+INSTALL(DIRECTORY ${source_dir}/${ogg_LIB_DIR}/
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}/libs/
+    FILES_MATCHING PATTERN "*${CMAKE_LINK_LIBRARY_SUFFIX}")
+
+ExternalProject_Get_Property(vorbis source_dir)
+
+# vorbis headers
+INSTALL(DIRECTORY ${source_dir}/include 
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}
+    FILES_MATCHING PATTERN "*.h")
+    
+# vorbis libraries
+INSTALL(DIRECTORY ${source_dir}/${vorbis_LIB_DIR}/
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}/bin/
+    FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}")
+INSTALL(DIRECTORY ${source_dir}/${vorbis_LIB_DIR}/
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}/lib/
+    FILES_MATCHING PATTERN "*${CMAKE_LINK_LIBRARY_SUFFIX}")
+
+# vorbisfile libraries
+INSTALL(DIRECTORY ${source_dir}/${vorbisfile_LIB_DIR}/
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}/bin/
+    FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}")
+INSTALL(DIRECTORY ${source_dir}/${vorbisfile_LIB_DIR}/
+    DESTINATION ${POLYCODE_EXTERNALS_CORE_PREFIX}/lib/
+    FILES_MATCHING PATTERN "*${CMAKE_LINK_LIBRARY_SUFFIX}")
+

+ 0 - 0
Build/CMakeModules/FindAssimp.cmake → CMake/FindAssimp.cmake


+ 0 - 0
Build/CMakeModules/FindBox2D.cmake → CMake/FindBox2D.cmake


+ 0 - 0
Build/CMakeModules/FindFreetype.cmake → CMake/FindFreetype.cmake


+ 0 - 0
Build/CMakeModules/FindPackageHandleStandardArgs.cmake → CMake/FindPackageHandleStandardArgs.cmake


+ 0 - 0
Build/CMakeModules/FindVorbisFile.cmake → CMake/FindVorbisFile.cmake


+ 0 - 0
Build/CMakeModules/PolycodeIncludes.cmake → CMake/PolycodeIncludes.cmake


+ 1 - 13
CMakeLists.txt

@@ -23,22 +23,10 @@ ELSE()
 	SET(common_externals OFF)
 ENDIF()
 
-# Options for what components should be downloaded and built
-OPTION(POLYCODE_EXTERNAL_PHYSFS "Download and build the PhysFS package" ${common_externals})
-#OPTION(OpenGL REQUIRED)
-OPTION(POLYCODE_EXTERNAL_OPENAL "Download and build the OpenAL package" ${common_externals})
-OPTION(POLYCODE_EXTERNAL_FREETYPE "Download and build the Freetype2 package" ${common_externals})
-OPTION(POLYCODE_EXTERNAL_PNG "Download and build the PNG package" ${common_externals})
-OPTION(POLYCODE_EXTERNAL_VORBISFILE "Download and build the Vorbis File package" ${common_externals})
-
-OPTION(POLYCODE_BUILD_BOX2D "Download and build the Box2D package" ON)
-OPTION(POLYCODE_BUILD_BULLET "Download and build the Bullet 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
-SET(CMAKE_MODULE_PATH ${PolyCode_SOURCE_DIR}/Build/CMakeModules)
+SET(CMAKE_MODULE_PATH ${PolyCode_SOURCE_DIR}/CMake)
 
 IF(WIN32)
     SET(CMAKE_PREFIX_PATH ${PolyCode_SOURCE_DIR}/Release/Win/Framework/Dependencies)

+ 5 - 41
Core/CMakeLists.txt

@@ -1,49 +1,13 @@
 FIND_PACKAGE(OpenGL REQUIRED)
-
-IF(POLYCODE_EXTERNAL_PNG)
-	INCLUDE(ExternalPNG)
-ELSE()
-	FIND_PACKAGE(PNG REQUIRED)
-ENDIF(POLYCODE_EXTERNAL_PNG)
-
-IF(POLYCODE_EXTERNAL_PHYSFS)
-	INCLUDE(ExternalPhysFS)
-ELSE()
-	FIND_PACKAGE(PhysFS REQUIRED)
-ENDIF(POLYCODE_EXTERNAL_PHYSFS)
-
-IF(POLYCODE_EXTERNAL_OPENAL)
-	INCLUDE(ExternalOpenAL)
-ELSE()
-	FIND_PACKAGE(OpenAL REQUIRED)
-ENDIF(POLYCODE_EXTERNAL_OPENAL)
-
-IF(POLYCODE_EXTERNAL_FREETYPE)
-	INCLUDE(ExternalFreetype)
-ELSE()
-	FIND_PACKAGE(Freetype REQUIRED)
-ENDIF(POLYCODE_EXTERNAL_FREETYPE)
-
-IF(POLYCODE_EXTERNAL_VORBISFILE)
-	INCLUDE(ExternalVorbisFile)
-ELSE()
-	FIND_PACKAGE(VorbisFile REQUIRED)
-ENDIF(POLYCODE_EXTERNAL_VORBISFILE)
+FIND_PACKAGE(PNG REQUIRED)
+FIND_PACKAGE(PhysFS REQUIRED)
+FIND_PACKAGE(OpenAL REQUIRED)
+FIND_PACKAGE(Freetype REQUIRED)
+FIND_PACKAGE(VorbisFile REQUIRED)
 
 # Use SDL on non-Apple unixes
 IF(UNIX AND NOT APPLE)
     FIND_PACKAGE(SDL REQUIRED)
 ENDIF(UNIX AND NOT APPLE)
 
-# Get missing GL headers for Windows
-IF(MSVC)
-    FILE(DOWNLOAD 
-        http://www.opengl.org/registry/api/glext.h 
-        ${CMAKE_CURRENT_BINARY_DIR}/Dependencies/opengl/include/GL/glext.h)
-    FILE(DOWNLOAD 
-        http://www.opengl.org/registry/api/wglext.h
-        ${CMAKE_CURRENT_BINARY_DIR}/Dependencies/opengl/include/GL/wglext.h)
-    SET(OPENGLEXT_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/Dependencies/opengl/include)
-ENDIF(MSVC)
-
 ADD_SUBDIRECTORY(Contents)

+ 83 - 0
Externals/CMakeLists.txt

@@ -0,0 +1,83 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
+
+PROJECT(PolycodeExternals)
+
+IF(NOT CMAKE_BUILD_TYPE)
+    #SET(CMAKE_BUILD_TYPE "Debug")
+    SET(CMAKE_BUILD_TYPE "Release")
+    MESSAGE("No CMAKE_BUILD_TYPE specified, defaulting to ${CMAKE_BUILD_TYPE}") 
+ENDIF(NOT CMAKE_BUILD_TYPE)
+
+IF(NOT POLYCODE_RELEASE_DIR)
+    SET(POLYCODE_RELEASE_DIR ${PolycodeExternals_SOURCE_DIR}/../Release/${CMAKE_SYSTEM_NAME})
+    MESSAGE("No POLYCODE_RELEASE_DIR specified, to ${POLYCODE_RELEASE_DIR}") 
+ENDIF(NOT POLYCODE_RELEASE_DIR)
+
+SET(POLYCODE_EXTERNALS_CORE_PREFIX ${POLYCODE_RELEASE_DIR}/Framework/Core/Dependencies)
+SET(POLYCODE_EXTERNALS_MODULES_PREFIX ${POLYCODE_RELEASE_DIR}/Framework/Modules/Dependencies)
+SET(POLYCODE_EXTERNALS_TOOLS_PREFIX ${POLYCODE_RELEASE_DIR}/Framework/Tools/Dependencies)
+
+# Download and build all dependencies on Windows and Mac
+IF(APPLE OR WIN32)
+    SET(common_externals ON)
+ELSE()
+    SET(common_externals OFF)
+ENDIF()
+
+# Options for what components should be downloaded and built
+OPTION(POLYCODE_EXTERNAL_PHYSFS "Download and build the PhysFS package" ${common_externals})
+#OPTION(OpenGL REQUIRED)
+OPTION(POLYCODE_EXTERNAL_GLEXT "Download additional OpenGL headers" ${common_externals})
+OPTION(POLYCODE_EXTERNAL_OPENAL "Download and build the OpenAL package" ${common_externals})
+OPTION(POLYCODE_EXTERNAL_FREETYPE "Download and build the Freetype2 package" ${common_externals})
+OPTION(POLYCODE_EXTERNAL_PNG "Download and build the PNG package" ${common_externals})
+OPTION(POLYCODE_EXTERNAL_VORBISFILE "Download and build the Vorbis File package" ${common_externals})
+
+OPTION(POLYCODE_EXTERNAL_BOX2D "Download and build the Box2D package" ON)
+OPTION(POLYCODE_EXTERNAL_BULLET "Download and build the Bullet package" ON)
+OPTION(POLYCODE_EXTERNAL_ASSIMP "Download and build the Assimp package" ON)
+
+# Some non-standard CMake modules
+SET(CMAKE_MODULE_PATH ${PolycodeExternals_SOURCE_DIR}/../CMake)
+
+IF(POLYCODE_EXTERNAL_PNG)
+    INCLUDE(ExternalPNG)
+ENDIF(POLYCODE_EXTERNAL_PNG)
+
+IF(POLYCODE_EXTERNAL_PHYSFS)
+    INCLUDE(ExternalPhysFS)
+ENDIF(POLYCODE_EXTERNAL_PHYSFS)
+
+IF(POLYCODE_EXTERNAL_OPENAL)
+    INCLUDE(ExternalOpenAL)
+ENDIF(POLYCODE_EXTERNAL_OPENAL)
+
+IF(POLYCODE_EXTERNAL_FREETYPE)
+    INCLUDE(ExternalFreetype)
+ENDIF(POLYCODE_EXTERNAL_FREETYPE)
+
+IF(POLYCODE_EXTERNAL_VORBISFILE)
+    INCLUDE(ExternalVorbisFile)
+ENDIF(POLYCODE_EXTERNAL_VORBISFILE)
+
+IF(POLYCODE_EXTERNAL_BOX2D)
+    INCLUDE(ExternalBox2D)
+ENDIF(POLYCODE_EXTERNAL_BOX2D)
+
+IF(POLYCODE_EXTERNAL_BULLET)
+    INCLUDE(ExternalBullet)
+ENDIF(POLYCODE_EXTERNAL_BULLET)
+
+IF(POLYCODE_EXTERNAL_ASSIMP)
+    INCLUDE(ExternalAssimp)
+ENDIF(POLYCODE_EXTERNAL_ASSIMP)
+
+# Use SDL on non-Apple unixes
+#IF(UNIX AND NOT APPLE)
+#    FIND_PACKAGE(SDL REQUIRED)
+#ENDIF(UNIX AND NOT APPLE)
+
+# Get missing GL headers for Windows
+IF(POLYCODE_EXTERNAL_GLEXT)
+    INCLUDE(ExternalGLExt)
+ENDIF(POLYCODE_EXTERNAL_GLEXT)

+ 0 - 51
Modules/CMakeLists.txt

@@ -1,55 +1,4 @@
-IF(POLYCODE_BUILD_BOX2D)
-    
-    INCLUDE(ExternalProject)
-
-    SET(box2d_PREFIX ${PROJECT_BINARY_DIR}/Modules/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 ${CMAKE_PREFIX_PATH} ${box2d_PREFIX})
-ENDIF(POLYCODE_BUILD_BOX2D)
-
 FIND_PACKAGE(Box2D)
-
-IF(POLYCODE_BUILD_BULLET)
-    
-    INCLUDE(ExternalProject)
-
-    SET(bullet_PREFIX ${PROJECT_BINARY_DIR}/Modules/Dependencies/Bullet)
-        
-    # Needs fpic to link in shared lib on Linux
-    IF(CMAKE_COMPILER_IS_GNUCXX)
-        SET(bullet_CXX_ARGS -DCMAKE_CXX_FLAGS=-fPIC)
-    ENDIF(CMAKE_COMPILER_IS_GNUCXX)
-
-    ExternalProject_Add(bullet
-        PREFIX ${bullet_PREFIX}
-        
-        URL http://bullet.googlecode.com/files/bullet-2.78.zip
-        URL_MD5 99d4070864c9f73521481ba9cda25038
-
-        CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DBUILD_CPU_DEMOS=OFF ${bullet_CXX_ARGS}
-    )
-    
-    # cmake seems to have trouble finding the includes
-    SET(BULLET_INCLUDE_DIR ${bullet_PREFIX}/include/bullet)
-    SET(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${bullet_PREFIX})
-ENDIF(POLYCODE_BUILD_BULLET)
-
 FIND_PACKAGE(Bullet)
 
 ADD_SUBDIRECTORY(Contents)

+ 0 - 21
Tools/CMakeLists.txt

@@ -1,24 +1,3 @@
-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)