1set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -fPIC") 2set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -fPIC") 3set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -gdwarf") 4set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG") 5set(CMAKE_CXX_FLAGS_RELEASE "-O4 -DNDEBUG") 6set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -gdwarf") 7 8set(CMAKE_C_STANDARD 11) 9set(CMAKE_CXX_STANDARD 11) 10 11set(CMAKE_C_EXTENSIONS ON) 12set(CMAKE_CXX_EXTENSIONS ON) 13set(CMAKE_CXX_STANDARD_REQUIRED ON) 14 15if (ARCH STREQUAL "arm") 16 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mthumb -mthumb-interwork") 17 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mthumb -mthumb-interwork") 18endif() 19 20if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") 21 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11") 22 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") 23 execute_process( 24 COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) 25 if (NOT (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7)) 26 message(FATAL_ERROR "${PROJECT_NAME} requires g++ 4.7 or greater.") 27 endif () 28elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") 29 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") 30elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") 31 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /stdlib=libc++") 32else () 33 message(FATAL_ERROR "Your C++ compiler does not support C++11.") 34endif () 35 36# Workaround Compile Errors 37if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") 38 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-reorder -Wno-unused -Wno-misleading-indentation -Wno-format-truncation -fno-strict-aliasing -Wno-address-of-packed-member -Wno-psabi") 39 if(NOT ARCH STREQUAL "fpga") 40 add_compile_options(-fstack-protector-strong -D_FORTIFY_SOURCE=2) 41 endif() 42elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") 43 add_definitions(-D_CRT_SECURE_NO_WARNINGS) 44endif() 45 46if (RKAIQ_ENABLE_ASAN) 47 set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address") 48 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address") 49 set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address") 50 set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -fno-omit-frame-pointer -fsanitize=address") 51 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -fno-omit-frame-pointer -fsanitize=address") 52 set(CMAKE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_LINKER_FLAGS_RELWITHDEBINFO} -fno-omit-frame-pointer -fsanitize=address") 53endif() 54 55