diff --git a/Docs/src/usefulinfos.but b/Docs/src/usefulinfos.but
index f339dfa1..d8a8f819 100644
--- a/Docs/src/usefulinfos.but
+++ b/Docs/src/usefulinfos.but
@@ -10,7 +10,11 @@ You can also compile NSIS using \W{http://www.mingw.org/}{MinGW} and \W{http://w
As of NSIS 2.01, the compiler, makensis, also compiles on POSIX platforms. POSIX platforms include Linux, *BSD, Mac OS X and others. You must first compile the exeheads to be able to compile makensis. This can be done on Windows using the methods explained above, or using a cross compiler (\W{http://www.libsdl.org/extras/win32/cross/README.txt}{HOWTO}). Once the exeheads are compiled, you must copy over the .h files in Source\\exehead\\Release-*. These .h files are automatically generated during the build process from the compiled exeheads. Official NSIS source code releases for POSIX include these .h files, so it is only needed to manually compile them if the source code was taken from CVS.
-\\Important notes for Microsoft Visual C++ 6.0 users:\\ You should install the latest \W{http://www.microsoft.com/msdownload/platformsdk/sdkupdate/}{Platform SDK}. Because of flaws in the libraries distributed with Microsoft Visual C++ 6.0, not installing the Platform SDK will result in crashes when using the CopyFiles command, see \W{http://forums.winamp.com/showthread.php?s=&threadid=131964}{this forum topic} for more information. Installing the \W{http://msdn.microsoft.com/vstudio/downloads/tools/ppack/download.aspx}{Processor Pack} is also highly recommended to decrease the size of the installer overhead.
+When building with precompiled exehead .h files, you should set the USE_PRECOMPILED_EXEHEADS flag to 1 on the make command line. This forces the makefile to skip the compilation process of the exeheads, even if the .h files seem outdated or if dependencies are missing.
+
+\c make USE_PRECOMPILED_EXEHEADS=1
+
+\\Important notes for Microsoft Visual C++ 6.0 users:\\ You should install the latest \W{http://www.microsoft.com/msdownload/platformsdk/sdkupdate/}{Platform SDK}. Because of flaws in the libraries distributed with Microsoft Visual C++ 6.0, not installing the Platform SDK will result in crashes when using the CopyFiles command. See \W{http://forums.winamp.com/showthread.php?s=&threadid=131964}{this forum topic} for more information. Installing the \W{http://msdn.microsoft.com/vstudio/downloads/tools/ppack/download.aspx}{Processor Pack} is highly recommended to decrease the size of the installer overhead.
\H{errorlevels}Error Levels
diff --git a/Source/exehead/Makefile b/Source/exehead/Makefile
index 121ec8fe..10b62161 100644
--- a/Source/exehead/Makefile
+++ b/Source/exehead/Makefile
@@ -46,7 +46,11 @@ vpath %.C ../zlib
%.c : config.h fileform.h
+ifeq ($(USE_PRECOMPILED_EXEHEADS),1)
+all : Release-zlib/exehead_zlib.h Release-bzip2/exehead_bzip2.h Release-lzma/exehead_lzma.h
+else
all : dirs exehead_zlib exehead_bzip2 exehead_lzma exehead_resources
+endif
missing_dirs = $(filter-out $(wildcard Release-*),Release-zlib Release-bzip2 Release-lzma)
@@ -67,8 +71,10 @@ exehead_zlib : dirs Release-zlib/exehead_zlib.exe Release-zlib/exehead_zlib.h
Release-zlib/exehead_zlib.exe : $(ZLIB_OBJS) sections_script
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(ZLIB_OBJS) $(LIBS)
+ifneq ($(USE_PRECOMPILED_EXEHEADS),1)
Release-zlib/exehead_zlib.h : Release-zlib/exehead_zlib.exe $(BIN2H)
$(BIN2H) $< $@ zlib_header_data
+endif
Release-zlib/%.o : %.c
$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
@@ -84,8 +90,10 @@ exehead_bzip2 : dirs Release-bzip2/exehead_bzip2.exe Release-bzip2/exehead_bzip2
Release-bzip2/exehead_bzip2.exe : $(BZIP2_OBJS) sections_script
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(BZIP2_OBJS) $(LIBS)
+ifneq ($(USE_PRECOMPILED_EXEHEADS),1)
Release-bzip2/exehead_bzip2.h : Release-bzip2/exehead_bzip2.exe $(BIN2H)
$(BIN2H) $< $@ bzip2_header_data
+endif
Release-bzip2/%.o : %.c
$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
@@ -98,8 +106,10 @@ exehead_lzma : dirs Release-lzma/exehead_lzma.exe Release-lzma/exehead_lzma.h
Release-lzma/exehead_lzma.exe : $(LZMA_OBJS) sections_script
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(LZMA_OBJS) $(LIBS)
+ifneq ($(USE_PRECOMPILED_EXEHEADS),1)
Release-lzma/exehead_lzma.h : Release-lzma/exehead_lzma.exe $(BIN2H)
$(BIN2H) $< $@ lzma_header_data
+endif
Release-lzma/%.o : %.c
$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@