1# Defines a series of preprocessor variables based on the current platform.
2#
3# Usage: define_platform_macros(PREFIX)
4#
5#  where PREFIX is the macro prefix (i.e., if PREFIX is XYZZY then the macros
6#  will be named XYZZY_LINUX, XYZZY_WINDOWS, etc.).
7#
8# Author:
9#   Kevin M. Godby <kevin@godby.org>
10#
11# Distributed under the Boost Software License, Version 1.0.
12# (See accompanying file LICENSE_1_0.txt or copy at
13# http://www.boost.org/LICENSE_1_0.txt)
14#
15
16function(_define_platform_macros_impl prefix platform_string variable_name)
17	if (${CMAKE_SYSTEM_NAME} MATCHES "${platform_string}")
18		string(TOUPPER "${prefix}_${variable_name}" _varname)
19		set(${_varname} TRUE PARENT_SCOPE)
20	endif()
21endfunction()
22
23macro(define_platform_macros _prefix)
24	_define_platform_macros_impl(${_prefix} "AIX" AIX)
25	_define_platform_macros_impl(${_prefix} "Android" ANDROID)
26	_define_platform_macros_impl(${_prefix} "BS/DOS" BSDOS)
27	_define_platform_macros_impl(${_prefix} "FreeBSD" FREEBSD)
28	_define_platform_macros_impl(${_prefix} "HP-UX" HPUX)
29	_define_platform_macros_impl(${_prefix} "IRIX" IRIX)
30	_define_platform_macros_impl(${_prefix} "Linux" LINUX)
31	_define_platform_macros_impl(${_prefix} "GNU/kFreeBSD" KFREEBSD)
32	_define_platform_macros_impl(${_prefix} "NetBSD" NETBSD)
33	_define_platform_macros_impl(${_prefix} "OpenBSD" OPENBSD)
34	_define_platform_macros_impl(${_prefix} "OFS1" OFS1)
35	_define_platform_macros_impl(${_prefix} "SCO_SV" SCO_SV)
36	_define_platform_macros_impl(${_prefix} "UnixWare" UNIXWARE)
37	_define_platform_macros_impl(${_prefix} "Xenix" XENIX)
38	_define_platform_macros_impl(${_prefix} "SunOS" SUNOS)
39	_define_platform_macros_impl(${_prefix} "Tru64" TRU64)
40	_define_platform_macros_impl(${_prefix} "ULTRIX" ULTRIX)
41	_define_platform_macros_impl(${_prefix} "CYGWIN" CYGWIN)
42	_define_platform_macros_impl(${_prefix} "Darwin" MACOSX)
43	_define_platform_macros_impl(${_prefix} "Windows" WINDOWS)
44endmacro()
45
46