diff --git a/buildAndroid/jni/Application.mk b/buildAndroid/jni/Application.mk
index 1962e68..d89707f 100644
--- a/buildAndroid/jni/Application.mk
+++ b/buildAndroid/jni/Application.mk
@@ -15,6 +15,6 @@
 APP_ABI := armeabi-v7a arm64-v8a x86 x86_64 mips mips64
 APP_PLATFORM := android-22
 APP_STL := gnustl_static
-APP_MODULES := layer_utils VKLayerBasic VKLayerDrawState VKLayerMemTracker VKLayerShaderCheker VKLayerImage VKLayerParamChecker VKLayerGeneric VKLayerAPIDump VKLayerObjectTracker VKLayerThreading VKLayerValidationTests
+APP_MODULES := layer_utils VKLayerBasic VKLayerDrawState VKLayerMemTracker VKLayerImage VKLayerParamChecker VKLayerGeneric VKLayerAPIDump VKLayerObjectTracker VKLayerThreading VKLayerValidationTests
 APP_CPPFLAGS += -std=c++11 -DVK_PROTOTYPES
 NDK_TOOLCHAIN_VERSION := 4.8
diff --git a/include/vulkan/vk_layer.h b/include/vulkan/vk_layer.h
index 47165f7..31040c0 100644
--- a/include/vulkan/vk_layer.h
+++ b/include/vulkan/vk_layer.h
@@ -14,6 +14,18 @@
 #else
 #  define VK_LAYER_EXPORT
 #endif
+#if defined(__ANDROID__)
+#define VK_USE_PLATFORM_ANDROID_KHR
+#elif defined(_WIN32)
+#define VK_USE_PLATFORM_WIN32_KHR
+#elif defined(__unix__)
+#define VK_USE_PLATFORM_MIR_KHR
+#define VK_USE_PLATFORM_WAYLAND_KHR
+#define VK_USE_PLATFORM_XLIB_KHR
+#define VK_USE_PLATFORM_XCB_KHR
+#else
+#error "Unsupported Platform!"
+#endif
 
 typedef void * (VKAPI_PTR *PFN_vkGPA)(void* obj, const char * pName);
 typedef struct VkBaseLayerObject_
