Преглед на файлове

Merge branch 'cmake-deps'

Conflicts:
	Core/Contents/Include/PolySound.h
	Core/Contents/Include/PolySoundManager.h
Cameron Hart преди 14 години
родител
ревизия
879be2377c
променени са 48 файла, в които са добавени 1316 реда и са изтрити 545 реда
  1. 2 0
      .gitignore
  2. 145 26
      BUILD.txt
  3. 27 15
      Bindings/Contents/CMakeLists.txt
  4. 0 97
      Build/CMakeModules/FindFreetype.cmake
  5. 0 261
      Build/CMakeModules/FindPackageHandleStandardArgs.cmake
  6. 25 0
      CMake/ExternalAssimp.cmake
  7. 32 0
      CMake/ExternalBox2D.cmake
  8. 30 0
      CMake/ExternalBullet.cmake
  9. 22 0
      CMake/ExternalFreetype.cmake
  10. 11 0
      CMake/ExternalGLExt.cmake
  11. 25 0
      CMake/ExternalLua51.cmake
  12. 38 0
      CMake/ExternalOggVorbis.cmake
  13. 22 0
      CMake/ExternalOpenAL.cmake
  14. 37 0
      CMake/ExternalPNG.cmake
  15. 25 0
      CMake/ExternalPhysFS.cmake
  16. 10 0
      CMake/ExternalWGLExt.cmake
  17. 0 0
      CMake/FindAssimp.cmake
  18. 14 5
      CMake/FindBox2D.cmake
  19. 84 0
      CMake/FindOgg.cmake
  20. 84 0
      CMake/FindVorbis.cmake
  21. 0 0
      CMake/FindVorbisFile.cmake
  22. 38 0
      CMake/PolycodeIncludes.cmake
  23. 81 0
      CMake/freetype.cmake
  24. 38 0
      CMake/libogg.cmake
  25. 130 0
      CMake/libvorbis.cmake
  26. 40 0
      CMake/lua51.cmake
  27. 29 49
      CMakeLists.txt
  28. 27 16
      Core/Contents/CMakeLists.txt
  29. 2 9
      Core/Contents/Include/PolySound.h
  30. 2 9
      Core/Contents/Include/PolySoundManager.h
  31. 186 0
      Dependencies/CMakeLists.txt
  32. 2 2
      Examples/C++/2DShapes/CMakeLists.txt
  33. 2 2
      Examples/C++/2DTransforms/CMakeLists.txt
  34. 2 2
      Examples/C++/3DAudio/CMakeLists.txt
  35. 2 2
      Examples/C++/AdvancedLighting/CMakeLists.txt
  36. 2 2
      Examples/C++/BasicImage/CMakeLists.txt
  37. 2 2
      Examples/C++/BasicLighting/CMakeLists.txt
  38. 2 2
      Examples/C++/BasicText/CMakeLists.txt
  39. 2 2
      Examples/C++/ScreenEntities/CMakeLists.txt
  40. 2 2
      Examples/C++/ScreenSprites/CMakeLists.txt
  41. 2 2
      Examples/C++/SkeletalAnimation/CMakeLists.txt
  42. 9 5
      Modules/Contents/2DPhysics/CMakeLists.txt
  43. 15 8
      Modules/Contents/3DPhysics/CMakeLists.txt
  44. 4 2
      Modules/Contents/CMakeLists.txt
  45. 25 7
      Player/Contents/CMakeLists.txt
  46. 9 3
      Tools/Contents/polybuild/CMakeLists.txt
  47. 16 8
      Tools/Contents/polybuild/Source/polybuild.cpp
  48. 12 5
      Tools/Contents/polyimport/CMakeLists.txt

+ 2 - 0
.gitignore

@@ -34,6 +34,8 @@
 *.xcworkspace
 *.xcuserdata
 
+/Dependencies/Build
+/Dependencies/Downloads
 /Core/Build/Mac\ OS\ X/build
 /IDE/Build/Mac\ OS\ X/build
 /Modules/Build/Mac\ OS\ X/build

+ 145 - 26
BUILD.txt

@@ -1,39 +1,158 @@
-Windows dependencies:
+# Building Polycode and dependencies #
 
-Core
+Polycode comes with hand maintained XCode and Visual Studio 2010 
+projects which may be found in Build subdirectories under the Bindings,
+Core, IDE, Modules, Player and Tools directories.
 
-zlib
-http://zlib.net/zlib125.zip
+There is also a CMake build generator for automatically downloading and
+building required 3rd party packages and Polycode itself.
 
-PNG
-http://cdnetworks-us-1.dl.sourceforge.net/project/libpng/libpng15/1.5.2/lpng152.zip
+This document describes the CMake build system for Polycode.
 
-Freetype2
-http://surfnet.dl.sourceforge.net/project/freetype/freetype2/2.4.5/ft245.zip
+The first dependency is CMake. It can be downloaded from 
+http://cmake.org/cmake/resources/software.html or installed using apt
+or rpm on most Linux distributions. CMake 2.8.4 or greater is 
+recommended.
 
-PhysFS
-http://offload1.icculus.org:9090/physfs/downloads/physfs-2.0.2.tar.gz
+## Building dependencies ##
 
