]> git.jsancho.org Git - lugaru.git/blobdiff - CMakeLists.txt
Set CMP0004 policy to OLD
[lugaru.git] / CMakeLists.txt
index d524e8ccb4c191df4ec38b6eea6e0fdb411baa02..62531a933f0a708099953bbaeb1d15ed90abc265 100644 (file)
 project(lugaru)
 
-cmake_minimum_required(VERSION 2.6)
+cmake_minimum_required(VERSION 3.5)
+cmake_policy(SET CMP0004 OLD)
+
+INCLUDE(FindPkgConfig)
 
 set(SRCDIR "${CMAKE_CURRENT_SOURCE_DIR}/Source")
 set(DEPDIR "${CMAKE_CURRENT_SOURCE_DIR}/Dependencies")
 
-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)
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 --std=c++11")
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -g -pg --std=c++11")
+set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O2 -std=c++11")
 
 if(NOT LUGARU_INSTALL_PREFIX)
-  if(WIN32)
-     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
-     "CMAKE_INSTALL_PREFIX: Install path prefix, prepended onto install directories."
-      FORCE)
-  endif(WIN32)
+    if(WIN32)
+        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
+        "CMAKE_INSTALL_PREFIX: Install path prefix, prepended onto install directories."
+        FORCE)
+    endif(WIN32)
 endif(NOT LUGARU_INSTALL_PREFIX)
 
 set(CMAKE_INSTALL_PREFIX "${LUGARU_INSTALL_PREFIX}" CACHE INTERNAL "Prefix prepended to install directories" FORCE)
 
-if(WIN32)
-       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)
-
-
+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(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_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)
+    set(LUGARU_FORCE_INTERNAL_OPENAL True)
+endif(APPLE)
 
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
 
 set(LUGARU_SRCS
-       ${SRCDIR}/Frustum.cpp
-       ${SRCDIR}/GameDraw.cpp
-       ${SRCDIR}/GameInitDispose.cpp
-       ${SRCDIR}/GameTick.cpp
-       ${SRCDIR}/Globals.cpp
-       ${SRCDIR}/Lights.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}/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}/Frustum.cpp
+    ${SRCDIR}/Account.cpp
+    ${SRCDIR}/Game.cpp
+    ${SRCDIR}/GameDraw.cpp
+    ${SRCDIR}/GameInitDispose.cpp
+    ${SRCDIR}/GameTick.cpp
+    ${SRCDIR}/Globals.cpp
+    ${SRCDIR}/Lights.cpp
+    ${SRCDIR}/Menu.cpp
+    ${SRCDIR}/Models.cpp
+    ${SRCDIR}/Objects.cpp
+    ${SRCDIR}/pack.c
+    ${SRCDIR}/Person.cpp
+    ${SRCDIR}/private.c
+    ${SRCDIR}/Quaternions.cpp
+    ${SRCDIR}/Skeleton.cpp
+    ${SRCDIR}/Skybox.cpp
+    ${SRCDIR}/Sprite.cpp
+    ${SRCDIR}/Terrain.cpp
+    ${SRCDIR}/Texture.cpp
+    ${SRCDIR}/Text.cpp
+    ${SRCDIR}/TGALoader.cpp
+    ${SRCDIR}/unpack.c
+    ${SRCDIR}/Weapons.cpp
+    ${SRCDIR}/OpenGL_Windows.cpp
+    ${SRCDIR}/openal_wrapper.cpp
+    ${SRCDIR}/Input.cpp
+    ${SRCDIR}/Settings.cpp
+    ${SRCDIR}/Stereo.cpp
+    ${SRCDIR}/Animation.cpp
+    ${SRCDIR}/Sounds.cpp
+    ${SRCDIR}/Awards.cpp
+)
+
+set(LUGARU_H
+    ${SRCDIR}/Frustum.h
+    ${SRCDIR}/Account.h
+    ${SRCDIR}/Game.h
+    ${SRCDIR}/Lights.h
+    ${SRCDIR}/Menu.h
+    ${SRCDIR}/Models.h
+    ${SRCDIR}/Objects.h
+    ${SRCDIR}/Person.h
+    ${SRCDIR}/PhysicsMath.h
+    ${SRCDIR}/Quaternions.h
+    ${SRCDIR}/Random.h
+    ${SRCDIR}/Skeleton.h
+    ${SRCDIR}/Skybox.h
+    ${SRCDIR}/Sprite.h
+    ${SRCDIR}/TGALoader.h
+    ${SRCDIR}/Terrain.h
+    ${SRCDIR}/Texture.h
+    ${SRCDIR}/Text.h
+    ${SRCDIR}/Weapons.h
+    ${SRCDIR}/Input.h
+    ${SRCDIR}/alstubs.h
+    ${SRCDIR}/binio.h
+    ${SRCDIR}/openal_wrapper.h
+    ${SRCDIR}/gamegl.h
+    ${SRCDIR}/glstubs.h
+    ${SRCDIR}/private.h
+    ${SRCDIR}/Settings.h
+    ${SRCDIR}/Stereo.h
+    ${SRCDIR}/Animation.h
+    ${SRCDIR}/Sounds.h
 )
 
 if(UNIX)