diff --git a/layers/apidump.h b/layers/apidump.h
index c61439e..274e42c 100644
--- a/layers/apidump.h
+++ b/layers/apidump.h
@@ -1,6 +1,7 @@
 /*
  *
  * Copyright (C) 2015 Valve Corporation
+ * Copyright (C) 2015 Google Inc.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -95,7 +96,7 @@
 #if VK_USE_PLATFORM_WIN32_KHR
     pDisp->CreateWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR) gpa(instance, "vkCreateWin32SurfaceKHR");
     pDisp->GetPhysicalDeviceWin32PresentationSupportKHR = (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR) gpa(instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR");
-#else // VK_USE_PLATFORM_XCB_KHR
+#elif VK_USE_PLATFORM_XCB_KHR
     pDisp->CreateXcbSurfaceKHR = (PFN_vkCreateXcbSurfaceKHR) gpa(instance, "vkCreateXcbSurfaceKHR");
     pDisp->GetPhysicalDeviceXcbPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR) gpa(instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR");
 #endif
diff --git a/layers/object_track.h b/layers/object_track.h
index 4308917..6debcb9 100644
--- a/layers/object_track.h
+++ b/layers/object_track.h
@@ -1,6 +1,7 @@
 /*
  *
  * Copyright (C) 2015 Valve Corporation
+ * Copyright (C) 2015 Google Inc.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -218,7 +219,7 @@
 #if VK_USE_PLATFORM_WIN32_KHR
     pDisp->CreateWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR) gpa(instance, "vkCreateWin32SurfaceKHR");
     pDisp->GetPhysicalDeviceWin32PresentationSupportKHR = (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR) gpa(instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR");
-#else // VK_USE_PLATFORM_XCB_KHR
+#elif VK_USE_PLATFORM_XCB_KHR
     pDisp->CreateXcbSurfaceKHR = (PFN_vkCreateXcbSurfaceKHR) gpa(instance, "vkCreateXcbSurfaceKHR");
     pDisp->GetPhysicalDeviceXcbPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR) gpa(instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR");
 #endif
diff --git a/vk-layer-generate.py b/vk-layer-generate.py
index cc1fb42..5218ec5 100755
--- a/vk-layer-generate.py
+++ b/vk-layer-generate.py
@@ -3,6 +3,7 @@
 # VK
 #
 # Copyright (C) 2015 Valve Corporation
+# Copyright (C) 2015 Google Inc.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a
 # copy of this software and associated documentation files (the "Software"),
@@ -430,8 +431,12 @@
                             func_body.append('    {')
                             extra_space = "    "
                             for ext_name in ext_list:
+                                if 'Xcb' in ext_name:
+                                    func_body.append("#ifdef VK_USE_PLATFORM_XCB_KHR")
                                 func_body.append('    %sif (!strcmp("%s", funcName))\n'
                                                  '            return reinterpret_cast<PFN_vkVoidFunction>(%s);' % (extra_space, ext_name, ext_name))
+                                if 'Xcb' in ext_name:
+                                    func_body.append("#endif //VK_USE_PLATFORM_XCB_KHR")
                             if 0 != len(ext_enable):
                                func_body.append('    }\n')
 
@@ -536,8 +541,12 @@
                             func_body.append('    {')
                             extra_space = "    "
                             for ext_name in ext_list:
+                                if 'Xcb' in ext_name:
+                                    func_body.append('#ifdef VK_USE_PLATFORM_XCB_KHR')
                                 func_body.append('    %sif (!strcmp("%s", funcName))\n'
                                          '            return reinterpret_cast<PFN_vkVoidFunction>(%s);' % (extra_space, ext_name, ext_name))
+                                if 'Xcb' in ext_name:
+                                    func_body.append('#endif //VK_USE_PLATFORM_XCB_KHR')
                             if 0 != len(ext_enable):
                                 func_body.append('    }\n')
 
@@ -739,6 +748,8 @@
                          '    return result;\n'
                          '}\n' % (qual, decl, ret_val, proto.c_call(), proto.name))
         else:
+            if 'Xcb' in proto.name:
+              funcs.append("#ifdef VK_USE_PLATFORM_XCB_KHR")
             funcs.append('%s' % self.lineinfo.get())
             dispatch_param = proto.params[0].name
             # Must use 'instance' table for these APIs, 'device' table otherwise
@@ -752,6 +763,8 @@
                      '    %s%s_dispatch_table(%s)->%s;\n'
                      '%s'
                      '}' % (qual, decl, ret_val, table_type, dispatch_param, proto.c_call(), stmt))
+            if 'Xcb' in proto.name:
+              funcs.append("#endif //VK_USE_PLATFORM_XCB_KHR")
         return "\n\n".join(funcs)
 
     def generate_body(self):
@@ -1159,6 +1172,8 @@
                  '%s'
                  '}' % (qual, decl, table_type, dispatch_param, ret_val, proto.c_call(), f_open, log_func, f_close, stmt))
         else:
+            if 'Xcb' in decl:
+                funcs.append('#ifdef VK_USE_PLATFORM_XCB_KHR')
             funcs.append('%s%s\n'
                      '{\n'
                      '    using namespace StreamControl;\n'
@@ -1166,25 +1181,27 @@
                      '    %s%s%s\n'
                      '%s'
                      '}' % (qual, decl, ret_val, table_type, dispatch_param, proto.c_call(), f_open, log_func, f_close, stmt))
+            if 'Xcb' in decl:
+                funcs.append('#endif //VK_USE_PLATFORM_XCB_KHR')
         return "\n\n".join(funcs)
 
     def generate_body(self):
         self.layer_name = "APIDump"
-        if sys.platform == 'win32':
-            instance_extensions=[('wsi_enabled',
-                                  ['vkGetPhysicalDeviceSurfaceSupportKHR',
-                                   'vkGetPhysicalDeviceSurfaceCapabilitiesKHR',
-                                   'vkGetPhysicalDeviceSurfaceFormatsKHR',
-                                   'vkGetPhysicalDeviceSurfacePresentModesKHR',
-                                   'vkCreateWin32SurfaceKHR',
-                                   'vkGetPhysicalDeviceWin32PresentationSupportKHR'])]
-        else:
-            instance_extensions=[('wsi_enabled',
-                                  ['vkGetPhysicalDeviceSurfaceSupportKHR',
-                                   'vkGetPhysicalDeviceSurfaceCapabilitiesKHR',
-                                   'vkGetPhysicalDeviceSurfaceFormatsKHR',
-                                   'vkGetPhysicalDeviceSurfacePresentModesKHR',
-                                   'vkCreateXcbSurfaceKHR',
+        if sys.platform == 'win32':
+            instance_extensions=[('wsi_enabled',
+                                  ['vkGetPhysicalDeviceSurfaceSupportKHR',
+                                   'vkGetPhysicalDeviceSurfaceCapabilitiesKHR',
+                                   'vkGetPhysicalDeviceSurfaceFormatsKHR',
+                                   'vkGetPhysicalDeviceSurfacePresentModesKHR',
+                                   'vkCreateWin32SurfaceKHR',
+                                   'vkGetPhysicalDeviceWin32PresentationSupportKHR'])]
+        else:
+            instance_extensions=[('wsi_enabled',
+                                  ['vkGetPhysicalDeviceSurfaceSupportKHR',
+                                   'vkGetPhysicalDeviceSurfaceCapabilitiesKHR',
+                                   'vkGetPhysicalDeviceSurfaceFormatsKHR',
+                                   'vkGetPhysicalDeviceSurfacePresentModesKHR',
+                                   'vkCreateXcbSurfaceKHR',
                                    'vkGetPhysicalDeviceXcbPresentationSupportKHR'])]
         extensions=[('wsi_enabled',
                      ['vkCreateSwapchainKHR',
@@ -1707,6 +1724,8 @@
                 table_type = "instance"
             else:
                 table_type = "device"
+            if 'Xcb' in proto.name:
+                funcs.append("#ifdef VK_USE_PLATFORM_XCB_KHR")
             funcs.append('%s%s\n'
                      '{\n'
                      '%s'
@@ -1715,6 +1734,8 @@
                      '%s'
                      '%s'
                      '}' % (qual, decl, using_line, destroy_line, ret_val, table_type, dispatch_param, proto.c_call(), create_line, stmt))
+            if 'Xcb' in proto.name:
+                funcs.append("#endif //VK_USE_PLATFORM_XCB_KHR")
         return "\n\n".join(funcs)
 
     def generate_body(self):
@@ -1723,23 +1744,23 @@
                      ['vkCreateSwapchainKHR',
                       'vkDestroySwapchainKHR', 'vkGetSwapchainImagesKHR',
                       'vkAcquireNextImageKHR', 'vkQueuePresentKHR'])]
-        if sys.platform == 'win32':
-            instance_extensions=[('msg_callback_get_proc_addr', []),
-                                  ('wsi_enabled',
-                                  ['vkGetPhysicalDeviceSurfaceSupportKHR',
-                                   'vkGetPhysicalDeviceSurfaceCapabilitiesKHR',
-                                   'vkGetPhysicalDeviceSurfaceFormatsKHR',
-                                   'vkGetPhysicalDeviceSurfacePresentModesKHR',
-                                   'vkCreateWin32SurfaceKHR',
-                                   'vkGetPhysicalDeviceWin32PresentationSupportKHR'])]
-        else:
-            instance_extensions=[('msg_callback_get_proc_addr', []),
-                                  ('wsi_enabled',
-                                  ['vkGetPhysicalDeviceSurfaceSupportKHR',
-                                   'vkGetPhysicalDeviceSurfaceCapabilitiesKHR',
-                                   'vkGetPhysicalDeviceSurfaceFormatsKHR',
-                                   'vkGetPhysicalDeviceSurfacePresentModesKHR',
-                                   'vkCreateXcbSurfaceKHR',
+        if sys.platform == 'win32':
+            instance_extensions=[('msg_callback_get_proc_addr', []),
+                                  ('wsi_enabled',
+                                  ['vkGetPhysicalDeviceSurfaceSupportKHR',
+                                   'vkGetPhysicalDeviceSurfaceCapabilitiesKHR',
+                                   'vkGetPhysicalDeviceSurfaceFormatsKHR',
+                                   'vkGetPhysicalDeviceSurfacePresentModesKHR',
+                                   'vkCreateWin32SurfaceKHR',
+                                   'vkGetPhysicalDeviceWin32PresentationSupportKHR'])]
+        else:
+            instance_extensions=[('msg_callback_get_proc_addr', []),
+                                  ('wsi_enabled',
+                                  ['vkGetPhysicalDeviceSurfaceSupportKHR',
+                                   'vkGetPhysicalDeviceSurfaceCapabilitiesKHR',
+                                   'vkGetPhysicalDeviceSurfaceFormatsKHR',
+                                   'vkGetPhysicalDeviceSurfacePresentModesKHR',
+                                   'vkCreateXcbSurfaceKHR',
                                    'vkGetPhysicalDeviceXcbPresentationSupportKHR'])]
         body = [self.generate_maps(),
                 self.generate_procs(),
