1 Star 0 Fork 1

aijle/allegro5

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
CMakeLists.txt 38.63 KB
一键复制 编辑 原始数据 按行查看 历史
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214
#
#
# TODO:
#
# - some documentation targets still missing
# - installing documentation
#
#-----------------------------------------------------------------------------#
#
# Build system setup
#
#-----------------------------------------------------------------------------#
# Set the project name.
# We use C++ in a few cases.
set(ALLEGRO_PROJECT_SUFFIX "" CACHE STRING "Project suffix")
set(ALLEGRO_PROJECT_NAME "ALLEGRO" CACHE STRING "Project default name")
project(${ALLEGRO_PROJECT_NAME}${ALLEGRO_PROJECT_SUFFIX} C CXX)
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
if(POLICY CMP0026)
cmake_policy(SET CMP0026 NEW)
endif()
if(POLICY CMP0072)
cmake_policy(SET CMP0072 NEW)
endif()
if(POLICY CMP0060)
cmake_policy(SET CMP0060 NEW)
endif()
endif(COMMAND cmake_policy)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel Profile."
FORCE)
endif()
# Restrict configuration types to the selected build type.
# Note: This needs to be done before the project command
set(CMAKE_CONFIGURATION_TYPES "${CMAKE_BUILD_TYPE}" CACHE INTERNAL "internal")
if(ANDROID)
option(WANT_ANDROID_LEGACY "Build for Android 4 (1.6)" OFF)
set(ANDROID_TARGET "android-12" CACHE STRING "What Android target to compile for.")
endif(ANDROID)
option(ALLEGRO_SDL "Build using the SDL backend (experimental)" OFF)
option(WANT_STATIC_RUNTIME "Whether or not to link the C and C++ runtimes statically (currently only implemented on Windows)" OFF)
set(ALLEGRO_VERSION 5.2.8)
string(REGEX MATCH "^[0-9]+[.][0-9]+" ALLEGRO_SOVERSION ${ALLEGRO_VERSION})
string(REPLACE "." "" ALLEGRO_DLL_SHORTVER ${ALLEGRO_SOVERSION})
# Search in the `cmake' directory for additional CMake modules.
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
# Search in `deps' directories for dependency files.
file(GLOB deps_subdirs
"${PROJECT_SOURCE_DIR}/deps"
"${PROJECT_SOURCE_DIR}/deps/*"
"${PROJECT_BINARY_DIR}/deps"
"${PROJECT_BINARY_DIR}/deps/*"
)
foreach(subdir ${deps_subdirs})
if(EXISTS "${subdir}/include" OR EXISTS "${subdir}/lib")
if(CMAKE_FIND_ROOT_PATH)
message(STATUS "Adding ${subdir} to CMAKE_FIND_ROOT_PATH")
list(APPEND CMAKE_FIND_ROOT_PATH "${subdir}")
else()
message(STATUS "Adding ${subdir} to CMAKE_PREFIX_PATH")
list(APPEND CMAKE_PREFIX_PATH "${subdir}")
endif()
endif()
endforeach(subdir)
# Search for C header files in these directories.
include_directories(
${PROJECT_SOURCE_DIR}/include
${PROJECT_BINARY_DIR}/include
)
# Put libraries into `lib'.
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
# Lists of all the source files.
include(FileList)
# Our own CMake macros and functions.
include(Common)
#-----------------------------------------------------------------------------#
#
# Build options
#
#-----------------------------------------------------------------------------#
if(NOT IPHONE)
option(SHARED "Build shared libraries" on)
set(BUILD_SHARED_LIBS ${SHARED}) # actual CMake variable
endif(NOT IPHONE)
# On some 64-bit platforms, libraries should be installed into `lib64'
# instead of `lib'. Set this to 64 to do that.
set(LIB_SUFFIX "" CACHE STRING "Suffix for 'lib' directories, e.g. '64'")
option(WANT_FRAMEWORKS "Want frameworks on Mac OS X" off)
option(WANT_EMBED
"Make frameworks embeddable in application bundles (Mac OS X)" on)
set(FRAMEWORK_INSTALL_PREFIX "/Library/Frameworks" CACHE STRING
"Directory in which to install Mac OS X frameworks")
option(PREFER_STATIC_DEPS "Whether to prefer static dependencies." off)
#
# Platforms and drivers.
#
option(WANT_X11 "X11 support" on)
option(WANT_X11_XF86VIDMODE "X11 XF86VidMode Extension support" on)
option(WANT_X11_XINERAMA "X11 Xinerama Extension support" on)
option(WANT_X11_XRANDR "X11 XRandR Extension support" on)
option(WANT_X11_XSCREENSAVER "X11 XScreenSaver Extension support" on)
option(WANT_D3D "Enable Direct3D graphics driver (Windows)" on)
option(WANT_D3D9EX "Enable Direct3D 9Ex extensions (Vista)" off)
option(WANT_OPENGL "Enable OpenGL graphics driver (Windows, X11, OS X))" on)
option(WANT_SHADERS_GL "Build GLSL shader support (OpenGL)" on)
option(WANT_SHADERS_D3D "Build HLSL shader support (Direct3D)" on)
set(GL_BUILD_TYPE "auto" CACHE STRING "OpenGL profile to build Allegro against")
set_property(CACHE GL_BUILD_TYPE PROPERTY STRINGS "auto;gl;gles1;gles2+")
set(GL_AUTO_BUILD_TYPE "gl")
option(WANT_GLES3 "Use GLES3-only features in a GLES2+ build" off)
#
# Addons.
#
option(WANT_FONT "Enable bitmap font add-on" on)
option(WANT_AUDIO "Enable allegro_audio engine" on)
option(WANT_IMAGE "Enable image load/save addon" on)
if (NOT IPHONE)
option(WANT_IMAGE_JPG "Enable JPEG support in image addon" on)
option(WANT_IMAGE_PNG "Enable PNG support in image addon" on)
option(WANT_IMAGE_FREEIMAGE "Enable FreeImage support in image addon" on)
endif (NOT IPHONE)
option(WANT_IMAGE_WEBP "Enable WebP support in image addon" on)
option(WANT_TTF "Enable TTF addon" on)
option(WANT_COLOR "Enable color addon" on)
option(WANT_MEMFILE "Enable memfile addon" on)
option(WANT_PHYSFS "Enable PhysicsFS addon" on)
option(WANT_PRIMITIVES "Enable primitives addon" on)
option(WANT_NATIVE_DIALOG "Enable native dialog addon" on)
option(WANT_VIDEO "Enable video player addon" on)
option(WANT_MONOLITH "Include all addons in the main library" off)
#
# Wrappers.
#
option(WANT_PYTHON_WRAPPER "Enable generation of the Python wrapper" off)
option(WANT_LUAJIT "Enable generation of the Luajit wrapper" off)
#
# Documentation.
#
option(WANT_DOCS "Generate documentation" on)
option(WANT_DOCS_HTML "Generate HTML documentation" on)
option(WANT_DOCS_MAN "Generate man pages" on)
option(WANT_DOCS_INFO "Generate Info document" off)
option(WANT_DOCS_PDF "Generate PDF document (requires pdflatex)" off)
option(WANT_DOCS_PDF_PAPER "Whether PDF output is destined for paper" off)
#
# For developers.
#
option(STRICT_WARN "Halt at warnings" off)
option(WANT_MUDFLAP "Enable gcc mudflap (requires gcc 4.0+)" off)
option(WANT_RELEASE_LOGGING "Enable logging even in release mode" on)
if(WANT_RELEASE_LOGGING)
set(ALLEGRO_CFG_RELEASE_LOGGING 1)
endif()
#
# Minor options.
#
if(NOT IPHONE)
option(WANT_ALLOW_SSE "Allow compiler to use SSE instructions (x86)" on)
endif(NOT IPHONE)
option(NO_FPU "No floating point unit" off)
option(WANT_DLL_TLS "Force use of DllMain for TLS (Windows)" off)
option(WANT_DEMO "Build demo programs" on)
option(WANT_EXAMPLES "Build example programs" on)
option(WANT_POPUP_EXAMPLES "Use popups instead of printf for fatal errors" on)
option(WANT_TESTS "Build test programs" on)
option(WANT_WAIT_EVENT_SLEEP "Use sleep instead of threads in al_wait_for_event (only useful for emscripten without web workers)" off)
if(WANT_WAIT_EVENT_SLEEP)
set(ALLEGRO_WAIT_EVENT_SLEEP 1)
endif()
#-----------------------------------------------------------------------------#
#
# Set up compilers
#
#-----------------------------------------------------------------------------#
include(CheckCSourceCompiles)
include(CheckCXXSourceCompiles)
if(CMAKE_COMPILER_IS_GNUCC)
set(COMPILER_GCC 1)
set(COMPILER_GCC_OR_CLANG 1)
endif()
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
set(COMPILER_GCC_OR_CLANG 1)
endif()
if(WIN32)
if(WANT_DLL_TLS AND SHARED)
set(ALLEGRO_CFG_DLL_TLS 1)
endif(WANT_DLL_TLS AND SHARED)
endif(WIN32)
if(MSVC)
set(COMPILER_MSVC 1)
set(ALLEGRO_MSVC 1)
# Guess VCINSTALLDIR from the value of CMAKE_C_COMPILER if it's not set.
# XXX CMAKE_C_COMPILER will often be simply "cl" so this won't work.
if("$ENV{VCINSTALLDIR}" STREQUAL "")
string(REGEX REPLACE "/bin/[^/]*$" "" VCINSTALLDIR "${CMAKE_C_COMPILER}")
message(STATUS "Guessed MSVC directory: ${VCINSTALLDIR}")
else("$ENV{VCINSTALLDIR}" STREQUAL "")
file(TO_CMAKE_PATH "$ENV{VCINSTALLDIR}" VCINSTALLDIR)
message(STATUS "Using VCINSTALLDIR: ${VCINSTALLDIR}")
endif("$ENV{VCINSTALLDIR}" STREQUAL "")
# Install in VCINSTALLDIR by default
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX ${VCINSTALLDIR}
CACHE PATH "Install path prefix, prepended onto install directories."
FORCE)
endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(EXECUTABLE_TYPE "WIN32")
endif(MSVC)
if(MINGW)
# For alplatf.h
set(ALLEGRO_MINGW32 1)
# Guess MINGDIR from the value of CMAKE_C_COMPILER if it's not set.
if("$ENV{MINGDIR}" STREQUAL "")
string(REGEX REPLACE "/bin/[^/]*$" "" MINGDIR "${CMAKE_C_COMPILER}")
message(STATUS "Guessed MinGW directory: ${MINGDIR}")
else("$ENV{MINGDIR}" STREQUAL "")
file(TO_CMAKE_PATH "$ENV{MINGDIR}" MINGDIR)
message(STATUS "Using MINGDIR: ${MINGDIR}")
endif("$ENV{MINGDIR}" STREQUAL "")
# Search in MINGDIR for headers and libraries.
if(CMAKE_FIND_ROOT_PATH)
list(APPEND CMAKE_FIND_ROOT_PATH "${MINGDIR}")
else()
list(APPEND CMAKE_PREFIX_PATH "${MINGDIR}")
endif()
# Install to MINGDIR
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX ${MINGDIR}
CACHE PATH "Install path prefix, prepended onto install directories."
FORCE)
endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
# Check for a common problem (at the time of writing).
run_c_compile_test("
#include <windows.h>
int main(void)
{
int x = DM_POSITION;
return 0;
}"
HAVE_DM_POSITION)
if(NOT HAVE_DM_POSITION)
message(FATAL_ERROR
"Missing DM_POSITION. Please update your MinGW "
"w32api package, delete CMakeCache.txt and try again.")
endif(NOT HAVE_DM_POSITION)
endif(MINGW)
if(UNIX AND NOT APPLE AND NOT ANDROID)
set(ALLEGRO_UNIX 1)
endif(UNIX AND NOT APPLE AND NOT ANDROID)
if(APPLE AND NOT IPHONE)
set(MACOSX 1)
endif(APPLE AND NOT IPHONE)
if(MACOSX)
set(ALLEGRO_MACOSX 1)
set(ALLEGRO_CFG_PTHREADS_TLS 1)
set(ALLEGRO_UNIX 0)
set(WANT_X11 off)
# This flag is required on some versions of Mac OS X to avoid linker
# problems with global variables which are not explicitly initialised.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-common")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-common")
endif(MACOSX)
if(IPHONE)
set(ALLEGRO_CFG_PTHREADS_TLS 1)
set(ALLEGRO_IPHONE 1)
set(ALLEGRO_UNIX 0)
set(ALLEGRO_LITTLE_ENDIAN 1)
set(WANT_X11 off)
set(GL_AUTO_BUILD_TYPE "gles2+")
set(WANT_GLES3 yes)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
set(CMAKE_EXE_LINKER_FLAGS "-framework CoreGraphics -framework QuartzCore -framework UIKit -framework Foundation -framework CoreFoundation -framework MobileCoreServices")
endif(IPHONE)
if(BORLAND)
set(ALLEGRO_BCC32 1)
endif(BORLAND)
if(ANDROID)
set(ALLEGRO_ANDROID 1)
set(ALLEGRO_CFG_PTHREADS_TLS 1)
set(WANT_X11 off)
set(GL_AUTO_BUILD_TYPE "gles2+")
endif(ANDROID)
if(ALLEGRO_RASPBERRYPI)
set(ALLEGRO_CFG_PTHREADS_TLS 1)
set(GL_AUTO_BUILD_TYPE "gles2+")
set(ALLEGRO_EXCLUDE_GLX 1)
endif(ALLEGRO_RASPBERRYPI)
if(EMSCRIPTEN)
set(GL_AUTO_BUILD_TYPE "gles2+")
set(ALLEGRO_LITTLE_ENDIAN 1)
if (NOT ALLEGRO_SDL)
message(FATAL_ERROR
"Emscripten support currently requires the SDL backend (set ALLEGRO_SDL)")
endif(NOT ALLEGRO_SDL)
endif()
if(ALLEGRO_SDL)
set(ALLEGRO_UNIX 0)
set(WANT_X11 off)
include(FindSDL2)
endif(ALLEGRO_SDL)
# Tell the compiler it can use SSE instructions on x86 architectures.
# If compatibility with Pentium 2's and below is required then the user
# should switch WANT_ALLOW_SSE off.
# Workaround for a possible bug in CMake. Even if we set this variable in
# the toolchain file when cross-compiling, as we should, it is empty.
if(NOT CMAKE_SYSTEM_PROCESSOR AND CMAKE_SYSTEM_NAME MATCHES "Windows")
set(CMAKE_SYSTEM_PROCESSOR i686)
endif()
if(CMAKE_SYSTEM_PROCESSOR MATCHES "i.86")
set(ARCH_X86 1)
endif()
# CMake reports "x86" on my Windows Vista machine
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86")
set(ARCH_X86 1)
endif()
if(ARCH_X86 AND WANT_ALLOW_SSE)
if(COMPILER_GCC_OR_CLANG)
message(STATUS "Allowing GCC/Clang to use SSE instructions")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse")
endif(COMPILER_GCC_OR_CLANG)
# Flags for other compilers should be added here.
if(COMPILER_MSVC)
message(STATUS "Allowing MSVC to use SSE instructions")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /arch:SSE")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE")
endif(COMPILER_MSVC)
endif()
#-----------------------------------------------------------------------------#
#
# Build types
#
#-----------------------------------------------------------------------------#
# Warnings.
if(COMPILER_GCC_OR_CLANG)
set(WFLAGS "-W -Wall -Wpointer-arith")
set(WFLAGS_C_ONLY "-Wmissing-declarations -Wstrict-prototypes")
if(ALLEGRO_UNIX)
# Unfortunately we can't use this flag when magic main is used,
# the mangled_main won't have a forward declaration.
set(WFLAGS_C_ONLY "${WFLAGS_C_ONLY} -Wmissing-prototypes")
endif(ALLEGRO_UNIX)
if(STRICT_WARN)
set(WFLAGS "${WFLAGS} -Werror")
endif()
endif()
if(COMPILER_MSVC)
set(WFLAGS "/W3 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE")
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
# Clang is more strict than MSVC's compiler here.
set(WFLAGS "${WFLAGS} -Wno-c++11-narrowing")
endif()
endif(COMPILER_MSVC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WFLAGS} ${WFLAGS_C_ONLY}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WFLAGS}")
if(WANT_MUDFLAP AND COMPILER_GCC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fmudflapth")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmudflapth")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fmudflapth -lmudflapth")
endif(WANT_MUDFLAP AND COMPILER_GCC)
# Debugging.
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUGMODE=1 -DD3D_DEBUG_INFO")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUGMODE=1 -DD3D_DEBUG_INFO")
# Profiling.
list(APPEND CMAKE_BUILD_CONFIGURATIONS Profile)
if(COMPILER_GCC_OR_CLANG)
set(CMAKE_C_FLAGS_PROFILE "-pg"
CACHE STRING "profiling flags")
set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_C_FLAGS_PROFILE}"
CACHE STRING "profiling flags")
set(CMAKE_EXE_LINKER_FLAGS_PROFILE "-pg"
CACHE STRING "profiling flags")
set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "-pg"
CACHE STRING "profiling flags")
mark_as_advanced(
CMAKE_C_FLAGS_PROFILE
CMAKE_CXX_FLAGS_PROFILE
CMAKE_EXE_LINKER_FLAGS_PROFILE
CMAKE_SHARED_LINKER_FLAGS_PROFILE
)
endif(COMPILER_GCC_OR_CLANG)
#-----------------------------------------------------------------------------#
#
# Begin tests
#
#-----------------------------------------------------------------------------#
include(CheckFunctionExists)
include(CheckIncludeFiles)
include(CheckLibraryExists)
include(CheckSymbolExists)
include(CheckTypeSize)
include(FindPkgConfig)
include(TestBigEndian)
if(NOT ALLEGRO_BIG_ENDIAN AND NOT ALLEGRO_LITTLE_ENDIAN)
test_big_endian(ALLEGRO_BIG_ENDIAN)
if(NOT ALLEGRO_BIG_ENDIAN)
set(ALLEGRO_LITTLE_ENDIAN 1)
endif(NOT ALLEGRO_BIG_ENDIAN)
endif(NOT ALLEGRO_BIG_ENDIAN AND NOT ALLEGRO_LITTLE_ENDIAN)
check_include_files(dirent.h ALLEGRO_HAVE_DIRENT_H)
check_include_files(inttypes.h ALLEGRO_HAVE_INTTYPES_H)
check_include_files(linux/input.h ALLEGRO_HAVE_LINUX_INPUT_H)
check_include_files(stdbool.h ALLEGRO_HAVE_STDBOOL_H)
check_include_files(stdint.h ALLEGRO_HAVE_STDINT_H)
check_include_files(sys/io.h ALLEGRO_HAVE_SYS_IO_H)
check_include_files(sys/stat.h ALLEGRO_HAVE_SYS_STAT_H)
check_include_files(sys/time.h ALLEGRO_HAVE_SYS_TIME_H)
check_include_files(time.h ALLEGRO_HAVE_TIME_H)
check_include_files(sys/utsname.h ALLEGRO_HAVE_SYS_UTSNAME_H)
check_include_files(sys/types.h ALLEGRO_HAVE_SYS_TYPES_H)
check_include_files(soundcard.h ALLEGRO_HAVE_SOUNDCARD_H)
check_include_files(sys/soundcard.h ALLEGRO_HAVE_SYS_SOUNDCARD_H)
check_include_files(machine/soundcard.h ALLEGRO_HAVE_MACHINE_SOUNDCARD_H)
check_include_files(linux/soundcard.h ALLEGRO_HAVE_LINUX_SOUNDCARD_H)
check_include_files(libkern/OSAtomic.h ALLEGRO_HAVE_OSATOMIC_H)
check_include_files(sys/inotify.h ALLEGRO_HAVE_SYS_INOTIFY_H)
check_include_files(sal.h ALLEGRO_HAVE_SAL_H)
check_function_exists(getexecname ALLEGRO_HAVE_GETEXECNAME)
check_function_exists(mkstemp ALLEGRO_HAVE_MKSTEMP)
check_function_exists(mmap ALLEGRO_HAVE_MMAP)
check_function_exists(mprotect ALLEGRO_HAVE_MPROTECT)
check_function_exists(sched_yield ALLEGRO_HAVE_SCHED_YIELD)
check_function_exists(sysconf ALLEGRO_HAVE_SYSCONF)
check_function_exists(fseeko ALLEGRO_HAVE_FSEEKO)
check_function_exists(ftello ALLEGRO_HAVE_FTELLO)
check_function_exists(strerror_r ALLEGRO_HAVE_STRERROR_R)
check_function_exists(strerror_s ALLEGRO_HAVE_STRERROR_S)
if(WIN32)
check_function_exists(_ftelli64 ALLEGRO_HAVE_FTELLI64)
check_function_exists(_fseeki64 ALLEGRO_HAVE_FSEEKI64)
endif()
check_type_size("_Bool" ALLEGRO_HAVE__BOOL)
run_c_compile_test("
#include <sys/procfs.h>
int main(void) {
struct prpsinfo psinfo;
psinfo.pr_argc = 0;
return 0;
}"
ALLEGRO_HAVE_PROCFS_ARGCV
)
run_c_compile_test("
#include <sys/procfs.h>
#include <sys/ioctl.h>
int main(void) {
struct prpsinfo psinfo;
ioctl(0, PIOCPSINFO, &psinfo);
return 0;
}"
ALLEGRO_HAVE_SV_PROCFS_H
)
run_c_compile_test("
#include <stdarg.h>
int main(void) {
va_list a, b;
va_copy(a, b);
return 0;
}"
ALLEGRO_HAVE_VA_COPY
)
#-----------------------------------------------------------------------------#
#
# Driver configuration
#
#-----------------------------------------------------------------------------#
#
# These are the conventions for this CMakeFile.
#
# The WANT_* variables indicate whether the user wants to have an optional
# feature enabled, i.e. whether they have selected something in the CMake UI.
#
# The CAN_* variables indicate whether a feature *can* be enabled on this
# system/platform. As these variable values are cached, CAN_ variables could
# be set even though the user has turned a corresponding WANT_* variable
# off---it might have been tested and set in a previous run.
#
# The SUPPORT_* variables are the conjunction of WANT_FEATURE and CAN_FEATURE,
# i.e. the user wants it and the system can support it.
#
# Those variables are internal to the CMake build. Allegro header files use
# preprocessor constants with names like ALLEGRO_WITH_* and ALLEGRO_HAVE_*.
# Sometimes we make use of those variables in this CMakeFile as well, but
# generally that's just due to sloppiness.
#
set(SPACER "===========================")
set(CONFIGURATION_SUMMARY "Configuration summary\n${SPACER}\n")
if(PREFER_STATIC_DEPS)
set(CMAKE_FIND_LIBRARY_SUFFIXES "${CMAKE_STATIC_LIBRARY_SUFFIX}"
"${CMAKE_SHARED_LIBRARY_SUFFIX}"
"${CMAKE_SHARED_MODULE_SUFFIX}")
endif()
set(OPENGL_SUMMARY "- OpenGL: NO")
if(WANT_OPENGL)
find_package(OpenGL)
if(GL_BUILD_TYPE MATCHES "auto")
set(GL_REAL_BUILD_TYPE ${GL_AUTO_BUILD_TYPE})
else()
set(GL_REAL_BUILD_TYPE ${GL_BUILD_TYPE})
endif()
if(GL_REAL_BUILD_TYPE MATCHES "gl$")
if(OPENGL_FOUND AND OPENGL_GLU_FOUND)
set(SUPPORT_OPENGL 1)
set(ALLEGRO_CFG_OPENGL 1)
set(ALLEGRO_CFG_OPENGL_FIXED_FUNCTION 1)
# We assume that the OpenGL library is not very old.
set(ALLEGRO_CFG_OPENGL_PROGRAMMABLE_PIPELINE 1)
if(OPENGL_opengl_LIBRARY) # prefer GLVND if available
set(OPENGL_LIBRARIES ${OPENGL_opengl_LIBRARY} ${OPENGL_glu_LIBRARY})
endif()
include_directories(SYSTEM ${OPENGL_INCLUDE_DIR})
set(OPENGL_SUMMARY "- OpenGL: Desktop")
else(OPENGL_FOUND)
if(GL_BUILD_TYPE MATCHES "auto")
set(GL_REAL_BUILD_TYPE "gles2+")
endif()
endif()
endif()
if(GL_REAL_BUILD_TYPE MATCHES "gles2")
# on cmake 2.8.1 OpenGL ES is not found in the iphone case
# XXX incorporate IPHONE case into FindOpenGLES/2
if(IPHONE)
set(OPENGLES2_FOUND 1)
set(OPENGLES2_LIBRARIES "-framework OpenGLES")
elseif(EMSCRIPTEN)
set(OPENGLES2_FOUND 1)
else()
find_package(OpenGLES2)
endif()
if(OPENGLES2_FOUND)
set(SUPPORT_OPENGL 1)
set(SUPPORT_OPENGLES 1)
set(SUPPORT_OPENGLES2 1)
set(ALLEGRO_CFG_OPENGL 1)
set(ALLEGRO_CFG_OPENGLES 1)
set(ALLEGRO_CFG_OPENGLES2 1)
if(WANT_GLES3)
set(SUPPORT_OPENGLES3 1)
set(ALLEGRO_CFG_OPENGLES3 1)
set(OPENGL_SUMMARY "- OpenGL: ES 3.0")
else(WANT_GLES3)
set(OPENGL_SUMMARY "- OpenGL: ES 2.0")
endif(WANT_GLES3)
set(ALLEGRO_CFG_OPENGL_PROGRAMMABLE_PIPELINE 1)
set(OPENGL_LIBRARIES "${OPENGLES2_LIBRARIES}")
if(NOT IPHONE)
include_directories(SYSTEM ${OPENGLES2_INCLUDE_DIR})
endif()
else(OPENGLES2_FOUND)
if(GL_BUILD_TYPE MATCHES "auto")
set(GL_REAL_BUILD_TYPE "gles1")
endif()
endif(OPENGLES2_FOUND)
endif()
if(GL_REAL_BUILD_TYPE MATCHES "gles1")
# on cmake 2.8.1 OpenGL ES is not found in the iphone case
# XXX incorporate IPHONE case into FindOpenGLES/2
if(IPHONE)
set(OPENGLES1_FOUND 1)
set(OPENGLES1_LIBRARIES "-framework OpenGLES")
else()
find_package(OpenGLES1)
endif()
if(OPENGLES1_FOUND)
set(SUPPORT_OPENGL 1)
set(SUPPORT_OPENGLES 1)
set(SUPPORT_OPENGLES1 1)
set(ALLEGRO_CFG_OPENGL 1)
set(ALLEGRO_CFG_OPENGLES 1)
set(ALLEGRO_CFG_OPENGLES1 1)
set(ALLEGRO_CFG_OPENGL_FIXED_FUNCTION 1)
set(OPENGL_SUMMARY "- OpenGL: ES 1.1")
set(OPENGL_LIBRARIES ${OPENGLES1_LIBRARIES})
if(NOT IPHONE)
include_directories(SYSTEM ${OPENGLES1_INCLUDE_DIR})
endif()
endif(OPENGLES1_FOUND)
endif()
endif(WANT_OPENGL)
set(CONFIGURATION_SUMMARY "${CONFIGURATION_SUMMARY}${OPENGL_SUMMARY}\n")
#
# Unix-specific
#
if(UNIX) # includes MACOSX
if(NOT IPHONE AND NOT ANDROID)
find_package(Threads)
if(NOT CMAKE_USE_PTHREADS_INIT)
message(FATAL_ERROR
"Unix port requires pthreads support, not detected.")
endif(NOT CMAKE_USE_PTHREADS_INIT)
endif()
endif(UNIX)
#
# SDL
#
if(ALLEGRO_SDL AND NOT SUPPORT_OPENGL)
message(FATAL_ERROR "SDL support currently requires OpenGL or OpenGL ES support.")
endif(ALLEGRO_SDL AND NOT SUPPORT_OPENGL)
#
# X Window System
#
if(WANT_X11)
find_package(X11)
if(X11_FOUND)
set(SUPPORT_X11 1)
set(ALLEGRO_WITH_XWINDOWS 1)
endif(X11_FOUND)
endif(WANT_X11)
if(ALLEGRO_UNIX AND NOT SUPPORT_X11 AND WANT_X11) # not MACOSX
message(FATAL_ERROR
"X11 not found. You may need to install X11 development libraries.")
endif(ALLEGRO_UNIX AND NOT SUPPORT_X11 AND WANT_X11)
if(SUPPORT_X11 AND NOT SUPPORT_OPENGL)
message(FATAL_ERROR "X11 support currently requires OpenGL or OpenGL ES support.")
endif(SUPPORT_X11 AND NOT SUPPORT_OPENGL)
if(SUPPORT_X11)
set(CMAKE_REQUIRED_LIBRARIES ${X11_LIBRARIES})
if (OpenGL_GLX_FOUND)
set(OPENGL_LIBRARIES "${OPENGL_LIBRARIES}" "${OPENGL_glx_LIBRARY}")
endif()
if (NOT OPENGL_LIBRARIES MATCHES "(libGL\\.|libGLX\\.)" AND NOT ALLEGRO_EXCLUDE_GLX)
message(FATAL_ERROR "X11 support currently requires GLX (set OPENGL_glx_LIBRARY and OpenGL_GLX_FOUND).")
endif()
check_library_exists(Xcursor XcursorImageCreate "" CAN_XCURSOR)
if(CAN_XCURSOR)
set(ALLEGRO_XWINDOWS_WITH_XCURSOR 1)
find_library(XCURSOR_LIB "Xcursor")
list(APPEND X11_LIBRARIES "${XCURSOR_LIB}")
else(CAN_XCURSOR)
message(FATAL_ERROR "X11 support requires Xcursor library.")
endif(CAN_XCURSOR)
check_library_exists(Xpm XpmCreatePixmapFromData "" CAN_XPM)
if(CAN_XPM)
set(ALLEGRO_XWINDOWS_WITH_XPM 1)
find_library(XPM_LIB "Xpm")
list(APPEND X11_LIBRARIES "${XPM_LIB}")
endif(CAN_XPM)
check_include_file("X11/extensions/XInput2.h" CAN_XINPUT2)
run_c_compile_test("
#include <X11/extensions/XInput2.h>
int main(void) { (void)XI_TouchBegin; return 0; }"
XINPUT2_COMPILES
)
if(CAN_XINPUT2 AND XINPUT2_COMPILES)
list(APPEND X11_LIBRARIES "Xi")
set(ALLEGRO_XWINDOWS_WITH_XINPUT2 1)
else()
message("XInput2 library version 2.2 or higher not found, disabling touch support.")
endif()
if(WANT_X11_XF86VIDMODE)
check_include_file("X11/extensions/xf86vmode.h" HAVE_XF86VIDMODE_H)
check_library_exists(Xxf86vm XF86VidModeQueryExtension "" CAN_XF86VIDMODE)
if(CAN_XF86VIDMODE AND HAVE_XF86VIDMODE_H)
set(ALLEGRO_XWINDOWS_WITH_XF86VIDMODE 1)
list(APPEND X11_LIBRARIES "Xxf86vm")
endif()
endif(WANT_X11_XF86VIDMODE)
if(WANT_X11_XINERAMA)
check_include_file("X11/extensions/Xinerama.h" HAVE_XINERAMA_H)
check_library_exists(Xinerama XineramaQueryExtension "" CAN_XINERAMA)
if(CAN_XINERAMA AND HAVE_XINERAMA_H)
set(ALLEGRO_XWINDOWS_WITH_XINERAMA 1)
find_library(XINERAMA_LIB "Xinerama")
list(APPEND X11_LIBRARIES "${XINERAMA_LIB}")
endif()
endif(WANT_X11_XINERAMA)
if(WANT_X11_XRANDR)
check_include_file("X11/extensions/Xrandr.h" HAVE_XRANDR_H)
check_library_exists(Xrandr XRRQueryExtension "" CAN_XRANDR)
if(CAN_XRANDR AND HAVE_XRANDR_H)
set(ALLEGRO_XWINDOWS_WITH_XRANDR 1)
find_library(XRANDR_LIB "Xrandr")
list(APPEND X11_LIBRARIES "${XRANDR_LIB}")
endif()
endif(WANT_X11_XRANDR)
if(WANT_X11_XSCREENSAVER)
check_include_file("X11/extensions/scrnsaver.h" HAVE_XSCREENSAVER_H)
check_library_exists(Xss XScreenSaverQueryExtension "" CAN_XSCREENSAVER)
if(CAN_XSCREENSAVER AND HAVE_XSCREENSAVER_H)
set(ALLEGRO_XWINDOWS_WITH_XSCREENSAVER 1)
find_library(XSCREENSAVER_LIB "Xss")
list(APPEND X11_LIBRARIES "${XSCREENSAVER_LIB}")
endif()
endif(WANT_X11_XSCREENSAVER)
if(NOT ALLEGRO_RASPBERRYPI)
check_library_exists(X11 XOpenIM "" CAN_XIM)
if(CAN_XIM)
set(ALLEGRO_XWINDOWS_WITH_XIM 1)
endif(CAN_XIM)
endif(NOT ALLEGRO_RASPBERRYPI)
set(CMAKE_REQUIRED_LIBRARIES)
endif(SUPPORT_X11)
#
# Windows
#
if(WIN32)
find_package(DirectX)
if(DINPUT_FOUND)
# At least some copies of dinput.h redefine some types multiple times.
# We must add the directory as a system directory so that the compiler
# will suppress such errors.
include_directories(${DINPUT_INCLUDE_DIR})
else(DINPUT_FOUND)
message(FATAL_ERROR
"Windows port requires DirectInput (not found).")
endif(DINPUT_FOUND)
# Xinput support for xbox compatible controllers.
if(XINPUT_FOUND)
set(SUPPORT_XINPUT 1)
set(ALLEGRO_CFG_XINPUT 1)
endif(XINPUT_FOUND)
if(WANT_D3D)
if(D3D9_FOUND)
set(SUPPORT_D3D 1)
set(ALLEGRO_CFG_D3D 1)
endif(D3D9_FOUND)
endif(WANT_D3D)
if(SUPPORT_D3D)
if(D3DX9_FOUND)
include_directories(BEFORE ${D3DX9_INCLUDE_DIR})
set(ALLEGRO_CFG_D3DX9 1)
else()
message("D3DX9 not found. You will not be able to compress or "
"decompress textures on the GPU.")
endif()
endif(SUPPORT_D3D)
if(WANT_D3D9EX AND SUPPORT_D3D)
set(ALLEGRO_CFG_D3D9EX 1)
endif(WANT_D3D9EX AND SUPPORT_D3D)
endif(WIN32)
#-----------------------------------------------------------------------------#
#
# Main library
#
#-----------------------------------------------------------------------------#
if(WIN32 AND SHARED)
if(NOT SUPPORT_D3D OR NOT SUPPORT_OPENGL)
message("WARNING: "
"Both D3D and OpenGL should be present for the SHARED build "
" to ensure maximum DLL compatibility.")
endif(NOT SUPPORT_D3D OR NOT SUPPORT_OPENGL)
endif(WIN32 AND SHARED)
# List of source files need to compile Allegro in this configuration on
# this platform.
set(LIBRARY_SOURCES
${ALLEGRO_SRC_FILES}
)
# Libraries that we always need to link against on this platform.
set(PLATFORM_LIBS)
if(ALLEGRO_UNIX) # not MACOSX
list(APPEND LIBRARY_SOURCES ${ALLEGRO_SRC_UNIX_FILES})
list(APPEND PLATFORM_LIBS m ${CMAKE_THREAD_LIBS_INIT})
endif(ALLEGRO_UNIX)
if(SUPPORT_X11 AND NOT ALLEGRO_RASPBERRYPI)
list(APPEND LIBRARY_SOURCES ${ALLEGRO_SRC_X_FILES})
list(APPEND PLATFORM_LIBS ${X11_LIBRARIES})
endif(SUPPORT_X11 AND NOT ALLEGRO_RASPBERRYPI)
if(WIN32)
list(APPEND LIBRARY_SOURCES ${ALLEGRO_SRC_WIN_FILES})
list(APPEND PLATFORM_LIBS
user32 gdi32 comdlg32 ole32 winmm kernel32 psapi shlwapi
)
if(SUPPORT_D3D)
list(APPEND LIBRARY_SOURCES ${ALLEGRO_SRC_D3D_FILES})
list(APPEND PLATFORM_LIBS ${D3D9_LIBRARIES})
endif(SUPPORT_D3D)
list(APPEND PLATFORM_LIBS ${DINPUT_LIBRARIES})
if(MINGW AND NOT SHARED)
list(APPEND PLATFORM_LIBS stdc++)
endif(MINGW AND NOT SHARED)
endif(WIN32)
if(MACOSX)
list(APPEND LIBRARY_SOURCES ${ALLEGRO_SRC_MACOSX_FILES})
find_library(APPKIT_LIBRARY AppKit)
find_library(IOKIT_LIBRARY IOKit)
find_library(COREVIDEO_LIBRARY CoreVideo)
list(APPEND PLATFORM_LIBS ${APPKIT_LIBRARY})
list(APPEND PLATFORM_LIBS ${IOKIT_LIBRARY})
list(APPEND PLATFORM_LIBS ${COREVIDEO_LIBRARY})
endif(MACOSX)
if(IPHONE)
list(APPEND LIBRARY_SOURCES ${ALLEGRO_SRC_IPHONE_FILES})
endif(IPHONE)
if(ANDROID)
list(APPEND LIBRARY_SOURCES ${ALLEGRO_SRC_ANDROID_FILES})
list(APPEND PLATFORM_LIBS m log)
endif(ANDROID)
if(ALLEGRO_RASPBERRYPI)
list(APPEND LIBRARY_SOURCES ${ALLEGRO_SRC_RASPBERRYPI_FILES})
list(APPEND PLATFORM_LIBS ${X11_LIBRARIES})
endif(ALLEGRO_RASPBERRYPI)
if(SUPPORT_OPENGL)
list(APPEND LIBRARY_SOURCES ${ALLEGRO_SRC_OPENGL_FILES})
if(WIN32)
list(APPEND LIBRARY_SOURCES ${ALLEGRO_SRC_WGL_FILES})
endif(WIN32)
list(APPEND PLATFORM_LIBS ${OPENGL_LIBRARIES})
endif(SUPPORT_OPENGL)
if(SUPPORT_OPENGL AND WANT_SHADERS_GL AND NOT ALLEGRO_CFG_OPENGLES1)
set(ALLEGRO_CFG_SHADER_GLSL 1)
endif()
if(SUPPORT_D3D AND WANT_SHADERS_D3D AND D3DX9_FOUND)
set(ALLEGRO_CFG_SHADER_HLSL 1)
endif()
# Header files that we need to install.
set(ALLEGRO_PUBLIC_HEADERS
${ALLEGRO_INCLUDE_ALLEGRO_FILES}
${ALLEGRO_INCLUDE_ALLEGRO_INLINE_FILES}
${ALLEGRO_INCLUDE_ALLEGRO_INTERNAL_FILES}
${ALLEGRO_INCLUDE_ALLEGRO_PLATFORM_FILES}
)
if(WIN32)
list(APPEND ALLEGRO_PUBLIC_HEADERS
${ALLEGRO_INCLUDE_ALLEGRO_WINDOWS_FILES}
)
endif(WIN32)
if(MACOSX)
list(APPEND ALLEGRO_PUBLIC_HEADERS
${ALLEGRO_INCLUDE_ALLEGRO_MACOSX_FILES}
)
endif(MACOSX)
if(IPHONE)
list(APPEND ALLEGRO_PUBLIC_HEADERS
${ALLEGRO_INCLUDE_ALLEGRO_IPHONE_FILES}
)
endif(IPHONE)
if(SUPPORT_X11 AND NOT ALLEGRO_RASPBERRYPI)
list(APPEND ALLEGRO_PUBLIC_HEADERS
${ALLEGRO_INCLUDE_ALLEGRO_X_FILES}
)
endif(SUPPORT_X11 AND NOT ALLEGRO_RASPBERRYPI)
if(ANDROID)
list(APPEND ALLEGRO_PUBLIC_HEADERS ${ALLEGRO_INCLUDE_ALLEGRO_ANDROID_FILES})
endif(ANDROID)
if(SUPPORT_OPENGL)
list(APPEND ALLEGRO_PUBLIC_HEADERS
${ALLEGRO_INCLUDE_ALLEGRO_OPENGL_FILES}
${ALLEGRO_INCLUDE_ALLEGRO_OPENGL_GLEXT_FILES}
)
endif(SUPPORT_OPENGL)
foreach(genfile ${ALLEGRO_INCLUDE_ALLEGRO_PLATFORM_FILES_GENERATED})
list(APPEND ALLEGRO_PUBLIC_HEADERS
${CMAKE_CURRENT_BINARY_DIR}/${genfile}
)
endforeach(genfile)
if(ALLEGRO_SDL)
list(APPEND LIBRARY_SOURCES ${ALLEGRO_SRC_SDL_FILES})
list(APPEND PLATFORM_LIBS ${SDL2_LIBRARY} m)
include_directories(${SDL2_INCLUDE_DIR})
endif(ALLEGRO_SDL)
set_our_header_properties(${ALLEGRO_PUBLIC_HEADERS})
if(NOT WANT_MONOLITH)
# ALLEGRO_LIB_BUILD is defined for all Allegro sources (core and addon)
# ALLEGRO_SRC is defined only while compiling the core sources (its use is
# to get the DLL #defines right under Windows for creating DLL export
# functions when it is defined or import DLL functions when it is not).
add_our_library(allegro
Allegro-${ALLEGRO_SOVERSION}
"${LIBRARY_SOURCES};${ALLEGRO_PUBLIC_HEADERS}"
"${LIBRARY_CFLAGS} -DALLEGRO_SRC"
"${PLATFORM_LIBS}"
)
endif(NOT WANT_MONOLITH)
# Addons and examples should link with this target.
set(ALLEGRO_LINK_WITH allegro)
install_our_headers(${ALLEGRO_PUBLIC_HEADERS})
#-----------------------------------------------------------------------------#
#
# Add-ons
#
#-----------------------------------------------------------------------------#
set(MONOLITH_SOURCES ${LIBRARY_SOURCES})
add_subdirectory(addons)
if(WANT_MONOLITH)
include_directories(${MONOLITH_INCLUDE_DIRECTORIES})
# For OSX, we need to set the header location inside the framework for each
# file (relative to the current directory, so for example when the
# AllegroImage framework is built we need to set the path for
# allegro5/allegro_image.h but when the AllegroMonolith framework is built
# we need to set the path for addons/image/allegro5/allegro_image.h -
# otherwise the header is silently missing).
set_our_header_properties(${MONOLITH_HEADERS})
link_directories(${MONOLITH_LINK_DIRECTORIES})
add_our_library(allegro_monolith
AllegroMonolith-${ALLEGRO_SOVERSION}
"${MONOLITH_SOURCES};${ALLEGRO_PUBLIC_HEADERS}"
"${LIBRARY_CFLAGS} -DALLEGRO_SRC ${MONOLITH_DEFINES}"
"${PLATFORM_LIBS};${MONOLITH_LIBRARIES}"
)
set(ALLEGRO_MONOLITH_LINK_WITH allegro_monolith)
endif(WANT_MONOLITH)
#-----------------------------------------------------------------------------#
#
# Produce configuration file
#
#-----------------------------------------------------------------------------#
if(NO_FPU)
set(ALLEGRO_CFG_NO_FPU 1)
endif(NO_FPU)
# All relevant variables must be set before here.
configure_file(
include/allegro5/platform/alplatf.h.cmake
${PROJECT_BINARY_DIR}/include/allegro5/platform/alplatf.h
)
#-----------------------------------------------------------------------------#
#
# Android
#
#-----------------------------------------------------------------------------#
if(ANDROID)
include(AndroidApp)
add_subdirectory(android)
endif(ANDROID)
#-----------------------------------------------------------------------------#
#
# Demo
#
#-----------------------------------------------------------------------------#
if(NOT MSVC80 AND WANT_DEMO) # XXX disabled because it breaks MSVC's intellisense for some reason
add_subdirectory(demos/cosmic_protector)
add_subdirectory(demos/speed)
add_subdirectory(demos/skater)
add_subdirectory(demos/shooter)
endif(NOT MSVC80 AND WANT_DEMO)
#-----------------------------------------------------------------------------#
#
# Examples
#
#-----------------------------------------------------------------------------#
if(WANT_EXAMPLES)
add_subdirectory(examples)
endif(WANT_EXAMPLES)
#-----------------------------------------------------------------------------#
#
# Tests
#
#-----------------------------------------------------------------------------#
if(WANT_TESTS)
add_subdirectory(tests)
endif(WANT_TESTS)
#-----------------------------------------------------------------------------#
#
# contrib/Luajit
#
#-----------------------------------------------------------------------------#
if(WANT_LUAJIT)
add_subdirectory(contrib/luajit)
endif(WANT_LUAJIT)
#-----------------------------------------------------------------------------#
#
# pkg-config files
#
#-----------------------------------------------------------------------------#
set(prefix "${CMAKE_INSTALL_PREFIX}")
set(INCLUDE_PREFIX "\${prefix}")
# XXX these should be configurable separately
set(bindir "\${exec_prefix}/bin")
set(includedir "\${prefix}/include")
set(libdir "\${exec_prefix}/lib${LIB_SUFFIX}")
if(WANT_MONOLITH)
set(PKG_CONFIG_FILES allegro_monolith)
else()
set(PKG_CONFIG_FILES allegro ${ADDON_PKG_CONFIG_FILES})
endif(WANT_MONOLITH)
# Install pkg-config files on Unix, and when cross-compiling on Unix.
if(UNIX AND NOT WANT_FRAMEWORKS AND NOT IPHONE)
set(INSTALL_PKG_CONFIG_FILES true)
endif()
if(CMAKE_CROSSCOMPILING AND CMAKE_HOST_UNIX)
set(INSTALL_PKG_CONFIG_FILES true)
endif()
if(INSTALL_PKG_CONFIG_FILES)
append_lib_type_suffix(lib_type)
append_lib_linkage_suffix(lib_linkage)
# Our pkg-config files are now named allegro*-5.pc, which will
# work across branches. Allegro 5.0.8 and prior used the names
# allegro*-5.0.pc so on the 5.0 branch we will continue to install
# those files, for backwards compatibility.
foreach(versuffix 5)
foreach(name ${PKG_CONFIG_FILES})
if (SHARED)
set(outname ${name}${lib_type}-${versuffix}.pc)
else (SHARED)
# For static linking: get extra libraries to link with.
get_target_property(link_with ${name} static_link_with)
set(outname ${name}${lib_type}-static-${versuffix}.pc)
endif (SHARED)
configure_file(
misc/${name}.pc.in
${LIBRARY_OUTPUT_PATH}/pkgconfig/${outname}
@ONLY
)
install(FILES ${LIBRARY_OUTPUT_PATH}/pkgconfig/${outname}
DESTINATION "lib${LIB_SUFFIX}/pkgconfig"
)
endforeach(name)
endforeach(versuffix)
endif(INSTALL_PKG_CONFIG_FILES)
#-----------------------------------------------------------------------------#
#
# Documentation
#
#-----------------------------------------------------------------------------#
if(WANT_DOCS)
add_subdirectory(docs)
endif(WANT_DOCS)
#-----------------------------------------------------------------------------#
#
# Wrappers
#
#-----------------------------------------------------------------------------#
if(WANT_PYTHON_WRAPPER)
add_subdirectory(python)
endif(WANT_PYTHON_WRAPPER)
#-----------------------------------------------------------------------------#
#
# Configuration summary
#
#-----------------------------------------------------------------------------#
# Output a report string showing what features are supported.
message(NOTICE "${SPACER}\n${CONFIGURATION_SUMMARY}${SPACER}\n")
#-----------------------------------------------------------------------------#
# vim: set sts=4 sw=4 et:
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/aijle_admin/allegro5.git
git@gitee.com:aijle_admin/allegro5.git
aijle_admin
allegro5
allegro5
master

搜索帮助