-       set(LUGARU_SRCS
-               ${LUGARU_SRCS}
-               ${SRCDIR}/MacCompatibility.cpp
-       )
+    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
-       )
+    set(LUGARU_H
+        ${LUGARU_H}
+        ${DEPDIR}/msinttypes/stdint.h
+        ${DEPDIR}/msinttypes/inttypes.h
+    )
 endif(MSVC)
 
-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
-       ${SRCDIR}/PhysicsMath.h
-       ${SRCDIR}/Pointer.h
-       ${SRCDIR}/Quaternions.h
-       ${SRCDIR}/Random.h
-       ${SRCDIR}/Skeleton.h
-       ${SRCDIR}/Skybox.h
-       ${SRCDIR}/Sprites.h
-       ${SRCDIR}/TGALoader.h
-       ${SRCDIR}/Terrain.h
-       ${SRCDIR}/Text.h
-       ${SRCDIR}/Weapons.h
-       ${SRCDIR}/WinInput.h
-       ${SRCDIR}/alstubs.h
-       ${SRCDIR}/binio.h
-       ${SRCDIR}/openal_wrapper.h
-       ${SRCDIR}/gamegl.h
-       ${SRCDIR}/glstubs.h
-       ${SRCDIR}/mmgr.h
-       ${SRCDIR}/nommgr.h
-       ${SRCDIR}/pack_private.h
-       ${SRCDIR}/private.h
-       ${SRCDIR}/unpack_private.h
-)
-
 if(WIN32)
   if(CMAKE_CROSSCOMPILING)
     ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lugaru_resource.obj
-                                                 COMMAND i686-pc-mingw32-windres
-                                                         -I${SRCDIR}/res
+                                                 COMMAND ${CMAKE_RC_COMPILER}
+                                                         -I${SRCDIR}/win-res
                                                          -o ${CMAKE_CURRENT_BINARY_DIR}/lugaru_resource.obj
-                                                         -i${SRCDIR}/res/Lugaru.rc
-                                             DEPENDS ${SRCDIR}/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}/res
+                                                         -I${SRCDIR}/win-res
                                                          -fo${CMAKE_CURRENT_BINARY_DIR}/lugaru_resource.obj
-                                                         ${SRCDIR}/res/Lugaru.rc
-                                             DEPENDS ${SRCDIR}/res/Lugaru.rc
+                                                         ${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${SRCDIR}/res
+                                                         -I${SRCDIR}/win-res
                                                          -o ${CMAKE_CURRENT_BINARY_DIR}/lugaru_resource.obj
-                                                         -i${SRCDIR}/res/Lugaru.rc
-                                             DEPENDS ${SRCDIR}/res/Lugaru.rc
+                                                         -i${SRCDIR}/win-res/Lugaru.rc
+                                             DEPENDS ${SRCDIR}/win-res/Lugaru.rc
                                                  )
    endif(MINGW)
   endif(NOT CMAKE_CROSSCOMPILING)
