Make CMake build functional on Linux.

At least on Ubuntu.
This commit is contained in:
rude
2016-07-14 18:07:20 +02:00
parent bf601470e1
commit 7922c44d27
7 changed files with 236 additions and 3 deletions
+75 -3
View File
@@ -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()
+25
View File
@@ -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)
+25
View File
@@ -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)
+25
View File
@@ -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)
+25
View File
@@ -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)
+31
View File
@@ -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)
+30
View File
@@ -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)