-OpenAL
-http://kcat.strangesoft.net/openal-releases/openal-soft-1.13.tar.bz2
-http://connect.creativelabs.com/openal/Downloads/oalinst.zip
+Polycode depends on a number of third party packages that are not
+included in the Polycode source tree:
+ * [Lua](http://www.lua.org/)
+ * [Freetype](http://www.freetype.org/)
+ * [zlib](http://www.zlib.net/)
+ * [libpng](http://www.libpng.org/pub/png/libpng.html)
+ * [PhysicsFS](http://icculus.org/physfs/)
+ * [Ogg Vorbis](http://www.vorbis.com/)
+ * [OpenAL](http://www.openal.org/)
+ * [SDL](http://www.libsdl.org/)
+ * [Box2D](http://www.box2d.org/)
+ * [Bullet Physics](http://bulletphysics.org/)
+ * [Assimp](http://assimp.sourceforge.net/)
 
-Ogg
-Vorbis
-http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.2.zip
+Depending on your platform, some of these dependencies will already be
+installed on your system. For the rest, they can be automatically 
+downloaded and compiled using the CMakeLists.txt build in the 
+Dependencies directory. 
 
-Lua
-http://www.lua.org/ftp/lua-5.1.4.tar.gz
+The CMake dependency build will check for the existance
+of dependencies and build anything that is not already installed on your
+system.
 
-glext.h & wglext.h
-http://www.opengl.org/registry/#headers
+All dependenices will be installed into the Polycode source tree under
+    Release/<Platform>/Framework/
 
-Build all and install to Releases/Win/Framework/Dependencies
+Instructions describe using CMake on the command line, you
+may prefer to use the CMake GUI if unfamiliar with CMake.
 
-Modules
 
-Box2D
-http://box2d.googlecode.com/files/Box2D_v2.1.2.zip
+### Mac OS X and Xcode ###
 
-Bullet
-http://bullet.googlecode.com/files/bullet-2.78.zip
+To generate an Xcode project for building Polycode dependencies, perform
+the following steps in the Polycode directory from a terminal:
+
+    cd Dependencies
+    mkdir Build
+    cd Build
+    cmake -G Xcode ..
+    
+This generates a PolycodeDependencies Xcode project in the Build 
+directory. Building this project in Xcode will download, build and 
+install the dependencies. Note that you need to build both Debug and
+Release in Xcode.
+
+### Windows and Visual Studio ###
+
+To generate a Microsoft Visual Studio (any version) project for building
+Polycode dependencies, perform the following steps in the Polycode 
+directory from a command prompt (for VS2010):
+
+    cd Dependencies
+    mkdir Build
+    cd Build
+    cmake -G "Visual Studio 10" ..
+    
+This generates a PolycodeDependencies.sln in the Build directory. 
+Building this project in Visual Studio will download, build and 
+install the dependencies. Note that you need to build both Debug and
+Release in Visual Studio. 
+
+### Unix Makefiles ###
+
+Linux users should ensure available dependencies for their platform are
+installed before running the Polycode dependency build. 
+
+On a Debian system run:
+    sudo apt-get install zlib1g-dev libpng12-dev libfreetype6-dev \
+    libphysfs-dev libogg-dev libvorbis-dev libopenal-dev libsdl1.2-dev \
+    liblua5.1-0-dev
+
+To generate and build Debug and Release builds with Unix Makefiles 
+perform the following steps in the Polycode directory from a terminal:
+
+    cd Dependencies
+    mkdir Build
+    cd Build
+    mkdir Debug
+    cd Debug
+    cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug ../..
+    make
+    cd ..
+    mkdir Release
+    cd Release
+    cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ../..
+    make
+    
+## Building Polycode ##
+
+The Polycode CMake build will look for dependencies installed on the 
+system and by the above dependency build step.
+
+### Mac OS X and Xcode ###
+
+**Note: the Mac CMake build does not compile and link yet.**
+
+To generate an Xcode project for building Polycode, perform the
+following steps in the Polycode directory from a terminal:
+
+    mkdir Build
+    cd Build
+    cmake -G Xcode ..
+
+This generates a Polycode Xcode project in the Build directory.
+
+### Windows and Visual Studio ###
+
+To generate a Microsoft Visual Studio project for building Polycode, 
+perform the following steps in the Polycode directory from a 
+command prompt:
+
+    mkdir Build
+    cd Build
+    cmake -G "Visual Studio 10" ..
+    
+This generates a Polycode.sln in the Build directory.
+
+### Unix Makefiles ###
+
+To generate and build Debug and Release builds with Unix Makefiles 
+perform the following steps in the Polycode directory from a terminal:
+
+    mkdir Build
+    cd Build
+    mkdir Debug
+    cd Debug
+    cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug ../..
+    make
+    cd ..
+    mkdir Release
+    cd Release
+    cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ../..
+    make
+
+## TODO ##
+
+It would be good to create a CMake build template for people to create
+new Polycode applications with.
+
+Fix Mac OS X compilation and linking.

+ 27 - 15
Bindings/Contents/CMakeLists.txt

@@ -1,3 +1,11 @@
+INCLUDE(PolycodeIncludes)
+
+FIND_PACKAGE(Lua51 REQUIRED)
+INCLUDE_DIRECTORIES(
+    ${LUA_INCLUDE_DIR}
+    LUA/Include
+)
+
 SET(polycodeLua_SRCS
     LUA/Source/PolycodeLUA.cpp
 )
@@ -8,32 +16,36 @@ SET(polycodeLua_HDRS
     LUA/Include/PolycodeLUA2D.h
 )
 
-INCLUDE_DIRECTORIES(
-    ${LUA_INCLUDE_DIR}
-    LUA/Include
-)
+SET(CMAKE_DEBUG_POSTFIX "_d")
+
+#IF(POLYCODE_BUILD_SHARED)
+#    ADD_LIBRARY(PolycodeLua SHARED ${polycodeLua_SRCS} ${polycodeLua_HDRS})
+#    TARGET_LINK_LIBRARIES(PolycodeLua Polycore ${LUA_LIBRARY})
+#ENDIF(POLYCODE_BUILD_SHARED)
 
-IF(POLYCODE_BUILD_SHARED)
-    ADD_LIBRARY(PolycodeLua SHARED ${polycodeLua_SRCS} ${polycodeLua_HDRS})
-    TARGET_LINK_LIBRARIES(PolycodeLua PolyCore ${LUA_LIBRARY})
-ENDIF(POLYCODE_BUILD_SHARED)
+#IF(POLYCODE_BUILD_STATIC)
+#    ADD_LIBRARY(PolycodeLua_static ${polycodeLua_SRCS} ${polycodeLua_HDRS})
+#    TARGET_LINK_LIBRARIES(PolycodeLua_static Polycore_static)
+#ENDIF(POLYCODE_BUILD_STATIC)
 
-IF(POLYCODE_BUILD_STATIC)
-    ADD_LIBRARY(PolycodeLua_static ${polycodeLua_SRCS} ${polycodeLua_HDRS})
-    TARGET_LINK_LIBRARIES(PolycodeLua_static PolyCore_static)
-ENDIF(POLYCODE_BUILD_STATIC)
+ADD_LIBRARY(PolycodeLua ${polycodeLua_SRCS} ${polycodeLua_HDRS})
+TARGET_LINK_LIBRARIES(PolycodeLua)
 
 IF(POLYCODE_INSTALL_FRAMEWORK)
     
     # install headers
-    INSTALL(FILES ${polycodeLua_HDRS} DESTINATION Framework/Modules/Include)
+    INSTALL(FILES ${polycodeLua_HDRS} 
+        DESTINATION ${POLYCODE_RELEASE_DIR}/Framework/Modules/include)
 
     # install libraries
     IF(POLYCODE_BUILD_SHARED)
-        INSTALL(TARGETS PolycodeLua DESTINATION Framework/Modules/Lib/${CMAKE_BUILD_TYPE})
+        INSTALL(TARGETS PolycodeLua 
+            DESTINATION ${POLYCODE_RELEASE_DIR}/Framework/Modules/lib)
     ENDIF(POLYCODE_BUILD_SHARED)
+    
     IF(POLYCODE_BUILD_STATIC)
-        INSTALL(TARGETS PolycodeLua_static DESTINATION Framework/Modules/Lib/${CMAKE_BUILD_TYPE})
+        INSTALL(TARGETS PolycodeLua_static 
+            DESTINATION ${POLYCODE_RELEASE_DIR}/Framework/Modules/lib)
     ENDIF(POLYCODE_BUILD_STATIC)
     
 ENDIF(POLYCODE_INSTALL_FRAMEWORK)

+ 0 - 97
Build/CMakeModules/FindFreetype.cmake

@@ -1,97 +0,0 @@
-# Copied from CMake 2.8.4 - Fix for MSVC10 freetype 2.4.5 lib naming 
-#
-# - Locate FreeType library
-# This module defines
-#  FREETYPE_LIBRARIES, the library to link against
-#  FREETYPE_FOUND, if false, do not try to link to FREETYPE
-#  FREETYPE_INCLUDE_DIRS, where to find headers.
-#  This is the concatenation of the paths:
-#  FREETYPE_INCLUDE_DIR_ft2build
-#  FREETYPE_INCLUDE_DIR_freetype2
-#
-# $FREETYPE_DIR is an environment variable that would
-# correspond to the ./configure --prefix=$FREETYPE_DIR
-# used in building FREETYPE.
-
-#=============================================================================
-# Copyright 2007-2009 Kitware, Inc.
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-#  License text for the above reference.)
-
-# Created by Eric Wing. 
-# Modifications by Alexander Neundorf.
-# This file has been renamed to "FindFreetype.cmake" instead of the correct
-# "FindFreeType.cmake" in order to be compatible with the one from KDE4, Alex.
-
-# Ugh, FreeType seems to use some #include trickery which 
-# makes this harder than it should be. It looks like they
-# put ft2build.h in a common/easier-to-find location which
-# then contains a #include to a more specific header in a 
-# more specific location (#include <freetype/config/ftheader.h>).
-# Then from there, they need to set a bunch of #define's 
-# so you can do something like:
-# #include FT_FREETYPE_H
-# Unfortunately, using CMake's mechanisms like INCLUDE_DIRECTORIES()
-# wants explicit full paths and this trickery doesn't work too well.
-# I'm going to attempt to cut out the middleman and hope 
-# everything still works.
-FIND_PATH(FREETYPE_INCLUDE_DIR_ft2build ft2build.h 
-  HINTS
-  $ENV{FREETYPE_DIR}
-  PATH_SUFFIXES include
-  PATHS
-  /usr/local/X11R6/include
-  /usr/local/X11/include
-  /usr/X11/include
-  /sw/include
-  /opt/local/include
-  /usr/freeware/include
-)
-
-FIND_PATH(FREETYPE_INCLUDE_DIR_freetype2 freetype/config/ftheader.h 
-  HINTS
-  $ENV{FREETYPE_DIR}/include/freetype2
-  PATHS
-  /usr/local/X11R6/include
-  /usr/local/X11/include
-  /usr/X11/include
-  /sw/include
-  /opt/local/include
-  /usr/freeware/include
-  PATH_SUFFIXES freetype2
-)
-
-FIND_LIBRARY(FREETYPE_LIBRARY
-  NAMES freetype libfreetype freetype219 freetype244mt freetype245
-  HINTS
-  $ENV{FREETYPE_DIR}
-  PATH_SUFFIXES lib64 lib
-  PATHS
-  /usr/local/X11R6
-  /usr/local/X11
-  /usr/X11
-  /sw
-  /usr/freeware
-)
-
-# set the user variables
-IF(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
-  SET(FREETYPE_INCLUDE_DIRS "${FREETYPE_INCLUDE_DIR_ft2build};${FREETYPE_INCLUDE_DIR_freetype2}")
-ENDIF(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2)
-SET(FREETYPE_LIBRARIES "${FREETYPE_LIBRARY}")
-
-# handle the QUIETLY and REQUIRED arguments and set FREETYPE_FOUND to TRUE if 
-# all listed variables are TRUE
-INCLUDE(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(Freetype  DEFAULT_MSG  FREETYPE_LIBRARY  FREETYPE_INCLUDE_DIRS)
-
-
-MARK_AS_ADVANCED(FREETYPE_LIBRARY FREETYPE_INCLUDE_DIR_freetype2 FREETYPE_INCLUDE_DIR_ft2build)

+ 0 - 261
Build/CMakeModules/FindPackageHandleStandardArgs.cmake

@@ -1,261 +0,0 @@
-# Copied from CMake 2.8.4 - FindFreetype seemed to need this here
-# FIND_PACKAGE_HANDLE_STANDARD_ARGS(<name> ... )
-#
-# This function is intended to be used in FindXXX.cmake modules files.
-# It handles the REQUIRED, QUIET and version-related arguments to FIND_PACKAGE().
-# It also sets the <UPPERCASED_NAME>_FOUND variable.
-# The package is considered found if all variables <var1>... listed contain
-# valid results, e.g. valid filepaths.
-#
-# There are two modes of this function. The first argument in both modes is
-# the name of the Find-module where it is called (in original casing).
-#
-# The first simple mode looks like this:
-#    FIND_PACKAGE_HANDLE_STANDARD_ARGS(<name> (DEFAULT_MSG|"Custom failure message") <var1>...<varN> )
-# If the variables <var1> to <varN> are all valid, then <UPPERCASED_NAME>_FOUND
-# will be set to TRUE.
-# If DEFAULT_MSG is given as second argument, then the function will generate
-# itself useful success and error messages. You can also supply a custom error message
-# for the failure case. This is not recommended.
-#
-# The second mode is more powerful and also supports version checking:
-#    FIND_PACKAGE_HANDLE_STANDARD_ARGS(NAME [REQUIRED_VARS <var1>...<varN>]
-#                                           [VERSION_VAR   <versionvar>
-#                                           [CONFIG_MODE]
-#                                           [FAIL_MESSAGE "Custom failure message"] )
-#
-# As above, if <var1> through <varN> are all valid, <UPPERCASED_NAME>_FOUND
-# will be set to TRUE.
-# After REQUIRED_VARS the variables which are required for this package are listed.
-# Following VERSION_VAR the name of the variable can be specified which holds
-# the version of the package which has been found. If this is done, this version
-# will be checked against the (potentially) specified required version used
-# in the find_package() call. The EXACT keyword is also handled. The default
-# messages include information about the required version and the version
-# which has been actually found, both if the version is ok or not.
-# Use the option CONFIG_MODE if your FindXXX.cmake module is a wrapper for
-# a find_package(... NO_MODULE) call, in this case all the information
-# provided by the config-mode of find_package() will be evaluated
-# automatically.
-# Via FAIL_MESSAGE a custom failure message can be specified, if this is not
-# used, the default message will be displayed.
-#
-# Example for mode 1:
-#
-#    FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibXml2  DEFAULT_MSG  LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR)
-#
-# LibXml2 is considered to be found, if both LIBXML2_LIBRARY and
-# LIBXML2_INCLUDE_DIR are valid. Then also LIBXML2_FOUND is set to TRUE.
-# If it is not found and REQUIRED was used, it fails with FATAL_ERROR,
-# independent whether QUIET was used or not.
-# If it is found, success will be reported, including the content of <var1>.
-# On repeated Cmake runs, the same message won't be printed again.
-#
-# Example for mode 2:
-#
-#    FIND_PACKAGE_HANDLE_STANDARD_ARGS(BISON  REQUIRED_VARS BISON_EXECUTABLE
-#                                             VERSION_VAR BISON_VERSION)
-# In this case, BISON is considered to be found if the variable(s) listed
-# after REQUIRED_VAR are all valid, i.e. BISON_EXECUTABLE in this case.
-# Also the version of BISON will be checked by using the version contained
-# in BISON_VERSION.
-# Since no FAIL_MESSAGE is given, the default messages will be printed.
-#
-# Another example for mode 2:
-#
-#    FIND_PACKAGE(Automoc4 QUIET NO_MODULE HINTS /opt/automoc4)
-#    FIND_PACKAGE_HANDLE_STANDARD_ARGS(Automoc4  CONFIG_MODE)
-# In this case, FindAutmoc4.cmake wraps a call to FIND_PACKAGE(Automoc4 NO_MODULE)
-# and adds an additional search directory for automoc4.
-# The following FIND_PACKAGE_HANDLE_STANDARD_ARGS() call produces a proper
-# success/error message.
-
-#=============================================================================
-# Copyright 2007-2009 Kitware, Inc.
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-#  License text for the above reference.)
-
-INCLUDE(FindPackageMessage)
-INCLUDE(CMakeParseArguments)
-
-# internal helper macro
-MACRO(_FPHSA_FAILURE_MESSAGE _msg)
-  IF (${_NAME}_FIND_REQUIRED)
-    MESSAGE(FATAL_ERROR "${_msg}")
-  ELSE (${_NAME}_FIND_REQUIRED)
-    IF (NOT ${_NAME}_FIND_QUIETLY)
-      MESSAGE(STATUS "${_msg}")
-    ENDIF (NOT ${_NAME}_FIND_QUIETLY)
-  ENDIF (${_NAME}_FIND_REQUIRED)
-ENDMACRO(_FPHSA_FAILURE_MESSAGE _msg)
-
-
-# internal helper macro to generate the failure message when used in CONFIG_MODE:
-MACRO(_FPHSA_HANDLE_FAILURE_CONFIG_MODE)
-  # <name>_CONFIG is set, but FOUND is false, this means that some other of the REQUIRED_VARS was not found:
-  IF(${_NAME}_CONFIG)
-    _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: missing: ${MISSING_VARS} (found ${${_NAME}_CONFIG} ${VERSION_MSG})")
-  ELSE(${_NAME}_CONFIG)
-    # If _CONSIDERED_CONFIGS is set, the config-file has been found, but no suitable version.
-    # List them all in the error message:
-    IF(${_NAME}_CONSIDERED_CONFIGS)
-      SET(configsText "")
-      LIST(LENGTH ${_NAME}_CONSIDERED_CONFIGS configsCount)
-      MATH(EXPR configsCount "${configsCount} - 1")
-      FOREACH(currentConfigIndex RANGE ${configsCount})
-        LIST(GET ${_NAME}_CONSIDERED_CONFIGS ${currentConfigIndex} filename)
-        LIST(GET ${_NAME}_CONSIDERED_VERSIONS ${currentConfigIndex} version)
-        SET(configsText "${configsText}    ${filename} (version ${version})\n")
-      ENDFOREACH(currentConfigIndex)
-      _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} ${VERSION_MSG}, checked the following files:\n${configsText}")
-
-    ELSE(${_NAME}_CONSIDERED_CONFIGS)
-      # Simple case: No Config-file was found at all:
-      _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: found neither ${_NAME}Config.cmake nor ${_NAME_LOWER}-config.cmake ${VERSION_MSG}")
-    ENDIF(${_NAME}_CONSIDERED_CONFIGS)
-  ENDIF(${_NAME}_CONFIG)
-ENDMACRO(_FPHSA_HANDLE_FAILURE_CONFIG_MODE)
-
-
-FUNCTION(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG)
-
-# set up the arguments for CMAKE_PARSE_ARGUMENTS and check whether we are in
-# new extended or in the "old" mode:
-  SET(options CONFIG_MODE)
-  SET(oneValueArgs FAIL_MESSAGE VERSION_VAR)
-  SET(multiValueArgs REQUIRED_VARS)
-  SET(_KEYWORDS_FOR_EXTENDED_MODE  ${options} ${oneValueArgs} ${multiValueArgs} )
-  LIST(FIND _KEYWORDS_FOR_EXTENDED_MODE "${_FIRST_ARG}" INDEX)
-
-  IF(${INDEX} EQUAL -1)
-    SET(FPHSA_FAIL_MESSAGE ${_FIRST_ARG})
-    SET(FPHSA_REQUIRED_VARS ${ARGN})
-    SET(FPHSA_VERSION_VAR)
-  ELSE(${INDEX} EQUAL -1)
-
-    CMAKE_PARSE_ARGUMENTS(FPHSA "${options}" "${oneValueArgs}" "${multiValueArgs}"  ${_FIRST_ARG} ${ARGN})
-
-    IF(FPHSA_UNPARSED_ARGUMENTS)
-      MESSAGE(FATAL_ERROR "Unknown keywords given to FIND_PACKAGE_HANDLE_STANDARD_ARGS(): \"${FPHSA_UNPARSED_ARGUMENTS}\"")
-    ENDIF(FPHSA_UNPARSED_ARGUMENTS)
-
-    IF(NOT FPHSA_FAIL_MESSAGE)
-      SET(FPHSA_FAIL_MESSAGE  "DEFAULT_MSG")
-    ENDIF(NOT FPHSA_FAIL_MESSAGE)
-  ENDIF(${INDEX} EQUAL -1)
-
-# now that we collected all arguments, process them
-
-  IF("${FPHSA_FAIL_MESSAGE}" STREQUAL "DEFAULT_MSG")
-    SET(FPHSA_FAIL_MESSAGE "Could NOT find ${_NAME}")
-  ENDIF("${FPHSA_FAIL_MESSAGE}" STREQUAL "DEFAULT_MSG")
-
-  # In config-mode, we rely on the variable <package>_CONFIG, which is set by find_package()
-  # when it successfully found the config-file, including version checking:
-  IF(FPHSA_CONFIG_MODE)
-    LIST(INSERT FPHSA_REQUIRED_VARS 0 ${_NAME}_CONFIG)
-    LIST(REMOVE_DUPLICATES FPHSA_REQUIRED_VARS)
-    SET(FPHSA_VERSION_VAR ${_NAME}_VERSION)
-  ENDIF(FPHSA_CONFIG_MODE)
-
-  IF(NOT FPHSA_REQUIRED_VARS)
-    MESSAGE(FATAL_ERROR "No REQUIRED_VARS specified for FIND_PACKAGE_HANDLE_STANDARD_ARGS()")
-  ENDIF(NOT FPHSA_REQUIRED_VARS)
-
-  LIST(GET FPHSA_REQUIRED_VARS 0 _FIRST_REQUIRED_VAR)
-
-  STRING(TOUPPER ${_NAME} _NAME_UPPER)
-  STRING(TOLOWER ${_NAME} _NAME_LOWER)
-
-  # collect all variables which were not found, so they can be printed, so the
-  # user knows better what went wrong (#6375)
-  SET(MISSING_VARS "")
-  SET(DETAILS "")
-  SET(${_NAME_UPPER}_FOUND TRUE)
-  # check if all passed variables are valid
-  FOREACH(_CURRENT_VAR ${FPHSA_REQUIRED_VARS})
-    IF(NOT ${_CURRENT_VAR})
-      SET(${_NAME_UPPER}_FOUND FALSE)
-      SET(MISSING_VARS "${MISSING_VARS} ${_CURRENT_VAR}")
-    ELSE(NOT ${_CURRENT_VAR})
-      SET(DETAILS "${DETAILS}[${${_CURRENT_VAR}}]")
-    ENDIF(NOT ${_CURRENT_VAR})
-  ENDFOREACH(_CURRENT_VAR)
-
-
-  # version handling:
-  SET(VERSION_MSG "")
-  SET(VERSION_OK TRUE)
-  SET(VERSION ${${FPHSA_VERSION_VAR}} )
-  IF (${_NAME}_FIND_VERSION)
-
-    IF(VERSION)
-
-      IF(${_NAME}_FIND_VERSION_EXACT)       # exact version required
-        IF (NOT "${${_NAME}_FIND_VERSION}" VERSION_EQUAL "${VERSION}")
-          SET(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"")
-          SET(VERSION_OK FALSE)
-        ELSE (NOT "${${_NAME}_FIND_VERSION}" VERSION_EQUAL "${VERSION}")
-          SET(VERSION_MSG "(found suitable exact version \"${VERSION}\")")
-        ENDIF (NOT "${${_NAME}_FIND_VERSION}" VERSION_EQUAL "${VERSION}")
-
-      ELSE(${_NAME}_FIND_VERSION_EXACT)     # minimum version specified:
-        IF ("${${_NAME}_FIND_VERSION}" VERSION_GREATER "${VERSION}")
-          SET(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is at least \"${${_NAME}_FIND_VERSION}\"")
-          SET(VERSION_OK FALSE)
-        ELSE ("${${_NAME}_FIND_VERSION}" VERSION_GREATER "${VERSION}")
-          SET(VERSION_MSG "(found suitable version \"${VERSION}\", required is \"${${_NAME}_FIND_VERSION}\")")
-        ENDIF ("${${_NAME}_FIND_VERSION}" VERSION_GREATER "${VERSION}")
-      ENDIF(${_NAME}_FIND_VERSION_EXACT)
-
-    ELSE(VERSION)
-
-      # if the package was not found, but a version was given, add that to the output:
-      IF(${_NAME}_FIND_VERSION_EXACT)
-         SET(VERSION_MSG "(Required is exact version \"${${_NAME}_FIND_VERSION}\")")
-      ELSE(${_NAME}_FIND_VERSION_EXACT)
-         SET(VERSION_MSG "(Required is at least version \"${${_NAME}_FIND_VERSION}\")")
-      ENDIF(${_NAME}_FIND_VERSION_EXACT)
-
-    ENDIF(VERSION)
-  ELSE (${_NAME}_FIND_VERSION)
-    IF(VERSION)
-      SET(VERSION_MSG "(found version \"${VERSION}\")")
-    ENDIF(VERSION)
-  ENDIF (${_NAME}_FIND_VERSION)
-
-  IF(VERSION_OK)
-    SET(DETAILS "${DETAILS}[v${VERSION}(${${_NAME}_FIND_VERSION})]")
-  ELSE(VERSION_OK)
-    SET(${_NAME_UPPER}_FOUND FALSE)
-  ENDIF(VERSION_OK)
-
-
-  # print the result:
-  IF (${_NAME_UPPER}_FOUND)
-    FIND_PACKAGE_MESSAGE(${_NAME} "Found ${_NAME}: ${${_FIRST_REQUIRED_VAR}} ${VERSION_MSG}" "${DETAILS}")
-  ELSE (${_NAME_UPPER}_FOUND)
-
-    IF(FPHSA_CONFIG_MODE)
-      _FPHSA_HANDLE_FAILURE_CONFIG_MODE()
-    ELSE(FPHSA_CONFIG_MODE)
-      IF(NOT VERSION_OK)
-        _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: ${VERSION_MSG} (found ${${_FIRST_REQUIRED_VAR}})")
-      ELSE(NOT VERSION_OK)
-        _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} (missing: ${MISSING_VARS}) ${VERSION_MSG}")
-      ENDIF(NOT VERSION_OK)
-    ENDIF(FPHSA_CONFIG_MODE)
-
-  ENDIF (${_NAME_UPPER}_FOUND)
-
-  SET(${_NAME_UPPER}_FOUND ${${_NAME_UPPER}_FOUND} PARENT_SCOPE)
-
-ENDFUNCTION(FIND_PACKAGE_HANDLE_STANDARD_ARGS _FIRST_ARG)

+ 25 - 0
CMake/ExternalAssimp.cmake

@@ -0,0 +1,25 @@
+# Build a local version
+INCLUDE(ExternalProject)
+
+SET(assimp_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/assimp)
+
+SET(assimp_CMAKE_ARGS
+    -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
+    -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+    -DCMAKE_DEBUG_POSTFIX=d 
+    -DENABLE_BOOST_WORKAROUND=ON 
+    -DBUILD_ASSIMP_TOOLS=OFF 
+    -DBUILD_TESTS=OFF
+)
+
+ExternalProject_Add(assimp
+    PREFIX ${assimp_PREFIX}
+
+    DOWNLOAD_DIR ${POLYCODE_DEPS_DOWNLOAD_DIR}
+
+    URL http://download.sourceforge.net/assimp/assimp--2.0.863-sdk.zip
+    URL_MD5 9f41662501bd9d9533c4cf03b7c25d5b
+
+    INSTALL_DIR ${POLYCODE_DEPS_TOOLS_PREFIX} 
+    CMAKE_ARGS ${assimp_CMAKE_ARGS}
+)

+ 32 - 0
CMake/ExternalBox2D.cmake

@@ -0,0 +1,32 @@
+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)
+
+SET(box2d_CMAKE_ARGS
+    -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
+    -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+    -DCMAKE_DEBUG_POSTFIX=_d 
+    -DBOX2D_INSTALL=ON 
+    -DBOX2D_BUILD_EXAMPLES=OFF 
+    ${box2d_CXX_ARGS}
+)
+
+ExternalProject_Add(box2d
+    PREFIX ${box2d_PREFIX}
+
+    DOWNLOAD_DIR ${POLYCODE_DEPS_DOWNLOAD_DIR}
+
+    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
+    
+    INSTALL_DIR ${POLYCODE_DEPS_MODULES_PREFIX}
+    CMAKE_ARGS ${box2d_CMAKE_ARGS}
+)

+ 30 - 0
CMake/ExternalBullet.cmake

@@ -0,0 +1,30 @@
+INCLUDE(ExternalProject)
+
+SET(bullet_PREFIX ${PROJECT_BINARY_DIR}/bullet)
+
+SET(bullet_CMAKE_ARGS 
+    -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
+    -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+    -DCMAKE_DEBUG_POSTFIX=_d
+    -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}
+    
+    DOWNLOAD_DIR ${POLYCODE_DEPS_DOWNLOAD_DIR}
+
+    URL http://bullet.googlecode.com/files/bullet-2.78.zip
+    URL_MD5 99d4070864c9f73521481ba9cda25038
+
+    INSTALL_DIR ${POLYCODE_DEPS_MODULES_PREFIX} 
+    CMAKE_ARGS ${bullet_CMAKE_ARGS}
+)

+ 22 - 0
CMake/ExternalFreetype.cmake

@@ -0,0 +1,22 @@
+# Build a local version of freetype
+INCLUDE(ExternalProject)
+
+SET(freetype_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/freetype)
+
+SET(freetype_CMAKE_ARGS
+    -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> 
+    -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+)
+
+EXTERNALPROJECT_ADD(freetype
+    PREFIX ${freetype_PREFIX}
+
+    DOWNLOAD_DIR ${POLYCODE_DEPS_DOWNLOAD_DIR}
+    URL http://download.savannah.gnu.org/releases/freetype/freetype-2.4.5.tar.gz
+    URL_MD5 0e67460b312df905dc1cc1586690e7b2
+
+    PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PolycodeDependencies_SOURCE_DIR}/../CMake/freetype.cmake <SOURCE_DIR>/CMakeLists.txt
+
+    INSTALL_DIR ${POLYCODE_DEPS_CORE_PREFIX}
+    CMAKE_ARGS ${freetype_CMAKE_ARGS}
+)

+ 11 - 0
CMake/ExternalGLExt.cmake

@@ -0,0 +1,11 @@
+# download some headers missing from Windows
+
+IF(NOT EXISTS ${POLYCODE_DEPS_DOWNLOAD_DIR}/glext.h)
+    MESSAGE("Downloading http://www.opengl.org/registry/api/glext.h")
+    FILE(DOWNLOAD http://www.opengl.org/registry/api/glext.h 
+        ${POLYCODE_DEPS_DOWNLOAD_DIR}/glext.h
+        SHOW_PROGRESS)
+ENDIF()
+
+ADD_CUSTOM_TARGET(glext
+    COMMAND ${CMAKE_COMMAND} -E copy_if_different ${POLYCODE_DEPS_DOWNLOAD_DIR}/glext.h ${POLYCODE_DEPS_CORE_PREFIX}/include/GL/glext.h)

+ 25 - 0
CMake/ExternalLua51.cmake

@@ -0,0 +1,25 @@
+# Build a local version
+INCLUDE(ExternalProject)
+
+SET(lua51_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/lua51)
+
+SET(lua51_CMAKE_ARGS
+    -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> 
+    -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+    -DCMAKE_DEBUG_POSTFIX=d
+)
+
+ExternalProject_Add(lua51
+    PREFIX ${lua51_PREFIX}
+
+    DOWNLOAD_DIR ${POLYCODE_DEPS_DOWNLOAD_DIR}
+
+    URL http://www.lua.org/ftp/lua-5.1.4.tar.gz
+    URL_MD5 d0870f2de55d59c1c8419f36e8fac150
+
+    PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PolycodeDependencies_SOURCE_DIR}/../CMake/lua51.cmake <SOURCE_DIR>/CMakeLists.txt
+
+    INSTALL_DIR ${POLYCODE_DEPS_CORE_PREFIX}
+    CMAKE_ARGS ${lua51_CMAKE_ARGS}
+)
+

+ 38 - 0
CMake/ExternalOggVorbis.cmake

@@ -0,0 +1,38 @@
+# Build a local version of libogg, libvorbis and libvorbisfile
+INCLUDE(ExternalProject)
+
+SET(oggvorbis_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/oggvorbis)
+
+SET(oggvorbis_CMAKE_ARGS
+    -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> 
+    -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+)
+
+EXTERNALPROJECT_ADD(libogg
+    PREFIX ${oggvorbis_PREFIX}
+
+    DOWNLOAD_DIR ${POLYCODE_DEPS_DOWNLOAD_DIR}
+    URL http://downloads.xiph.org/releases/ogg/libogg-1.2.2.tar.gz
+    URL_MD5 5a9fcabc9a1b7c6f1cd75ddc78f36c56
+
+    PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PolycodeDependencies_SOURCE_DIR}/../CMake/libogg.cmake <SOURCE_DIR>/CMakeLists.txt
+
+    INSTALL_DIR ${POLYCODE_DEPS_CORE_PREFIX}
+    CMAKE_ARGS ${oggvorbis_CMAKE_ARGS}
+)
+
+ExternalProject_Get_Property(libogg install_dir)
+
+EXTERNALPROJECT_ADD(libvorbis
+    DEPENDS libogg
+    PREFIX ${oggvorbis_PREFIX}
+
+    DOWNLOAD_DIR ${POLYCODE_DEPS_DOWNLOAD_DIR}
+    URL http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.2.tar.gz
+    URL_MD5 c870b9bd5858a0ecb5275c14486d9554
+
+    PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PolycodeDependencies_SOURCE_DIR}/../CMake/libvorbis.cmake <SOURCE_DIR>/CMakeLists.txt
+
+    INSTALL_DIR ${POLYCODE_DEPS_CORE_PREFIX}
+    CMAKE_ARGS ${oggvorbis_CMAKE_ARGS} -DCMAKE_PREFIX_PATH=${install_dir} # to find libogg
+)

+ 22 - 0
CMake/ExternalOpenAL.cmake

@@ -0,0 +1,22 @@
+# Build a local version
+INCLUDE(ExternalProject)
+
+SET(openal_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/openal)
+
+SET(openal_CMAKE_ARGS
+    -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> 
+    -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+    -DCMAKE_DEBUG_POSTFIX=d
+)
+
+ExternalProject_Add(openal
+    PREFIX ${openal_PREFIX}
+
+    DOWNLOAD_DIR ${POLYCODE_DEPS_DOWNLOAD_DIR}
+
+    URL http://kcat.strangesoft.net/openal-releases/openal-soft-1.13.tar.bz2
+    URL_MD5 58b7d2809790c70681b825644c5f3614
+    
+    INSTALL_DIR ${POLYCODE_DEPS_CORE_PREFIX}
+    CMAKE_ARGS ${openal_CMAKE_ARGS}
+)

+ 37 - 0
CMake/ExternalPNG.cmake

@@ -0,0 +1,37 @@
+# Build a local version of zlib and libpng
+INCLUDE(ExternalProject)
+
+SET(libpng_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/libpng)
+
+SET(libpng_CMAKE_ARGS
+    -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> 
+    -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+    -DSKIP_INSTALL_FILES=1
+)
+
+EXTERNALPROJECT_ADD(zlib
+    PREFIX ${libpng_PREFIX}
+
+    DOWNLOAD_DIR ${POLYCODE_DEPS_DOWNLOAD_DIR}
+    URL http://zlib.net/zlib-1.2.5.tar.gz
+    URL_MD5 c735eab2d659a96e5a594c9e8541ad63
+
+    PATCH_COMMAND ${CMAKE_COMMAND} -E remove <SOURCE_DIR>/zconf.h
+
+    INSTALL_DIR ${POLYCODE_DEPS_CORE_PREFIX}
+    CMAKE_ARGS ${libpng_CMAKE_ARGS}
+)
+
+ExternalProject_Get_Property(zlib install_dir)
+
+EXTERNALPROJECT_ADD(libpng
+    DEPENDS zlib
+    PREFIX ${libpng_PREFIX}
+
+    DOWNLOAD_DIR ${POLYCODE_DEPS_DOWNLOAD_DIR}
+    URL ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.5.4.tar.gz
+    URL_MD5 dea4d1fd671160424923e92ff0cdda78
+
+    INSTALL_DIR ${POLYCODE_DEPS_CORE_PREFIX}
+    CMAKE_ARGS ${libpng_CMAKE_ARGS} -DCMAKE_PREFIX_PATH=${install_dir} # to find zlib
+)

+ 25 - 0
CMake/ExternalPhysFS.cmake

@@ -0,0 +1,25 @@
+# Build a local version
+INCLUDE(ExternalProject)
+
+SET(physfs_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/physfs)
+
+SET(physfs_CMAKE_ARGS
+    -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> 
+    -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+    -DCMAKE_DEBUG_POSTFIX=d
+    -DPHYSFS_BUILD_TEST=FALSE
+    -DPHYSFS_BUILD_WX_TEST=FALSE
+)
+
+ExternalProject_Add(physfs
+    PREFIX ${physfs_PREFIX}
+
+    DOWNLOAD_DIR ${POLYCODE_DEPS_DOWNLOAD_DIR}
+
+    URL http://offload1.icculus.org:9090/physfs/downloads/physfs-2.0.2.tar.gz
+    URL_MD5 4e8927c3d30279b03e2592106eb9184a
+
+    INSTALL_DIR ${POLYCODE_DEPS_CORE_PREFIX}
+    CMAKE_ARGS ${physfs_CMAKE_ARGS}
+)
+

+ 10 - 0
CMake/ExternalWGLExt.cmake

@@ -0,0 +1,10 @@
+# download some headers missing from Windows
+IF(NOT EXISTS ${POLYCODE_DEPS_DOWNLOAD_DIR}/wglext.h)
+    MESSAGE("Downloading http://www.opengl.org/registry/api/wglext.h")
+    FILE(DOWNLOAD http://www.opengl.org/registry/api/wglext.h 
+        ${POLYCODE_DEPS_DOWNLOAD_DIR}/wglext.h
+        SHOW_PROGRESS)
+ENDIF()
+
+ADD_CUSTOM_TARGET(wglext
+    COMMAND ${CMAKE_COMMAND} -E copy_if_different ${POLYCODE_DEPS_DOWNLOAD_DIR}/wglext.h ${POLYCODE_DEPS_CORE_PREFIX}/include/GL/wglext.h)

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


+ 14 - 5
Build/CMakeModules/FindBox2D.cmake → CMake/FindBox2D.cmake

@@ -11,13 +11,22 @@ 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)
-FIND_LIBRARY(BOX2D_LIBRARY NAMES ${BOX2D_NAMES})
-MARK_AS_ADVANCED(BOX2D_LIBRARY BOX2D_INCLUDE_DIR)
+FIND_LIBRARY(BOX2D_RELEASE_LIBRARY NAMES box2d Box2d BOX2D Box2D)
+FIND_LIBRARY(BOX2D_DEBUG_LIBRARY NAMES box2d_d Box2d_d BOX2D_d Box2D_d)
+
+IF(BOX2D_RELEASE_LIBRARY)
+    IF(BOX2D_DEBUG_LIBRARY)
+        SET(BOX2D_LIBRARY optimized "${BOX2D_RELEASE_LIBRARY}" debug "${BOX2D_DEBUG_LIBRARY}")
+    ELSE()
+        SET(BOX2D_LIBRARY "${BOX2D_RELEASE_LIBRARY}")        # Could add "general" keyword, but it is optional
+    ENDIF()
+ENDIF()
+
+MARK_AS_ADVANCED(BOX2D_LIBRARY BOX2D_RELEASE_LIBRARY BOX2D_DEBUG_LIBRARY BOX2D_INCLUDE_DIR)
 
 # Per-recommendation
 SET(BOX2D_INCLUDE_DIRS "${BOX2D_INCLUDE_DIR}")

+ 84 - 0
CMake/FindOgg.cmake

@@ -0,0 +1,84 @@
+# Copied from http://code.google.com/p/osgaudio/source/browse/trunk/CMakeModules/FindOGG.cmake
+# Locate OGG
+# This module defines XXX_FOUND, XXX_INCLUDE_DIRS and XXX_LIBRARIES standard variables
+#
+# $OGGDIR is an environment variable that would
+# correspond to the ./configure --prefix=$OGGDIR
+# used in building OGG.
+
+SET(OGG_SEARCH_PATHS
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local
+	/usr
+	/sw # Fink
+	/opt/local # DarwinPorts
+	/opt/csw # Blastwave
+	/opt
+)
+
+SET(MSVC_YEAR_NAME)
+IF (MSVC_VERSION GREATER 1599)		# >= 1600
+	SET(MSVC_YEAR_NAME VS2010)
+ELSEIF(MSVC_VERSION GREATER 1499)	# >= 1500
+	SET(MSVC_YEAR_NAME VS2008)
+ELSEIF(MSVC_VERSION GREATER 1399)	# >= 1400
+	SET(MSVC_YEAR_NAME VS2005)
+ELSEIF(MSVC_VERSION GREATER 1299)	# >= 1300
+	SET(MSVC_YEAR_NAME VS2003)
+ELSEIF(MSVC_VERSION GREATER 1199)	# >= 1200
+	SET(MSVC_YEAR_NAME VS6)
+ENDIF()
+
+FIND_PATH(OGG_INCLUDE_DIR
+	NAMES ogg/ogg.h ogg/os_types.h
+	HINTS
+	$ENV{OGGDIR}
+	$ENV{OGG_PATH}
+	PATH_SUFFIXES include
+	PATHS ${OGG_SEARCH_PATHS}
+)
+
+FIND_LIBRARY(OGG_LIBRARY 
+	NAMES ogg libogg
+	HINTS
+	$ENV{OGGDIR}
+	$ENV{OGG_PATH}
+	PATH_SUFFIXES lib lib64 win32/Dynamic_Release "Win32/${MSVC_YEAR_NAME}/x64/Release" "Win32/${MSVC_YEAR_NAME}/Win32/Release"
+	PATHS ${OGG_SEARCH_PATHS}
+)
+
+# First search for d-suffixed libs
+FIND_LIBRARY(OGG_LIBRARY_DEBUG 
+	NAMES oggd ogg_d liboggd libogg_d
+	HINTS
+	$ENV{OGGDIR}
+	$ENV{OGG_PATH}
+	PATH_SUFFIXES lib lib64 win32/Dynamic_Debug "Win32/${MSVC_YEAR_NAME}/x64/Debug" "Win32/${MSVC_YEAR_NAME}/Win32/Debug"
+	PATHS ${OGG_SEARCH_PATHS}
+)
+
+IF(NOT OGG_LIBRARY_DEBUG)
+	# Then search for non suffixed libs if necessary, but only in debug dirs
+	FIND_LIBRARY(OGG_LIBRARY_DEBUG 
+		NAMES ogg libogg
+		HINTS
+		$ENV{OGGDIR}
+		$ENV{OGG_PATH}
+		PATH_SUFFIXES win32/Dynamic_Debug "Win32/${MSVC_YEAR_NAME}/x64/Debug" "Win32/${MSVC_YEAR_NAME}/Win32/Debug"
+		PATHS ${OGG_SEARCH_PATHS}
+	)
+ENDIF()
+
+
+IF(OGG_LIBRARY)
+	IF(OGG_LIBRARY_DEBUG)
+		SET(OGG_LIBRARIES optimized "${OGG_LIBRARY}" debug "${OGG_LIBRARY_DEBUG}")
+	ELSE()
+		SET(OGG_LIBRARIES "${OGG_LIBRARY}")		# Could add "general" keyword, but it is optional
+	ENDIF()
+ENDIF()
+
+# handle the QUIETLY and REQUIRED arguments and set XXX_FOUND to TRUE if all listed variables are TRUE
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(OGG DEFAULT_MSG OGG_LIBRARIES OGG_INCLUDE_DIR)

+ 84 - 0
CMake/FindVorbis.cmake

@@ -0,0 +1,84 @@
+# Copied from http://code.google.com/p/osgaudio/source/browse/trunk/CMakeModules/FindVorbis.cmake
+# Locate Vorbis
+# This module defines XXX_FOUND, XXX_INCLUDE_DIRS and XXX_LIBRARIES standard variables
+#
+# $VORBISDIR is an environment variable that would
+# correspond to the ./configure --prefix=$VORBISDIR
+# used in building Vorbis.
+
+SET(VORBIS_SEARCH_PATHS
+	~/Library/Frameworks
+	/Library/Frameworks
+	/usr/local
+	/usr
+	/sw # Fink
+	/opt/local # DarwinPorts
+	/opt/csw # Blastwave
+	/opt
+)
+
+SET(MSVC_YEAR_NAME)
+IF (MSVC_VERSION GREATER 1599)		# >= 1600
+	SET(MSVC_YEAR_NAME VS2010)
+ELSEIF(MSVC_VERSION GREATER 1499)	# >= 1500
+	SET(MSVC_YEAR_NAME VS2008)
+ELSEIF(MSVC_VERSION GREATER 1399)	# >= 1400
+	SET(MSVC_YEAR_NAME VS2005)
+ELSEIF(MSVC_VERSION GREATER 1299)	# >= 1300
+	SET(MSVC_YEAR_NAME VS2003)
+ELSEIF(MSVC_VERSION GREATER 1199)	# >= 1200
+	SET(MSVC_YEAR_NAME VS6)
+ENDIF()
+
+FIND_PATH(VORBIS_INCLUDE_DIR
+	NAMES vorbis/codec.h
+	HINTS
+	$ENV{VORBISDIR}
+	$ENV{VORBIS_PATH}
+	PATH_SUFFIXES include
+	PATHS ${VORBIS_SEARCH_PATHS}
+)
+
+FIND_LIBRARY(VORBIS_LIBRARY 
+	NAMES vorbis libvorbis
+	HINTS
+	$ENV{VORBISDIR}
+	$ENV{VORBIS_PATH}
+	PATH_SUFFIXES lib lib64 win32/Vorbis_Dynamic_Release "Win32/${MSVC_YEAR_NAME}/x64/Release" "Win32/${MSVC_YEAR_NAME}/Win32/Release"
+	PATHS ${VORBIS_SEARCH_PATHS}
+)
+
+# First search for d-suffixed libs
+FIND_LIBRARY(VORBIS_LIBRARY_DEBUG 
+	NAMES vorbisd vorbis_d libvorbisd libvorbis_d
+	HINTS
+	$ENV{VORBISDIR}
+	$ENV{VORBIS_PATH}
+	PATH_SUFFIXES lib lib64 win32/Vorbis_Dynamic_Debug "Win32/${MSVC_YEAR_NAME}/x64/Debug" "Win32/${MSVC_YEAR_NAME}/Win32/Debug"
+	PATHS ${VORBIS_SEARCH_PATHS}
+)
+
+IF(NOT VORBIS_LIBRARY_DEBUG)
+	# Then search for non suffixed libs if necessary, but only in debug dirs
+	FIND_LIBRARY(VORBIS_LIBRARY_DEBUG 
+		NAMES vorbis libvorbis
+		HINTS
+		$ENV{VORBISDIR}
+		$ENV{VORBIS_PATH}
+		PATH_SUFFIXES win32/Vorbis_Dynamic_Debug "Win32/${MSVC_YEAR_NAME}/x64/Debug" "Win32/${MSVC_YEAR_NAME}/Win32/Debug"
+		PATHS ${VORBIS_SEARCH_PATHS}
+	)
+ENDIF()
+
+
+IF(VORBIS_LIBRARY)
+	IF(VORBIS_LIBRARY_DEBUG)
+		SET(VORBIS_LIBRARIES optimized "${VORBIS_LIBRARY}" debug "${VORBIS_LIBRARY_DEBUG}")
+	ELSE()
+		SET(VORBIS_LIBRARIES "${VORBIS_LIBRARY}")		# Could add "general" keyword, but it is optional
+	ENDIF()
+ENDIF()
+
+# handle the QUIETLY and REQUIRED arguments and set XXX_FOUND to TRUE if all listed variables are TRUE
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(VORBIS DEFAULT_MSG VORBIS_LIBRARIES VORBIS_INCLUDE_DIR)

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


+ 38 - 0
CMake/PolycodeIncludes.cmake

@@ -0,0 +1,38 @@
+# platform specific defines and include directories for win and sdl
+IF(MSVC)
+    ADD_DEFINITIONS(/D_UNICODE /DUNICODE)
+    INCLUDE_DIRECTORIES(${Polycode_SOURCE_DIR}/Core/Build/MSVC/Polycore)
+ELSEIF(APPLE)
+    ADD_DEFINITIONS(-DGL_GLEXT_PROTOTYPES)
+ELSE(MSVC)
+    ADD_DEFINITIONS(-DGL_GLEXT_PROTOTYPES)
+    INCLUDE_DIRECTORIES(${Polycode_SOURCE_DIR}/Core/Build/Linux)
+ENDIF(MSVC)
+
+FIND_PACKAGE(OpenGL REQUIRED)
+FIND_PACKAGE(PNG REQUIRED)
+FIND_PACKAGE(PhysFS REQUIRED)
+FIND_PACKAGE(OpenAL REQUIRED)
+FIND_PACKAGE(Freetype REQUIRED)
+FIND_PACKAGE(Ogg REQUIRED)
+FIND_PACKAGE(Vorbis 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)
+
+#
+# Set up common include directories
+INCLUDE_DIRECTORIES(
+    ${Polycode_SOURCE_DIR}/Core/Contents/Include
+    ${OPENGL_INCLUDE_DIR}
+    ${OPENAL_INCLUDE_DIR}
+    ${FREETYPE_INCLUDE_DIRS}
+    ${PHYSFS_INCLUDE_DIR}
+    ${OGG_INCLUDE_DIR}
+    ${VORBISFILE_INCLUDE_DIR}
+    ${PNG_INCLUDE_DIR}
+    ${OPENGLEXT_INCLUDE_DIR}
+)

+ 81 - 0
CMake/freetype.cmake

@@ -0,0 +1,81 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+
+PROJECT(freetype C)
+
+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)
+
+# to distinguish between debug and release lib
+SET(CMAKE_DEBUG_POSTFIX "_d")
+
+SET(freetype_SRCS
+    src/autofit/autofit.c
+    src/bdf/bdf.c
+    src/cff/cff.c
+    src/base/ftbase.c
+    src/base/ftbitmap.c
+    src/cache/ftcache.c
+    src/base/ftfstype.c
+    src/base/ftgasp.c
+    src/base/ftglyph.c
+    src/gzip/ftgzip.c
+    src/base/ftinit.c
+    src/lzw/ftlzw.c
+    src/base/ftstroke.c
+    src/base/ftsystem.c
+    src/smooth/smooth.c
+    src/base/ftbbox.c
+    src/base/ftmm.c
+    src/base/ftpfr.c
+    src/base/ftsynth.c
+    src/base/fttype1.c
+    src/base/ftwinfnt.c
+    src/base/ftxf86.c
+    src/base/ftlcdfil.c
+    src/base/ftgxval.c
+    src/base/ftotval.c
+    src/base/ftpatent.c
+    src/pcf/pcf.c
+    src/pfr/pfr.c
+    src/psaux/psaux.c
+    src/pshinter/pshinter.c
+    src/psnames/psmodule.c
+    src/raster/raster.c
+    src/sfnt/sfnt.c
+    src/truetype/truetype.c
+    src/type1/type1.c
+    src/cid/type1cid.c
+    src/type42/type42.c
+    src/winfonts/winfnt.c
+)
+
+SET(freetype_HDRS
+    include/ft2build.h
+    include/freetype/config/ftconfig.h
+    include/freetype/config/ftheader.h
+    include/freetype/config/ftmodule.h
+    include/freetype/config/ftoption.h
+    include/freetype/config/ftstdlib.h
+)
+
+INCLUDE_DIRECTORIES(include)
+
+ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -DFT2_BUILD_LIBRARY)
+SET(COMPILE_DEFINITIONS_DEBUG FT_DEBUG_LEVEL_ERROR FT_DEBUG_LEVEL_TRACE)
+
+IF(WIN32)
+    LIST(APPEND freetype_SRCS builds/win32/ftdebug.c)
+ENDIF(WIN32)
+
+ADD_LIBRARY(freetype ${freetype_SRCS} ${freetype_HDRS})
+
+INSTALL(TARGETS freetype
+    RUNTIME DESTINATION bin
+    ARCHIVE DESTINATION lib
+    LIBRARY DESTINATION lib)
+
+INSTALL(DIRECTORY include/ DESTINATION include)
+

+ 38 - 0
CMake/libogg.cmake

@@ -0,0 +1,38 @@
+# CMakeLists.txt to build static libogg for Polycode
+
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+
+PROJECT(libogg C)
+
+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)
+
+# to distinguish between debug and release lib
+SET(CMAKE_DEBUG_POSTFIX "d")
+
+SET(libogg_SRCS src/bitwise.c src/framing.c)
+SET(libogg_HDRS include/ogg/ogg.h include/ogg/os_types.h)
+
+INCLUDE_DIRECTORIES(include)
+
+IF(MSVC)
+    ADD_DEFINITIONS(/D_UNICODE /DUNICODE)
+    LIST(APPEND libogg_SRCS win32/ogg.def)
+ENDIF(MSVC)
+
+#ADD_LIBRARY(libogg_dynamic SHARED ${libogg_SRCS} ${libogg_HDRS})
+ADD_LIBRARY(libogg ${libogg_SRCS} ${libogg_HDRS})
+
+#SET_TARGET_PROPERTIES(libogg_dynamic #libogg_static 
+#    PROPERTIES OUTPUT_NAME libogg)
+
+INSTALL(TARGETS libogg #libogg_dynamic
+    RUNTIME DESTINATION bin
+    ARCHIVE DESTINATION lib
+    LIBRARY DESTINATION lib)
+
+INSTALL(FILES ${libogg_HDRS} DESTINATION include/ogg)
+

+ 130 - 0
CMake/libvorbis.cmake

@@ -0,0 +1,130 @@
+# CMakeLists.txt to build static libvorbis and libvorbisfile for Polycode
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+
+PROJECT(libvorbis C)
+
+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)
+
+# to distinguish between debug and release lib
+SET(CMAKE_DEBUG_POSTFIX "d")
+
+FIND_PATH(OGG_INCLUDE_DIR NAMES ogg/ogg.h)
+
+FIND_LIBRARY(OGG_RELEASE_LIBRARY NAMES libogg)
+FIND_LIBRARY(OGG_DEBUG_LIBRARY NAMES liboggd)
+
+IF(OGG_DEBUG_LIBRARY)
+    LIST(APPEND OGG_LIBRARY debug ${OGG_DEBUG_LIBRARY})
+ENDIF(OGG_DEBUG_LIBRARY)
+IF(OGG_RELEASE_LIBRARY)
+    LIST(APPEND OGG_LIBRARY  optimized ${OGG_RELEASE_LIBRARY})
+ENDIF(OGG_RELEASE_LIBRARY)
+
+MESSAGE("CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}")
+MESSAGE("OGG_LIBRARY=${OGG_LIBRARY}")
+
+SET(libvorbis_SRCS
+    lib/analysis.c
+    lib/bitrate.c
+    lib/block.c
+    lib/codebook.c
+    lib/envelope.c
+    lib/floor0.c
+    lib/floor1.c
+    lib/info.c
+    lib/lookup.c
+    lib/lpc.c
+    lib/lsp.c
+    lib/mapping0.c
+    lib/mdct.c
+    lib/psy.c
+    lib/registry.c
+    lib/res0.c
+    lib/sharedbook.c
+    lib/smallft.c
+    lib/synthesis.c
+    lib/vorbisenc.c
+    lib/window.c
+)
+
+SET(libvorbis_HDRS 
+    lib/backends.h
+    lib/bitrate.h
+    lib/codebook.h
+    lib/codec_internal.h
+    lib/envelope.h
+    lib/modes/floor_all.h
+    lib/books/floor/floor_books.h
+    lib/highlevel.h
+    lib/lookup.h
+    lib/lookup_data.h
+    lib/lpc.h
+    lib/lsp.h
+    lib/masking.h
+    lib/mdct.h
+    lib/misc.h
+    lib/os.h
+    lib/psy.h
+    lib/modes/psych_11.h
+    lib/modes/psych_16.h
+    lib/modes/psych_44.h
+    lib/modes/psych_8.h
+    lib/registry.h
+    lib/books/coupled/res_books_stereo.h
+    lib/books/uncoupled/res_books_uncoupled.h
+    lib/modes/residue_16.h
+    lib/modes/residue_44.h
+    lib/modes/residue_44u.h
+    lib/modes/residue_8.h
+    lib/scales.h
+    lib/modes/setup_11.h
+    lib/modes/setup_16.h
+    lib/modes/setup_22.h
+    lib/modes/setup_32.h
+    lib/modes/setup_44.h
+    lib/modes/setup_44u.h
+    lib/modes/setup_8.h
+    lib/modes/setup_X.h
+    lib/smallft.h
+    lib/window.h
+)
+
+SET(vorbis_public_HDRS
+    include/vorbis/codec.h
+    include/vorbis/vorbisenc.h
+    include/vorbis/vorbisfile.h)
+
+INCLUDE_DIRECTORIES(${OGG_INCLUDE_DIR} include lib)
+
+IF(MSVC)
+    ADD_DEFINITIONS(/D_UNICODE /DUNICODE)
+    LIST(APPEND libvorbis_SRCS win32/vorbis.def)
+ENDIF(MSVC)
+
+#ADD_LIBRARY(libvorbis_dynamic SHARED ${libvorbis_SRCS} ${libvorbis_HDRS} ${vorbis_public_HDRS})
+ADD_LIBRARY(libvorbis ${libvorbis_SRCS} ${libvorbis_HDRS} ${vorbis_public_HDRS})
+#TARGET_LINK_LIBRARIES(libvorbis_dynamic ${OGG_LIBRARY})
+
+#ADD_LIBRARY(libvorbisfile_dynamic SHARED lib/vorbisfile.c include/vorbis/vorbisfile.h)
+ADD_LIBRARY(libvorbisfile lib/vorbisfile.c include/vorbis/vorbisfile.h)
+
+#TARGET_LINK_LIBRARIES(libvorbisfile_dynamic libvorbis_dynamic ${OGG_LIBRARY})
+
+#SET_TARGET_PROPERTIES(libvorbis_dynamic #libvorbis_static
+#    PROPERTIES OUTPUT_NAME libvorbis)
+
+#SET_TARGET_PROPERTIES(libvorbisfile_dynamic #libvorbisfile_static 
+#    PROPERTIES OUTPUT_NAME libvorbisfile)
+
+INSTALL(TARGETS 
+    libvorbis #libvorbis_dynamic
+    libvorbisfile #libvorbisfile_dynamic
+    RUNTIME DESTINATION bin
+    ARCHIVE DESTINATION lib
+    LIBRARY DESTINATION lib)
+
+INSTALL(FILES ${vorbis_public_HDRS} DESTINATION include/vorbis)