@@ -149,31 +175,40 @@ if(WIN32)
        ${SRCDIR}/WinDefs.cpp)
 
   set(LUGARU_H
-       ${LUGARU_H}
-       ${SRCDIR}/WinDefs.h
-       ${SRCDIR}/res/resource.h)
+    ${LUGARU_H}
+    ${SRCDIR}/WinDefs.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.
-include_directories("${DEPDIR}/OpenGL")
+# force this include dir no matter what on Windows, so we get sane headers.
+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)
+
+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)
+    # FIXME: We should remove bundled libs and allow building OpenAL from source, for all platforms
+    if (WIN32)
+        find_package(OpenAL)
+    else (WIN32)
+        find_package(OpenAL REQUIRED)
+    endif()
 else(NOT LUGARU_FORCE_INTERNAL_OPENAL)
-       set(OPENAL_FOUND False)
+    set(OPENAL_FOUND False)
 endif (NOT LUGARU_FORCE_INTERNAL_OPENAL)
 
-if (NOT OPENAL_FOUND)
+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")
@@ -182,83 +217,30 @@ if (NOT OPENAL_FOUND)
 
     if (WIN32)
         set(LUGARU_HAS_INTERNAL_OPENAL True)
-        if (MSVC80)                     
-            set(OPENAL_LIBRARY
-                ${OPENALDIR}/lib/win32/msvc2005/OpenAL32.lib
-            )
-        endif (MSVC80)
-        if (MSVC90)                     
+        if (MSVC)
             set(OPENAL_LIBRARY
                 ${OPENALDIR}/lib/win32/msvc2008/OpenAL32.lib
             )
-        endif (MSVC90)
+        endif (MSVC)
         if (MINGW)
             set(OPENAL_LIBRARY
                 ${OPENALDIR}/lib/win32/mingw/libOpenAL32.dll.a
             )
         endif (MINGW)
-     endif(WIN32)
+    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")
-    set(SDLDIR "${DEPDIR}/SDL12")
-    set(SDL_INCLUDE_DIR "${SDLDIR}/include")
-    set(SDL_LIBRARY "")
-    if (APPLE)
-        set(LUGARU_HAS_INTERNAL_SDL True)
-        set(SDL_LIBRARY
-            ${SDLDIR}/lib/macosx/libSDL-1.2.0.dylib
-            ${SDLDIR}/lib/macosx/libSDLmain-osx.a
-        )
-    endif (APPLE)
+endif (NOT OPENAL_FOUND OR LUGARU_FORCE_INTERNAL_OPENAL)
 
-    if (WIN32)
-        set(LUGARU_HAS_INTERNAL_SDL True)
-        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_FOUND)
+find_package(sdl2 REQUIRED)
 
 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)
+    set(PNG_FOUND False)
 endif (NOT LUGARU_FORCE_INTERNAL_PNG)
 
 if (NOT PNG_FOUND)
