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")
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)
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}
# 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")
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)
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)
${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})
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)
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)