Difference between revisions of "Compiling the viewer (FreeBSD)"

From Second Life Wiki
Jump to navigation Jump to search
(Added a link to the compiling under linux, removed duplicate _page_title_)
m (Added compilenavi)
Line 1: Line 1:
{{CompileNav}}
The viewer has been compiled under FreeBSD 6.2. In this case, the viewer source and the artwork file were saved in /tmp, slviewer-src-FL-1.13.3.57876.tar.gz and slviewer-artwork-FL-1.13.3.57876.zip. The directions were followed for [[Compiling the viewer (Linux)|compiling under linux]]. All of the libraries were available under the ports system with the exception of xmlrpc-epi. In this case the source files were saved in /tmp/linden/xmlrpc-epi-0.51 where they were compiled. There was an additional problem with the openjpeg port. One of the include files was not available, so the sources from /usr/ports/distfiles were untarred into the directory /tmp/linden/OpenJPEG. A symbolic link, /tmp/linden/OpenJPEG/include, was created that points to /tmp/linden/OpenJPEG/dist.
The viewer has been compiled under FreeBSD 6.2. In this case, the viewer source and the artwork file were saved in /tmp, slviewer-src-FL-1.13.3.57876.tar.gz and slviewer-artwork-FL-1.13.3.57876.zip. The directions were followed for [[Compiling the viewer (Linux)|compiling under linux]]. All of the libraries were available under the ports system with the exception of xmlrpc-epi. In this case the source files were saved in /tmp/linden/xmlrpc-epi-0.51 where they were compiled. There was an additional problem with the openjpeg port. One of the include files was not available, so the sources from /usr/ports/distfiles were untarred into the directory /tmp/linden/OpenJPEG. A symbolic link, /tmp/linden/OpenJPEG/include, was created that points to /tmp/linden/OpenJPEG/dist.



Revision as of 21:37, 9 March 2007

The viewer has been compiled under FreeBSD 6.2. In this case, the viewer source and the artwork file were saved in /tmp, slviewer-src-FL-1.13.3.57876.tar.gz and slviewer-artwork-FL-1.13.3.57876.zip. The directions were followed for compiling under linux. All of the libraries were available under the ports system with the exception of xmlrpc-epi. In this case the source files were saved in /tmp/linden/xmlrpc-epi-0.51 where they were compiled. There was an additional problem with the openjpeg port. One of the include files was not available, so the sources from /usr/ports/distfiles were untarred into the directory /tmp/linden/OpenJPEG. A symbolic link, /tmp/linden/OpenJPEG/include, was created that points to /tmp/linden/OpenJPEG/dist.

The path for the dynamic libraries must be set:

export LD_LIBRARY_PATH=../../libraries/i686-linux/lib_release_client:/usr/local/lib:/tmp/linden/xmlrpc-epi-0.51/src/.libs

Then the compilation was started using the command:

scons DISTCC=no BTARGET=client BUILD=release

A number of small problems arose during the compilation process. A list of the changes are given below. These changes were found by untarring the original source in a directory called /tmp/virgin. Then a perl script was used to compare every file using "diff -C 5". The output from the differences is given below.

*** ./linden/indra/SConstruct	Sat Feb 10 00:49:19 2007
--- /tmp/linden/indra/SConstruct	Tue Feb 13 13:38:58 2007
***************
*** 21,30 ****
--- 21,31 ----
  import glob
  
  platform = sys.platform
  if platform == 'linux2':
  	platform = 'linux'
+ platform = 'linux'
  
  ######################
  # GET VERSION        #
  ######################
  
***************
*** 114,123 ****
--- 115,135 ----
  		./llcommon ./llmath ./llwindow ./llaudio ./llcharacter
  		./lldatabase ./llhavok ./llimage ./llinventory ./llmedia ./llmessage
  		./llprimitive ./llrender ./llscene ./llui ./llvfs ./llwindow
  		./llxml ./lscript
  		../libraries/include
