Compiling the viewer (FreeBSD)

From Second Life Wiki
Revision as of 20:37, 9 March 2007 by Alissa Sabre (talk | contribs) (Compiling the viewer FreeBSD moved to Compiling the viewer (FreeBSD): Followed the convention common to similar pages)
Jump to navigation Jump to search

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;