Skip to content
Snippets Groups Projects
CMakeLists.txt 1.74 KiB
Newer Older
Eidolon's avatar
Eidolon committed
cmake_minimum_required(VERSION 3.0)
project(SRB2
	VERSION 2.1.14
	LANGUAGES C)
Eidolon's avatar
Eidolon committed

# Set up CMAKE path
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")

### Useful functions

# Prepend sources with current source directory
function(prepend_sources SOURCE_FILES)
	foreach(SOURCE_FILE ${${SOURCE_FILES}})
		set(MODIFIED ${MODIFIED} ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE_FILE})
	endforeach()
	set(${SOURCE_FILES} ${MODIFIED} PARENT_SCOPE)
endfunction()

Eidolon's avatar
Eidolon committed
# Macro to add OSX framework
macro(add_framework fwname appname)
	find_library(FRAMEWORK_${fwname}
    	NAMES ${fwname}
    	PATHS ${CMAKE_OSX_SYSROOT}/System/Library
    		${CMAKE_OSX_SYSROOT}/Library
    		/System/Library
    		/Library
    	PATH_SUFFIXES Frameworks
    	NO_DEFAULT_PATH)
    if( ${FRAMEWORK_${fwname}} STREQUAL FRAMEWORK_${fwname}-NOTFOUND)
        MESSAGE(ERROR ": Framework ${fwname} not found")
    else()
        TARGET_LINK_LIBRARIES(${appname} PRIVATE "${FRAMEWORK_${fwname}}/${fwname}")
        MESSAGE(STATUS "Framework ${fwname} found at ${FRAMEWORK_${fwname}}")
    endif()
endmacro()

Eidolon's avatar
Eidolon committed
# 64-bit check
if(${CMAKE_SIZEOF_VOID_P} EQUAL 8)
	message(STATUS "Target is 64-bit")
	set(SRB2_SYSTEM_BITS 64)
else()
	set(SRB2_SYSTEM_BITS 32)
endif()

if(MSVC)
	message(WARNING "!! MSVC BUILDS OF SRB2 CANNOT PLAY MULTIPLAYER !! You're more than welcome to try and fix this!")
Eidolon's avatar
Eidolon committed
endif()

# OS macros
if (UNIX)
	add_definitions(-DUNIXCOMMON)
endif()
Eidolon's avatar
Eidolon committed

Eidolon's avatar
Eidolon committed
if(${CMAKE_SYSTEM} MATCHES "Linux")
	add_definitions(-DLINUX)
	if(${SRB2_SYSTEM_BITS} EQUAL 64)
		add_definitions(-DLINUX64)
	endif()
endif()
Eidolon's avatar
Eidolon committed

if(${CMAKE_SYSTEM} MATCHES "Darwin")
	add_definitions(-DMACOSX)
	if(${CMAKE_C_COMPILER_ID} MATCHES "Clang")
		set(CLANG ON)
	endif()
endif()

Eidolon's avatar
Eidolon committed
# TODO support MacOSX builds

add_subdirectory(src/)