+ 		/usr/local/include
+ 		/usr/local/include/boost
+ 		/tmp/linden/OpenJPEG
+ 		/usr/local/include/pango-1.0
+ 		/usr/local/include/atk-1.0
+ 		/usr/local/include/glib-2.0
+ 		/usr/local/include/cairo
+ 		/usr/X11R6/include
+ 		/usr/local/include/freetype2
+ 		 /usr/local/include/gtk-2.0
+ 		/tmp/linden/xmlrpc-epi-0.51
  		../libraries/include/havok
  		""" +
  		'../libraries/' + system_str + '/include' )
  
  	client_external_libs = []
***************
*** 178,199 ****
  
  	if platform == 'linux':
  		# Linux-only flags
  		flags += '-DLL_LINUX=1 '
  		if build_target == 'client':
! 			flags += '-DAPPID=secondlife -DLL_SDL=1 -DLL_X11=1 '
  			flags += '-DLL_GTK=1 '
! 			client_external_libs += [ 'gtk-x11-2.0', 'elfio' ]
  			include_dirs += [ '../libraries/' + system_str + '/include/gtk-2.0' ]
  			include_dirs += [ '../libraries/' + system_str + '/include/glib-2.0']
  			include_dirs += [ '../libraries/' + system_str + '/include/pango-1.0' ]
  			include_dirs += [ '../libraries/' + system_str + '/include/atk-1.0' ]
  			include_dirs += [ '../libraries/' + system_str + '/include/ELFIO' ]
  			include_dirs += [ '../libraries/' + system_str + '/include/llfreetype2' ]
  	else:
  		# Mac-only flags
! 		flags += '-x c++ -arch ppc -pipe -Wno-trigraphs -fpascal-strings -faltivec -fasm-blocks -g -O2 -fmessage-length=0 -mtune=G4 -Wno-deprecated-declarations -Wno-invalid-offsetof -mmacosx-version-min=10.3 -DLL_DARWIN=1 -Wmost -Wno-sign-compare -Wno-switch -fpch-preprocess -F./newview/build/Deployment -fconstant-cfstrings -ffor-scope -Wno-reorder -isysroot /Developer/SDKs/MacOSX10.3.9.sdk '
  
  	### Build type-specific flags ###
  
  	debug_opts = flags + '-fno-inline -O0 -D_DEBUG -DLL_DEBUG=1 '
  	release_opts = flags + '-O2 -DNDEBUG -DLL_RELEASE=1 '
--- 190,212 ----
  
  	if platform == 'linux':
  		# Linux-only flags
  		flags += '-DLL_LINUX=1 '
  		if build_target == 'client':
! 			flags += '-DAPPID=secondlife -DLL_SDL=1  -DLL_FMOD=0 -DLL_X11=1 '
  			flags += '-DLL_GTK=1 '
! 			# client_external_libs += [ 'gtk-x11-2.0', 'elfio' ]
! 			client_external_libs += [ 'gtk-x11-2.0', 'ELFIO' ]
  			include_dirs += [ '../libraries/' + system_str + '/include/gtk-2.0' ]
  			include_dirs += [ '../libraries/' + system_str + '/include/glib-2.0']
  			include_dirs += [ '../libraries/' + system_str + '/include/pango-1.0' ]
  			include_dirs += [ '../libraries/' + system_str + '/include/atk-1.0' ]
  			include_dirs += [ '../libraries/' + system_str + '/include/ELFIO' ]
  			include_dirs += [ '../libraries/' + system_str + '/include/llfreetype2' ]
  	else:
  		# Mac-only flags
! 		flags += ' '
  
  	### Build type-specific flags ###
  
  	debug_opts = flags + '-fno-inline -O0 -D_DEBUG -DLL_DEBUG=1 '
  	release_opts = flags + '-O2 -DNDEBUG -DLL_RELEASE=1 '
***************
*** 202,212 ****
  
  	################
  	# ENVIRONMENT  #
  	################
  
! 	gcc_bin = 'g++-3.4'
  	# If you strip more aggressively than -S then the quality of crash-
  	# logger backtraces deteriorates.
  	strip_cmd = 'strip -S -o $TARGET $SOURCE'
  
  	# hidesyms_cmd is something which copies an executable while 'hiding'
--- 215,226 ----
  
  	################
  	# ENVIRONMENT  #
  	################
  
! 	# gcc_bin = 'g++-3.4'
! 	gcc_bin = 'g++'
  	# If you strip more aggressively than -S then the quality of crash-
  	# logger backtraces deteriorates.
  	strip_cmd = 'strip -S -o $TARGET $SOURCE'
  
  	# hidesyms_cmd is something which copies an executable while 'hiding'
***************
*** 219,229 ****
  		hidesyms_cmd = 'objcopy --keep-global-symbols ' + exposed_symbols_file + ' $SOURCE $TARGET'
  	else:
  		hidesyms_cmd = 'cp -f $SOURCE $TARGET'
  
  	if build_target != 'client':
! 		gcc_bin = 'g++-3.3'
  
  	if arch == 'x86_64':
  		gcc_bin = '/opt/crosstool/gcc-4.0.2-glibc-2.3.6/x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu-gcc'
  		strip_cmd = '/opt/crosstool/gcc-4.0.2-glibc-2.3.6/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/bin/strip -S -o $TARGET $SOURCE'
  
--- 233,244 ----
  		hidesyms_cmd = 'objcopy --keep-global-symbols ' + exposed_symbols_file + ' $SOURCE $TARGET'
  	else:
  		hidesyms_cmd = 'cp -f $SOURCE $TARGET'
  
  	if build_target != 'client':
! 		#gcc_bin = 'g++-3.3'
! 		gcc_bin = 'g++'
  
  	if arch == 'x86_64':
  		gcc_bin = '/opt/crosstool/gcc-4.0.2-glibc-2.3.6/x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu-gcc'
  		strip_cmd = '/opt/crosstool/gcc-4.0.2-glibc-2.3.6/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/bin/strip -S -o $TARGET $SOURCE'
  
***************
*** 232,242 ****
  	if enable_distcc == 'yes':
  		compiler = 'distcc ' + gcc_bin
  
  	base_env = Environment(CXX = compiler,
  			CPPPATH = include_dirs,
! 			LIBPATH = [lib_dir] + [system_lib_dir],
  			LINKFLAGS = system_link_flags + '--no-keep-memory --reduce-memory-overheads ' )
  
  	### Environments for various build types ###
  
  	env = base_env.Copy(CPPFLAGS = releasefordownload_opts)
--- 247,257 ----
  	if enable_distcc == 'yes':
  		compiler = 'distcc ' + gcc_bin
  
  	base_env = Environment(CXX = compiler,
  			CPPPATH = include_dirs,
! 			LIBPATH = [lib_dir] + [system_lib_dir] + ['/usr/local/lib'] +['/tmp/linden/xmlrpc-epi-0.51/src/.libs'] + ['/usr/X11R6/lib'],
  			LINKFLAGS = system_link_flags + '--no-keep-memory --reduce-memory-overheads ' )
  
  	### Environments for various build types ###
  
  	env = base_env.Copy(CPPFLAGS = releasefordownload_opts)
***************
*** 372,382 ****
  		if platform == 'linux':
  			#############################
  			# BUILD LINUX_CRASH_LOGGER  #
  			#############################
  			output_crashlogger_bin = 'linux_crash_logger/linux-crash-logger-' + arch + '-bin'
! 			external_libs = net_external_libs + [ 'db-4.2', 'gtk-x11-2.0' ]
  			external_libs.remove('cares')
  			internal_libs = [ 'llvfs', 'llmath', 'llcommon' ]
  			create_executable(output_crashlogger_bin + '-globalsyms', 'linux_crash_logger', internal_libs + external_libs)
  			env.Command(output_crashlogger_bin, output_crashlogger_bin + '-globalsyms', hidesyms_cmd)
  
--- 387,398 ----
  		if platform == 'linux':
  			#############################
  			# BUILD LINUX_CRASH_LOGGER  #
  			#############################
  			output_crashlogger_bin = 'linux_crash_logger/linux-crash-logger-' + arch + '-bin'
! 			#external_libs = net_external_libs + [ 'db-4.2', 'gtk-x11-2.0' ]
! 			external_libs = net_external_libs + [ 'db41', 'gtk-x11-2.0' ]
  			external_libs.remove('cares')
  			internal_libs = [ 'llvfs', 'llmath', 'llcommon' ]
  			create_executable(output_crashlogger_bin + '-globalsyms', 'linux_crash_logger', internal_libs + external_libs)
  			env.Command(output_crashlogger_bin, output_crashlogger_bin + '-globalsyms', hidesyms_cmd)
  
***************
*** 391,401 ****
  		##################
  		# BUILD NEWVIEW  #
  		##################
  		output_bin = 'newview/secondlife-' + arch + '-bin'
  
! 		external_libs = client_external_libs + common_external_libs + [ 'freetype', 'jpeg', 'SDL', 'GL', 'GLU', 'ogg', 'vorbisenc', 'vorbisfile', 'vorbis', 'fmod-3.75', 'db-4.2', 'openjpeg' ]
  		external_libs.remove('cares')
  
  		internal_libs = [ 'lscript', 'llwindow', 'llrender', 'llprimitive',
  				 'llmedia', 'llinventory', 
  				 'llimage',  'llimagej2coj', 
--- 407,418 ----
  		##################
  		# BUILD NEWVIEW  #
  		##################
  		output_bin = 'newview/secondlife-' + arch + '-bin'
  
! 		#external_libs = client_external_libs + common_external_libs + [ 'freetype', 'jpeg', 'SDL', 'GL', 'GLU', 'ogg', 'vorbisenc', 'vorbisfile', 'vorbis', 'fmod-3.75', 'db-4.2', 'openjpeg' ]
! 		external_libs = client_external_libs + common_external_libs + [ 'freetype', 'jpeg', 'SDL', 'GL', 'GLU', 'ogg', 'vorbisenc', 'vorbisfile', 'vorbis', 'db41', 'openjpeg' ]
  		external_libs.remove('cares')
  
  		internal_libs = [ 'lscript', 'llwindow', 'llrender', 'llprimitive',
  				 'llmedia', 'llinventory', 
  				 'llimage',  'llimagej2coj', 
*** ./linden/indra/llcommon/llpagemem.h	Sat Feb 10 00:49:20 2007
--- /tmp/linden/indra/llcommon/llpagemem.h	Tue Feb 13 10:51:48 2007
***************
*** 25,35 ****
   */
  #ifndef LL_LLPAGEMEM_H
  #define LL_LLPAGEMEM_H
  
  #if !LL_DARWIN
! #include "malloc.h"
  #endif
  
  #include "llrand.h"
  
  
--- 25,36 ----
   */
  #ifndef LL_LLPAGEMEM_H
  #define LL_LLPAGEMEM_H
  
  #if !LL_DARWIN
! /* #include "malloc.h" */
! #include <stdlib.h>
  #endif
  
  #include "llrand.h"
  
  
*** ./linden/indra/llcommon/llpreprocessor.h	Sat Feb 10 00:49:20 2007
--- /tmp/linden/indra/llcommon/llpreprocessor.h	Tue Feb 13 08:40:00 2007
***************
*** 30,40 ****
  #define LLPREPROCESSOR_H
  
  // Figure out endianness of platform
  #ifdef LL_LINUX
  #define __ENABLE_WSTRING
! #include <endian.h>
  #endif	//	LL_LINUX
  
  #if (defined(LL_WINDOWS) || (defined(LL_LINUX) && (__BYTE_ORDER == __LITTLE_ENDIAN)) || (defined(LL_DARWIN) && defined(__LITTLE_ENDIAN__)))
  #define LL_LITTLE_ENDIAN 1
  #else
--- 30,40 ----
  #define LLPREPROCESSOR_H
  
  // Figure out endianness of platform
  #ifdef LL_LINUX
  #define __ENABLE_WSTRING
! /* #include <endian.h> */
  #endif	//	LL_LINUX
  
  #if (defined(LL_WINDOWS) || (defined(LL_LINUX) && (__BYTE_ORDER == __LITTLE_ENDIAN)) || (defined(LL_DARWIN) && defined(__LITTLE_ENDIAN__)))
  #define LL_LITTLE_ENDIAN 1
  #else
*** ./linden/indra/llcommon/llsdserialize_xml.cpp	Sat Feb 10 00:49:20 2007
--- /tmp/linden/indra/llcommon/llsdserialize_xml.cpp	Tue Feb 13 08:41:26 2007
***************
*** 33,43 ****
  
  #include "apr-1/apr_base64.h"
  
  extern "C"
  {
! #include "expat/expat.h"
  }
  
  /**
   * LLSDXMLFormatter
   */
--- 33,43 ----
  
  #include "apr-1/apr_base64.h"
  
  extern "C"
  {
! #include "expat.h"
  }
  
  /**
   * LLSDXMLFormatter
   */
*** ./linden/indra/llcommon/llsys.cpp	Sat Feb 10 00:49:20 2007
--- /tmp/linden/indra/llcommon/llsys.cpp	Tue Feb 13 08:52:44 2007
***************
*** 28,47 ****
  #include "linden_common.h"
  
  #include "llsys.h"
  
  #include <iostream>
! #include <zlib/zlib.h>
  #include "processor.h"
  
  #if LL_WINDOWS
  #	define WIN32_LEAN_AND_MEAN
  #	include <winsock2.h>
  #	include <windows.h>
  #elif LL_DARWIN
! #	include <sys/sysctl.h>
! #	include <sys/utsname.h>
  #elif LL_LINUX
  #	include <sys/utsname.h>
  const char MEMINFO_FILE[] = "/proc/meminfo";
  const char CPUINFO_FILE[] = "/proc/cpuinfo";
  #endif
--- 28,47 ----
  #include "linden_common.h"
  
  #include "llsys.h"
  
  #include <iostream>
! #include <zlib.h>
  #include "processor.h"
  
  #if LL_WINDOWS
  #	define WIN32_LEAN_AND_MEAN
  #	include <winsock2.h>
  #	include <windows.h>
  #elif LL_DARWIN
! 	include <sys/sysctl.h>
! 	include <sys/utsname.h>
  #elif LL_LINUX
  #	include <sys/utsname.h>
  const char MEMINFO_FILE[] = "/proc/meminfo";
  const char CPUINFO_FILE[] = "/proc/cpuinfo";
  #endif
***************
*** 393,403 ****
  {
  }
  
  #if LL_LINUX
  #include <unistd.h>
! #include <sys/sysinfo.h>
  #endif
  
  U32 LLMemoryInfo::getPhysicalMemory() const
  {
  #if LL_WINDOWS
--- 393,404 ----
  {
  }
  
  #if LL_LINUX
  #include <unistd.h>
! /* #include <sys/sysinfo.h> */
! #include <sys/sysctl.h> 
  #endif
  
  U32 LLMemoryInfo::getPhysicalMemory() const
  {
  #if LL_WINDOWS
***************
*** 405,426 ****
  	state.dwLength = sizeof(state);
  	GlobalMemoryStatus(&state);
  
  	return (U32)state.dwTotalPhys;
  
! #elif LL_DARWIN
  	// This might work on Linux as well.  Someone check...
  	unsigned int phys = 0;
  	int mib[2] = { CTL_HW, HW_PHYSMEM };
  
  	size_t len = sizeof(phys);	
  	sysctl(mib, 2, &phys, &len, NULL, 0);
  	
  	return phys;
  #elif LL_LINUX
  
! 	return getpagesize() * get_phys_pages();
  
  #else
  	return 0;
  
  #endif
--- 406,435 ----
  	state.dwLength = sizeof(state);
  	GlobalMemoryStatus(&state);
  
  	return (U32)state.dwTotalPhys;
  
!  #elif LL_DARWIN
  	// This might work on Linux as well.  Someone check...
  	unsigned int phys = 0;
  	int mib[2] = { CTL_HW, HW_PHYSMEM };
  
  	size_t len = sizeof(phys);	
  	sysctl(mib, 2, &phys, &len, NULL, 0);
  	
  	return phys;
  #elif LL_LINUX
+ 	// This might work on Linux as well.  Someone check...
+ 	unsigned int phys = 0;
+ 	int mib[2] = { CTL_HW, HW_PHYSMEM };
+ 
+ 	size_t len = sizeof(phys);	
+ 	sysctl(mib, 2, &phys, &len, NULL, 0);
+ 	
+ 	return phys;
  
! 	/* return getpagesize() * get_phys_pages(); */
  
  #else
  	return 0;
  
  #endif
*** ./linden/indra/llimage/llimagejpeg.h	Sat Feb 10 00:49:20 2007
--- /tmp/linden/indra/llimage/llimagejpeg.h	Tue Feb 13 09:02:04 2007
***************
*** 31,43 ****
  #include <setjmp.h>
  
  #include "llimage.h"
  
  extern "C" {
! #include "jpeglib/jinclude.h"
! #include "jpeglib/jpeglib.h"
! #include "jpeglib/jerror.h"
  }
  
  class LLImageJPEG : public LLImageFormatted
  {
  protected:
--- 31,43 ----
  #include <setjmp.h>
  
  #include "llimage.h"
  
  extern "C" {
! #include "jinclude.h"
! #include "jpeglib.h"
! #include "jerror.h"
  }
  
  class LLImageJPEG : public LLImageFormatted
  {
  protected:
*** ./linden/indra/llmath/lluuid.cpp	Sat Feb 10 00:49:21 2007
--- /tmp/linden/indra/llmath/lluuid.cpp	Tue Feb 13 08:53:49 2007
***************
*** 606,616 ****
  #include <net/if.h>
  #define HAVE_NETINET_IN_H
  #ifdef HAVE_NETINET_IN_H
  #include <netinet/in.h>
  #if !LL_DARWIN
! #include <linux/sockios.h>
  #endif
  #endif
  
  // static
  S32 LLUUID::getNodeID(unsigned char *node_id)
--- 606,616 ----
  #include <net/if.h>
  #define HAVE_NETINET_IN_H
  #ifdef HAVE_NETINET_IN_H
  #include <netinet/in.h>
  #if !LL_DARWIN
! /* #include <linux/sockios.h> */
  #endif
  #endif
  
  // static
  S32 LLUUID::getNodeID(unsigned char *node_id)
*** ./linden/indra/llmessage/message.h	Sat Feb 10 00:49:22 2007
--- /tmp/linden/indra/llmessage/message.h	Tue Feb 13 08:55:29 2007
***************
*** 32,42 ****
  #include <stdio.h>
  #include <map>
  #include <set>
  
  #if LL_LINUX
! #include <endian.h>
  #include <netinet/in.h>
  #endif
  
  #if LL_WINDOWS
  #include "winsock2.h" // htons etc.
--- 32,42 ----
  #include <stdio.h>
  #include <map>
  #include <set>
  
  #if LL_LINUX
! #include <sys/endian.h>
  #include <netinet/in.h>
  #endif
  
  #if LL_WINDOWS
  #include "winsock2.h" // htons etc.
*** ./linden/indra/llmessage/llhttpassetstorage.cpp	Sat Feb 10 00:49:22 2007
--- /tmp/linden/indra/llmessage/llhttpassetstorage.cpp	Tue Feb 13 08:58:34 2007
***************
*** 32,42 ****
  
  #include "indra_constants.h"
  #include "llvfile.h"
  #include "llvfs.h"
  
! #include "zlib/zlib.h"
  
  const F32 MAX_PROCESSING_TIME = 0.005f;
  const S32 CURL_XFER_BUFFER_SIZE = 65536;
  // Try for 30 minutes for now.
  const F32 GET_URL_TO_FILE_TIMEOUT = 1800.0f;
--- 32,42 ----
  
  #include "indra_constants.h"
  #include "llvfile.h"
  #include "llvfs.h"
  
! #include "zlib.h"
  
  const F32 MAX_PROCESSING_TIME = 0.005f;
  const S32 CURL_XFER_BUFFER_SIZE = 65536;
  // Try for 30 minutes for now.
  const F32 GET_URL_TO_FILE_TIMEOUT = 1800.0f;
*** ./linden/indra/llrender/llfont.cpp	Sat Feb 10 00:49:23 2007
--- /tmp/linden/indra/llrender/llfont.cpp	Tue Feb 13 09:25:00 2007
***************
*** 29,56 ****
  
  #include "llfont.h"
  
  // Freetype stuff
  #if LL_LINUX   // I had to do some work to avoid the system-installed FreeType headers... --ryan.
! #include "llfreetype2/freetype/ft2build.h"
  #else
  #include <ft2build.h>
  #endif
  
  // For some reason, this won't work if it's not wrapped in the ifdef
  #ifdef FT_FREETYPE_H
! #include FT_FREETYPE_H
  #endif
  
  #include "llerror.h"
  #include "llimage.h"
  //#include "llimagej2c.h"
  #include "llmath.h"	// Linden math
  #include "llstring.h"
  //#include "imdebug.h"
  
! FT_Render_Mode gFontRenderMode = FT_RENDER_MODE_NORMAL;
  
  LLFontManager *gFontManagerp = NULL;
  
  FT_Library gFTLibrary = NULL;
  
--- 29,58 ----
  
  #include "llfont.h"
  
  // Freetype stuff
  #if LL_LINUX   // I had to do some work to avoid the system-installed FreeType headers... --ryan.
! /* #include "llfreetype2/freetype/ft2build.h" */
! #include <ft2build.h>
  #else
  #include <ft2build.h>
  #endif
  
  // For some reason, this won't work if it's not wrapped in the ifdef
  #ifdef FT_FREETYPE_H
! /* #include FT_FREETYPE_H  */
! #include <freetype/freetype.h> 
  #endif
  
  #include "llerror.h"
  #include "llimage.h"
  //#include "llimagej2c.h"
  #include "llmath.h"	// Linden math
  #include "llstring.h"
  //#include "imdebug.h"
  
! FT_Render_Mode_ gFontRenderMode = FT_RENDER_MODE_NORMAL;
  
  LLFontManager *gFontManagerp = NULL;
  
  FT_Library gFTLibrary = NULL;
  
*** ./linden/indra/llxml/llxmlnode.h	Sat Feb 10 00:49:24 2007
--- /tmp/linden/indra/llxml/llxmlnode.h	Tue Feb 13 09:02:45 2007
***************
*** 27,37 ****
  
  #ifndef LL_LLXMLNODE_H
  #define LL_LLXMLNODE_H
  
  #define XML_STATIC
! #include "expat/expat.h"
  #include <map>
  
  #include "indra_constants.h"
  #include "llmemory.h"
  #include "llthread.h"
--- 27,37 ----
  
  #ifndef LL_LLXMLNODE_H
  #define LL_LLXMLNODE_H
  
  #define XML_STATIC
! #include "expat.h"
  #include <map>
  
  #include "indra_constants.h"
  #include "llmemory.h"
  #include "llthread.h"
*** ./linden/indra/llxml/llxmlparser.h	Sat Feb 10 00:49:24 2007
--- /tmp/linden/indra/llxml/llxmlparser.h	Tue Feb 13 09:04:17 2007
***************
*** 27,37 ****
  
  #ifndef LL_LLXMLPARSER_H
  #define LL_LLXMLPARSER_H
  
  #define XML_STATIC
! #include "expat/expat.h"
  
  class LLXmlParser
  {
  public:
  	LLXmlParser();
--- 27,37 ----
  
  #ifndef LL_LLXMLPARSER_H
  #define LL_LLXMLPARSER_H
  
  #define XML_STATIC
! #include "expat.h"
  
  class LLXmlParser
  {
  public:
  	LLXmlParser();
*** ./linden/indra/linux_crash_logger/linux_crash_logger.cpp	Sat Feb 10 00:49:25 2007
--- /tmp/linden/indra/linux_crash_logger/linux_crash_logger.cpp	Tue Feb 13 10:02:37 2007
***************
*** 454,464 ****
  //		llinfos << "File " << mFilename << " is present..." << llendl;
  
  		if(!gCrashInPreviousExec && isCrashLog)
  		{
  			// Make sure the file isn't too old.
! 			double age = difftime(gLaunchTime, stat_data.st_mtim.tv_sec);
  
  //			llinfos << "age is " << age << llendl;
  
  			if(age > 60.0)
  			{
--- 454,465 ----
  //		llinfos << "File " << mFilename << " is present..." << llendl;
  
  		if(!gCrashInPreviousExec && isCrashLog)
  		{
  			// Make sure the file isn't too old.
! 			// double age = difftime(gLaunchTime, stat_data.st_mtime.tv_sec);
! 			double age = difftime(gLaunchTime, stat_data.st_mtime);
  
  //			llinfos << "age is " << age << llendl;
  
  			if(age > 60.0)
  			{
*** ./linden/indra/linux_crash_logger/linux_crash_logger.cpp	Sat Feb 10 00:49:25 2007
--- /tmp/linden/indra/linux_crash_logger/linux_crash_logger.cpp	Tue Feb 13 10:02:37 2007
***************
*** 454,464 ****
  //		llinfos << "File " << mFilename << " is present..." << llendl;
  
  		if(!gCrashInPreviousExec && isCrashLog)
  		{
  			// Make sure the file isn't too old.
! 			double age = difftime(gLaunchTime, stat_data.st_mtim.tv_sec);
  
  //			llinfos << "age is " << age << llendl;
  
  			if(age > 60.0)
  			{
--- 454,465 ----
  //		llinfos << "File " << mFilename << " is present..." << llendl;
  
  		if(!gCrashInPreviousExec && isCrashLog)
  		{
  			// Make sure the file isn't too old.
! 			// double age = difftime(gLaunchTime, stat_data.st_mtime.tv_sec);
! 			double age = difftime(gLaunchTime, stat_data.st_mtime);
  
  //			llinfos << "age is " << age << llendl;
  
  			if(age > 60.0)
  			{
*** ./linden/indra/newview/lltexturefetch.h	Sat Feb 10 00:49:29 2007
--- /tmp/linden/indra/newview/lltexturefetch.h	Tue Feb 13 13:10:15 2007
***************
*** 97,102 ****
  	queue_t mNetworkQueue;
  
  	LLFrameTimer mNetworkTimer;
  };
  
! #endif LL_LLTEXTUREFETCH_H
--- 97,102 ----
  	queue_t mNetworkQueue;
  
  	LLFrameTimer mNetworkTimer;
  };
  
! #endif /* LL_LLTEXTUREFETCH_H */
*** ./linden/indra/newview/viewer.cpp	Sat Feb 10 00:49:30 2007
--- /tmp/linden/indra/newview/viewer.cpp	Tue Feb 13 13:22:51 2007
***************
*** 68,78 ****
    #	include <netinet/in.h>
    #	include <arpa/inet.h>	// inet_ntoa()
  
    #if LL_LINUX
    #	include <dlfcn.h>		// RTLD_LAZY
!   #     include <execinfo.h>            // backtrace - glibc only
    #define LL_ELFBIN 1
    #     if LL_ELFBIN
    #          include <cxxabi.h>         // for symbol demangling
    #          include "ELFIO.h"          // for better backtraces
    #     endif // LL_ELFBIN
--- 68,78 ----
    #	include <netinet/in.h>
    #	include <arpa/inet.h>	// inet_ntoa()
  
    #if LL_LINUX
    #	include <dlfcn.h>		// RTLD_LAZY
!   //   #     include <execinfo.h>            // backtrace - glibc only  
    #define LL_ELFBIN 1
    #     if LL_ELFBIN
    #          include <cxxabi.h>         // for symbol demangling
    #          include "ELFIO.h"          // for better backtraces
    #     endif // LL_ELFBIN
***************
*** 2252,2263 ****
  	size_t size;
  	char **strings;
  	size_t i;
  	BOOL success = FALSE;
  
! 	size = backtrace(array, MAX_STACK_TRACE_DEPTH);
! 	strings = backtrace_symbols(array, size);
  
  	std::string strace_filename = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"stack_trace.log");
  	llinfos << "Opening stack trace file " << strace_filename << llendl;
  	FILE* StraceFile = LLFile::fopen(strace_filename.c_str(), "w");		/* Flawfinder: ignore */
          if (!StraceFile)
--- 2252,2263 ----
  	size_t size;
  	char **strings;
  	size_t i;
  	BOOL success = FALSE;
  
! 	size = 0; // backtrace(array, MAX_STACK_TRACE_DEPTH);
! 	strings = NULL; //backtrace_symbols(array, size);
  
  	std::string strace_filename = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"stack_trace.log");
  	llinfos << "Opening stack trace file " << strace_filename << llendl;
  	FILE* StraceFile = LLFile::fopen(strace_filename.c_str(), "w");		/* Flawfinder: ignore */
          if (!StraceFile)
***************
*** 2303,2314 ****
  		llinfos << "Opening stack trace file " << strace_filename << " failed. Using stderr." << llendl;
  		StraceFile = stderr;
  	}
  
  	// get backtrace address list and basic symbol info
! 	btsize = backtrace(array, MAX_STACK_TRACE_DEPTH);
! 	strings = backtrace_symbols(array, btsize);
  
  	// create ELF reader for our app binary
  	IELFI* pReader;
  	const IELFISection* pSec = NULL;
  	IELFISymbolTable* pSymTbl = 0;
--- 2303,2314 ----
  		llinfos << "Opening stack trace file " << strace_filename << " failed. Using stderr." << llendl;
  		StraceFile = stderr;
  	}
  
  	// get backtrace address list and basic symbol info
! 	btsize = 0; // backtrace(array, MAX_STACK_TRACE_DEPTH);
! 	strings = NULL; // backtrace_symbols(array, btsize);
  
  	// create ELF reader for our app binary
  	IELFI* pReader;
  	const IELFISection* pSec = NULL;
  	IELFISymbolTable* pSymTbl = 0;
*** ./linden/indra/newview/llviewerobjectlist.cpp	Sat Feb 10 00:49:33 2007
--- /tmp/linden/indra/newview/llviewerobjectlist.cpp	Tue Feb 13 12:58:13 2007
***************
*** 58,68 ****
  #include "lltoolpie.h"
  #include "llkeyboard.h"
  #include "u64.h"
  #include "llviewerimagelist.h"
  #include "lldatapacker.h"
! #include <zlib/zlib.h>
  #include "object_flags.h"
  
  extern BOOL gVelocityInterpolate;
  extern BOOL gPingInterpolate;
  extern F32 gMinObjectDistance;
--- 58,69 ----
  #include "lltoolpie.h"
  #include "llkeyboard.h"
  #include "u64.h"
  #include "llviewerimagelist.h"
  #include "lldatapacker.h"
! /* #include <zlib/zlib.h> */
! #include <zlib.h>
  #include "object_flags.h"
  
  extern BOOL gVelocityInterpolate;
  extern BOOL gPingInterpolate;
  extern F32 gMinObjectDistance;