VirtualDub source code - build notes
====================================
You obviously have too much time on your hands if you want to build my
source code, so here are some tips....


General notes
-------------
The project layout has changed since ~1.4.9 to match my Perforce tree;
you should arrange your directories as follows:

	NekoAmp\
		main\
			<unzip NekoAmp source here>

	Sylia\
		main\
			<unzip Sylia source here>

	VirtualDub_old\
		main\
			<unzip VirtualDub source here>

Make sure you unzipped the source file with folder paths.

NekoAmp must be built separately first as it is statically linked into
the application -- build both Debug and Release.  Sylia need not be
built as it is only needed for includes.

The main project contains pre-build and post-build steps for bumping
the version number and generating the debug info file for the crash-time
disassembler.  The buildtools are available in source form from the
VirtualDub website.  If you do not have verinc and mapconv, delete the
Pre-link and Post-build steps from VirtualDub.exe, except for the one
that assembles verstub.asm.

Make sure your build target is "VirtualDub - Win32 Debug" or
"VirtualDub - Win32 Release."  Also, if you distribute a fork, please
make sure you're not distributing debug builds!

The recommended build platforms are Windows 2000 Professional and
Windows XP Professional.  You could develop under Windows 95/98/ME with
Visual C++ 6.0, but in general US society frowns on cruel and unusual
punishment.


Notes for building under Microsoft Visual C++ 6.0:
--------------------------------------------------
Service Pack 5 and the Processor Pack are mandatory -- you can get both
for free from the Microsoft Visual C++ website.  If you do not patch
to Service Pack 5, scalar code in the resize filter will miscompile,
and if you do not have the PP installed, some __asm sfence instructions
will throw errors.  You may want to stash your C2.DLL from SP5 before
installing the Processor Pack, as you can swap it out with the C2.DLL
from the Processor Pack to work around any back-end code generation
problems you may have on other projects.

MASM 6.15 or later (ML.EXE) is required to compile the assembly modules.
You should already have this from the Processor Pack.


Notes for building under Microsoft Visual Studio .NET (2002):
-------------------------------------------------------------
Visual Studio .NET comes with MASM 7.00, so you do not need to install it
separately to compile the assembly modules.

Projects imported from Visual C++ 6.0 have Buffer Security Checks
(/GS) enabled by default.  Disable this flag, as it will hinder
performance and may destabilize the app.

Do not link any VirtualDub DLLs with the Multithreaded DLL (/MD)
code generation setting in VC7.  The reason is that Visual Studio .NET
now uses its own MSVCR70.DLL instead of the operating system MSVCRT.DLL,
thus negating the advantage of doing a DLL CRT link.  Use the static
multithreaded C runtime library (/MT) instead.

Although Visual Studio .NET (2002) will work for compiling VirtualDub,
the official compiler target is still Visual C++ 6.0 SP5+PP; this will
not change until the VS.NET IDE sucks less.*


*with apologies to J.Carmack


Notes for building under Intel C/C++ Compiler 6.0:
--------------------------------------------------
This version of VirtualDub has been built and tested with the Intel C/C++
compiler installed into Visual Studio .NET (2002); it has not been build
under Intel C/C++ 6.0 integrated with Visual C++ 6.0 SP5+PP, although
that configuration should work.  Use /QxW (all optimizations on, build
for Pentium 4 SSE2) for compiler settings; do not attempt to use
/Qipo (interprocedural optimizations).

As of this writing, mpeg_idct.cpp does not build properly under the
Intel compiler, and will bomb with an intentional #error if you attempt
to do so.  The reason is a couple of bugs in the compiler's inline
assembly support.  The Visual Studio .NET project included in this archive
already has the Intel compiler disabled for that module.

You may encounter link errors with _pow when compiling with Intel C/C++;
if that occurs, rebuild NekoAmp with Intel C/C++ /QxW.

Building VirtualDub under the Intel compiler will result in an executable
that runs only under Intel Pentium 4 processors and other processors that
support SSE2 -- the initialization code will display a message box and
abort otherwise.



Final notes
-----------
Good luck!

-- Avery Lee <phaeron@virtualdub.org>

