]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - Vc/cmake/AddCompilerFlag.cmake
Vc package added (version 0.6.79-dev)
[u/mrichter/AliRoot.git] / Vc / cmake / AddCompilerFlag.cmake
diff --git a/Vc/cmake/AddCompilerFlag.cmake b/Vc/cmake/AddCompilerFlag.cmake
new file mode 100644 (file)
index 0000000..30eb7e8
--- /dev/null
@@ -0,0 +1,46 @@
+get_filename_component(_currentDir "${CMAKE_CURRENT_LIST_FILE}" PATH)
+include("${_currentDir}/CheckCCompilerFlag.cmake")
+include("${_currentDir}/CheckCXXCompilerFlag.cmake")
+macro(AddCompilerFlag _flag)
+   string(REGEX REPLACE "[-+/:= ]" "_" _flag_esc "${_flag}")
+   check_c_compiler_flag("${_flag}" check_c_compiler_flag_${_flag_esc})
+   check_cxx_compiler_flag("${_flag}" check_cxx_compiler_flag_${_flag_esc})
+
+   set(_c_flags "CMAKE_C_FLAGS")
+   set(_cxx_flags "CMAKE_CXX_FLAGS")
+   if(${ARGC} EQUAL 2)
+      set(${ARGV1} "${check_cxx_compiler_flag_${_flag_esc}}")
+   elseif(${ARGC} GREATER 2)
+      set(state 0)
+      unset(_c_flags)
+      unset(_cxx_flags)
+      foreach(_arg ${ARGN})
+         if(_arg STREQUAL "C_FLAGS")
+            set(state 1)
+         elseif(_arg STREQUAL "CXX_FLAGS")
+            set(state 2)
+         elseif(_arg STREQUAL "C_RESULT")
+            set(state 3)
+         elseif(_arg STREQUAL "CXX_RESULT")
+            set(state 4)
+         elseif(state EQUAL 1)
+            set(_c_flags "${_arg}")
+         elseif(state EQUAL 2)
+            set(_cxx_flags "${_arg}")
+         elseif(state EQUAL 3)
+            set(${_arg} ${check_c_compiler_flag_${_flag_esc}})
+         elseif(state EQUAL 4)
+            set(${_arg} ${check_cxx_compiler_flag_${_flag_esc}})
+         else()
+            message(FATAL_ERROR "Syntax error for AddCompilerFlag")
+         endif()
+      endforeach()
+   endif()
+
+   if(check_c_compiler_flag_${_flag_esc} AND DEFINED _c_flags)
+      set(${_c_flags} "${${_c_flags}} ${_flag}")
+   endif()
+   if(check_cxx_compiler_flag_${_flag_esc} AND DEFINED _cxx_flags)
+      set(${_cxx_flags} "${${_cxx_flags}} ${_flag}")
+   endif()
+endmacro(AddCompilerFlag)