+find_program(LLVM_CONFIG NAMES llvm-config-3.5 llvm-config)
+
+if(LLVM_CONFIG)
+ execute_process(COMMAND ${LLVM_CONFIG} --version
+ OUTPUT_VARIABLE LLVM_VERSION)
+
+ if(((${LLVM_VERSION} VERSION_LESS 3.6.0)
+ AND (${LLVM_VERSION} VERSION_GREATER 3.5))
+ OR (${LLVM_VERSION} VERSION_EQUAL 3.5))
+
+ execute_process(COMMAND ${LLVM_CONFIG} --cxxflags
+ OUTPUT_VARIABLE LLVM_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
+ execute_process(COMMAND ${LLVM_CONFIG} --ldflags
+ OUTPUT_VARIABLE LLVM_LDFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
+ execute_process(COMMAND ${LLVM_CONFIG} --libs
+ OUTPUT_VARIABLE LLVM_LIBS OUTPUT_STRIP_TRAILING_WHITESPACE)
+ execute_process(COMMAND ${LLVM_CONFIG} --system-libs
+ OUTPUT_VARIABLE LLVM_SYSTEM_LIBS OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+ string(REPLACE -O2 "" LLVM_CFLAGS ${LLVM_CFLAGS})
+ string(REPLACE -fno-exceptions "" LLVM_CFLAGS ${LLVM_CFLAGS})
+ string(REPLACE -fno-rtti "" LLVM_CFLAGS ${LLVM_CFLAGS})
+ string(REPLACE -DNDEBUG "" LLVM_CFLAGS ${LLVM_CFLAGS})
+ string(REPLACE -I "-isystem" LLVM_CFLAGS ${LLVM_CFLAGS})
+
+ separate_arguments(LLVM_CFLAGS)
+ endif()
+endif()
+
+if(NOT DEFINED LLVM_CFLAGS)
+ message(SEND_ERROR "LLVM 3.5 required but not found")
+endif()
\ No newline at end of file