created cmake makefile
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..057b45c
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,121 @@
+cmake_minimum_required(VERSION 2.6)
+project(capstone)
+
+set(VERSION_MAJOR 2)
+set(VERSION_MINOR 1)
+set(VERSION_PATCH 2)
+
+option(BUILD_STATIC "Build static library" ON)
+option(BUILD_TESTS "Build tests" ON)
+option(USE_DEFAULT_ALLOC "Use default memory allocation functions" ON)
+option(ARM_SUPPORT "ARM support" ON)
+option(ARM64_SUPPORT "ARM64 support" ON)
+option(MIPS_SUPPORT "MIPS support" ON)
+option(PPC_SUPPORT "PowerPC support" ON)
+option(X86_SUPPORT "x86 support" ON)
+
+if (USE_DEFAULT_ALLOC)
+ add_definitions(-DUSE_SYS_DYN_MEM)
+endif ()
+
+set(SOURCES
+ cs.c
+ MCInst.c
+ MCInstrDesc.c
+ MCRegisterInfo.c
+ SStream.c
+ utils.c
+ )
+
+set(TEST_SOURCES test.c test_detail.c)
+
+if (ARM_SUPPORT)
+ add_definitions(-DCAPSTONE_HAS_ARM)
+ set(SOURCES
+ ${SOURCES}
+ arch/ARM/ARMDisassembler.c
+ arch/ARM/ARMInstPrinter.c
+ arch/ARM/ARMMapping.c
+ arch/ARM/ARMModule.c
+ )
+ set(TEST_SOURCES ${TEST_SOURCES} test_arm.c)
+endif ()
+
+if (ARM64_SUPPORT)
+ add_definitions(-DCAPSTONE_HAS_ARM64)
+ set(SOURCES
+ ${SOURCES}
+ arch/AArch64/AArch64BaseInfo.c
+ arch/AArch64/AArch64Disassembler.c
+ arch/AArch64/AArch64InstPrinter.c
+ arch/AArch64/AArch64Mapping.c
+ arch/AArch64/AArch64Module.c
+ )
+ set(TEST_SOURCES ${TEST_SOURCES} test_arm64.c)
+endif ()
+
+if (MIPS_SUPPORT)
+ add_definitions(-DCAPSTONE_HAS_MIPS)
+ set(SOURCES
+ ${SOURCES}
+ arch/Mips/MipsDisassembler.c
+ arch/Mips/MipsInstPrinter.c
+ arch/Mips/MipsMapping.c
+ arch/Mips/MipsModule.c
+ )
+ set(TEST_SOURCES ${TEST_SOURCES} test_mips.c)
+endif ()
+
+if (PPC_SUPPORT)
+ add_definitions(-DCAPSTONE_HAS_POWERPC)
+ set(SOURCES
+ ${SOURCES}
+ arch/PowerPC/PPCDisassembler.c
+ arch/PowerPC/PPCInstPrinter.c
+ arch/PowerPC/PPCMapping.c
+ arch/PowerPC/PPCModule.c
+ )
+ set(TEST_SOURCES ${TEST_SOURCES} test_ppc.c)
+endif ()
+
+if (X86_SUPPORT)
+ add_definitions(-DCAPSTONE_HAS_X86)
+ set(SOURCES
+ ${SOURCES}
+ arch/X86/X86ATTInstPrinter.c
+ arch/X86/X86Disassembler.c
+ arch/X86/X86DisassemblerDecoder.c
+ arch/X86/X86IntelInstPrinter.c
+ arch/X86/X86Mapping.c
+ arch/X86/X86Module.c
+ )
+ set(TEST_SOURCES ${TEST_SOURCES} test_x86.c)
+endif ()
+
+include_directories("${PROJECT_SOURCE_DIR}/include")
+
+if (BUILD_STATIC)
+ add_library(capstone STATIC ${SOURCES})
+else ()
+ add_library(capstone SHARED ${SOURCES})
+endif ()
+set_target_properties(capstone PROPERTIES
+ VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
+ SOVERSION ${VERSION_MAJOR})
+
+if (BUILD_TESTS)
+ foreach (TSRC ${TEST_SOURCES})
+ STRING(REGEX REPLACE ".c$" "" TBIN ${TSRC})
+ add_executable(${TBIN} "tests/${TSRC}")
+ target_link_libraries(${TBIN} capstone)
+ endforeach ()
+endif ()
+
+set(INCLUDES arm64.h arm.h capstone.h mips.h ppc.h x86.h)
+foreach (INC ${INCLUDES})
+ install(FILES "include/${INC}" DESTINATION include/capstone)
+endforeach ()
+install(TARGETS capstone
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib)