this repo has no description
at develop 1.8 kB view raw
1set(CMAKE_CXX_STANDARD 11) 2 3option(USE_ADDRESS_SANITIZER "Use GCC Address Sanitizer" OFF) 4if(USE_ADDRESS_SANITIZER) 5 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer") 6 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address") 7endif() 8 9set(CMAKE_REQUIRED_QUIET $<NOT:${VERBOSE}>) 10 11include(CheckCXXCompilerFlag) 12 13set(SAFE_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") 14check_cxx_compiler_flag(-Werror HAS_WERROR) 15 16if(HAS_WERROR) 17 set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Werror") 18endif() 19 20check_cxx_source_compiles("int main(void) { static __thread int x; (void)x; return 0;}" HAS_ATTR_THREAD) 21 22if(NOT HAS_ATTR_THREAD) 23 check_cxx_source_compiles("int main(void) { __declspec(thread) static int x; (void)x; return 0;}" HAS_DECLSPEC_THREAD) 24endif() 25 26check_cxx_source_compiles("#include <cstdlib> 27int main(void) { long long int x = atoll(\"123\"); (void)x; }" HAS_ATOLL) 28check_cxx_source_compiles(" 29#include <stdio.h> 30#include <stdlib.h> 31#include <string.h> 32#include <errno.h> 33#include <libproc.h> 34#include <unistd.h> 35 36int main (int argc, char* argv[]) 37{ 38 pid_t pid = getpid(); 39 char path[PROC_PIDPATHINFO_MAXSIZE]; 40 (void) proc_pidpath (pid, path, sizeof(path)); 41 return 0; 42} 43" HAS_PIDPATH) 44 45check_cxx_source_compiles(" 46#include <windows.h> 47int main (int argc, char* argv[]) { 48 char path[MAX_PATH]; 49 (void) GetModuleFileName(NULL, path, MAX_PATH); 50 return 0; 51}" HAS_GETMODULEFILENAME) 52 53check_cxx_source_compiles(" 54#include <windows.h> 55int main (int argc, char* argv[]) { 56 (void) GetFileAttributes(NULL); 57 return 0; 58}" HAS_GETFILEATTRIBUTES) 59 60check_cxx_source_compiles(" 61#include <string.h> 62int main (int argc, char* argv[]) { 63 (void) memcpy_s(NULL,0,NULL,0); 64 return 0; 65}" HAS_MEMCPY_S)