Commit 0e47ee29 authored by Daniel Veillard's avatar Daniel Veillard
Browse files

big cleanup of the Windows/MSVC project files from Igor Zlatkovic Daniel

* win32/*: big cleanup of the Windows/MSVC project files
  from Igor Zlatkovic
Daniel
parent cebb1361
Sat Jan 5 19:24:23 CET 2002 Daniel Veillard <daniel@veillard.com>
* win32/*: big cleanup of the Windows/MSVC project files
from Igor Zlatkovic
Wed Jan 2 14:11:35 CET 2002 Daniel Veillard <daniel@veillard.com>
* doc/Makefile.am: should fix #67674 and avoid troubles if
......
-----------------------------------------------------------------------
[24. July, 2001, igor@stud.fh-frankfurt.de]
And again there are new MSVC project files for libxml2.
You can find the project files for MSVC 6.0 and higher in win32/dsp/
subdirectory of the source tree. You should load the file libxml2.dsw
into the IDE. This is the workspace file which contains all projects
and their interdependencies.
Check the file xmlwin32version.h for optional features and enable or
disable them, as it suits you. The defaults are apropriate for most
people, so there is usually no need to mess with this.
If you receive few compiler warnings, ignore them. These are harmless
and shall dissapear in the future.
From now on, all object files produced by the compiler end up in the same
directory for each project, no matter if you compile with debugging
turned on or not. This means that a release build shall overwite the
debug build and vice versa. This makes the dependency tracking easier,
but there are people who don't like this for some reason.
The new project files from win32/dsp/ make any other project files
obsolete. Previous project files shall remain in their usual location
for some time and end up removed if noone complains.
-----------------------------------------------------------------------
[January the 16th, 2001, igor@stud.fh-frankfurt.de]
The following applies only if you use Microsoft Visual C/C++ compiler,
in combination with Visual C++ IDE. Risk a glance further below for
information on using GNU C compilers, such as Mingw32.
There are two new project files in win32/libxml2:
libxml2_a.dsp: Use this one to build an object archive, a thing known
as a static library in the wonderful world of Windows.
libxml2_so.dsp: Use this one to build a shared object, or a DLL if you
prefer calling it using the dialect mentioned above.
There are few things to note about these project files and their
differences to the originally supplied project file (libxml2.dsp):
1. C-Runtime is not LIBC anymore. LIBC is fairly old and should be
considered obsolete today. Microsoft had considered it apropriate to
produce a better C-Runtime library, and indeed, their new one is
called MSVCRT. All decent Win32 systems have this newer library, save
for the oldest incarnations of Win95, which can be ignored safely.
Following that, I changed the dependencies and now both project files
mentioned above use MSVCRT.
2. Both project files cause the resulting binary to depend on a shared
version of MSVCRT. Yes, that is what I am saying, the C-Runtime is
linked dynamically, not statically. This enables the programmer to do
likewise with his libxml2-based software, an action I like to think
everyone would perform without hesitation.
3. There was a small flaw in the previous project file. The source file
xpointer.c was not included in the project file and that caused a
linkage problem with libxml2-based program, but not with libxml2
itself, if XPointer feature was enabled. This is now fixed.
-----------------------------------------------------------------------
If you're creating libxml2 with the "mingw" compiler, just copy the
Makefile.mingw to the root directory as "Makefile", edit the PREFIX
value, and run "make".
If you're using MSVC, here are some instructions for how you can
proceed:
The configuration stuff (i.e. what should be enabled/disabled) is in
xmlversion.h I only tested it compiled fine with the current settings
(that is nearly everything disabled, I didn't need many features)
----------------------------
How did I get everything in place so the MSDev project works from the
original archive?
from the cygwin prompt (http://sources.redhat.com/cygwin) :
$ ./configure --disable-corba --without-ftp --without-http --without-html --wit
hout-xpath --without-iconv --without-debug
built the project file for the static library
----------------------------
diff after doing the changes and cleaning up the generated stuff:
[Note: this is out of date]
diff libxml2-2.2.4/xmlversion.h libxml2-2.2.4-reference/xmlversion.h
38c38
< #if 0
---
> #if 1
47c47
< #if 0
---
> #if 1
56c56
< #if 0
---
> #if 1
74c74
< #if 0
---
> #if 1
83c83
< #if 0
---
> #if 1
92c92
< #if 0
---
> #if 1
Hi there.
You can find the project files for MSVC 6.0 and higher in win32/dsp/
subdirectory of the source tree. You should load the file libxml2.dsw
into the IDE. This is the workspace file which contains all projects
and their interdependencies.
Check the file xmlwin32version.h for optional features and enable or
disable them, as it suits you. The defaults are apropriate for most
people, so there is usually no need to mess with this.
For libxml2, there is a single project file which builds both static
and shared library in a single run. When you build the project libxml2,
you will find the following files in your win32/dsp/libxml2
subdirectory:
libxml2.dll shared library
libxml2.lib import library for dynamic link
libxml2_a.lib static library
Other project files produce a single executable in a subdirectory which
shares the name with the project.
All object files produced by the compiler end up in the same
directory for each project, no matter if you compile with debugging
turned on or not. This means that a release build shall overwite the
debug build and vice versa. This makes the dependency tracking easier,
but there are people who don't like this for some reason.
If you receive few compiler warnings, ignore them. These are harmless
and shall dissapear in the future.
5. January 2002, Igor Zlatkovic <igor@stud.fh-frankfurt.de>
\ No newline at end of file
This diff is collapsed.
# Microsoft Developer Studio Project File - Name="libxml2_so" - Package Owner=<4>
# Microsoft Developer Studio Project File - Name="libxml2" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
CFG=libxml2_so - Win32 Debug
CFG=libxml2 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "libxml2_so.mak".
!MESSAGE NMAKE /f "libxml2.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "libxml2_so.mak" CFG="libxml2_so - Win32 Debug"
!MESSAGE NMAKE /f "libxml2.mak" CFG="libxml2 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "libxml2_so - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "libxml2_so - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "libxml2 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "libxml2 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
......@@ -29,20 +29,20 @@ CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "libxml2_so - Win32 Release"
!IF "$(CFG)" == "libxml2 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "libxml2_so___Win32_Release"
# PROP BASE Intermediate_Dir "libxml2_so___Win32_Release"
# PROP BASE Output_Dir "libxml2___Win32_Release"
# PROP BASE Intermediate_Dir "libxml2___Win32_Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "libxml2_so"
# PROP Intermediate_Dir "libxml2_so"
# PROP Output_Dir "libxml2"
# PROP Intermediate_Dir "libxml2"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBXML2_SO_EXPORTS" /YX /FD /c
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "libxml2_EXPORTS" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "IN_LIBXML" /FD /c
# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
......@@ -54,22 +54,30 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"libxml2_so/libxml2.dll"
# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
# Begin Custom Build - Creating static library libxml2_a.lib...
InputPath=.\libxml2\libxml2.dll
SOURCE="$(InputPath)"
!ELSEIF "$(CFG)" == "libxml2_so - Win32 Debug"
"libxml2\libxml2_a.lib" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
lib /nologo /out:libxml2\libxml2_a.lib libxml2\*.obj
# End Custom Build
!ELSEIF "$(CFG)" == "libxml2 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "libxml2_so___Win32_Debug"
# PROP BASE Intermediate_Dir "libxml2_so___Win32_Debug"
# PROP BASE Output_Dir "libxml2___Win32_Debug"
# PROP BASE Intermediate_Dir "libxml2___Win32_Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "libxml2_so"
# PROP Intermediate_Dir "libxml2_so"
# PROP Output_Dir "libxml2"
# PROP Intermediate_Dir "libxml2"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBXML2_SO_EXPORTS" /YX /FD /GZ /c
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "libxml2_EXPORTS" /YX /FD /GZ /c
# ADD CPP /nologo /MD /W3 /Gm /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "IN_LIBXML" /FR /FD /GZ /c
# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
......@@ -81,14 +89,22 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"libxml2_so/libxml2.dll" /pdbtype:sept
# ADD LINK32 wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
# Begin Custom Build - Creating static library libxml2_a.lib...
InputPath=.\libxml2\libxml2.dll
SOURCE="$(InputPath)"
"libxml2\libxml2_a.lib" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
lib /nologo /out:libxml2\libxml2_a.lib libxml2\*.obj
# End Custom Build
!ENDIF
# Begin Target
# Name "libxml2_so - Win32 Release"
# Name "libxml2_so - Win32 Debug"
# Name "libxml2 - Win32 Release"
# Name "libxml2 - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
......@@ -140,7 +156,7 @@ SOURCE=.\libxml2.def
SOURCE=.\libxml2.def.src
!IF "$(CFG)" == "libxml2_so - Win32 Release"
!IF "$(CFG)" == "libxml2 - Win32 Release"
USERDEP__LIBXM="../../include/libxml/xmlversion.h"
# Begin Custom Build
......@@ -151,7 +167,7 @@ InputPath=.\libxml2.def.src
# End Custom Build
!ELSEIF "$(CFG)" == "libxml2_so - Win32 Debug"
!ELSEIF "$(CFG)" == "libxml2 - Win32 Debug"
# PROP Ignore_Default_Tool 1
USERDEP__LIBXM="../../include/libxml/xmlversion.h"
......@@ -216,10 +232,6 @@ SOURCE=..\..\xlink.c
# End Source File
# Begin Source File
SOURCE=..\..\xmlcatalog.c
# End Source File
# Begin Source File
SOURCE=..\..\xmlIO.c
# End Source File
# Begin Source File
......@@ -260,6 +272,10 @@ SOURCE=..\..\include\libxml\entities.h
# End Source File
# Begin Source File
SOURCE=..\..\include\libxml\globals.h
# End Source File
# Begin Source File
SOURCE=..\..\include\libxml\hash.h
# End Source File
# Begin Source File
......
......@@ -3,7 +3,7 @@ Microsoft Developer Studio Workspace File, Format Version 6.00
###############################################################################
Project: "libxml2_a"=".\libxml2_a.dsp" - Package Owner=<4>
Project: "libxml2"=".\libxml2.dsp" - Package Owner=<4>
Package=<5>
{{{
......@@ -15,7 +15,7 @@ Package=<4>
###############################################################################
Project: "libxml2_so"=".\libxml2_so.dsp" - Package Owner=<4>
Project: "testDocbook"=".\testDocbook.dsp" - Package Owner=<4>
Package=<5>
{{{
......@@ -27,7 +27,7 @@ Package=<4>
###############################################################################
Project: "testDocbook"=".\testDocbook.dsp" - Package Owner=<4>
Project: "testHTML"=".\testHTML.dsp" - Package Owner=<4>
Package=<5>
{{{
......@@ -39,7 +39,7 @@ Package=<4>
###############################################################################
Project: "testHTML"=".\testHTML.dsp" - Package Owner=<4>
Project: "testSAX"=".\testSAX.dsp" - Package Owner=<4>
Package=<5>
{{{
......@@ -51,7 +51,7 @@ Package=<4>
###############################################################################
Project: "testSAX"=".\testSAX.dsp" - Package Owner=<4>
Project: "testURI"=".\testURI.dsp" - Package Owner=<4>
Package=<5>
{{{
......@@ -63,7 +63,7 @@ Package=<4>
###############################################################################
Project: "testURI"=".\testURI.dsp" - Package Owner=<4>
Project: "testXPath"=".\testXPath.dsp" - Package Owner=<4>
Package=<5>
{{{
......@@ -75,7 +75,7 @@ Package=<4>
###############################################################################
Project: "testXPath"=".\testXPath.dsp" - Package Owner=<4>
Project: "xmlcatalog"=".\xmlcatalog.dsp" - Package Owner=<4>
Package=<5>
{{{
......
# Microsoft Developer Studio Project File - Name="libxml2_a" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=libxml2_a - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "libxml2_a.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "libxml2_a.mak" CFG="libxml2_a - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "libxml2_a - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "libxml2_a - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "libxml2_a - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "libxml2_a___Win32_Release"
# PROP BASE Intermediate_Dir "libxml2_a___Win32_Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "libxml2_a"
# PROP Intermediate_Dir "libxml2_a"
# PROP Target_Dir ""
F90=df.exe
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "IN_LIBXML" /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x809 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"libxml2_a\libxml2.lib"
!ELSEIF "$(CFG)" == "libxml2_a - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "libxml2_a___Win32_Debug"
# PROP BASE Intermediate_Dir "libxml2_a___Win32_Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "libxml2_a"
# PROP Intermediate_Dir "libxml2_a"
# PROP Target_Dir ""
F90=df.exe
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /MD /W3 /Gm /Zi /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "IN_LIBXML" /FD /GZ /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x809 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"libxml2_a\libxml2.lib"
!ENDIF
# Begin Target
# Name "libxml2_a - Win32 Release"
# Name "libxml2_a - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=..\..\catalog.c
# End Source File
# Begin Source File
SOURCE=..\..\debugXML.c
# End Source File
# Begin Source File
SOURCE=..\..\DOCBparser.c
# End Source File
# Begin Source File
SOURCE=..\..\encoding.c
# End Source File
# Begin Source File
SOURCE=..\..\entities.c
# End Source File
# Begin Source File
SOURCE=..\..\error.c
# End Source File
# Begin Source File
SOURCE=..\..\globals.c
# End Source File
# Begin Source File
SOURCE=..\..\hash.c
# End Source File
# Begin Source File
SOURCE=..\..\HTMLparser.c
# End Source File
# Begin Source File
SOURCE=..\..\HTMLtree.c
# End Source File
# Begin Source File
SOURCE=..\..\list.c
# End Source File
# Begin Source File
SOURCE=..\..\nanoftp.c
# End Source File
# Begin Source File
SOURCE=..\..\nanohttp.c
# End Source File
# Begin Source File
SOURCE=..\..\parser.c
# End Source File
# Begin Source File
SOURCE=..\..\parserInternals.c
# End Source File
# Begin Source File
SOURCE=..\..\SAX.c
# End Source File
# Begin Source File
SOURCE=..\..\threads.c
# End Source File
# Begin Source File
SOURCE=..\..\tree.c
# End Source File
# Begin Source File
SOURCE=..\..\uri.c
# End Source File
# Begin Source File
SOURCE=..\..\valid.c
# End Source File
# Begin Source File
SOURCE=..\..\xinclude.c
# End Source File
# Begin Source File
SOURCE=..\..\xlink.c
# End Source File
# Begin Source File
SOURCE=..\..\xmlcatalog.c
# End Source File
# Begin Source File
SOURCE=..\..\xmlIO.c
# End Source File
# Begin Source File
SOURCE=..\..\xmlmemory.c
# End Source File
# Begin Source File
SOURCE=..\..\xpath.c
# End Source File
# Begin Source File
SOURCE=..\..\xpointer.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=..\..\include\libxml\catalog.h
# End Source File
# Begin Source File
SOURCE=..\..\include\libxml\debugXML.h
# End Source File
# Begin Source File
SOURCE=..\..\include\libxml\DOCBparser.h
# End Source File
# Begin Source File
SOURCE=..\..\include\libxml\encoding.h
# End Source File
# Begin Source File
SOURCE=..\..\include\libxml\entities.h
# End Source File
# Begin Source File
SOURCE=..\..\include\libxml\hash.h
# End Source File
# Begin Source File
SOURCE=..\..\include\libxml\HTMLparser.h
# End Source File
# Begin Source File
SOURCE=..\..\include\libxml\HTMLtree.h
# End Source File
# Begin Source File
SOURCE=..\..\libxml.h
# End Source File
# Begin Source File
SOURCE=..\..\include\libxml\list.h
# End Source File
# Begin Source File
SOURCE=..\..\include\libxml\nanoftp.h
# End Source File
# Begin Source File
SOURCE=..\..\include\libxml\nanohttp.h
# End Source File
# Begin Source File
SOURCE=..\..\include\libxml\parser.h
# End Source File
# Begin Source File
SOURCE=..\..\include\libxml\parserInternals.h
# End Source File
# Begin Source File
SOURCE=..\..\include\libxml\SAX.h
# End Source File
# Begin Source File
SOURCE=..\..\include\libxml\tree.h
# End Source File