@@ -291,7 +273,7 @@ option (LUGARU_FORCE_INTERNAL_JPEG "Force internal libJPEG, even if there's a sy
 if (NOT LUGARU_FORCE_INTERNAL_JPEG)
     find_package(JPEG)
 else(NOT LUGARU_FORCE_INTERNAL_JPEG)
-       set(JPEG_FOUND False)
+    set(JPEG_FOUND False)
 endif (NOT LUGARU_FORCE_INTERNAL_JPEG)
 
 if (NOT JPEG_FOUND)
@@ -354,7 +336,7 @@ option (LUGARU_FORCE_INTERNAL_ZLIB "Force internal zlib, even if there's a syste
 if (NOT LUGARU_FORCE_INTERNAL_ZLIB)
     find_package(ZLIB)
 else(NOT LUGARU_FORCE_INTERNAL_ZLIB)
-       set(ZLIB_FOUND False)
+    set(ZLIB_FOUND False)
 endif (NOT LUGARU_FORCE_INTERNAL_ZLIB)
 
 if (NOT ZLIB_FOUND)
@@ -381,7 +363,7 @@ 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)
+    set(OPENGL_GLU_FOUND False)
 endif (LUGARU_FORCE_INTERNAL_GLU)
 
 if (NOT OPENGL_GLU_FOUND)
@@ -411,7 +393,7 @@ option (LUGARU_FORCE_INTERNAL_VORBIS "Force internal Vorbis, even if there's a s
 if (NOT LUGARU_FORCE_INTERNAL_VORBIS)
     find_package(OggVorbis)
 else(NOT LUGARU_FORCE_INTERNAL_VORBIS)
-       set(OGGVORBIS_FOUND False)
+    set(OGGVORBIS_FOUND False)
 endif (NOT LUGARU_FORCE_INTERNAL_VORBIS)
 
 if (NOT OGGVORBIS_FOUND)
@@ -457,13 +439,13 @@ include_directories(
     ${ZLIB_INCLUDE_DIR}
     ${OPENGL_INCLUDE_DIR}
     ${GLU_INCLUDE_DIR}
-    ${SDL_INCLUDE_DIR}
+    ${SDL2_INCLUDE_DIRS}
     ${VORBISFILE_INCLUDE_DIR}
     ${OGG_INCLUDE_DIR}
     ${CMAKE_SOURCE_DIR}/Source
 )
 
-set(LUGARU_LIBS ${OPENAL_LIBRARY} ${PNG_LIBRARY} ${JPEG_LIBRARY} ${ZLIB_LIBRARIES} ${SDL_LIBRARY} ${GLU_LIBRARY} ${OPENGL_LIBRARY} ${VORBISFILE_LIBRARY} ${OGG_LIBRARY} ${PLATFORM_LIBS})
+set(LUGARU_LIBS ${OPENAL_LIBRARY} ${PNG_LIBRARY} ${JPEG_LIBRARY} ${ZLIB_LIBRARIES} ${SDL2_LIBRARIES} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} ${VORBISFILE_LIBRARY} ${OGG_LIBRARY} ${PLATFORM_LIBS})
 
 
 if(WIN32)
@@ -475,33 +457,46 @@ endif(WIN32)
 target_link_libraries(lugaru ${LUGARU_LIBS})
 
 if(WIN32)
-       add_definitions(-DUSE_OPENAL=1 -DUSE_SDL=1 -DBinIO_STDINT_HEADER=<stdint.h>)
+    add_definitions(-DUSE_OPENAL=1 -DUSE_SDL=1 -DBinIO_STDINT_HEADER=<stdint.h>)
+    if(MINGW)
+        add_definitions(-DWIN32)
+    endif(MINGW)
 else(WIN32)
-       add_definitions(-DPLATFORM_LINUX=1 -DPLATFORM_UNIX=1 -DUSE_OPENAL=1 -DUSE_SDL=1 -DBinIO_STDINT_HEADER=<stdint.h>)
+    add_definitions(-DPLATFORM_LINUX=1 -DPLATFORM_UNIX=1 -DUSE_OPENAL=1 -DUSE_SDL=1 -DBinIO_STDINT_HEADER=<stdint.h>)
 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}/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)
+    install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/lugaru.exe DESTINATION ${CMAKE_INSTALL_PREFIX})
+    if(MSVC)
+        install(FILES ${OPENALDIR}/lib/win32/msvc2008/OpenAL32.dll DESTINATION ${CMAKE_INSTALL_PREFIX})
+    endif(MSVC)
+    if(MINGW)
+        install(FILES ${OPENALDIR}/lib/win32/mingw/OpenAL32.dll DESTINATION ${CMAKE_INSTALL_PREFIX})
+    endif(MINGW)
 else(WIN32)
-       install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/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})
 endif(WIN32)
 
-install(DIRECTORY ${CMAKE_SOURCE_DIR}/Data DESTINATION ${CMAKE_INSTALL_PREFIX})
+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}")
 endif (LUGARU_MISSING_DEPS)
-