lovr/CMakeLists.txt

168 lines
4.4 KiB
CMake
Raw Normal View History

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
2017-03-31 10:20:53 +00:00
# OpenGL
if(NOT WIN32)
2016-10-04 21:47:48 +00:00
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
2017-03-31 07:06:05 +00:00
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "")
set(GLFW_BUILD_TESTS OFF CACHE BOOL "")
set(GLFW_BUILD_DOCS OFF CACHE BOOL "")
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
2017-03-31 02:25:07 +00:00
set(PHYSFS_BUILD_STATIC OFF CACHE BOOL "")
2017-03-11 06:47:25 +00:00
set(PHYSFS_ARCHIVE_7Z OFF CACHE BOOL "")
set(PHYSFS_ARCHIVE_GRP OFF CACHE BOOL "")
set(PHYSFS_ARCHIVE_WAD OFF CACHE BOOL "")
set(PHYSFS_ARCHIVE_HOG OFF CACHE BOOL "")
set(PHYSFS_ARCHIVE_MVL OFF CACHE BOOL "")
set(PHYSFS_ARCHIVE_QPAK OFF CACHE BOOL "")
set(PHYSFS_BUILD_TEST OFF CACHE BOOL "")
set(PHYSFS_BUILD_WX_TEST FALSE CACHE BOOL "")
2016-11-01 00:25:49 +00:00
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
set(ASSIMP_BUILD_ASSIMP_TOOLS OFF CACHE BOOL "")
set(ASSIMP_BUILD_TESTS OFF CACHE BOOL "")
set(ASSIMP_NO_EXPORT ON OFF CACHE BOOL "")
set(ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT OFF CACHE BOOL "")
set(ASSIMP_BUILD_COLLADA_IMPORTER ON CACHE BOOL "")
set(ASSIMP_BUILD_OBJ_IMPORTER ON CACHE BOOL "")
set(ASSIMP_BUILD_FBX_IMPORTER ON CACHE BOOL "")
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
2017-03-31 07:06:05 +00:00
set(ALSOFT_UTILS OFF CACHE BOOL "")
set(ALSOFT_EXAMPLES OFF CACHE BOOL "")
set(ALSOFT_TESTS OFF CACHE BOOL "")
2017-01-07 02:43:24 +00:00
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})
2017-03-31 07:18:06 +00:00
set(LOVR_OPENAL ${OPENAL_LIBRARY})
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
2017-03-31 07:06:05 +00:00
if(NOT DEFINED OPENVR_DIR AND IS_DIRECTORY "${PROJECT_SOURCE_DIR}/deps/openvr")
SET(OPENVR_DIR deps/openvr)
2016-10-04 21:47:48 +00:00
else()
2017-03-31 07:06:05 +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()
2016-07-15 08:16:08 +00:00
2017-03-31 07:18:06 +00:00
if(APPLE)
add_definitions(-DOSX -DPOSIX)
elseif(UNIX)
add_definitions(-DLINUX -DPOSIX)
endif()
2017-03-31 07:06:05 +00:00
set(BUILD_SHARED ON CACHE BOOL "")
2017-03-31 07:18:06 +00:00
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fPIC -fvisibility=hidden")
2017-03-31 07:06:05 +00:00
add_definitions(-DVR_API_PUBLIC)
include_directories(${OPENVR_DIR}/headers)
include_directories(${OPENVR_DIR}/src)
include_directories(${OPENVR_DIR}/src/vrcommon)
add_subdirectory(${OPENVR_DIR}/src openvr_api)
set(LOVR_OPENVR openvr_api)
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-03-31 07:06:05 +00:00
${LOVR_OPENVR}
2017-02-07 04:40:48 +00:00
${LOVR_FREETYPE}
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_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-03-31 07:06:05 +00:00
move_dll(${LOVR_OPENVR})
2017-02-07 04:40:48 +00:00
move_dll(${LOVR_FREETYPE})
2016-10-04 21:47:48 +00:00
endif()