]> git.jsancho.org Git - lugaru.git/blobdiff - CMakeLists.txt
Made sound file filepaths use ConvertFileName(), so it works on Windows compiled...
[lugaru.git] / CMakeLists.txt
index 700e9f49debf96fdbb681c44f12c269821405d32..4833e360834086d5420fcb6719c0593b46cd58d6 100644 (file)
@@ -5,19 +5,19 @@ cmake_minimum_required(VERSION 2.6)
 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)
@@ -25,10 +25,10 @@ endif(NOT LUGARU_INSTALL_PREFIX)
 
 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)
 
 
 
@@ -61,16 +61,36 @@ set(LUGARU_SRCS
        ${SRCDIR}/OpenGL_Windows.cpp
        ${SRCDIR}/openal_wrapper.cpp
        ${SRCDIR}/WinInput.cpp
-       ${SRCDIR}/MacCompatibility.cpp
 )
 
+if(UNIX)
+       set(LUGARU_SRCS
+               ${LUGARU_SRCS}
+               ${SRCDIR}/MacCompatibility.cpp
+       )
+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(UNIX)
+       set(LUGARU_H
+               ${LUGARU_H}
+               ${SRCDIR}/MacCompatibility.h
+       )
+endif(UNIX)
+
 set(LUGARU_H
        ${SRCDIR}/Constants.h
        ${SRCDIR}/Frustum.h
        ${SRCDIR}/Game.h
        ${SRCDIR}/Lights.h
        ${SRCDIR}/LinkedList.h
-       ${SRCDIR}/MacCompatibility.h
        ${SRCDIR}/Models.h
        ${SRCDIR}/Objects.h
        ${SRCDIR}/Person.h
@@ -88,13 +108,9 @@ set(LUGARU_H
        ${SRCDIR}/WinInput.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
@@ -106,20 +122,31 @@ 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}/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}/res/Lugaru.rc
+                                             DEPENDS ${SRCDIR}/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}/res
+                                                         -fo${CMAKE_CURRENT_BINARY_DIR}/lugaru_resource.obj
+                                                         ${SRCDIR}/res/Lugaru.rc
+                                             DEPENDS ${SRCDIR}/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}/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}/res/Lugaru.rc
+                                             DEPENDS ${SRCDIR}/res/Lugaru.rc
                                                  )
+   endif(MINGW)
   endif(NOT CMAKE_CROSSCOMPILING)
 
   # !!! FIXME: get rid of this.
@@ -143,14 +170,56 @@ endif (APPLE)
 
 find_package(OpenGL REQUIRED)
 # force this include dir no matter what, so we get sane headers.
-set(OPENGL_INCLUDE_DIR "${DEPDIR}/OpenGL")
-
-find_package(OpenAL REQUIRED)  # !!! FIXME: package a .dll for Windows?
-
-find_package(SDL)
-if (NOT SDL)
+include_directories("${DEPDIR}/OpenGL")
+
+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)
+    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)
+
+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 "")
@@ -162,23 +231,45 @@ if (NOT SDL)
         )
     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)
 
-find_package(PNG)
-if (NOT PNG)
+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)
+
+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 "")
@@ -200,12 +291,18 @@ if (NOT PNG)
         ${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 "")
@@ -257,12 +354,18 @@ if (NOT JPEG)
         ${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 "")
@@ -280,12 +383,16 @@ if (NOT ZLIB)
         ${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 "")
@@ -304,12 +411,18 @@ if (NOT GLU)
         ${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 "")
@@ -341,7 +454,7 @@ if (NOT OggVorbis)
         ${VORBISDIR}/lib/vorbisfile.c
         ${VORBISDIR}/lib/window.c
     )
-endif (NOT OggVorbis)
+endif (NOT OGGVORBIS_FOUND)
 
 include_directories(
     ${OPENAL_INCLUDE_DIR}
@@ -375,9 +488,21 @@ endif(WIN32)
 
 # Install target
 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})
+       install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/lugaru DESTINATION ${CMAKE_INSTALL_PREFIX})
 endif(WIN32)
 
 install(DIRECTORY ${CMAKE_SOURCE_DIR}/Data DESTINATION ${CMAKE_INSTALL_PREFIX})