+ 40 - 0
CMake/lua51.cmake

@@ -0,0 +1,40 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+
+PROJECT(lua51 C)
+
+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)
+
+# to distinguish between debug and release lib
+SET(CMAKE_DEBUG_POSTFIX "d")
+
+SET(lualib_SRCS 
+    src/lapi.c src/lcode.c src/ldebug.c src/ldo.c src/ldump.c 
+    src/lfunc.c src/lgc.c src/llex.c src/lmem.c src/lobject.c 
+    src/lopcodes.c src/lparser.c src/lstate.c src/lstring.c
+    src/ltable.c src/ltm.c src/lundump.c src/lvm.c src/lzio.c
+    src/lauxlib.c src/lbaselib.c src/ldblib.c src/liolib.c 
+    src/lmathlib.c src/loslib.c src/ltablib.c src/lstrlib.c 
+    src/loadlib.c src/linit.c)
+
+INCLUDE_DIRECTORIES(src)
+
+# We only want a static lib
+ADD_LIBRARY(lualib ${lualib_SRCS})
+
+SET_TARGET_PROPERTIES(lualib 
+    PROPERTIES OUTPUT_NAME lua5.1)
+
+INSTALL(TARGETS lualib
+    RUNTIME DESTINATION bin
+    ARCHIVE DESTINATION lib
+    LIBRARY DESTINATION lib)
+
+INSTALL(FILES src/lua.h src/luaconf.h src/lualib.h src/lauxlib.h 
+    DESTINATION include/lua5.1)
+
+INSTALL(FILES etc/lua.hpp
+    DESTINATION include/lua5.1)

