]> git.jsancho.org Git - lugaru.git/blobdiff - CMakeLists.txt
Set CMP0004 policy to OLD
[lugaru.git] / CMakeLists.txt
index 30aef8cb9bbda60cef56b2a56f271f7ad20a7c8d..62531a933f0a708099953bbaeb1d15ed90abc265 100644 (file)
@@ -1,6 +1,9 @@
 project(lugaru)
 
 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")
@@ -38,7 +41,6 @@ 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)
@@ -137,13 +139,40 @@ if(MSVC) # MSVC non-C99 support biting us hard
 endif(MSVC)
 
 if(WIN32)
-  ENABLE_LANGUAGE(RC)
-
-  # !!! FIXME: get rid of WinDefs.{cpp,h}
+  if(CMAKE_CROSSCOMPILING)
+    ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lugaru_resource.obj
+                                                 COMMAND ${CMAKE_RC_COMPILER}
+                                                         -I${SRCDIR}/win-res
+                                                         -o ${CMAKE_CURRENT_BINARY_DIR}/lugaru_resource.obj
+                                                         -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${SRCDIR}/win-res
+                                                         -o ${CMAKE_CURRENT_BINARY_DIR}/lugaru_resource.obj
+                                                         -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_SRCS
-    ${LUGARU_SRCS}
-    ${SRCDIR}/WinDefs.cpp
-    ${SRCDIR}/win-res/Lugaru.rc)
+       ${LUGARU_SRCS}
+       ${SRCDIR}/WinDefs.cpp)
 
   set(LUGARU_H
     ${LUGARU_H}
@@ -158,16 +187,10 @@ endif (APPLE)
 # Deal with dependencies...
 find_package(OpenGL REQUIRED)
 # 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)
-
-if(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(WIN32)
+endif (LUGARU_FORCE_INTERNAL_OPENGL)
 
 if(MSVC) # More Visual Studio annoyances
     include_directories("${DEPDIR}/msinttypes")
@@ -175,7 +198,12 @@ 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)
 endif (NOT LUGARU_FORCE_INTERNAL_OPENAL)
@@ -206,49 +234,7 @@ if (NOT OPENAL_FOUND OR LUGARU_FORCE_INTERNAL_OPENAL)
     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")
-    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)
-
-    if (WIN32)
-        set(LUGARU_HAS_INTERNAL_SDL True)
-        if (MSVC)
-          set(SDL_LIBRARY
-              ${SDLDIR}/lib/win32/msvc2008/SDLmain.lib
-              ${SDLDIR}/lib/win32/msvc2008/SDL.lib
-          )
-        endif (MSVC)
-        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)
@@ -453,16 +439,20 @@ 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} ${OPENGL_glu_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})
 
 
-add_executable(lugaru ${LUGARU_SRCS} ${LUGARU_H})
+if(WIN32)
+    add_executable(lugaru ${LUGARU_SRCS} ${LUGARU_H} lugaru_resource.obj)
+else(WIN32)
+    add_executable(lugaru ${LUGARU_SRCS} ${LUGARU_H})
+endif(WIN32)
 
 target_link_libraries(lugaru ${LUGARU_LIBS})
 
@@ -485,11 +475,9 @@ endif(APPLE)
 if(WIN32)
     install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/lugaru.exe DESTINATION ${CMAKE_INSTALL_PREFIX})
     if(MSVC)
-        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(MSVC)
     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)
@@ -499,9 +487,6 @@ else(WIN32)
         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)