--- src/SConscript.orig	2009-04-26 12:18:44.000000000 +0400
+++ src/SConscript	2009-04-26 13:00:21.000000000 +0400
@@ -37,6 +37,8 @@
     linkflags = '-Wl,-install_name,libmapnik.dylib'
 elif env['PLATFORM'] == 'SunOS' and env['CXX'].startswith('CC'):
     linkflags = '-R. -h libmapnik.so'
+elif env['PLATFORM'] == 'FreeBSD':
+    linkflags = '-Wl,-soname,libmapnik.so.' + ("%d" % (ABI_VERSION[0]))
 else: # Linux and others
     linkflags = '-Wl,-rpath-link,. -Wl,-soname,libmapnik.so.' + ("%d.%d" % (ABI_VERSION[0],ABI_VERSION[1])) 
 
@@ -106,16 +108,24 @@
 
     major, minor, micro = ABI_VERSION
     
-    soFile = "%s.%d.%d.%d" % (os.path.basename(str(mapnik[0])), major, minor, micro)
+    if env['PLATFORM'] == 'FreeBSD':
+        soFile = "%s.%d" % (os.path.basename(str(mapnik[0])), major)
+    else:
+        soFile = "%s.%d.%d.%d" % (os.path.basename(str(mapnik[0])), major, minor, micro)
     libDir = install_prefix + '/' + env['LIBDIR_SCHEMA']
     env.Alias(target='install', source=env.InstallAs(target=os.path.join(libDir, soFile), source=mapnik))
     # Install symlinks
-    link1 = env.Command(os.path.join(libDir, "%s.%d.%d" % (os.path.basename(str(mapnik[0])),major, minor)), 
+    if env['PLATFORM'] == 'FreeBSD':
+        link = env.Command(os.path.join(libDir, os.path.basename(str(mapnik[0]))), 
+                        os.path.join(libDir, "%s.%d" % (os.path.basename(str(mapnik[0])),major)), symlink)
+        env.Alias(target='install', source=link)
+    else:
+        link1 = env.Command(os.path.join(libDir, "%s.%d.%d" % (os.path.basename(str(mapnik[0])),major, minor)), 
                         os.path.join(libDir, soFile), symlink)
-    env.Alias(target='install', source=link1)
-    link2 = env.Command(os.path.join(libDir, os.path.basename(str(mapnik[0]))), 
+        env.Alias(target='install', source=link1)
+        link2 = env.Command(os.path.join(libDir, os.path.basename(str(mapnik[0]))), 
                         os.path.join(libDir, "%s.%d.%d" % (os.path.basename(str(mapnik[0])),major, minor)), symlink)
-    env.Alias(target='install', source=link2)
+        env.Alias(target='install', source=link2)
 else:
     env.Alias(target='install', source=env.Install(install_prefix + '/' + env['LIBDIR_SCHEMA'], mapnik))
 
