Initial support for the CMake build system.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56419 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/cmake/modules/FindBison.cmake b/cmake/modules/FindBison.cmake
new file mode 100755
index 0000000..0320ae3
--- /dev/null
+++ b/cmake/modules/FindBison.cmake
@@ -0,0 +1,52 @@
+# - Try to find Bison
+# Once done this will define
+#
+#  BISON_FOUND - system has Bison
+#  BISON_EXECUTABLE - path of the bison executable
+#  BISON_VERSION - the version string, like "2.5.31"
+#
+
+MACRO(FIND_BISON)
+	FIND_PROGRAM(BISON_EXECUTABLE NAMES bison)
+
+	IF(BISON_EXECUTABLE)
+		SET(BISON_FOUND TRUE)
+
+		EXECUTE_PROCESS(COMMAND ${BISON_EXECUTABLE} --version
+			OUTPUT_VARIABLE _BISON_VERSION
+		)
+		string (REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" BISON_VERSION "${_bison_VERSION}")
+	ENDIF(BISON_EXECUTABLE)
+
+	IF(BISON_FOUND)
+	  IF(NOT Bison_FIND_QUIETLY)
+		MESSAGE(STATUS "Found Bison: ${BISON_EXECUTABLE}")
+	  ENDIF(NOT Bison_FIND_QUIETLY)
+	ELSE(BISON_FOUND)
+	  IF(Bison_FIND_REQUIRED)
+		MESSAGE(FATAL_ERROR "Could not find Bison")
+	  ENDIF(Bison_FIND_REQUIRED)
+	ENDIF(BISON_FOUND)
+ENDMACRO(FIND_BISON)
+
+MACRO(BISON_GENERATOR _PREFIX _Y_INPUT _H_OUTPUT _CPP_OUTPUT)
+	IF(BISON_EXECUTABLE)
+		GET_FILENAME_COMPONENT(_Y_DIR ${_Y_INPUT} PATH)
+		ADD_CUSTOM_COMMAND(
+			OUTPUT  ${_CPP_OUTPUT}
+			OUTPUT  ${_H_OUTPUT}
+			DEPENDS ${_Y_INPUT}
+			COMMAND ${BISON_EXECUTABLE}
+			ARGS
+				-p ${_PREFIX} -o"${_CPP_OUTPUT}"
+				--defines="${_H_OUTPUT}" ${_Y_INPUT}
+			WORKING_DIRECTORY ${_Y_DIR}
+		)
+		SET_SOURCE_FILES_PROPERTIES(
+			${_CPP_OUTPUT} ${_H_OUTPUT}
+			GENERATED
+		)
+	ELSE(BISON_EXECUTABLE)
+		MESSAGE(SEND_ERROR "Can't find bison program, and it's required")
+	ENDIF(BISON_EXECUTABLE)
+ENDMACRO(BISON_GENERATOR)