flac/cmake/UseSystemExtensions.cmake
2019-05-04 11:41:48 +10:00

82 lines
2.0 KiB
CMake

cmake_minimum_required(VERSION 3.12)
include(CheckCSourceCompiles)
check_c_source_compiles("
int main()
{
#ifndef _FORTIFY_SOURCE
return 0;
#else
this_is_an_error;
#endif
}"
DODEFINE_FORTIFY_SOURCE)
check_c_source_compiles("
#include <wchar.h>
mbstate_t x;
int main() { return 0; }"
HAVE_MBSTATE)
if(NOT HAVE_MBSTATE)
check_c_source_compiles("
#define _XOPEN_SOURCE 500
#include <wchar.h>
mbstate_t x;
int main() { return 0; }"
DODEFINE_XOPEN_SOURCE)
endif()
check_c_source_compiles("
#define __EXTENSIONS__ 1
#include <stdio.h>
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#ifdef STDC_HEADERS
# include <stdlib.h>
# include <stddef.h>
#else
# ifdef HAVE_STDLIB_H
# include <stdlib.h>
# endif
#endif
#ifdef HAVE_STRING_H
# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
# include <memory.h>
# endif
# include <string.h>
#endif
#ifdef HAVE_STRINGS_H
# include <strings.h>
#endif
#ifdef HAVE_INTTYPES_H
# include <inttypes.h>
#endif
#ifdef HAVE_STDINT_H
# include <stdint.h>
#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
int main() { return 0; }"
DODEFINE_EXTENSIONS)
add_compile_definitions(
_ALL_SOURCE
_DARWIN_C_SOURCE
_GNU_SOURCE
_POSIX_PTHREAD_SEMANTICS
__STDC_WANT_IEC_60559_ATTRIBS_EXT__
__STDC_WANT_IEC_60559_BFP_EXT__
__STDC_WANT_IEC_60559_DFP_EXT__
__STDC_WANT_IEC_60559_FUNCS_EXT__
__STDC_WANT_IEC_60559_TYPES_EXT__
__STDC_WANT_LIB_EXT2__
__STDC_WANT_MATH_SPEC_FUNCS__
_TANDEM_SOURCE
$<$<AND:$<BOOL:${DODEFINE_FORTIFY_SOURCE}>,$<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>>>:_FORTIFY_SOURCE=2>
$<$<BOOL:${DODEFINE_XOPEN_SOURCE}>:_XOPEN_SOURCE=500>
$<$<BOOL:${DODEFINE_EXTENTIONS}>:__EXTENSIONS__>)