diff --git a/Android.mk b/Android.mk
index 3be3462..7b42d10 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,531 +1,5 @@
 LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
 
-LOCAL_SRC_FILES :=                     	\
-       tools/intel_reg_write.c         	\
-       lib/intel_pci.c 			\
-       lib/intel_gpu_tools.h         	\
-       tools/intel_reg.h               	\
-       lib/intel_batchbuffer.h       	\
-       lib/intel_batchbuffer.c       	\
-	lib/intel_reg_map.c 		\
-       lib/intel_mmio.c       		\
-       tools/intel_chipset.h
-       
-
-LOCAL_C_INCLUDES +=            	       			\
-       $(LOCAL_PATH)/lib				\
-       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
-       $(TOPDIR)hardware/intel/libdrm/intel 		\
-       $(LOCAL_PATH)/../libpciaccess/include/ 
-
-LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
-LOCAL_CFLAGS += -DANDROID
-
-LOCAL_MODULE := intel_reg_write
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SHARED_LIBRARIES := libpciaccess 	\
-                          libdrm 	\
-                          libdrm_intel
-
-include $(BUILD_EXECUTABLE)
-
-#================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES :=                     	\
-       tools/intel_reg_read.c          	\
-       lib/intel_pci.c			\
-       lib/intel_gpu_tools.h         	\
-       tools/intel_reg.h               	\
-       lib/intel_batchbuffer.h       	\
-       lib/intel_batchbuffer.c       	\
-	lib/intel_reg_map.c 		\
-       lib/intel_mmio.c       		\
-       tools/intel_chipset.h
-       
-
-LOCAL_C_INCLUDES +=					\
-       $(LOCAL_PATH)/lib 				\
-       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
-       $(TOPDIR)hardware/intel/libdrm/intel 		\
-       $(LOCAL_PATH)/../libpciaccess/include/
-
-LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
-LOCAL_CFLAGS += -DANDROID
-
-
-LOCAL_MODULE := intel_reg_read
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SHARED_LIBRARIES := libpciaccess 	\
-                          libdrm 	\
-                          libdrm_intel
-
-include $(BUILD_EXECUTABLE)
-
-#================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES :=				\
-       tools/intel_disable_clock_gating.c	\
-       lib/intel_pci.c 				\
-       lib/intel_gpu_tools.h         		\
-       tools/intel_reg.h               		\
-       lib/intel_batchbuffer.h       		\
-       lib/intel_batchbuffer.c       		\
-       lib/intel_mmio.c       			\
-       tools/intel_chipset.h
-       
-
-LOCAL_C_INCLUDES +=            			        \
-       $(LOCAL_PATH)/lib 				\
-       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
-       $(TOPDIR)hardware/intel/libdrm/intel 		\
-       $(LOCAL_PATH)/../libpciaccess/include/
-
-LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
-LOCAL_CFLAGS += -DANDROID
-
-
-LOCAL_MODULE := intel_disable_clock_gating
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SHARED_LIBRARIES := libpciaccess 	\
-                          libdrm 	\
-                          libdrm_intel
-
-include $(BUILD_EXECUTABLE)
-
-#================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES :=			\
-       tools/intel_audio_dump.c         \
-       lib/intel_pci.c			\
-       lib/intel_gpu_tools.h         	\
-       tools/intel_reg.h		\
-       lib/intel_batchbuffer.h       	\
-       lib/intel_batchbuffer.c       	\
-       lib/intel_mmio.c       		\
-       tools/intel_chipset.h
-       
-
-LOCAL_C_INCLUDES +=                    				\
-       $(LOCAL_PATH)/lib 					\
-       $(TOPDIR)hardware/intel/libdrm/include/drm 		\
-       $(TOPDIR)hardware/intel/libdrm/intel 			\
-       $(LOCAL_PATH)/../libpciaccess/include/
-
-LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
-LOCAL_CFLAGS += -DANDROID
-
-
-LOCAL_MODULE := intel_audio_dump
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SHARED_LIBRARIES := libpciaccess 	\
-                          libdrm 	\
-                          libdrm_intel
-
-include $(BUILD_EXECUTABLE)
-
-#================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES :=                     	\
-       tools/intel_backlight.c          \
-       lib/intel_pci.c 			\
-       lib/intel_gpu_tools.h         	\
-       tools/intel_reg.h               	\
-       lib/intel_batchbuffer.h       	\
-       lib/intel_batchbuffer.c       	\
-       lib/intel_mmio.c       		\
-       tools/intel_chipset.h
-       
-
-LOCAL_C_INCLUDES +=                    			\
-       $(LOCAL_PATH)/lib 				\
-       $(TOPDIR)hardware/intel/libdrm/include/drm	\
-       $(TOPDIR)hardware/intel/libdrm/intel 		\
-       $(LOCAL_PATH)/../libpciaccess/include/
-
-LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
-LOCAL_CFLAGS += -DANDROID
-
-
-LOCAL_MODULE := intel_backlight
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SHARED_LIBRARIES := libpciaccess 	\
-                          libdrm 	\
-                          libdrm_intel
-
-include $(BUILD_EXECUTABLE)
-
-#================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES :=                     	\
-       tools/intel_bios_dumper.c       	\
-       lib/intel_pci.c 			\
-       lib/intel_gpu_tools.h         	\
-       tools/intel_reg.h               	\
-       lib/intel_batchbuffer.h       	\
-       lib/intel_batchbuffer.c       	\
-       lib/intel_mmio.c       		\
-       tools/intel_chipset.h
-       
-
-LOCAL_C_INCLUDES +=                    			\
-       $(LOCAL_PATH)/lib 				\
-       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
-       $(TOPDIR)hardware/intel/libdrm/intel 		\
-       $(LOCAL_PATH)/../libpciaccess/include/
-
-LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
-LOCAL_CFLAGS += -DANDROID
-
-
-LOCAL_MODULE := intel_bios_dumper
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SHARED_LIBRARIES := libpciaccess 	\
-                          libdrm 	\
-                          libdrm_intel
-
-include $(BUILD_EXECUTABLE)
-
-#================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES :=                     	\
-       tools/intel_bios_reader.c        \
-       lib/intel_pci.c 			\
-       lib/intel_gpu_tools.h         	\
-       tools/intel_reg.h               	\
-       lib/intel_batchbuffer.h       	\
-       lib/intel_batchbuffer.c       	\
-       lib/intel_mmio.c       		\
-       tools/intel_chipset.h
-       
-
-LOCAL_C_INCLUDES +=            			        \
-       $(LOCAL_PATH)/lib 				\
-       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
-       $(TOPDIR)hardware/intel/libdrm/intel 		\
-       $(LOCAL_PATH)/../libpciaccess/include/
-
-LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
-LOCAL_CFLAGS += -DANDROID
-
-
-LOCAL_MODULE := intel_bios_reader
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SHARED_LIBRARIES := libpciaccess 	\
-                          libdrm 	\
-                          libdrm_intel
-
-include $(BUILD_EXECUTABLE)
-
-#================
-# Disabling intel_error_decode tool, since Android still does not have libdrm2.4.30
-#================
-#include $(CLEAR_VARS)
-#
-#LOCAL_SRC_FILES :=                     	\
-#       tools/intel_error_decode.c      	\
-#       lib/intel_pci.c 			\
-#       lib/intel_gpu_tools.h         	\
-#       tools/intel_reg.h               	\
-#       lib/intel_batchbuffer.h       	\
-#       lib/intel_batchbuffer.c       	\
-#       lib/intel_mmio.c       		\
-#       tools/intel_chipset.h 		\
-#       lib/instdone.h  			\
-#       lib/instdone.c  			\
-#       tools/intel_decode.h  		\
-#	lib/intel_drm.c
-#       
-#
-#LOCAL_C_INCLUDES +=            			        \
-#       $(LOCAL_PATH)/lib 				\
-#       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
-#       $(TOPDIR)hardware/intel/libdrm/intel 		\
-#       $(LOCAL_PATH)/../libpciaccess/include/
-#
-#LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
-#LOCAL_CFLAGS += -DANDROID
-#LOCAL_CFLAGS += -std=c99
-#
-#
-#LOCAL_MODULE := intel_error_decode
-#LOCAL_MODULE_TAGS := optional
-#
-#LOCAL_SHARED_LIBRARIES := libpciaccess 	\
-#                          libdrm 	\
-#                          libdrm_intel
-#
-#include $(BUILD_EXECUTABLE)
-#
-#================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES :=                     	\
-       tools/intel_gpu_top.c          	\
-       lib/intel_pci.c 			\
-       lib/intel_gpu_tools.h         	\
-       tools/intel_reg.h               	\
-       lib/intel_batchbuffer.h       	\
-       lib/intel_batchbuffer.c       	\
-       lib/intel_mmio.c       		\
-       tools/intel_chipset.h 		\
-       lib/instdone.h  			\
-       lib/instdone.c  			\
-	lib/intel_reg_map.c
-       
-
-LOCAL_C_INCLUDES +=    			                \
-       $(LOCAL_PATH)/lib 				\
-       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
-       $(TOPDIR)hardware/intel/libdrm/intel 		\
-       $(LOCAL_PATH)/../libpciaccess/include/
-
-LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
-LOCAL_CFLAGS += -DANDROID
-
-
-LOCAL_MODULE := intel_gpu_top
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SHARED_LIBRARIES := libpciaccess 	\
-                          libdrm 	\
-                          libdrm_intel
-
-include $(BUILD_EXECUTABLE)
-
-#================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES :=                     	\
-       tools/intel_gpu_time.c          	\
-       lib/intel_pci.c 			\
-       lib/intel_gpu_tools.h         	\
-       tools/intel_reg.h               	\
-       lib/intel_batchbuffer.h       	\
-       lib/intel_batchbuffer.c       	\
-       lib/intel_mmio.c       		\
-       tools/intel_chipset.h
-       
-
-LOCAL_C_INCLUDES +=            			        \
-       $(LOCAL_PATH)/lib 				\
-       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
-       $(TOPDIR)hardware/intel/libdrm/intel 		\
-       $(LOCAL_PATH)/../libpciaccess/include/
-
-LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
-LOCAL_CFLAGS += -DANDROID
-
-
-LOCAL_MODULE := intel_gpu_time
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SHARED_LIBRARIES := libpciaccess 	\
-                          libdrm 	\
-                          libdrm_intel
-
-include $(BUILD_EXECUTABLE)
-
-#================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES :=                     	\
-       tools/intel_gtt.c          	\
-       lib/intel_pci.c 			\
-       lib/intel_gpu_tools.h         	\
-       tools/intel_reg.h               	\
-       lib/intel_batchbuffer.h       	\
-       lib/intel_batchbuffer.c       	\
-       lib/intel_mmio.c       		\
-       tools/intel_chipset.h
-       
-
-LOCAL_C_INCLUDES +=            			        \
-       $(LOCAL_PATH)/lib 				\
-       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
-       $(TOPDIR)hardware/intel/libdrm/intel 		\
-       $(LOCAL_PATH)/../libpciaccess/include/
-
-LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
-
-LOCAL_MODULE := intel_gtt
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SHARED_LIBRARIES := libpciaccess 	\
-                          libdrm 	\
-                          libdrm_intel
-
-include $(BUILD_EXECUTABLE)
-
-#================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES :=                     	\
-       tools/intel_stepping.c          	\
-       lib/intel_pci.c 			\
-       lib/intel_gpu_tools.h         	\
-       tools/intel_reg.h               	\
-       lib/intel_batchbuffer.h       	\
-       lib/intel_batchbuffer.c       	\
-       lib/intel_mmio.c       		\
-       tools/intel_chipset.h
-       
-
-LOCAL_C_INCLUDES +=            			        \
-       $(LOCAL_PATH)/lib 				\
-       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
-       $(TOPDIR)hardware/intel/libdrm/intel 		\
-       $(LOCAL_PATH)/../libpciaccess/include/
-
-LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
-LOCAL_CFLAGS += -DANDROID
-
-
-LOCAL_MODULE := intel_stepping
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SHARED_LIBRARIES := libpciaccess 	\
-                          libdrm 	\
-                          libdrm_intel
-
-include $(BUILD_EXECUTABLE)
-
-#================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES :=			\
-       tools/intel_reg_dumper.c         \
-       lib/intel_pci.c 			\
-       lib/intel_gpu_tools.h 	        \
-       tools/intel_reg.h       	        \
-       lib/intel_batchbuffer.h		\
-       lib/intel_batchbuffer.c		\
-       lib/intel_mmio.c      		\
-       tools/intel_chipset.h
-       
-
-LOCAL_C_INCLUDES +=                    			\
-       $(LOCAL_PATH)/lib 				\
-       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
-       $(TOPDIR)hardware/intel/libdrm/intel 		\
-       $(LOCAL_PATH)/../libpciaccess/include/
-
-LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
-LOCAL_CFLAGS += -DANDROID
-
-
-LOCAL_MODULE := intel_reg_dumper
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SHARED_LIBRARIES := libpciaccess 	\
-                          libdrm 	\
-                          libdrm_intel
-
-include $(BUILD_EXECUTABLE)
-
-#================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES :=                     	\
-       tools/intel_reg_snapshot.c       \
-       lib/intel_pci.c 			\
-       lib/intel_gpu_tools.h 	        \
-       tools/intel_reg.h       	        \
-       lib/intel_batchbuffer.h		\
-       lib/intel_batchbuffer.c		\
-       lib/intel_mmio.c       		\
-       tools/intel_chipset.h
-       
-
-LOCAL_C_INCLUDES +=            			        \
-       $(LOCAL_PATH)/lib 				\
-       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
-       $(TOPDIR)hardware/intel/libdrm/intel 		\
-       $(LOCAL_PATH)/../libpciaccess/include/
-
-LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
-
-LOCAL_MODULE := intel_reg_snapshot
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SHARED_LIBRARIES := libpciaccess 	\
-                          libdrm 	\
-                          libdrm_intel
-
-include $(BUILD_EXECUTABLE)
-
-#================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES :=                     	\
-       tools/forcewaked.c          	\
-       lib/intel_pci.c 			\
-       lib/intel_gpu_tools.h		\
-       tools/intel_reg.h               	\
-       lib/intel_batchbuffer.h       	\
-       lib/intel_batchbuffer.c       	\
-       lib/intel_mmio.c       		\
-       tools/intel_chipset.h 		\
-       lib/intel_reg_map.c		\
-       lib/intel_drm.c
-       
-
-LOCAL_C_INCLUDES +=            			        \
-       $(LOCAL_PATH)/lib 				\
-       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
-       $(TOPDIR)hardware/intel/libdrm/intel 		\
-       $(LOCAL_PATH)/../libpciaccess/include/
-
-LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
-LOCAL_CFLAGS += -DANDROID
-
-
-LOCAL_MODULE := forcewaked
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SHARED_LIBRARIES := libpciaccess 	\
-                          libdrm 	\
-                          libdrm_intel
-
-include $(BUILD_EXECUTABLE)
-
-#================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES :=                     	\
-       lib/intel_gpu_tools.h		\
-       tools/intel_reg_checker.c	\
-	lib/intel_pci.c			\
-	lib/intel_mmio.c
-       
-
-LOCAL_C_INCLUDES +=            			        \
-       $(LOCAL_PATH)/lib 				\
-       $(TOPDIR)hardware/intel/libdrm/include/drm 	\
-       $(TOPDIR)hardware/intel/libdrm/intel 		\
-       $(LOCAL_PATH)/../libpciaccess/include/
-
-LOCAL_CFLAGS += -DHAVE_LIBDRM_ATOMIC_PRIMITIVES=1
-LOCAL_CFLAGS += -DANDROID
-
-
-LOCAL_MODULE := intel_reg_checker
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SHARED_LIBRARIES := libpciaccess 	
-
-include $(BUILD_EXECUTABLE)
+include $(LOCAL_PATH)/tests/Android.mk
+include $(LOCAL_PATH)/tools/Android.mk
 