+ 29 - 49
CMakeLists.txt

@@ -1,68 +1,52 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
 
-PROJECT(PolyCode)
+PROJECT(Polycode)
 
 IF(NOT CMAKE_BUILD_TYPE)
-    SET(CMAKE_BUILD_TYPE "Debug")
-#   SET(CMAKE_BUILD_TYPE "Release")
+    SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
+      "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
+      FORCE)
+    MESSAGE("No CMAKE_BUILD_TYPE specified, defaulting to ${CMAKE_BUILD_TYPE}")
 ENDIF(NOT CMAKE_BUILD_TYPE)
 
+IF(APPLE OR WIN32)
+	SET(build_player ON)
+ELSE()
+	SET(build_player OFF)
+ENDIF()
+
+# 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)
 OPTION(POLYCODE_BUILD_EXAMPLES "Build Polycode examples" ON)
 OPTION(POLYCODE_BUILD_MODULES "Build Polycode modules" ON)
-OPTION(POLYCODE_BUILD_PLAYER "Build Polycode standalone player" ON)
+OPTION(POLYCODE_BUILD_PLAYER "Build Polycode standalone player" ${build_player})
 OPTION(POLYCODE_BUILD_TOOLS "Build Polycode tools" ON)
 
 OPTION(POLYCODE_INSTALL_FRAMEWORK "Install Polycode Core, Modules and Tools" ON)
