diff --git a/dll/shellext/shellbtrfs/CMakeLists.txt b/dll/shellext/shellbtrfs/CMakeLists.txt
index fd11cc123c7..6802f6b1088 100644
--- a/dll/shellext/shellbtrfs/CMakeLists.txt
+++ b/dll/shellext/shellbtrfs/CMakeLists.txt
@@ -3,6 +3,8 @@ set_cpp(WITH_RUNTIME WITH_EXCEPTIONS WITH_STL)
remove_definitions(-D_WIN32_WINNT=0x502)
add_definitions(-D_WIN32_WINNT=0x603)
+include_directories(${REACTOS_SOURCE_DIR}/drivers/filesystems/btrfs)
+
spec2def(shellbtrfs.dll shellbtrfs.spec)
list(APPEND SOURCE
@@ -18,16 +20,19 @@ list(APPEND SOURCE
scrub.cpp
send.cpp
volpropsheet.cpp
- ${CMAKE_CURRENT_BINARY_DIR}/shellbtrfs.def)
+ precomp.h)
-include_directories(
- ${REACTOS_SOURCE_DIR}/drivers/filesystems/btrfs)
+add_library(shellbtrfs SHARED
+ ${SOURCE}
+ guid.c
+ shellbtrfs.rc
+ ${CMAKE_CURRENT_BINARY_DIR}/shellbtrfs.def)
file(GLOB shellbtrfs_rc_deps *.ico)
add_rc_deps(shellbtrfs.rc ${shellbtrfs_rc_deps})
-add_library(shellbtrfs SHARED ${SOURCE} shellbtrfs.rc)
set_module_type(shellbtrfs win32dll UNICODE)
target_link_libraries(shellbtrfs uuid)
add_importlibs(shellbtrfs advapi32 advapi32_vista ole32 shell32 shlwapi user32 comctl32 uxtheme setupapi comdlg32 gdi32 msvcrt kernel32_vista kernel32 ntdll)
+add_pch(shellbtrfs precomp.h SOURCE)
add_cd_file(TARGET shellbtrfs DESTINATION reactos/system32 FOR all)
diff --git a/dll/shellext/shellbtrfs/balance.h b/dll/shellext/shellbtrfs/balance.h
index 262f29923bc..0c07de4c2c4 100644
--- a/dll/shellext/shellbtrfs/balance.h
+++ b/dll/shellext/shellbtrfs/balance.h
@@ -15,6 +15,8 @@
* You should have received a copy of the GNU Lesser General Public Licence
* along with WinBtrfs. If not, see . */
+#pragma once
+
#include
#ifndef __REACTOS__
#include "../btrfsioctl.h"
diff --git a/dll/shellext/shellbtrfs/contextmenu.h b/dll/shellext/shellbtrfs/contextmenu.h
index d9d32ed91c7..12779f422bf 100644
--- a/dll/shellext/shellbtrfs/contextmenu.h
+++ b/dll/shellext/shellbtrfs/contextmenu.h
@@ -15,6 +15,8 @@
* You should have received a copy of the GNU Lesser General Public Licence
* along with WinBtrfs. If not, see . */
+#pragma once
+
#include
extern LONG objs_loaded;
diff --git a/dll/shellext/shellbtrfs/devices.h b/dll/shellext/shellbtrfs/devices.h
index 218a244ff35..e6b949abd91 100644
--- a/dll/shellext/shellbtrfs/devices.h
+++ b/dll/shellext/shellbtrfs/devices.h
@@ -15,6 +15,8 @@
* You should have received a copy of the GNU Lesser General Public Licence
* along with WinBtrfs. If not, see . */
+#pragma once
+
#ifndef __REACTOS__
#include
#include
diff --git a/dll/shellext/shellbtrfs/factory.h b/dll/shellext/shellbtrfs/factory.h
index af8b46bf8e9..8575e61f52f 100644
--- a/dll/shellext/shellbtrfs/factory.h
+++ b/dll/shellext/shellbtrfs/factory.h
@@ -15,6 +15,8 @@
* You should have received a copy of the GNU Lesser General Public Licence
* along with WinBtrfs. If not, see . */
+#pragma once
+
extern LONG objs_loaded;
typedef enum {
diff --git a/dll/shellext/shellbtrfs/guid.c b/dll/shellext/shellbtrfs/guid.c
new file mode 100644
index 00000000000..2396fb1c59b
--- /dev/null
+++ b/dll/shellext/shellbtrfs/guid.c
@@ -0,0 +1,13 @@
+/* DO NOT USE THE PRECOMPILED HEADER FOR THIS FILE! */
+
+#define WIN32_NO_STATuS
+#define _INC_WINDOWS
+#define COM_NO_WINDOWS_H
+
+#include
+#include
+#include
+#define DEVICE_TYPE ULONG
+#include
+
+/* NO CODE HERE, THIS IS JUST REQUIRED FOR THE GUID DEFINITIONS */
diff --git a/dll/shellext/shellbtrfs/iconoverlay.h b/dll/shellext/shellbtrfs/iconoverlay.h
index efcc1e7b79d..24276ddcb9c 100644
--- a/dll/shellext/shellbtrfs/iconoverlay.h
+++ b/dll/shellext/shellbtrfs/iconoverlay.h
@@ -15,6 +15,8 @@
* You should have received a copy of the GNU Lesser General Public Licence
* along with WinBtrfs. If not, see . */
+#pragma once
+
#include
extern LONG objs_loaded;
diff --git a/dll/shellext/shellbtrfs/precomp.h b/dll/shellext/shellbtrfs/precomp.h
new file mode 100644
index 00000000000..dde8baa9f15
--- /dev/null
+++ b/dll/shellext/shellbtrfs/precomp.h
@@ -0,0 +1,29 @@
+#ifndef _SHELLBTRFS_PRECOMP_H_
+#define _SHELLBTRFS_PRECOMP_H_
+
+#include
+#include
+#include
+#include
+#define WIN32_NO_STATUS
+#include
+#define STRSAFE_NO_DEPRECATE
+#include
+#define NO_SHLWAPI_STRFCNS
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "contextmenu.h"
+#include "factory.h"
+#include "iconoverlay.h"
+#include "propsheet.h"
+#include "resource.h"
+#include "volpropsheet.h"
+
+#endif /* _SHELLBTRFS_PRECOMP_H_ */
diff --git a/dll/shellext/shellbtrfs/propsheet.h b/dll/shellext/shellbtrfs/propsheet.h
index 90d9fc08745..1920dbb9402 100644
--- a/dll/shellext/shellbtrfs/propsheet.h
+++ b/dll/shellext/shellbtrfs/propsheet.h
@@ -15,6 +15,8 @@
* You should have received a copy of the GNU Lesser General Public Licence
* along with WinBtrfs. If not, see . */
+#pragma once
+
#include
#include
#include
diff --git a/dll/shellext/shellbtrfs/recv.h b/dll/shellext/shellbtrfs/recv.h
index 85e93298c59..8301a20f28e 100644
--- a/dll/shellext/shellbtrfs/recv.h
+++ b/dll/shellext/shellbtrfs/recv.h
@@ -15,6 +15,8 @@
* You should have received a copy of the GNU Lesser General Public Licence
* along with WinBtrfs. If not, see . */
+#pragma once
+
#include
#include
#include
diff --git a/dll/shellext/shellbtrfs/scrub.h b/dll/shellext/shellbtrfs/scrub.h
index 8ac94ac0a18..daae71255ee 100644
--- a/dll/shellext/shellbtrfs/scrub.h
+++ b/dll/shellext/shellbtrfs/scrub.h
@@ -15,6 +15,8 @@
* You should have received a copy of the GNU Lesser General Public Licence
* along with WinBtrfs. If not, see . */
+#pragma once
+
#include
#ifndef __REACTOS__
#include "../btrfs.h"
diff --git a/dll/shellext/shellbtrfs/send.h b/dll/shellext/shellbtrfs/send.h
index 713031b3597..5d1b939aa90 100644
--- a/dll/shellext/shellbtrfs/send.h
+++ b/dll/shellext/shellbtrfs/send.h
@@ -15,6 +15,8 @@
* You should have received a copy of the GNU Lesser General Public Licence
* along with WinBtrfs. If not, see . */
+#pragma once
+
#ifdef __REACTOS__
#include "btrfs.h"
#include
diff --git a/dll/shellext/shellbtrfs/shellext.h b/dll/shellext/shellbtrfs/shellext.h
index 152f4a1254a..a31c44badad 100644
--- a/dll/shellext/shellbtrfs/shellext.h
+++ b/dll/shellext/shellbtrfs/shellext.h
@@ -15,6 +15,8 @@
* You should have received a copy of the GNU Lesser General Public Licence
* along with WinBtrfs. If not, see . */
+#pragma once
+
#define ISOLATION_AWARE_ENABLED 1
#define STRSAFE_NO_DEPRECATE
diff --git a/dll/shellext/shellbtrfs/volpropsheet.h b/dll/shellext/shellbtrfs/volpropsheet.h
index a0e618b423b..6600dbbf4be 100644
--- a/dll/shellext/shellbtrfs/volpropsheet.h
+++ b/dll/shellext/shellbtrfs/volpropsheet.h
@@ -15,6 +15,8 @@
* You should have received a copy of the GNU Lesser General Public Licence
* along with WinBtrfs. If not, see . */
+#pragma once
+
#include
#ifndef __REACTOS__
#include "../btrfsioctl.h"