2016-07-10 23:14:12 +00:00
|
|
|
cmake_minimum_required(VERSION 3.0.0)
|
2016-07-15 08:16:08 +00:00
|
|
|
|
|
|
|
function(move_dll ARG_TARGET)
|
|
|
|
add_custom_command(TARGET lovr POST_BUILD
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
|
|
$<TARGET_FILE:${ARG_TARGET}>
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/$<TARGET_FILE_NAME:${ARG_TARGET}>
|
|
|
|
)
|
|
|
|
endfunction()
|
2016-07-10 23:14:12 +00:00
|
|
|
|
2016-10-04 21:47:48 +00:00
|
|
|
if(UNIX)
|
|
|
|
find_package(PkgConfig REQUIRED)
|
|
|
|
endif()
|
|
|
|
|
2016-09-06 17:13:49 +00:00
|
|
|
project(lovr)
|
|
|
|
file(GLOB_RECURSE LOVR_SRC src/*.c)
|
|
|
|
add_executable(lovr ${LOVR_SRC})
|
|
|
|
|
2016-11-19 09:28:01 +00:00
|
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)
|
|
|
|
|
2016-07-10 23:14:12 +00:00
|
|
|
# LuaJIT
|
2016-10-04 21:47:48 +00:00
|
|
|
if(WIN32)
|
|
|
|
add_subdirectory(deps/luajit luajit)
|
|
|
|
include_directories(deps/luajit/src ${CMAKE_BINARY_DIR}/luajit)
|
|
|
|
set(LOVR_LUA liblua)
|
|
|
|
else()
|
|
|
|
if (APPLE)
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pagezero_size 10000 -image_base 100000000")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
pkg_search_module(LUAJIT REQUIRED luajit)
|
|
|
|
include_directories(${LUAJIT_INCLUDE_DIRS})
|
|
|
|
set(LOVR_LUA ${LUAJIT_LIBRARIES})
|
|
|
|
endif()
|
2016-07-10 23:14:12 +00:00
|
|
|
|
2016-10-04 21:47:48 +00:00
|
|
|
# GLEW / OpenGL
|
|
|
|
if(WIN32)
|
|
|
|
add_subdirectory(deps/glew glew)
|
|
|
|
include_directories(deps/glew/include)
|
|
|
|
set(LOVR_GL glew)
|
|
|
|
else()
|
|
|
|
find_package(OpenGL REQUIRED)
|
|
|
|
include_directories(${OPENGL_INCLUDE_DIRS})
|
|
|
|
set(LOVR_GL ${OPENGL_LIBRARIES})
|
|
|
|
endif()
|
2016-07-16 03:47:38 +00:00
|
|
|
|
2016-07-10 23:14:12 +00:00
|
|
|
# GLFW
|
2016-10-04 21:47:48 +00:00
|
|
|
if(WIN32)
|
|
|
|
add_subdirectory(deps/glfw glfw)
|
|
|
|
include_directories(deps/glfw/include)
|
|
|
|
set(LOVR_GLFW glfw ${GLFW_LIBRARIES})
|
|
|
|
else()
|
|
|
|
pkg_search_module(GLFW REQUIRED glfw3)
|
|
|
|
include_directories(${GLFW_INCLUDE_DIRS})
|
|
|
|
set(LOVR_GLFW ${GLFW_LIBRARIES})
|
|
|
|
endif()
|
2016-07-15 08:16:08 +00:00
|
|
|
|
2016-11-01 00:25:49 +00:00
|
|
|
# PhysicsFS
|
|
|
|
if(WIN32)
|
|
|
|
add_subdirectory(deps/physfs physfs)
|
2016-11-12 09:19:47 +00:00
|
|
|
include_directories(deps/physfs)
|
2016-11-01 00:25:49 +00:00
|
|
|
set(LOVR_PHYSFS physfs)
|
|
|
|
else()
|
|
|
|
find_package(PhysFS REQUIRED)
|
|
|
|
include_directories(${PHYSFS_INCLUDE_DIR})
|
|
|
|
set(LOVR_PHYSFS ${PHYSFS_LIBRARY})
|
|
|
|
endif()
|
|
|
|
|
2016-07-15 08:16:08 +00:00
|
|
|
# assimp
|
2016-09-06 17:13:49 +00:00
|
|
|
option(ASSIMP_BUILD_ASSIMP_TOOLS OFF)
|
|
|
|
option(ASSIMP_BUILD_TESTS OFF)
|
2016-10-04 21:47:48 +00:00
|
|
|
if(WIN32)
|
|
|
|
add_subdirectory(deps/assimp assimp)
|
|
|
|
include_directories(deps/assimp/include)
|
|
|
|
set(LOVR_ASSIMP assimp)
|
|
|
|
else()
|
|
|
|
pkg_search_module(ASSIMP REQUIRED assimp)
|
|
|
|
include_directories(${ASSIMP_INCLUDE_DIRS})
|
|
|
|
set(LOVR_ASSIMP ${ASSIMP_LIBRARIES})
|
|
|
|
endif()
|
|
|
|
|
2017-01-07 02:43:24 +00:00
|
|
|
# OpenAL
|
|
|
|
if (WIN32)
|
|
|
|
add_subdirectory(deps/openal-soft openal)
|
|
|
|
include_directories(deps/openal-soft/include)
|
|
|
|
set(LOVR_OPENAL OpenAL32)
|
2017-01-07 03:03:37 +00:00
|
|
|
else()
|
2017-02-19 21:21:27 +00:00
|
|
|
find_package(OpenAL REQUIRED)
|
|
|
|
include_directories(${OPENAL_INCLUDE_DIR})
|
|
|
|
set(LOVR_OPENAL openal)
|
2017-01-07 02:43:24 +00:00
|
|
|
endif()
|
|
|
|
|
2017-02-07 04:40:48 +00:00
|
|
|
# FreeType
|
|
|
|
if (WIN32)
|
|
|
|
set(BUILD_SHARED_LIBS OFF)
|
|
|
|
add_subdirectory(deps/freetype freetype)
|
|
|
|
include_directories(deps/freetype/include)
|
|
|
|
set(LOVR_FREETYPE freetype)
|
|
|
|
else()
|
2017-02-19 21:00:48 +00:00
|
|
|
pkg_search_module(FREETYPE REQUIRED freetype2)
|
2017-02-07 04:40:48 +00:00
|
|
|
include_directories(${FREETYPE_INCLUDE_DIRS})
|
|
|
|
set(LOVR_FREETYPE ${FREETYPE_LIBRARIES})
|
|
|
|
endif()
|
|
|
|
|
2016-10-04 21:47:48 +00:00
|
|
|
# openvr
|
|
|
|
if(WIN32)
|
|
|
|
include_directories(deps/openvr/headers)
|
|
|
|
target_link_libraries(lovr ${CMAKE_SOURCE_DIR}/deps/openvr/lib/win32/openvr_api.lib)
|
|
|
|
add_custom_command(TARGET lovr POST_BUILD
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
|
|
"${CMAKE_SOURCE_DIR}/deps/openvr/bin/win32/openvr_api.dll"
|
|
|
|
$<TARGET_FILE_DIR:lovr>
|
|
|
|
)
|
|
|
|
else()
|
2016-10-24 21:09:32 +00:00
|
|
|
if(DEFINED OPENVR_DIR)
|
|
|
|
get_filename_component(FULL_OPENVR_DIR ${OPENVR_DIR} ABSOLUTE BASE_DIR ${CMAKE_BINARY_DIR})
|
|
|
|
message(STATUS "Setting OpenVR root directory to ${FULL_OPENVR_DIR}")
|
|
|
|
include_directories(${FULL_OPENVR_DIR}/headers)
|
2016-10-04 21:47:48 +00:00
|
|
|
if(APPLE)
|
2016-10-24 21:09:32 +00:00
|
|
|
set(LOVR_OPENVR ${FULL_OPENVR_DIR}/lib/osx32/libopenvr_api.dylib)
|
2016-10-04 21:47:48 +00:00
|
|
|
else()
|
2016-10-24 21:09:32 +00:00
|
|
|
set(LOVR_OPENVR ${FULL_OPENVR_DIR}/lib/linux32/libopenvr_api.so)
|
2016-10-04 21:47:48 +00:00
|
|
|
endif()
|
|
|
|
else()
|
2016-10-24 21:09:32 +00:00
|
|
|
message(FATAL_ERROR "Please specify the location of OpenVR (-DOPENVR_DIR=/path/to/openvr)")
|
2016-10-04 21:47:48 +00:00
|
|
|
endif()
|
|
|
|
endif()
|
2016-07-15 08:16:08 +00:00
|
|
|
|
|
|
|
set(LOVR_LIB
|
|
|
|
${LOVR_LUA}
|
2016-10-04 21:47:48 +00:00
|
|
|
${LOVR_GL}
|
2016-07-15 08:16:08 +00:00
|
|
|
${LOVR_GLFW}
|
2016-11-01 00:25:49 +00:00
|
|
|
${LOVR_PHYSFS}
|
2016-07-15 08:16:08 +00:00
|
|
|
${LOVR_ASSIMP}
|
2017-01-07 02:43:24 +00:00
|
|
|
${LOVR_OPENAL}
|
2017-02-07 04:40:48 +00:00
|
|
|
${LOVR_FREETYPE}
|
2016-10-04 21:47:48 +00:00
|
|
|
${LOVR_OPENVR}
|
2016-07-15 08:16:08 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
target_link_libraries(lovr ${LOVR_LIB})
|
|
|
|
|
2016-10-04 21:47:48 +00:00
|
|
|
if(WIN32)
|
|
|
|
move_dll(${LOVR_LUA})
|
|
|
|
move_dll(${LOVR_GL})
|
|
|
|
move_dll(${LOVR_GLFW})
|
2016-11-01 00:25:49 +00:00
|
|
|
move_dll(${LOVR_PHYSFS})
|
2016-10-04 21:47:48 +00:00
|
|
|
move_dll(${LOVR_ASSIMP})
|
2017-01-07 02:43:24 +00:00
|
|
|
move_dll(${LOVR_OPENAL})
|
2017-02-07 04:40:48 +00:00
|
|
|
move_dll(${LOVR_FREETYPE})
|
2016-10-04 21:47:48 +00:00
|
|
|
endif()
|