+OPTION(POLYCODE_INSTALL_PLAYER "Install Polycode Player" ${POLYCODE_BUILD_PLAYER})
 
 # Some non-standard CMake modules
-SET(CMAKE_MODULE_PATH ${PolyCode_SOURCE_DIR}/Build/CMakeModules ${CMAKE_MODULE_PATH})
-
-IF(WIN32)
-    SET(CMAKE_PREFIX_PATH ${PolyCode_SOURCE_DIR}/Release/Win/Framework/Dependencies)
-    SET(CMAKE_SYSTEM_LIBRARY_PATH ${CMAKE_PREFIX_PATH}/Lib/Release)
-ENDIF(WIN32)
-
-FIND_PACKAGE(PhysFS REQUIRED)
-FIND_PACKAGE(OpenGL REQUIRED)
-FIND_PACKAGE(OpenAL REQUIRED)
-FIND_PACKAGE(Freetype REQUIRED)
-FIND_PACKAGE(PNG 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)
-
-FIND_LIBRARY(VORBISFILE_LIBRARY NAMES vorbisfile)
-
-# platform specific defines and include directories for win and sdl
-IF(MSVC)
-    ADD_DEFINITIONS(/D_UNICODE /DUNICODE)
-    INCLUDE_DIRECTORIES(${PolyCode_SOURCE_DIR}/Core/Build/MSVC/Polycore)
-ELSEIF(APPLE)
-    ADD_DEFINITIONS(-DGL_GLEXT_PROTOTYPES)
-ELSE(MSVC)
-    ADD_DEFINITIONS(-DGL_GLEXT_PROTOTYPES)
-    INCLUDE_DIRECTORIES(${PolyCode_SOURCE_DIR}/Core/Build/Linux)
-ENDIF(MSVC)
-
-# Set up common include directories
-INCLUDE_DIRECTORIES(
-    ${PolyCode_SOURCE_DIR}/Core/Contents/Include
-    ${OPENGL_INCLUDE_DIR}
-    ${OPENAL_INCLUDE_DIR}
-    ${FREETYPE_INCLUDE_DIRS}
-)
+SET(CMAKE_MODULE_PATH ${Polycode_SOURCE_DIR}/CMake)
+
+IF(NOT POLYCODE_RELEASE_DIR)
+    SET(POLYCODE_RELEASE_DIR ${Polycode_SOURCE_DIR}/Release/${CMAKE_SYSTEM_NAME})
+    MESSAGE("No POLYCODE_RELEASE_DIR specified, to ${POLYCODE_RELEASE_DIR}") 
+ENDIF(NOT POLYCODE_RELEASE_DIR)
+
+# set default externals install location
+SET(CMAKE_PREFIX_PATH 
+    ${POLYCODE_RELEASE_DIR}/Framework/Core/Dependencies
+    ${POLYCODE_RELEASE_DIR}/Framework/Modules/Dependencies
+    ${POLYCODE_RELEASE_DIR}/Framework/Tools/Dependencies)
+
+MESSAGE(DEBUG "CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}")
 
 # Process subdirectories
 ADD_SUBDIRECTORY(Core/Contents)
 
 IF(POLYCODE_BUILD_BINDINGS)
