set(SRCDIR "${CMAKE_CURRENT_SOURCE_DIR}/Source")
set(DEPDIR "${CMAKE_CURRENT_SOURCE_DIR}/Dependencies")
-if(NOT CMAKE_BUILD_TYPE)\r
- set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING\r
- "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel"\r
- FORCE)\r
+if(NOT CMAKE_BUILD_TYPE)
+ set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
+ "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel"
+ FORCE)
endif(NOT CMAKE_BUILD_TYPE)
if(NOT LUGARU_INSTALL_PREFIX)
if(WIN32)
- set(LUGARU_INSTALL_PREFIX C:\Lugaru CACHE PATH
+ set(LUGARU_INSTALL_PREFIX "C:/Lugaru" CACHE PATH
"LUGARU_INSTALL_PREFIX: Install path prefix, prepended onto install directories."
FORCE)
else(WIN32)
- set(LUGARU_INSTALL_PREFIX /usr/local/lugaru CACHE PATH
+ set(LUGARU_INSTALL_PREFIX "/usr/local/lugaru" CACHE PATH
"CMAKE_INSTALL_PREFIX: Install path prefix, prepended onto install directories."
FORCE)
endif(WIN32)
set(CMAKE_INSTALL_PREFIX "${LUGARU_INSTALL_PREFIX}" CACHE INTERNAL "Prefix prepended to install directories" FORCE)
-if(WIN32)
+if(MINGW)
set(OPENGL_gl_LIBRARY "-lopengl32" CACHE STRING "OpenGL library for Win32" FORCE)
set(OPENGL_glu_LIBRARY "-lglu32" CACHE STRING "GLU library for Win32" FORCE)
-endif(WIN32)
-
-
+endif(MINGW)
+
+if(APPLE)
+ set(CMAKE_OSX_ARCHITECTURES "i386;x86_64;ppc" CACHE STRING "Build architectures for OSX")
+ set(CMAKE_OSX_DEPLOYMENT_TARGET "10.5" CACHE STRING
+ "Minimum OS X version to target for deployment (at runtime); newer APIs weak linked. Set to empty string for default value")
+ set(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.5.sdk" CACHE PATH
+ "The product will be built against the headers and libraries located inside the indicated SDK.")
+endif(APPLE)
+
+if(APPLE)
+ # Save our sanity; Set all available libraries to internal by default
+ set(LUGARU_FORCE_INTERNAL_SDL True)
+ set(LUGARU_FORCE_INTERNAL_GLU True)
+ set(LUGARU_FORCE_INTERNAL_JPEG True)
+ set(LUGARU_FORCE_INTERNAL_PNG True)
+ set(LUGARU_FORCE_INTERNAL_VORBIS True)
+ set(LUGARU_FORCE_INTERNAL_ZLIB True)
+endif(APPLE)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
set(LUGARU_SRCS
${SRCDIR}/Frustum.cpp
+ ${SRCDIR}/Account.cpp
+ ${SRCDIR}/Game.cpp
${SRCDIR}/GameDraw.cpp
${SRCDIR}/GameInitDispose.cpp
${SRCDIR}/GameTick.cpp
${SRCDIR}/Models.cpp
${SRCDIR}/Objects.cpp
${SRCDIR}/pack.c
- ${SRCDIR}/pack_private.c
${SRCDIR}/Person.cpp
${SRCDIR}/private.c
${SRCDIR}/Quaternions.cpp
- ${SRCDIR}/Random.c
${SRCDIR}/Skeleton.cpp
${SRCDIR}/Skybox.cpp
- ${SRCDIR}/Sprites.cpp
+ ${SRCDIR}/Sprite.cpp
${SRCDIR}/Terrain.cpp
${SRCDIR}/Text.cpp
${SRCDIR}/TGALoader.cpp
${SRCDIR}/unpack.c
- ${SRCDIR}/unpack_private.c
${SRCDIR}/Weapons.cpp
${SRCDIR}/OpenGL_Windows.cpp
${SRCDIR}/openal_wrapper.cpp
- ${SRCDIR}/WinInput.cpp
- ${SRCDIR}/MacCompatibility.cpp
+ ${SRCDIR}/Input.cpp
+ ${SRCDIR}/Settings.cpp
+ ${SRCDIR}/Stereo.cpp
+ ${SRCDIR}/Animation.cpp
+ ${SRCDIR}/Sounds.cpp
+ ${SRCDIR}/Awards.cpp
)
set(LUGARU_H
- ${SRCDIR}/Constants.h
${SRCDIR}/Frustum.h
+ ${SRCDIR}/Account.h
${SRCDIR}/Game.h
${SRCDIR}/Lights.h
- ${SRCDIR}/LinkedList.h
- ${SRCDIR}/MacCompatibility.h
${SRCDIR}/Models.h
${SRCDIR}/Objects.h
${SRCDIR}/Person.h
${SRCDIR}/PhysicsMath.h
- ${SRCDIR}/Pointer.h
${SRCDIR}/Quaternions.h
${SRCDIR}/Random.h
${SRCDIR}/Skeleton.h
${SRCDIR}/Skybox.h
- ${SRCDIR}/Sprites.h
+ ${SRCDIR}/Sprite.h
${SRCDIR}/TGALoader.h
${SRCDIR}/Terrain.h
${SRCDIR}/Text.h
${SRCDIR}/Weapons.h
- ${SRCDIR}/WinInput.h
+ ${SRCDIR}/Input.h
${SRCDIR}/alstubs.h
${SRCDIR}/binio.h
- ${SRCDIR}/fmod.h
- ${SRCDIR}/fmod_errors.h
- ${SRCDIR}/fmod_header.h
- ${SRCDIR}/fmoddyn.h
+ ${SRCDIR}/openal_wrapper.h
${SRCDIR}/gamegl.h
${SRCDIR}/glstubs.h
- ${SRCDIR}/md5.h
- ${SRCDIR}/mmgr.h
- ${SRCDIR}/nommgr.h
- ${SRCDIR}/pack_private.h
${SRCDIR}/private.h
- ${SRCDIR}/unpack_private.h
+ ${SRCDIR}/Settings.h
+ ${SRCDIR}/Stereo.h
+ ${SRCDIR}/Animation.h
+ ${SRCDIR}/Animation.def
+ ${SRCDIR}/Sounds.h
+ ${SRCDIR}/Sounds.def
)
+if(UNIX)
+ set(LUGARU_SRCS
+ ${LUGARU_SRCS}
+ ${SRCDIR}/MacCompatibility.cpp
+ )
+ set(LUGARU_H
+ ${LUGARU_H}
+ ${SRCDIR}/MacCompatibility.h
+ )
+endif(UNIX)
+
+if(MSVC) # MSVC non-C99 support biting us hard
+ set(LUGARU_H
+ ${LUGARU_H}
+ ${DEPDIR}/msinttypes/stdint.h
+ ${DEPDIR}/msinttypes/inttypes.h
+ )
+endif(MSVC)
+
if(WIN32)
if(CMAKE_CROSSCOMPILING)
ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lugaru_resource.obj
COMMAND i686-pc-mingw32-windres
- -I${CMAKE_CURRENT_SOURCE_DIR}/res
+ -I${SRCDIR}/win-res
-o ${CMAKE_CURRENT_BINARY_DIR}/lugaru_resource.obj
- -i${CMAKE_CURRENT_SOURCE_DIR}/res/lugaru.rc
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/res/lugaru.rc
+ -i${SRCDIR}/win-res/Lugaru.rc
+ DEPENDS ${SRCDIR}/win-res/Lugaru.rc
)
endif(CMAKE_CROSSCOMPILING)
if(NOT CMAKE_CROSSCOMPILING)
+ if(MSVC)
+ ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lugaru_resource.obj
+ COMMAND rc
+ -I${SRCDIR}/win-res
+ -fo${CMAKE_CURRENT_BINARY_DIR}/lugaru_resource.obj
+ ${SRCDIR}/win-res/Lugaru.rc
+ DEPENDS ${SRCDIR}/win-res/Lugaru.rc
+ )
+ endif(MSVC)
+ if(MINGW)
ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lugaru_resource.obj
COMMAND windres
- -I${CMAKE_CURRENT_SOURCE_DIR}/res
+ -I${SRCDIR}/win-res
-o ${CMAKE_CURRENT_BINARY_DIR}/lugaru_resource.obj
- -i${CMAKE_CURRENT_SOURCE_DIR}/res/lugaru.rc
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/res/lugaru.rc
+ -i${SRCDIR}/win-res/Lugaru.rc
+ DEPENDS ${SRCDIR}/win-res/Lugaru.rc
)
+ endif(MINGW)
endif(NOT CMAKE_CROSSCOMPILING)
# !!! FIXME: get rid of this.
set(LUGARU_H
${LUGARU_H}
${SRCDIR}/WinDefs.h
- ${SRCDIR}/res/resource.h)
+ ${SRCDIR}/win-res/resource.h)
endif(WIN32)
if (APPLE)
set(PLATFORM_LIBS "-framework Carbon -framework Cocoa -framework OpenGL -framework OpenAL")
endif (APPLE)
-
-
# Deal with dependencies...
-
find_package(OpenGL REQUIRED)
-# force this include dir no matter what, so we get sane headers.
-set(OPENGL_INCLUDE_DIR "${DEPDIR}/OpenGL")
+# force this include dir no matter what on Windows, so we get sane headers.
+if(NOT WIN32)
+ option (LUGARU_FORCE_INTERNAL_OPENGL "Force internal OpenGL headers, even if there's a system version" True)
+ if (LUGARU_FORCE_INTERNAL_OPENGL)
+ include_directories("${DEPDIR}/OpenGL")
+ endif (LUGARU_FORCE_INTERNAL_OPENGL)
+endif(NOT WIN32)
-find_package(OpenAL REQUIRED) # !!! FIXME: package a .dll for Windows?
+if(WIN32)
+ include_directories("${DEPDIR}/OpenGL")
+endif(WIN32)
-find_package(SDL)
-if (NOT SDL)
+if(MSVC) # More Visual Studio annoyances
+ include_directories("${DEPDIR}/msinttypes")
+endif(MSVC)
+
+option (LUGARU_FORCE_INTERNAL_OPENAL "Force internal libOpenAL, even if there's a system version" False)
+if (NOT LUGARU_FORCE_INTERNAL_OPENAL)
+ find_package(OpenAL REQUIRED)
+else(NOT LUGARU_FORCE_INTERNAL_OPENAL)
+ set(OPENAL_FOUND False)
+endif (NOT LUGARU_FORCE_INTERNAL_OPENAL)
+
+if (NOT OPENAL_FOUND OR LUGARU_FORCE_INTERNAL_OPENAL)
+ message(STATUS "Using internal copy of OpenAL")
+ set(LUGARU_MISSING_DEPS "${LUGARU_MISSING_DEPS} OpenAL")
+ set(OPENALDIR "${DEPDIR}/OpenAL")
+ set(OPENAL_INCLUDE_DIR "${OPENALDIR}/include/AL")
+ set(OPENAL_LIBRARY "")
+
+ if (WIN32)
+ set(LUGARU_HAS_INTERNAL_OPENAL True)
+ if (MSVC80)
+ set(OPENAL_LIBRARY
+ ${OPENALDIR}/lib/win32/msvc2005/OpenAL32.lib
+ )
+ endif (MSVC80)
+ if (MSVC90)
+ set(OPENAL_LIBRARY
+ ${OPENALDIR}/lib/win32/msvc2008/OpenAL32.lib
+ )
+ endif (MSVC90)
+ if (MINGW)
+ set(OPENAL_LIBRARY
+ ${OPENALDIR}/lib/win32/mingw/libOpenAL32.dll.a
+ )
+ endif (MINGW)
+ endif(WIN32)
+
+ if (NOT LUGARU_HAS_INTERNAL_OPENAL)
+ message(ERROR "We don't have a prebuilt OpenAL for this platform.")
+ endif (NOT LUGARU_HAS_INTERNAL_OPENAL)
+endif (NOT OPENAL_FOUND OR LUGARU_FORCE_INTERNAL_OPENAL)
+
+option (LUGARU_FORCE_INTERNAL_SDL "Force internal libSDL, even if there's a system version" False)
+if (NOT LUGARU_FORCE_INTERNAL_SDL)
+ find_package(SDL)
+else(NOT LUGARU_FORCE_INTERNAL_SDL)
+ set(SDL_FOUND False)
+endif (NOT LUGARU_FORCE_INTERNAL_SDL)
+
+if (NOT SDL_FOUND)
+ message(STATUS "Using internal copy of SDL")
set(LUGARU_MISSING_DEPS "${LUGARU_MISSING_DEPS} SDL")
- message(STATUS "SDL not found, using internal copy")
set(SDLDIR "${DEPDIR}/SDL12")
set(SDL_INCLUDE_DIR "${SDLDIR}/include")
set(SDL_LIBRARY "")
)
endif (APPLE)
- if (WINDOWS)
+ if (WIN32)
set(LUGARU_HAS_INTERNAL_SDL True)
- set(SDL_LIBRARY
- ${SDLDIR}/lib/win32/SDL.lib
- ${SDLDIR}/lib/win32/SDLmain.lib
- )
- endif (WINDOWS)
+ if (MSVC80)
+ set(SDL_LIBRARY
+ ${SDLDIR}/lib/win32/msvc2005/SDLmain.lib
+ ${SDLDIR}/lib/win32/msvc2005/SDL.lib
+ )
+ endif (MSVC80)
+ if (MSVC90)
+ set(SDL_LIBRARY
+ ${SDLDIR}/lib/win32/msvc2008/SDLmain.lib
+ ${SDLDIR}/lib/win32/msvc2008/SDL.lib
+ )
+ endif (MSVC90)
+ if (MINGW)
+ set(SDL_LIBRARY
+ "mingw32"
+ ${SDLDIR}/lib/win32/mingw/libSDLmain.a
+ ${SDLDIR}/lib/win32/mingw/libSDL.dll.a
+ "-mwindows"
+ )
+ endif (MINGW)
+ endif (WIN32)
if (NOT LUGARU_HAS_INTERNAL_SDL)
message(ERROR "We don't have a prebuilt SDL for this platform.")
endif (NOT LUGARU_HAS_INTERNAL_SDL)
-endif (NOT SDL)
+endif (NOT SDL_FOUND)
+
+option (LUGARU_FORCE_INTERNAL_PNG "Force internal libPNG, even if there's a system version" False)
+if (NOT LUGARU_FORCE_INTERNAL_PNG)
+ find_package(PNG)
+else(NOT LUGARU_FORCE_INTERNAL_PNG)
+ set(PNG_FOUND False)
+endif (NOT LUGARU_FORCE_INTERNAL_PNG)
-find_package(PNG)
-if (NOT PNG)
+if (NOT PNG_FOUND)
+ message(STATUS "Using internal copy of libpng")
set(LUGARU_MISSING_DEPS "${LUGARU_MISSING_DEPS} PNG")
- message(STATUS "libpng not found, using internal copy")
set(PNGDIR "${DEPDIR}/libpng")
set(PNG_INCLUDE_DIR "${PNGDIR}")
set(PNG_LIBRARY "")
${PNGDIR}/pngwtran.c
${PNGDIR}/pngwutil.c
)
-endif (NOT PNG)
+endif (NOT PNG_FOUND)
+
+option (LUGARU_FORCE_INTERNAL_JPEG "Force internal libJPEG, even if there's a system version" False)
+if (NOT LUGARU_FORCE_INTERNAL_JPEG)
+ find_package(JPEG)
+else(NOT LUGARU_FORCE_INTERNAL_JPEG)
+ set(JPEG_FOUND False)
+endif (NOT LUGARU_FORCE_INTERNAL_JPEG)
-find_package(JPEG)
-if (NOT JPEG)
+if (NOT JPEG_FOUND)
+ message(STATUS "Using internal copy of libjpeg")
set(LUGARU_MISSING_DEPS "${LUGARU_MISSING_DEPS} JPEG")
- message(STATUS "libjpeg not found, using internal copy")
set(JPEGDIR "${DEPDIR}/libjpeg")
set(JPEG_INCLUDE_DIR "${JPEGDIR}")
set(JPEG_LIBRARY "")
${JPEGDIR}/jdarith.c
${JPEGDIR}/jaricom.c
)
-endif (NOT JPEG)
+endif (NOT JPEG_FOUND)
-find_package(ZLIB)
-if (NOT ZLIB)
+option (LUGARU_FORCE_INTERNAL_ZLIB "Force internal zlib, even if there's a system version" False)
+if (NOT LUGARU_FORCE_INTERNAL_ZLIB)
+ find_package(ZLIB)
+else(NOT LUGARU_FORCE_INTERNAL_ZLIB)
+ set(ZLIB_FOUND False)
+endif (NOT LUGARU_FORCE_INTERNAL_ZLIB)
+
+if (NOT ZLIB_FOUND)
+ message(STATUS "Using internal copy of zlib")
set(LUGARU_MISSING_DEPS "${LUGARU_MISSING_DEPS} ZLIB")
- message(STATUS "zlib not found, using internal copy")
set(ZLIBDIR "${DEPDIR}/zlib")
set(ZLIB_INCLUDE_DIR "${ZLIBDIR}")
set(ZLIB_LIBRARIES "")
${ZLIBDIR}/uncompr.c
${ZLIBDIR}/zutil.c
)
-endif (NOT ZLIB)
+endif (NOT ZLIB_FOUND)
+
+option (LUGARU_FORCE_INTERNAL_GLU "Force internal libGLU, even if there's a system version" False)
+if (LUGARU_FORCE_INTERNAL_GLU)
+ set(OPENGL_GLU_FOUND False)
+endif (LUGARU_FORCE_INTERNAL_GLU)
-find_package(GLU)
-if (NOT GLU)
+if (NOT OPENGL_GLU_FOUND)
+ message(STATUS "Using internal copy of libGLU")
set(LUGARU_MISSING_DEPS "${LUGARU_MISSING_DEPS} GLU")
- message(STATUS "GLU not found, using internal copy")
set(GLUDIR "${DEPDIR}/GLU")
set(GLU_INCLUDE_DIR "${GLUDIR}")
set(GLU_LIBRARY "")
${GLUDIR}/tessmono.c
${GLUDIR}/util.c
)
-endif (NOT GLU)
+endif (NOT OPENGL_GLU_FOUND)
+
+option (LUGARU_FORCE_INTERNAL_VORBIS "Force internal Vorbis, even if there's a system version" False)
+if (NOT LUGARU_FORCE_INTERNAL_VORBIS)
+ find_package(OggVorbis)
+else(NOT LUGARU_FORCE_INTERNAL_VORBIS)
+ set(OGGVORBIS_FOUND False)
+endif (NOT LUGARU_FORCE_INTERNAL_VORBIS)
-find_package(OggVorbis)
-if (NOT OggVorbis)
+if (NOT OGGVORBIS_FOUND)
+ message(STATUS "Using internal copy of Ogg Vorbis")
set(LUGARU_MISSING_DEPS "${LUGARU_MISSING_DEPS} OggVorbis")
- message(STATUS "Ogg Vorbis not found, using internal copy")
set(OGGDIR "${DEPDIR}/libogg")
set(OGG_INCLUDE_DIR "${OGGDIR}/include")
set(OGG_LIBRARY "")
${VORBISDIR}/lib/vorbisfile.c
${VORBISDIR}/lib/window.c
)
-endif (NOT OggVorbis)
+endif (NOT OGGVORBIS_FOUND)
include_directories(
${OPENAL_INCLUDE_DIR}
endif(WIN32)
# Install target
+if(APPLE)
+ set(APPS_ROOT "${CMAKE_INSTALL_PREFIX}/Lugaru.app")
+ set(APPS_BIN "${APPS_ROOT}/Contents/MacOS")
+ set(APPS_DATA "${APPS_ROOT}/Contents/Resources")
+endif(APPLE)
+
if(WIN32)
- install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/Source/lugaru.exe DESTINATION ${CMAKE_INSTALL_PREFIX})
+ install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/lugaru.exe DESTINATION ${CMAKE_INSTALL_PREFIX})
+ if(MSVC80)
+ install(FILES ${SDLDIR}/lib/win32/msvc2005/SDL.dll DESTINATION ${CMAKE_INSTALL_PREFIX})
+ install(FILES ${OPENALDIR}/lib/win32/msvc2005/OpenAL32.dll DESTINATION ${CMAKE_INSTALL_PREFIX})
+ endif(MSVC80)
+ if(MSVC90)
+ install(FILES ${SDLDIR}/lib/win32/msvc2008/SDL.dll DESTINATION ${CMAKE_INSTALL_PREFIX})
+ install(FILES ${OPENALDIR}/lib/win32/msvc2008/OpenAL32.dll DESTINATION ${CMAKE_INSTALL_PREFIX})
+ endif(MSVC90)
+ if(MINGW)
+ install(FILES ${SDLDIR}/lib/win32/mingw/SDL.dll DESTINATION ${CMAKE_INSTALL_PREFIX})
+ install(FILES ${OPENALDIR}/lib/win32/mingw/OpenAL32.dll DESTINATION ${CMAKE_INSTALL_PREFIX})
+ endif(MINGW)
else(WIN32)
- install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/Source/lugaru DESTINATION ${CMAKE_INSTALL_PREFIX})
+ if(APPLE)
+ set(CMAKE_INSTALL_PREFIX "${APPS_BIN}")
+ install(FILES ${SRCDIR}/mac-res/lugaru.icns DESTINATION ${APPS_DATA})
+ install(FILES ${SRCDIR}/mac-res/Info.plist DESTINATION ${APPS_ROOT}/Contents)
+ endif(APPLE)
+ install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/lugaru DESTINATION ${CMAKE_INSTALL_PREFIX})
+ if(APPLE AND LUGARU_HAS_INTERNAL_SDL)
+ install(FILES ${SDLDIR}/lib/macosx/libSDL-1.2.0.dylib DESTINATION ${CMAKE_INSTALL_PREFIX})
+ endif(APPLE AND LUGARU_HAS_INTERNAL_SDL)
endif(WIN32)
+if(NOT APPLE)
install(DIRECTORY ${CMAKE_SOURCE_DIR}/Data DESTINATION ${CMAKE_INSTALL_PREFIX})
+endif(NOT APPLE)
+
+if(APPLE)
+install(DIRECTORY ${CMAKE_SOURCE_DIR}/Data DESTINATION ${APPS_ROOT})
+endif(APPLE)
if (LUGARU_MISSING_DEPS)
message(STATUS "Using our copy of these libs: ${LUGARU_MISSING_DEPS}")