Improve CMakeLists.txt;

This commit is contained in:
bjorn 2016-10-04 14:47:48 -07:00
parent 8edcd18c52
commit b3447f4af7
1 changed files with 74 additions and 26 deletions

View File

@ -8,51 +8,99 @@ function(move_dll ARG_TARGET)
) )
endfunction() endfunction()
if(UNIX)
find_package(PkgConfig REQUIRED)
endif()
project(lovr) project(lovr)
file(GLOB_RECURSE LOVR_SRC src/*.c) file(GLOB_RECURSE LOVR_SRC src/*.c)
add_executable(lovr ${LOVR_SRC}) add_executable(lovr ${LOVR_SRC})
# LuaJIT # LuaJIT
add_subdirectory(deps/luajit luajit) if(WIN32)
include_directories(deps/luajit/src ${CMAKE_BINARY_DIR}/luajit) add_subdirectory(deps/luajit luajit)
set(LOVR_LUA liblua) 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()
# GLEW pkg_search_module(LUAJIT REQUIRED luajit)
add_subdirectory(deps/glew glew) include_directories(${LUAJIT_INCLUDE_DIRS})
include_directories(deps/glew/include) set(LOVR_LUA ${LUAJIT_LIBRARIES})
set(LOVR_GLEW glew) endif()
# 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()
# GLFW # GLFW
add_subdirectory(deps/glfw glfw) if(WIN32)
include_directories(deps/glfw/include) add_subdirectory(deps/glfw glfw)
set(LOVR_GLFW glfw ${GLFW_LIBRARIES}) 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()
# assimp # assimp
option(ASSIMP_BUILD_ASSIMP_TOOLS OFF) option(ASSIMP_BUILD_ASSIMP_TOOLS OFF)
option(ASSIMP_BUILD_TESTS OFF) option(ASSIMP_BUILD_TESTS OFF)
add_subdirectory(deps/assimp assimp) if(WIN32)
include_directories(deps/assimp/include) add_subdirectory(deps/assimp assimp)
set(LOVR_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()
# openvr (todo) # openvr
include_directories(deps/openvr/headers) if(WIN32)
target_link_libraries(lovr ${CMAKE_SOURCE_DIR}/deps/openvr/lib/win32/openvr_api.lib) include_directories(deps/openvr/headers)
add_custom_command(TARGET lovr POST_BUILD target_link_libraries(lovr ${CMAKE_SOURCE_DIR}/deps/openvr/lib/win32/openvr_api.lib)
COMMAND ${CMAKE_COMMAND} -E copy_if_different add_custom_command(TARGET lovr POST_BUILD
"${CMAKE_SOURCE_DIR}/deps/openvr/bin/win32/openvr_api.dll" COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_FILE_DIR:lovr> "${CMAKE_SOURCE_DIR}/deps/openvr/bin/win32/openvr_api.dll"
) $<TARGET_FILE_DIR:lovr>
)
else()
if(EXISTS ${OPENVR_DIR})
include_directories(${OPENVR_DIR}/headers)
if(APPLE)
set(LOVR_OPENVR ${OPENVR_DIR}/lib/osx32/libopenvr_api.dylib)
else()
set(LOVR_OPENVR ${OPENVR_DIR}/lib/linux32/libopenvr_api.so)
endif()
else()
message(FATAL_ERROR "Please specify the location of OpenVR (-DOPENVR_DIR=/path/to/openvr)")
endif()
endif()
set(LOVR_LIB set(LOVR_LIB
${LOVR_LUA} ${LOVR_LUA}
${LOVR_GLEW} ${LOVR_GL}
${LOVR_GLFW} ${LOVR_GLFW}
${LOVR_ASSIMP} ${LOVR_ASSIMP}
${LOVR_OPENVR}
) )
target_link_libraries(lovr ${LOVR_LIB}) target_link_libraries(lovr ${LOVR_LIB})
move_dll(${LOVR_LUA}) if(WIN32)
move_dll(${LOVR_GLEW}) move_dll(${LOVR_LUA})
move_dll(${LOVR_GLFW}) move_dll(${LOVR_GL})
move_dll(${LOVR_ASSIMP}) move_dll(${LOVR_GLFW})
move_dll(${LOVR_ASSIMP})
endif()