-    FIND_PACKAGE(Lua51 REQUIRED)
     ADD_SUBDIRECTORY(Bindings/Contents)
 ENDIF(POLYCODE_BUILD_BINDINGS)
 
@@ -71,18 +55,14 @@ IF(POLYCODE_BUILD_EXAMPLES)
 ENDIF(POLYCODE_BUILD_EXAMPLES)
 
 IF(POLYCODE_BUILD_MODULES)
-    FIND_PACKAGE(Box2D)
-    FIND_PACKAGE(Bullet)
     ADD_SUBDIRECTORY(Modules/Contents)
 ENDIF(POLYCODE_BUILD_MODULES)
 
 IF(POLYCODE_BUILD_PLAYER)
-    FIND_PACKAGE(Lua51 REQUIRED)
     ADD_SUBDIRECTORY(Player/Contents)
 ENDIF(POLYCODE_BUILD_PLAYER)
 
 IF(POLYCODE_BUILD_TOOLS)
-    FIND_PACKAGE(Assimp REQUIRED)
     ADD_SUBDIRECTORY(Tools/Contents)
 ENDIF(POLYCODE_BUILD_TOOLS)
 

+ 27 - 16
Core/Contents/CMakeLists.txt

@@ -1,3 +1,6 @@
+# set up common includes
+INCLUDE(PolycodeIncludes)
+
 SET(polycore_SRCS
     Source/OSBasics.cpp
     Source/PolyBezierCurve.cpp
@@ -177,6 +180,8 @@ SET(polycore_HDRS
     Include/tinyxml.h
 )
 
+SET(CMAKE_DEBUG_POSTFIX "_d")
+
 # TODO: iPhone
 #    Include/PolyiPhoneCore.h
 #    Include/Poly_iPhone.h
@@ -193,45 +198,51 @@ IF(MSVC)
     SET(polycore_SRCS ${polycore_SRCS} ../Build/MSVC/Polycore/PolycodeView.cpp Source/PolyWinCore.cpp)
     SET(polycore_HDRS ${polycore_HDRS} ../Build/MSVC/Polycore/PolycodeView.h Include/PolyWinCore.h)
 ELSEIF(APPLE)
-    SET(polycore_SRCS ${polycore_SRCS} Source/PolyAGLCore.cpp Source/PolyCocoaCore.cpp Source/PolycodeView.mm)
-    SET(polycore_HDRS ${polycore_HDRS} Include/PolyAGLCore.h Include/PolyCocoaCore.h Include/PolycodeView.h)
+    SET(polycore_SRCS ${polycore_SRCS} "../Build/Mac OS X/PolycodeView.mm" Source/PolyAGLCore.cpp Source/PolyCocoaCore.cpp)
+    SET(polycore_HDRS ${polycore_HDRS} "../Build/Mac OS X/PolycodeView.h" Include/PolyAGLCore.h Include/PolyCocoaCore.h)
 ELSE(MSVC)
     SET(polycore_SRCS ${polycore_SRCS} ../Build/Linux/PolycodeView.cpp Source/PolySDLCore.cpp)
     SET(polycore_HDRS ${polycore_HDRS} ../Build/Linux/PolycodeView.h Include/PolySDLCore.h)
 ENDIF(MSVC)
 
 IF(POLYCODE_BUILD_SHARED)
-    ADD_LIBRARY(PolyCore SHARED ${polycore_SRCS} ${polycore_HDRS})
-    TARGET_LINK_LIBRARIES(
-        PolyCore
+    ADD_LIBRARY(Polycore SHARED ${polycore_SRCS} ${polycore_HDRS})
+    TARGET_LINK_LIBRARIES(Polycore
         ${OPENGL_LIBRARIES}
         ${OPENAL_LIBRARY}
         ${PNG_LIBRARIES}
         ${FREETYPE_LIBRARIES}
         ${PHYSFS_LIBRARY}
-        ${VORBISFILE_LIBRARY}
-    )
+        ${OGG_LIBRARIES}
+        ${VORBIS_LIBRARIES}
+        ${VORBISFILE_LIBRARIES}
+        ${SDL_LIBRARY})
 ENDIF(POLYCODE_BUILD_SHARED)
 
 IF(POLYCODE_BUILD_STATIC)
-    ADD_LIBRARY(PolyCore_static ${polycore_SRCS} ${polycore_HDRS})
+    ADD_LIBRARY(Polycore_static ${polycore_SRCS} ${polycore_HDRS})
 ENDIF(POLYCODE_BUILD_STATIC)
 
 IF(POLYCODE_INSTALL_FRAMEWORK)
     # install headers
-    INSTALL(FILES ${polycore_HDRS} DESTINATION Framework/Core/Include)
+    INSTALL(FILES ${polycore_HDRS} 
+        DESTINATION ${POLYCODE_RELEASE_DIR}/Framework/Core/include)
 
     # install libraries
     IF(POLYCODE_BUILD_SHARED)
-        INSTALL(TARGETS PolyCore EXPORT PolyCore-targets DESTINATION Framework/Core/Lib/${CMAKE_BUILD_TYPE})
+        INSTALL(TARGETS Polycore EXPORT Polycore-targets 
+            DESTINATION ${POLYCODE_RELEASE_DIR}/Framework/Core/lib)
     ENDIF(POLYCODE_BUILD_SHARED)
     
     IF(POLYCODE_BUILD_STATIC)
-        INSTALL(TARGETS PolyCore_static EXPORT PolyCore-targets DESTINATION Framework/Core/Lib/${CMAKE_BUILD_TYPE})
+        INSTALL(TARGETS Polycore_static EXPORT Polycore-targets 
+            DESTINATION ${POLYCODE_RELEASE_DIR}/Framework/Core/lib)
     ENDIF(POLYCODE_BUILD_STATIC)
-
-    # from Box2D's cmake file - not sure what it does yet
-    # install build system hooks for third-party apps
-    # INSTALL(EXPORT PolyCore-targets DESTINATION Lib/Box2D)
-    # INSTALL(FILES Box2DConfig.cmake DESTINATION Lib/Box2D)
 ENDIF(POLYCODE_INSTALL_FRAMEWORK)
+
+IF(POLYCODE_INSTALL_PLAYER AND POLYCODE_BUILD_SHARED)
+    # install required libs
+    INSTALL(TARGETS Polycore DESTINATION ${POLYCODE_RELEASE_DIR}/Player)
+    INSTALL(DIRECTORY ${POLYCODE_RELEASE_DIR}/Framework/Core/Dependencies/bin/ 
+        DESTINATION ${POLYCODE_RELEASE_DIR}/Player)
+ENDIF()

+ 2 - 9
Core/Contents/Include/PolySound.h

@@ -28,15 +28,8 @@
 #include "PolyVector3.h"
 #include <string>
 #include <vector>
-
-#if defined(__APPLE__) && defined(__MACH__)
-	#include "al.h"
-	#include "alc.h"
-#else
-	#include "AL/al.h"
-	#include "AL/alc.h"
-#endif
-
+#include "al.h"
+#include "alc.h"
 #include "OSBasics.h"
 
 using std::string;

+ 2 - 9
Core/Contents/Include/PolySoundManager.h

@@ -25,15 +25,8 @@
 #include "PolyLogger.h"
 #include "PolyGlobals.h"
 #include <stdio.h>
-
-#if defined(__APPLE__) && defined(__MACH__)
-	#include "al.h"
-	#include "alc.h"
-#else
-	#include "AL/al.h"
-	#include "AL/alc.h"
-#endif
-
+#include "al.h"
+#include "alc.h"
 #include "PolyVector3.h"
 
 namespace Polycode {

+ 186 - 0
Dependencies/CMakeLists.txt

@@ -0,0 +1,186 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
+
+PROJECT(PolycodeDependencies)
+
+IF(NOT CMAKE_BUILD_TYPE)
+    SET(CMAKE_BUILD_TYPE Release CACHE STRING
+      "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
+      FORCE)
+    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 ${PolycodeDependencies_SOURCE_DIR}/../Release/${CMAKE_SYSTEM_NAME}
+        CACHE PATH "Choose the root directory that the Polycode release will be installed in.")
+    MESSAGE("No POLYCODE_RELEASE_DIR specified, to ${POLYCODE_RELEASE_DIR}") 
+ENDIF(NOT POLYCODE_RELEASE_DIR)
+
+IF(NOT POLYCODE_DEPS_DOWNLOAD_DIR)
+    SET(POLYCODE_DEPS_DOWNLOAD_DIR ${PolycodeDependencies_SOURCE_DIR}/Downloads)
+    MESSAGE("No POLYCODE_DEPS_DOWNLOAD_DIR specified, to ${POLYCODE_DEPS_DOWNLOAD_DIR}") 
+ENDIF(NOT POLYCODE_DEPS_DOWNLOAD_DIR)
+
+# Install directories
+SET(POLYCODE_DEPS_CORE_PREFIX ${POLYCODE_RELEASE_DIR}/Framework/Core/Dependencies)
+SET(POLYCODE_DEPS_MODULES_PREFIX ${POLYCODE_RELEASE_DIR}/Framework/Modules/Dependencies)
+SET(POLYCODE_DEPS_TOOLS_PREFIX ${POLYCODE_RELEASE_DIR}/Framework/Tools/Dependencies)
+
+# Some non-standard CMake modules
+SET(CMAKE_MODULE_PATH ${PolycodeDependencies_SOURCE_DIR}/../CMake)
+
+# Download and build all dependencies on Windows and Mac, for Linux recommend using prebuilt packages
+IF(APPLE OR WIN32)
+    SET(common_deps ON)
+ELSE()
+    SET(common_deps OFF)
+ENDIF()
+
+# Options for what components should be downloaded and built
+
+# glext.h is sometimes missing
+FIND_PATH(GLEXT_INCLUDE_DIR GL/glext.h)
+IF(GLEXT_INCLUDE_DIR)
+    SET(internal_GLEXT OFF)
+ELSE(GLEXT_INCLUDE_DIR)
+    SET(internal_GLEXT ${common_deps})
+ENDIF(GLEXT_INCLUDE_DIR)
+
+IF(MSVC)
+    # wglext.h is needed on windows
+    FIND_PATH(WGLEXT_INCLUDE_DIR GL/wglext.h)
+    IF(WGLEXT_INCLUDE_DIR)
+        SET(internal_WGLEXT OFF)
+    ELSE(GLEXT_INCLUDE_DIR)
+        SET(internal_WGLEXT ${common_deps})
+    ENDIF(WGLEXT_INCLUDE_DIR)
+ELSE(MSVC)
+    SET(internal_WGLEXT OFF)
+ENDIF(MSVC)
+
+FIND_PACKAGE(PhysFS)
+IF(PHYSFS_FOUND)
+    SET(internal_PHYSFS OFF)
+ELSE(PHYSFS_FOUND)
+    SET(internal_PHYSFS ${common_deps})
+ENDIF(PHYSFS_FOUND)
+
+FIND_PACKAGE(OpenAL)
+IF(OPENAL_FOUND)
+    SET(internal_OPENAL OFF)
+ELSE(OPENAL_FOUND)
+    SET(internal_OPENAL ${common_deps})
+ENDIF(OPENAL_FOUND)
+
+FIND_PACKAGE(Freetype)
+IF(FREETYPE_FOUND)
+    SET(internal_FREETYPE OFF)
+ELSE(FREETYPE_FOUND)
+    SET(internal_FREETYPE ${common_deps})
+ENDIF(FREETYPE_FOUND)
+
+FIND_PACKAGE(PNG)
+IF(PNG_FOUND)
+    SET(internal_PNG OFF)
+ELSE(PNG_FOUND)
+    SET(internal_PNG ${common_deps})
+ENDIF(PNG_FOUND)
+
+FIND_PACKAGE(VorbisFile)
+IF(VORBISFILE_FOUND)
+    SET(internal_VORBISFILE OFF)
+ELSE(VORBISFILE_FOUND)
+    SET(internal_VORBISFILE ${common_deps})
+ENDIF(VORBISFILE_FOUND)
+
+FIND_PACKAGE(Lua51)
+IF(LUA51_FOUND)
+    SET(internal_LUA OFF)
+ELSE(LUA51_FOUND)
+    SET(internal_LUA ${common_deps})
+ENDIF(LUA51_FOUND)
+
+FIND_PACKAGE(Box2D)
+IF(BOX2D_FOUND)
+    SET(internal_BOX2D OFF)
+ELSE(BOX2D_FOUND)
+    SET(internal_BOX2D ON)
+ENDIF(BOX2D_FOUND)
+
+FIND_PACKAGE(Bullet)
+IF(BULLET_FOUND)
+    SET(internal_BULLET OFF)
+ELSE(BULLET_FOUND)
+    SET(internal_BULLET ON)
+ENDIF(BULLET_FOUND)
+
+FIND_PACKAGE(Assimp)
+IF(ASSIMP_FOUND)
+    SET(internal_ASSIMP OFF)
+ELSE(ASSIMP_FOUND)
+    SET(internal_ASSIMP ON)
+ENDIF(ASSIMP_FOUND)
+
+OPTION(POLYCODE_DEPS_GLEXT "Download GL/glext.h header" ${internal_GLEXT})
+OPTION(POLYCODE_DEPS_WGLEXT "Download GL/wglext.h header" ${internal_WGLEXT})
+
+OPTION(POLYCODE_DEPS_PHYSFS "Download and build the PhysFS package" ${internal_PHYSFS})
+OPTION(POLYCODE_DEPS_OPENAL "Download and build the OpenAL package" ${internal_OPENAL})
+OPTION(POLYCODE_DEPS_FREETYPE "Download and build the Freetype2 package" ${internal_FREETYPE})
+OPTION(POLYCODE_DEPS_PNG "Download and build the PNG package" ${internal_PNG})
+OPTION(POLYCODE_DEPS_OGGVORBIS "Download and build the Ogg Vorbis packages" ${internal_VORBISFILE})
+
+OPTION(POLYCODE_DEPS_LUA51 "Download and build the Lua51 package" ${internal_LUA})
+OPTION(POLYCODE_DEPS_BOX2D "Download and build the Box2D package" ${internal_BOX2D})
+OPTION(POLYCODE_DEPS_BULLET "Download and build the Bullet package" ${internal_BULLET})
+OPTION(POLYCODE_DEPS_ASSIMP "Download and build the Assimp package" ${internal_ASSIMP})
+
+IF(POLYCODE_DEPS_PNG)
+    INCLUDE(ExternalPNG)
+ENDIF(POLYCODE_DEPS_PNG)
+
+IF(POLYCODE_DEPS_PHYSFS)
+    INCLUDE(ExternalPhysFS)
+ENDIF(POLYCODE_DEPS_PHYSFS)
+
+IF(POLYCODE_DEPS_OPENAL)
+    INCLUDE(ExternalOpenAL)
+ENDIF(POLYCODE_DEPS_OPENAL)
+
+IF(POLYCODE_DEPS_FREETYPE)
+    INCLUDE(ExternalFreetype)
+ENDIF(POLYCODE_DEPS_FREETYPE)
+
+IF(POLYCODE_DEPS_OGGVORBIS)
+    INCLUDE(ExternalOggVorbis)
+ENDIF(POLYCODE_DEPS_OGGVORBIS)
+
+IF(POLYCODE_DEPS_LUA51)
+    INCLUDE(ExternalLua51)
+ENDIF(POLYCODE_DEPS_LUA51)
+
+IF(POLYCODE_DEPS_BOX2D)
+    INCLUDE(ExternalBox2D)
+ENDIF(POLYCODE_DEPS_BOX2D)
+
+IF(POLYCODE_DEPS_BULLET)
+    INCLUDE(ExternalBullet)
+ENDIF(POLYCODE_DEPS_BULLET)
+
+IF(POLYCODE_DEPS_ASSIMP)
+    INCLUDE(ExternalAssimp)
+ENDIF(POLYCODE_DEPS_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_DEPS_GLEXT)
+    INCLUDE(ExternalGLExt)
+ENDIF(POLYCODE_DEPS_GLEXT)
+
+IF(POLYCODE_DEPS_WGLEXT)
+    INCLUDE(ExternalWGLExt)
+ENDIF(POLYCODE_DEPS_WGLEXT)

+ 2 - 2
Examples/C++/2DShapes/CMakeLists.txt

@@ -2,10 +2,10 @@ INCLUDE_DIRECTORIES(.)
 
 IF(POLYCODE_BUILD_SHARED)
     ADD_EXECUTABLE(2DShapes ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-    TARGET_LINK_LIBRARIES(2DShapes PolyCore)
+    TARGET_LINK_LIBRARIES(2DShapes Polycore)
 ENDIF(POLYCODE_BUILD_SHARED)
 
 IF(POLYCODE_BUILD_STATIC)
     ADD_EXECUTABLE(2DShapes_static ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(2DShapes_static PolyCore_static)
+	TARGET_LINK_LIBRARIES(2DShapes_static Polycore_static)
 ENDIF(POLYCODE_BUILD_STATIC)

+ 2 - 2
Examples/C++/2DTransforms/CMakeLists.txt

@@ -2,11 +2,11 @@ INCLUDE_DIRECTORIES(.)
 
 IF(POLYCODE_BUILD_SHARED)
 	ADD_EXECUTABLE(2DTransforms ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(2DTransforms PolyCore)
+	TARGET_LINK_LIBRARIES(2DTransforms Polycore)
 ENDIF(POLYCODE_BUILD_SHARED)
 
 IF(POLYCODE_BUILD_STATIC)
 	ADD_EXECUTABLE(2DTransforms_static ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(2DTransforms_static PolyCore_static)
+	TARGET_LINK_LIBRARIES(2DTransforms_static Polycore_static)
 ENDIF(POLYCODE_BUILD_STATIC)
 

+ 2 - 2
Examples/C++/3DAudio/CMakeLists.txt

@@ -2,11 +2,11 @@ INCLUDE_DIRECTORIES(.)
 
 IF(POLYCODE_BUILD_SHARED)
 	ADD_EXECUTABLE(3DAudio ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(3DAudio PolyCore)
+	TARGET_LINK_LIBRARIES(3DAudio Polycore)
 ENDIF(POLYCODE_BUILD_SHARED)
 
 IF(POLYCODE_BUILD_STATIC)
 	ADD_EXECUTABLE(3DAudio_static ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(3DAudio_static PolyCore_static)
+	TARGET_LINK_LIBRARIES(3DAudio_static Polycore_static)
 ENDIF(POLYCODE_BUILD_STATIC)
 

+ 2 - 2
Examples/C++/AdvancedLighting/CMakeLists.txt

@@ -2,11 +2,11 @@ INCLUDE_DIRECTORIES(.)
 
 IF(POLYCODE_BUILD_SHARED)
 	ADD_EXECUTABLE(AdvancedLighting ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(AdvancedLighting PolyCore)
+	TARGET_LINK_LIBRARIES(AdvancedLighting Polycore)
 ENDIF(POLYCODE_BUILD_SHARED)
 
 IF(POLYCODE_BUILD_STATIC)
 	ADD_EXECUTABLE(AdvancedLighting_static ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(AdvancedLighting_static PolyCore_static)
+	TARGET_LINK_LIBRARIES(AdvancedLighting_static Polycore_static)
 ENDIF(POLYCODE_BUILD_STATIC)
 

+ 2 - 2
Examples/C++/BasicImage/CMakeLists.txt

@@ -2,11 +2,11 @@ INCLUDE_DIRECTORIES(.)
 
 IF(POLYCODE_BUILD_SHARED)
 	ADD_EXECUTABLE(BasicImage ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(BasicImage PolyCore)
+	TARGET_LINK_LIBRARIES(BasicImage Polycore)
 ENDIF(POLYCODE_BUILD_SHARED)
 
 IF(POLYCODE_BUILD_STATIC)
 	ADD_EXECUTABLE(BasicImage_static ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(BasicImage_static PolyCore_static)
+	TARGET_LINK_LIBRARIES(BasicImage_static Polycore_static)
 ENDIF(POLYCODE_BUILD_STATIC)
 

+ 2 - 2
Examples/C++/BasicLighting/CMakeLists.txt

@@ -2,10 +2,10 @@ INCLUDE_DIRECTORIES(.)
 
 IF(POLYCODE_BUILD_SHARED)
 	ADD_EXECUTABLE(BasicLighting ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(BasicLighting PolyCore)
+	TARGET_LINK_LIBRARIES(BasicLighting Polycore)
 ENDIF(POLYCODE_BUILD_SHARED)
 
 IF(POLYCODE_BUILD_STATIC)
 	ADD_EXECUTABLE(BasicLighting_static ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(BasicLighting_static PolyCore_static)
+	TARGET_LINK_LIBRARIES(BasicLighting_static Polycore_static)
 ENDIF(POLYCODE_BUILD_STATIC)

+ 2 - 2
Examples/C++/BasicText/CMakeLists.txt

@@ -2,10 +2,10 @@ INCLUDE_DIRECTORIES(.)
 
 IF(POLYCODE_BUILD_SHARED)
 	ADD_EXECUTABLE(BasicText ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(BasicText PolyCore)
+	TARGET_LINK_LIBRARIES(BasicText Polycore)
 ENDIF(POLYCODE_BUILD_SHARED)
 
 IF(POLYCODE_BUILD_STATIC)
 	ADD_EXECUTABLE(BasicText_static ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(BasicText_static PolyCore_static)
+	TARGET_LINK_LIBRARIES(BasicText_static Polycore_static)
 ENDIF(POLYCODE_BUILD_STATIC)

+ 2 - 2
Examples/C++/ScreenEntities/CMakeLists.txt

@@ -2,10 +2,10 @@ INCLUDE_DIRECTORIES(.)
 
 IF(POLYCODE_BUILD_SHARED)
 	ADD_EXECUTABLE(ScreenEntities ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(ScreenEntities PolyCore)
+	TARGET_LINK_LIBRARIES(ScreenEntities Polycore)
 ENDIF(POLYCODE_BUILD_SHARED)
 
 IF(POLYCODE_BUILD_STATIC)
 	ADD_EXECUTABLE(ScreenEntities_static ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(ScreenEntities_static PolyCore_static)
+	TARGET_LINK_LIBRARIES(ScreenEntities_static Polycore_static)
 ENDIF(POLYCODE_BUILD_STATIC)

+ 2 - 2
Examples/C++/ScreenSprites/CMakeLists.txt

@@ -2,10 +2,10 @@ INCLUDE_DIRECTORIES(.)
 
 IF(POLYCODE_BUILD_SHARED)
 	ADD_EXECUTABLE(ScreenSprites ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(ScreenSprites PolyCore)
+	TARGET_LINK_LIBRARIES(ScreenSprites Polycore)
 ENDIF(POLYCODE_BUILD_SHARED)
 
 IF(POLYCODE_BUILD_STATIC)
 	ADD_EXECUTABLE(ScreenSprites_static ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(ScreenSprites_static PolyCore_static)
+	TARGET_LINK_LIBRARIES(ScreenSprites_static Polycore_static)
 ENDIF(POLYCODE_BUILD_STATIC)

+ 2 - 2
Examples/C++/SkeletalAnimation/CMakeLists.txt

@@ -2,10 +2,10 @@ INCLUDE_DIRECTORIES(.)
 
 IF(POLYCODE_BUILD_SHARED)
 	ADD_EXECUTABLE(SkeletalAnimation ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(SkeletalAnimation PolyCore)
+	TARGET_LINK_LIBRARIES(SkeletalAnimation Polycore)
 ENDIF(POLYCODE_BUILD_SHARED)
 
 IF(POLYCODE_BUILD_STATIC)
 	ADD_EXECUTABLE(SkeletalAnimation_static ../main.cpp HelloPolycodeApp.cpp HelloPolycodeApp.h)
-	TARGET_LINK_LIBRARIES(SkeletalAnimation_static PolyCore_static)
+	TARGET_LINK_LIBRARIES(SkeletalAnimation_static Polycore_static)
 ENDIF(POLYCODE_BUILD_STATIC)

+ 9 - 5
Modules/Contents/2DPhysics/CMakeLists.txt

@@ -1,3 +1,5 @@
+INCLUDE(PolycodeIncludes)
+
 SET(polycode2DPhysics_SRCS
     Source/PolyPhysicsScreen.cpp
     Source/PolyPhysicsScreenEntity.cpp
@@ -14,28 +16,30 @@ INCLUDE_DIRECTORIES(
     Include
 )
 
+SET(CMAKE_DEBUG_POSTFIX "_d")
+
 IF(POLYCODE_BUILD_SHARED)
     LINK_LIBRARIES(${BOX2D_LIBRARIES})
     ADD_LIBRARY(Polycode2DPhysics SHARED ${polycode2DPhysics_SRCS} ${polycode2DPhysics_HDRS})
-    TARGET_LINK_LIBRARIES(Polycode2DPhysics PolyCore)
+    TARGET_LINK_LIBRARIES(Polycode2DPhysics Polycore)
 ENDIF(POLYCODE_BUILD_SHARED)
 
 IF(POLYCODE_BUILD_STATIC)
     ADD_LIBRARY(Polycode2DPhysics_static ${polycode2DPhysics_SRCS} ${polycode2DPhysics_HDRS})
-    TARGET_LINK_LIBRARIES(Polycode2DPhysics_static PolyCore_static)
+    TARGET_LINK_LIBRARIES(Polycode2DPhysics_static Polycore_static)
 ENDIF(POLYCODE_BUILD_STATIC)
 
 IF(POLYCODE_INSTALL_FRAMEWORK)
     
     # install headers
-    INSTALL(FILES ${polycode2DPhysics_HDRS} DESTINATION Framework/Modules/Include)
+    INSTALL(FILES ${polycode2DPhysics_HDRS} DESTINATION ${POLYCODE_RELEASE_DIR}/Framework/Modules/include)
 
     # install libraries
     IF(POLYCODE_BUILD_SHARED)
-        INSTALL(TARGETS Polycode2DPhysics DESTINATION Framework/Modules/Lib/${CMAKE_BUILD_TYPE})
+        INSTALL(TARGETS Polycode2DPhysics DESTINATION ${POLYCODE_RELEASE_DIR}/Framework/Modules/lib)
     ENDIF(POLYCODE_BUILD_SHARED)
     IF(POLYCODE_BUILD_STATIC)
-        INSTALL(TARGETS Polycode2DPhysics_static DESTINATION Framework/Modules/Lib/${CMAKE_BUILD_TYPE})
+        INSTALL(TARGETS Polycode2DPhysics_static DESTINATION ${POLYCODE_RELEASE_DIR}/Framework/Modules/lib)
     ENDIF(POLYCODE_BUILD_STATIC)
     
 ENDIF(POLYCODE_INSTALL_FRAMEWORK)

+ 15 - 8
Modules/Contents/3DPhysics/CMakeLists.txt

@@ -1,3 +1,5 @@
+INCLUDE(PolycodeIncludes)
+
 SET(polycode3DPhysics_SRCS
     Source/PolyPhysicsSceneEntity.cpp
     Source/PolyPhysicsScene.cpp
@@ -18,26 +20,31 @@ INCLUDE_DIRECTORIES(
     Include
 )
 
+SET(CMAKE_DEBUG_POSTFIX "_d")
+
 IF(POLYCODE_BUILD_SHARED)
-	LINK_LIBRARIES(${BULLET_LIBRARIES})
-	ADD_LIBRARY(Polycode3DPhysics SHARED ${polycode3DPhysics_SRCS} ${polycode3DPhysics_HDRS})
-	TARGET_LINK_LIBRARIES(Polycode3DPhysics PolyCore)
+    LINK_LIBRARIES(${BULLET_LIBRARIES})
+    ADD_LIBRARY(Polycode3DPhysics SHARED ${polycode3DPhysics_SRCS} ${polycode3DPhysics_HDRS})
+    TARGET_LINK_LIBRARIES(Polycode3DPhysics Polycore)
 ENDIF(POLYCODE_BUILD_SHARED)
 
 IF(POLYCODE_BUILD_STATIC)
-	ADD_LIBRARY(Polycode3DPhysics_static ${polycode3DPhysics_SRCS} ${polycode3DPhysics_HDRS})
-	TARGET_LINK_LIBRARIES(Polycode3DPhysics_static PolyCore_static)
+    ADD_LIBRARY(Polycode3DPhysics_static ${polycode3DPhysics_SRCS} ${polycode3DPhysics_HDRS})
+    TARGET_LINK_LIBRARIES(Polycode3DPhysics_static Polycore_static)
 ENDIF(POLYCODE_BUILD_STATIC)
 
 IF(POLYCODE_INSTALL_FRAMEWORK)
     # install headers
-    INSTALL(FILES ${polycode3DPhysics_HDRS} DESTINATION Framework/Modules/Include)
+    INSTALL(FILES ${polycode3DPhysics_HDRS} 
+        DESTINATION ${POLYCODE_RELEASE_DIR}/Framework/Modules/include)
 
     # install libraries
     IF(POLYCODE_BUILD_SHARED)
-        INSTALL(TARGETS Polycode3DPhysics DESTINATION Framework/Modules/Lib/${CMAKE_BUILD_TYPE})
+        INSTALL(TARGETS Polycode3DPhysics 
+            DESTINATION ${POLYCODE_RELEASE_DIR}/Framework/Modules/lib)
     ENDIF()
     IF(POLYCODE_BUILD_STATIC)
-        INSTALL(TARGETS Polycode3DPhysics_static DESTINATION Framework/Modules/Lib/${CMAKE_BUILD_TYPE})
+        INSTALL(TARGETS Polycode3DPhysics_static 
+            DESTINATION ${POLYCODE_RELEASE_DIR}/Framework/Modules/lib)
     ENDIF()
 ENDIF(POLYCODE_INSTALL_FRAMEWORK)

+ 4 - 2
Modules/Contents/CMakeLists.txt

@@ -1,9 +1,11 @@
-INCLUDE_DIRECTORIES(../Dependencies/Include)
-
+FIND_PACKAGE(Box2D)
 IF(BOX2D_FOUND)
     ADD_SUBDIRECTORY(2DPhysics)
 ENDIF(BOX2D_FOUND)
 
+# Note that FindBullet requires CMake >= 2.8.4 to find Bullet >= 2.77 
+# due to Bullet's header install directory location changing.
+FIND_PACKAGE(Bullet)
 IF(BULLET_FOUND)
     ADD_SUBDIRECTORY(3DPhysics)
 ENDIF(BULLET_FOUND)

+ 25 - 7
Player/Contents/CMakeLists.txt

@@ -1,16 +1,22 @@
+INCLUDE(PolycodeIncludes)
+    
 INCLUDE_DIRECTORIES(
     ${LUA_INCLUDE_DIR}
-    ${PolyCode_SOURCE_DIR}/Bindings/Contents/LUA/Include
+    ${Polycode_SOURCE_DIR}/Bindings/Contents/LUA/Include
 )
 
+SET(CMAKE_DEBUG_POSTFIX "_d")
+
 IF(MSVC)
     SET(polycodeplayer_SRCS
+        ../Build/MSVC/PolycodePlayer/player_icon.ico
         ../Build/MSVC/PolycodePlayer/main.cpp
         ../Build/MSVC/PolycodePlayer/PolycodePlayerView.cpp
         Source/PolycodePlayer.cpp
         Source/PolycodeWindowsPlayer.cpp
     )
-    SET(polycodeplayer_HDRS 
+    SET(polycodeplayer_HDRS
+        ../Build/MSVC/PolycodePlayer/resource.h
         ../Build/MSVC/PolycodePlayer/PolycodePlayerView.h
         Include/PolycodePlayer.h 
         Include/PolycodeWindowsPlayer.h
@@ -20,12 +26,12 @@ IF(MSVC)
     
     IF(POLYCODE_BUILD_SHARED)
         ADD_EXECUTABLE(PolycodePlayer WIN32 ${polycodeplayer_SRCS} ${polycodeplayer_HDRS})
-        TARGET_LINK_LIBRARIES(PolycodePlayer PolyCore PolycodeLua ${LUA_LIBRARY})
+        TARGET_LINK_LIBRARIES(PolycodePlayer Polycore PolycodeLua ${LUA_LIBRARY})
     ENDIF(POLYCODE_BUILD_SHARED)
 
     IF(POLYCODE_BUILD_STATIC)
         ADD_EXECUTABLE(PolycodePlayer_static WIN32 ${polycodeplayer_SRCS} ${polycodeplayer_HDRS})
-        TARGET_LINK_LIBRARIES(PolycodePlayer_static PolyCore_static PolycodeLua_static ${LUA_LIBRARY})
+        TARGET_LINK_LIBRARIES(PolycodePlayer_static Polycore_static PolycodeLua_static ${LUA_LIBRARY})
     ENDIF(POLYCODE_BUILD_STATIC)
     
 ELSEIF(APPLE)
@@ -34,7 +40,7 @@ ELSEIF(APPLE)
         Source/PolycodePlayer.mm
         Source/PolycodeCocoaPlayer.mm
     )
-    SEY(polycodeplayer_HDRS 
+    SET(polycodeplayer_HDRS 
         Include/PolycodePlayer.h
         Include/PolycodeCocoaPlayer.h
     )
@@ -43,13 +49,25 @@ ELSEIF(APPLE)
     
     IF(POLYCODE_BUILD_SHARED)
         ADD_EXECUTABLE(PolycodePlayer MACOSX_BUNDLE ${polycodeplayer_SRCS} ${polycodeplayer_HDRS})
-        TARGET_LINK_LIBRARIES(PolycodePlayer PolyCore PolycodeLua ${LUA_LIBRARY})
+        TARGET_LINK_LIBRARIES(PolycodePlayer Polycore PolycodeLua ${LUA_LIBRARY})
     ENDIF(POLYCODE_BUILD_SHARED)
 
     IF(POLYCODE_BUILD_STATIC)
         ADD_EXECUTABLE(PolycodePlayer_static MACOSX_BUNDLE ${polycodeplayer_SRCS} ${polycodeplayer_HDRS})
-        TARGET_LINK_LIBRARIES(PolycodePlayer_static PolyCore_static PolycodeLua_static ${LUA_LIBRARY})
+        TARGET_LINK_LIBRARIES(PolycodePlayer_static Polycore_static PolycodeLua ${LUA_LIBRARY})
     ENDIF(POLYCODE_BUILD_STATIC)
 
 ENDIF(MSVC)
 
+IF(POLYCODE_INSTALL_PLAYER)
+
+    IF(POLYCODE_BUILD_SHARED)
+        # install player
+        INSTALL(TARGETS PolycodePlayer 
+            DESTINATION ${POLYCODE_RELEASE_DIR}/Player)
+    ENDIF()
+    IF(POLYCODE_BUILD_STATIC)
+        INSTALL(TARGETS PolycodePlayer_static 
+            DESTINATION ${POLYCODE_RELEASE_DIR}/Player)
+    ENDIF()
+ENDIF(POLYCODE_INSTALL_PLAYER)

+ 9 - 3
Tools/Contents/polybuild/CMakeLists.txt

@@ -1,4 +1,10 @@
-INCLUDE_DIRECTORIES(${PolyCode_SOURCE_DIR}/Tools/Dependencies/unzip11 Include)
+INCLUDE(PolycodeIncludes)
+
+FIND_PACKAGE(ZLIB)
+INCLUDE_DIRECTORIES(
+    ${ZLIB_INCLUDE_DIR}
+    ${Polycode_SOURCE_DIR}/Tools/Dependencies/unzip11 
+    Include)
 
 SET(minizip_SRCS 
     ../../Dependencies/unzip11/ioapi.c
@@ -8,11 +14,11 @@ SET(minizip_SRCS
 )
 
 IF(POLYCODE_BUILD_SHARED)
-    LINK_LIBRARIES(PolyCore)
+    LINK_LIBRARIES(Polycore)
     ADD_EXECUTABLE(polybuild ${minizip_SRCS} Source/polybuild.cpp Include/polybuild.h)
 ENDIF(POLYCODE_BUILD_SHARED)
 
 IF(POLYCODE_BUILD_STATIC)
-    LINK_LIBRARIES(PolyCore_static)
+    LINK_LIBRARIES(Polycore_static)
     ADD_EXECUTABLE(polybuild_static ${minizip_SRCS} Source/polybuild.cpp Include/polybuild.h)
 ENDIF(POLYCODE_BUILD_STATIC)

+ 16 - 8
Tools/Contents/polybuild/Source/polybuild.cpp

@@ -127,10 +127,10 @@ void addFolderToZip(zipFile z, String folderPath, String parentFolder, bool sile
 }
 
 #ifdef _WINDOWS
-void wtoc(char* Dest, TCHAR* Source, int SourceSize)
-{
-for(int i = 0; i < SourceSize; ++i)
-Dest[i] = (char)Source[i];
+void wtoc(char* Dest, TCHAR* Source, int SourceSize)
+{
+for(int i = 0; i < SourceSize; ++i)
+Dest[i] = (char)Source[i];
 }
 #endif
 
@@ -147,7 +147,7 @@ int main(int argc, char **argv) {
 		installPath = installPath + cpts[i];
 		installPath += String("/");
 	}
-#else
+#elseif defined (_WINDOWS)
 	char path[2049];
 	TCHAR tpath[2049];
 	GetModuleFileName(NULL, (LPWSTR)tpath, 2048);
@@ -160,7 +160,14 @@ int main(int argc, char **argv) {
 		installPath = installPath + cpts[i];
 		installPath += String("\\");
 	}
-
+#else
+	String basePath = PHYSFS_getBaseDir();
+	vector<String> cpts = basePath.split("/");
+	String installPath = "";
+	for(int i=0; i < cpts.size() - 2; i++) {
+		installPath = installPath + cpts[i];
+		installPath += String("/");
+	}
 #endif
 
 	printf("Polycode build tool v0.1.1\n");
@@ -191,11 +198,12 @@ int main(int argc, char **argv) {
 	char dirPath[4099];
 #if defined(__APPLE__) && defined(__MACH__)
 	_getcwd(dirPath, sizeof(dirPath));
-#else	
+#elseif defined (_WINDOWS)
 	TCHAR tdirpath[4099];
 	GetCurrentDirectory(4098, (LPWSTR)tdirpath);
 	wtoc(dirPath, tdirpath, 4098);
-
+#else
+	getcwd(dirPath, sizeof(dirPath));
 #endif
 	String currentPath = String(dirPath);
 

+ 12 - 5
Tools/Contents/polyimport/CMakeLists.txt

@@ -1,24 +1,31 @@
-INCLUDE_DIRECTORIES(${PolyCode_SOURCE_DIR}/Core/Contents/Include Include ${ASSIMP_INCLUDE_DIR})
+INCLUDE(PolycodeIncludes)
+
+FIND_PACKAGE(Assimp REQUIRED)
+INCLUDE_DIRECTORIES(
+    ${ASSIMP_INCLUDE_DIR} 
+    Include)
+
+SET(CMAKE_DEBUG_POSTFIX "_d")
 
 IF(POLYCODE_BUILD_SHARED)
     ADD_EXECUTABLE(polyimport Source/polyimport.cpp Include/polyimport.h)
-    TARGET_LINK_LIBRARIES(polyimport PolyCore ${ASSIMP_LIBRARY_RELEASE})
+    TARGET_LINK_LIBRARIES(polyimport Polycore ${ASSIMP_LIBRARIES})
 ENDIF(POLYCODE_BUILD_SHARED)
 
 IF(POLYCODE_BUILD_STATIC)
     ADD_EXECUTABLE(polyimport_static Source/polyimport.cpp Include/polyimport.h)
-    TARGET_LINK_LIBRARIES(polyimport_static PolyCore_static ${PHYSFS_LIBRARY} ${ASSIMP_LIBRARY_RELEASE})
+    TARGET_LINK_LIBRARIES(polyimport_static Polycore_static ${PHYSFS_LIBRARY} ${ASSIMP_LIBRARIES}})
 ENDIF(POLYCODE_BUILD_STATIC)
 
 IF(POLYCODE_INSTALL_FRAMEWORK)
 
     # install exes
     IF(POLYCODE_BUILD_SHARED)
-        INSTALL(TARGETS polyimport DESTINATION Framework/Tools)
+        INSTALL(TARGETS polyimport DESTINATION ${POLYCODE_RELEASE_DIR}/Framework/Tools)
     ENDIF(POLYCODE_BUILD_SHARED)
     
     IF(POLYCODE_BUILD_STATIC)
-        INSTALL(TARGETS polyimport_static DESTINATION Framework/Tools)
+        INSTALL(TARGETS polyimport_static DESTINATION ${POLYCODE_RELEASE_DIR}/Framework/Tools)
     ENDIF(POLYCODE_BUILD_STATIC)
 
 ENDIF(POLYCODE_INSTALL_FRAMEWORK)