diff --git a/tests/Android.mk b/tests/Android.mk
new file mode 100644
index 0000000..1bd3d21
--- /dev/null
+++ b/tests/Android.mk
@@ -0,0 +1,77 @@
+include $(LOCAL_PATH)/tests/Makefile.sources
+include $(LOCAL_PATH)/lib/Makefile.sources
+
+LIBPCIACCESS_PATH := $(firstword $(wildcard  \
+   $(TOP)/external/PRIVATE/libpciaccess      \
+   $(TOP)/hardware/intel/libpciaccess        \
+   $(TOP)/external/libpciaccess))
+ifeq ($(LIBPCIACCESS_PATH),)
+   $(error "Unable to find libpciaccess!")
+endif
+
+LIBDRM_PATH := $(firstword $(wildcard  \
+   $(TOP)/external/PRIVATE/drm         \
+   $(TOP)/external/drm))
+ifeq ($(LIBDRM_PATH),)
+   $(error "Unable to find libdrm!")
+endif
+
+skip_lib_list := \
+    igt_kms.c \
+    igt_kms.h
+
+lib_list := $(filter-out $(skip_lib_list),$(libintel_tools_la_SOURCES))
+LIB_SOURCES := $(addprefix lib/,$(lib_list))
+
+#================#
+
+define add_test
+    include $(CLEAR_VARS)
+
+    LOCAL_SRC_FILES :=          \
+       tests/$1.c               \
+       $(LIB_SOURCES)
+       
+
+    LOCAL_C_INCLUDES +=              \
+       $(LOCAL_PATH)/lib             \
+       $(LIBDRM_PATH)/include/drm    \
+       $(LIBDRM_PATH)/intel          \
+       $(LIBPCIACCESS_PATH)/include
+
+    LOCAL_CFLAGS += -DHAVE_STRUCT_SYSINFO_TOTALRAM
+    LOCAL_CFLAGS += -DANDROID
+    LOCAL_CFLAGS += -std=c99
+    # FIXME: drop once Bionic correctly annotates "noreturn" on pthread_exit
+    LOCAL_CFLAGS += -Wno-error=return-type
+    # Excessive complaining for established cases. Rely on the Linux version warnings.
+    LOCAL_CFLAGS += -Wno-sign-compare
+
+    LOCAL_MODULE := $1
+    LOCAL_MODULE_TAGS := optional
+
+    LOCAL_SHARED_LIBRARIES := libpciaccess  \
+                              libdrm        \
+                              libdrm_intel
+
+    include $(BUILD_EXECUTABLE)
+endef
+
+#================#
+
+skip_tests_list := \
+    testdisplay \
+    kms_addfb \
+    kms_cursor_crc \
+    kms_flip \
+    kms_pipe_crc_basic \
+    kms_render \
+    kms_setmode \
+    pm_pc8 \
+    gem_seqno_wrap \
+    gem_render_copy
+
+tests_list := $(filter-out $(skip_tests_list),$(TESTS_progs) $(TESTS_progs_M) $(HANG) $(TESTS_testsuite))
+
+$(foreach item,$(tests_list),$(eval $(call add_test,$(item))))
+
diff --git a/tools/Android.mk b/tools/Android.mk
new file mode 100644
index 0000000..4a19b6c
--- /dev/null
+++ b/tools/Android.mk
@@ -0,0 +1,70 @@
+include $(LOCAL_PATH)/tools/Makefile.sources
+include $(LOCAL_PATH)/lib/Makefile.sources
+
+LIBPCIACCESS_PATH := $(firstword $(wildcard  \
+   $(TOP)/external/PRIVATE/libpciaccess      \
+   $(TOP)/hardware/intel/libpciaccess        \
+   $(TOP)/external/libpciaccess))
+ifeq ($(LIBPCIACCESS_PATH),)
+   $(error "Unable to find libpciaccess!")
+endif
+
+LIBDRM_PATH := $(firstword $(wildcard  \
+   $(TOP)/external/PRIVATE/drm         \
+   $(TOP)/external/drm))
+ifeq ($(LIBDRM_PATH),)
+   $(error "Unable to find libdrm!")
+endif
+
+skip_lib_list := \
+    igt_kms.c \
+    igt_kms.h
+
+lib_list := $(filter-out $(skip_lib_list),$(libintel_tools_la_SOURCES))
+LIB_SOURCES := $(addprefix lib/,$(lib_list))
+
+#================#
+
+define add_tool
+    include $(CLEAR_VARS)
+
+    LOCAL_SRC_FILES :=          \
+       tools/$1.c               \
+       $(LIB_SOURCES)
+
+    LOCAL_C_INCLUDES +=              \
+       $(LOCAL_PATH)/lib             \
+       $(LIBDRM_PATH)/include/drm    \
+       $(LIBDRM_PATH)/intel          \
+       $(LIBPCIACCESS_PATH)/include
+
+    LOCAL_CFLAGS += -DHAVE_TERMIOS_H
+    LOCAL_CFLAGS += -DHAVE_STRUCT_SYSINFO_TOTALRAM
+    LOCAL_CFLAGS += -DANDROID
+    LOCAL_CFLAGS += -std=c99
+    # FIXME: drop once Bionic correctly annotates "noreturn" on pthread_exit
+    LOCAL_CFLAGS += -Wno-error=return-type
+    # Excessive complaining for established cases. Rely on the Linux version warnings.
+    LOCAL_CFLAGS += -Wno-sign-compare
+
+    LOCAL_MODULE := $1
+    LOCAL_MODULE_TAGS := optional
+
+    LOCAL_SHARED_LIBRARIES := libpciaccess  \
+                              libdrm        \
+                              libdrm_intel
+
+    include $(BUILD_EXECUTABLE)
+endef
+
+#================#
+
+skip_tools_list := \
+    intel_framebuffer_dump \
+    intel_reg_dumper \
+    intel_vga_read \
+    intel_vga_write
+
+tools_list := $(filter-out $(skip_tools_list),$(bin_PROGRAMS) $(noinst_PROGRAMS))
+
+$(foreach item,$(tools_list),$(eval $(call add_tool,$(item))))
