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)
