mirror of
https://github.com/love2d/love.git
synced 2026-08-12 00:20:52 +02:00
Make CMake build functional on Linux.
At least on Ubuntu.
This commit is contained in:
+75
-3
@@ -23,13 +23,17 @@ if(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
|
||||
message(FATAL_ERROR "Prevented in-tree build.")
|
||||
endif()
|
||||
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
project(love)
|
||||
|
||||
set(LOVE_EXE_NAME love)
|
||||
set(LOVE_LIB_NAME liblove)
|
||||
|
||||
set(CMAKE_MODULE_PATH "${love_SOURCE_DIR}/extra/cmake" ${CMAKE_MODULE_PATH})
|
||||
# Needed for shared libs on Linux. (-fPIC).
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
|
||||
|
||||
set (CMAKE_CXX_STANDARD 11)
|
||||
|
||||
if(MSVC)
|
||||
@@ -157,19 +161,87 @@ if(MEGA)
|
||||
# automatically.
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "
|
||||
if(MSVC)
|
||||
message(FATAL_ERROR "
|
||||
It is currently only possible to build with megasource on Windows.
|
||||
Please see http://bitbucket.org/rude/megasource
|
||||
")
|
||||
endif()
|
||||
|
||||
find_package(Freetype REQUIRED)
|
||||
find_package(ModPlug REQUIRED)
|
||||
find_package(OpenAL REQUIRED)
|
||||
find_package(OpenGL REQUIRED)
|
||||
find_package(PhysFS REQUIRED)
|
||||
find_package(SDL2 REQUIRED)
|
||||
find_package(Theora REQUIRED)
|
||||
find_package(Vorbis REQUIRED)
|
||||
|
||||
# required for enet
|
||||
add_definitions(-D HAS_SOCKLEN_T)
|
||||
|
||||
set(LOVE_INCLUDE_DIRS
|
||||
${SDL2_INCLUDE_DIR}
|
||||
${PHYSFS_INCLUDE_DIR}
|
||||
${FREETYPE_INCLUDE_DIRS}
|
||||
${VORBIS_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
set(LOVE_LINK_LIBRARIES
|
||||
${OPENGL_gl_LIBRARY}
|
||||
${SDL2_LIBRARY}
|
||||
${FREETYPE_LIBRARY}
|
||||
${OPENAL_LIBRARY}
|
||||
${MODPLUG_LIBRARY}
|
||||
${PHYSFS_LIBRARY}
|
||||
${THEORA_LIBRARY}
|
||||
${THEORADEC_LIBRARY}
|
||||
${VORBISFILE_LIBRARY}
|
||||
${LOVE_LUA_LIBRARY}
|
||||
)
|
||||
|
||||
if(LOVE_MPG123)
|
||||
find_package(MPG123 REQUIRED)
|
||||
set(LOVE_LINK_LIBRARIES
|
||||
${LOVE_LINK_LIBRARIES}
|
||||
${MPG123_LIBRARY}
|
||||
)
|
||||
endif()
|
||||
|
||||
if(LOVE_JIT)
|
||||
find_package(LuaJIT REQUIRED)
|
||||
set(LOVE_LUA_LIBRARY ${LUAJIT_LIBRARY})
|
||||
set(LOVE_LUA_INCLUDE_DIR ${LUAJIT_INCLUDE_DIR})
|
||||
else()
|
||||
find_package(Lua51 REQUIRED)
|
||||
set(LOVE_LUA_LIBRARY ${LUA_LIBRARY})
|
||||
set(LOVE_LUA_INCLUDE_DIR ${LUA_INCLUDE_DIR})
|
||||
endif()
|
||||
|
||||
set(LOVE_INCLUDE_DIRS
|
||||
${LOVE_INCLUDE_DIRS}
|
||||
${LOVE_LUA_INCLUDE_DIR}
|
||||
)
|
||||
set(LOVE_LINK_LIBRARIES
|
||||
${LOVE_LINK_LIBRARIES}
|
||||
${LOVE_LUA_LIBRARY}
|
||||
)
|
||||
|
||||
endif()
|
||||
|
||||
###
|
||||
### No Megasource-specific stuff beyond this point!
|
||||
###
|
||||
|
||||
if(MSVC)
|
||||
set(DISABLE_WARNING_FLAG -W0)
|
||||
else()
|
||||
set(DISABLE_WARNING_FLAG -w)
|
||||
endif()
|
||||
|
||||
function(disable_warnings ARG_TARGET)
|
||||
get_target_property(OLD_FLAGS ${ARG_TARGET} COMPILE_FLAGS)
|
||||
set(NEW_FLAGS -W0)
|
||||
set(NEW_FLAGS ${DISABLE_WARNING_FLAG})
|
||||
if(OLD_FLAGS)
|
||||
set(NEW_FLAGS "${OLD_FLAGS} ${NEW_FLAGS}")
|
||||
endif()
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
# Sets the following variables:
|
||||
#
|
||||
# LUAJIT_FOUND
|
||||
# LUAJIT_INCLUDE_DIR
|
||||
# LUAJIT_LIBRARY
|
||||
|
||||
set(LUAJIT_SEARCH_PATHS
|
||||
/usr/local
|
||||
/usr
|
||||
)
|
||||
|
||||
find_path(LUAJIT_INCLUDE_DIR
|
||||
NAMES luajit.h
|
||||
PATH_SUFFIXES include include/luajit-2.0
|
||||
PATHS ${LUAJIT_SEARCH_PATHS})
|
||||
|
||||
find_library(LUAJIT_LIBRARY
|
||||
NAMES luajit-5.1
|
||||
PATH_SUFFIXES lib
|
||||
PATHS ${LUAJIT_SEARCH_PATHS})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(LuaJIT DEFAULT_MSG LUAJIT_LIBRARY LUAJIT_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(LUAJIT_INCLUDE_DIR LUAJIT_LIBRARY)
|
||||
@@ -0,0 +1,25 @@
|
||||
# Sets the following variables:
|
||||
#
|
||||
# MPG123_FOUND
|
||||
# MPG123_INCLUDE_DIR
|
||||
# MPG123_LIBRARY
|
||||
|
||||
set(MPG123_SEARCH_PATHS
|
||||
/usr/local
|
||||
/usr
|
||||
)
|
||||
|
||||
find_path(MPG123_INCLUDE_DIR
|
||||
NAMES mpg123.h
|
||||
PATH_SUFFIXES include
|
||||
PATHS ${MPG123_SEARCH_PATHS})
|
||||
|
||||
find_library(MPG123_LIBRARY
|
||||
NAMES mpg123
|
||||
PATH_SUFFIXES lib
|
||||
PATHS ${MPG123_SEARCH_PATHS})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(MPG123 DEFAULT_MSG MPG123_LIBRARY MPG123_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(MPG123_INCLUDE_DIR MPG123_LIBRARY)
|
||||
@@ -0,0 +1,25 @@
|
||||
# Sets the following variables:
|
||||
#
|
||||
# MODPLUG_FOUND
|
||||
# MODPLUG_INCLUDE_DIR
|
||||
# MODPLUG_LIBRARY
|
||||
|
||||
set(MODPLUG_SEARCH_PATHS
|
||||
/usr/local
|
||||
/usr
|
||||
)
|
||||
|
||||
find_path(MODPLUG_INCLUDE_DIR
|
||||
NAMES libmodplug/modplug.h
|
||||
PATH_SUFFIXES include
|
||||
PATHS ${MODPLUG_SEARCH_PATHS})
|
||||
|
||||
find_library(MODPLUG_LIBRARY
|
||||
NAMES modplug
|
||||
PATH_SUFFIXES lib
|
||||
PATHS ${MODPLUG_SEARCH_PATHS})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(ModPlug DEFAULT_MSG MODPLUG_LIBRARY MODPLUG_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(MODPLUG_INCLUDE_DIR MODPLUG_LIBRARY)
|
||||
@@ -0,0 +1,25 @@
|
||||
# Sets the following variables:
|
||||
#
|
||||
# SDL2_FOUND
|
||||
# SDL2_INCLUDE_DIR
|
||||
# SDL2_LIBRARY
|
||||
|
||||
set(SDL2_SEARCH_PATHS
|
||||
/usr/local
|
||||
/usr
|
||||
)
|
||||
|
||||
find_path(SDL2_INCLUDE_DIR
|
||||
NAMES SDL.h
|
||||
PATH_SUFFIXES include include/SDL2
|
||||
PATHS ${SDL2_SEARCH_PATHS})
|
||||
|
||||
find_library(SDL2_LIBRARY
|
||||
NAMES SDL2
|
||||
PATH_SUFFIXES lib
|
||||
PATHS ${SDL2_SEARCH_PATHS})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(SDL2 DEFAULT_MSG SDL2_LIBRARY SDL2_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(SDL2_INCLUDE_DIR SDL2_LIBRARY)
|
||||
@@ -0,0 +1,31 @@
|
||||
# Sets the following variables:
|
||||
#
|
||||
# THEORA_FOUND
|
||||
# THEORA_INCLUDE_DIR
|
||||
# THEORA_LIBRARY
|
||||
# THEORADEC_LIBRARY
|
||||
|
||||
set(THEORA_SEARCH_PATHS
|
||||
/usr/local
|
||||
/usr
|
||||
)
|
||||
|
||||
find_path(THEORA_INCLUDE_DIR
|
||||
NAMES theora/codec.h
|
||||
PATH_SUFFIXES include
|
||||
PATHS ${THEORA_SEARCH_PATHS})
|
||||
|
||||
find_library(THEORA_LIBRARY
|
||||
NAMES theora
|
||||
PATH_SUFFIXES lib
|
||||
PATHS ${THEORA_SEARCH_PATHS})
|
||||
|
||||
find_library(THEORADEC_LIBRARY
|
||||
NAMES theoradec
|
||||
PATH_SUFFIXES lib
|
||||
PATHS ${THEORA_SEARCH_PATHS})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Theora DEFAULT_MSG THEORA_LIBRARY THEORA_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(THEORA_INCLUDE_DIR THEORA_LIBRARY)
|
||||
@@ -0,0 +1,30 @@
|
||||
# Sets the following variables:
|
||||
#
|
||||
# VORBIS_FOUND
|
||||
# VORBIS_INCLUDE_DIR
|
||||
# VORBIS_LIBRARY
|
||||
# VORBISFILE_LIBRARY
|
||||
|
||||
set(VORBIS_SEARCH_PATHS
|
||||
/usr/local
|
||||
/usr
|
||||
)
|
||||
|
||||
find_path(VORBIS_INCLUDE_DIR vorbis/vorbisfile.h
|
||||
PATH_SUFFIXES include
|
||||
PATHS ${VORBIS_SEARCH_PATHS})
|
||||
|
||||
find_library(VORBIS_LIBRARY
|
||||
NAMES vorbis
|
||||
PATH_SUFFIXES lib
|
||||
PATHS ${VORBIS_SEARCH_PATHS})
|
||||
|
||||
find_library(VORBISFILE_LIBRARY
|
||||
NAMES vorbisfile
|
||||
PATH_SUFFIXES lib
|
||||
PATHS ${VORBIS_SEARCH_PATHS})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Vorbis DEFAULT_MSG VORBIS_LIBRARY VORBISFILE_LIBRARY VORBIS_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(VORBIS_INCLUDE_DIR VORBIS_LIBRARY VORBISFILE_LIBRARY)
|
||||
Reference in New Issue
Block a user