]> git.jsancho.org Git - lugaru.git/blobdiff - CMakeLists.txt
CMake: Install required DLLs when building with mingw
[lugaru.git] / CMakeLists.txt
index 822300db2c643b49408a60b363e230b70d9c0edb..bdf247f3b3f6ddac0276671d882f2375bfe70563 100644 (file)
@@ -1,6 +1,7 @@
 project(lugaru)
 
 cmake_minimum_required(VERSION 3.5)
+cmake_policy(SET CMP0004 OLD)
 
 INCLUDE(FindPkgConfig)
 
@@ -138,45 +139,23 @@ if(MSVC) # MSVC non-C99 support biting us hard
 endif(MSVC)
 
 if(WIN32)
-  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)
-
-  set(LUGARU_H
-    ${LUGARU_H}
-    ${SRCDIR}/WinDefs.h
-    ${SRCDIR}/win-res/resource.h)
+                        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
+    )
+
+    # !!! FIXME: get rid of this.
+    set(LUGARU_SRCS
+        ${LUGARU_SRCS}
+        ${SRCDIR}/WinDefs.cpp)
+
+    set(LUGARU_H
+        ${LUGARU_H}
+        ${SRCDIR}/WinDefs.h
+        ${SRCDIR}/win-res/resource.h)
 endif(WIN32)
 
 if (APPLE)
@@ -197,40 +176,18 @@ endif(MSVC)
 
 option (LUGARU_FORCE_INTERNAL_OPENAL "Force internal libOpenAL, even if there's a system version" False)
 if (NOT LUGARU_FORCE_INTERNAL_OPENAL)
-    # FIXME: We should remove bundled libs and allow building OpenAL from source, for all platforms
     if (WIN32)
-        find_package(OpenAL)
+        pkg_check_modules(OPENAL openal)
+        set(OPENAL_LIBRARY ${OPENAL_LIBRARIES})
     else (WIN32)
         find_package(OpenAL REQUIRED)
     endif()
-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 (MSVC)
-            set(OPENAL_LIBRARY
-                ${OPENALDIR}/lib/win32/msvc2008/OpenAL32.lib
-            )
-        endif (MSVC)
-        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)
+    message(ERROR "*** Not implemented, terminating.")
+    # FIXME: We should  allow building OpenAL from source, for all platforms
 endif (NOT OPENAL_FOUND OR LUGARU_FORCE_INTERNAL_OPENAL)
 
 find_package(sdl2 REQUIRED)
@@ -473,11 +430,24 @@ endif(APPLE)
 
 if(WIN32)
     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})
+        set(LIBGCC_S libgcc_s_sjlj-1.dll)
+        if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") # MinGW64
+            set(LIBGCC_S libgcc_s_seh-1.dll)
+        endif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
+        # FIXME: Filter out unneeded DLLs when building against some internal deps
+        set(DLL_ROOT ${CMAKE_FIND_ROOT_PATH}/bin)
+        install(FILES ${DLL_ROOT}/${LIBGCC_S}
+                      ${DLL_ROOT}/libjpeg-62.dll
+                      ${DLL_ROOT}/libogg-0.dll
+                      ${DLL_ROOT}/libpng16-16.dll
+                      ${DLL_ROOT}/libstdc++-6.dll
+                      ${DLL_ROOT}/libvorbis-0.dll
+                      ${DLL_ROOT}/libvorbisfile-3.dll
+                      ${DLL_ROOT}/libwinpthread-1.dll
+                      ${DLL_ROOT}/SDL2.dll
+                      ${DLL_ROOT}/zlib1.dll
+                DESTINATION ${CMAKE_INSTALL_PREFIX})
     endif(MINGW)
 else(WIN32)
     if(APPLE)