diff --git a/jni/pjproject-android/.svn/pristine/34/34a0eb9aabd9ebc9ecf9f1bbea47708b50e9cc96.svn-base b/jni/pjproject-android/.svn/pristine/34/34a0eb9aabd9ebc9ecf9f1bbea47708b50e9cc96.svn-base
new file mode 100644
index 0000000..8411b65
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/34/34a0eb9aabd9ebc9ecf9f1bbea47708b50e9cc96.svn-base
@@ -0,0 +1,73 @@
+#
+# cfg_gnu.py - GNU target configurator
+#
+# Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com)
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+import builder
+import os
+import sys
+
+# Each configurator must export this function
+def create_builder(args):
+    usage = """\
+Usage:
+  main.py cfg_gnu [-h|--help] [cfg_site]
+
+Arguments:
+  cfg_site:            site configuration module. If not specified, "cfg_site" 
+                       is implied
+  -h, --help           Show this help screen
+
+"""
+    # (optional) args format:
+    #   site configuration module. If not specified, "cfg_site" is implied
+
+    cfg_site = "cfg_site"
+    
+    for arg in args:
+        if arg=="-h" or arg=="--help":
+            print usage
+            sys.exit(0)
+        elif arg[0]=="-":
+            print usage
+            sys.exit(1)
+        else:
+            cfg_site = arg
+        
+    if os.access(cfg_site+".py", os.F_OK) == False:
+        print "Error: file '%s.py' doesn't exist." % (cfg_site)
+        sys.exit(1)
+
+    cfg_site = __import__(cfg_site)
+    test_cfg = builder.BaseConfig(cfg_site.BASE_DIR, \
+                                  cfg_site.URL, \
+                                  cfg_site.SITE_NAME, \
+                                  cfg_site.GROUP, \
+                                  cfg_site.OPTIONS)
+
+    config_site = "#define PJ_TODO(x)\n" + cfg_site.CONFIG_SITE
+    user_mak = "export CFLAGS+=-Wall\n" + cfg_site.USER_MAK
+
+    builders = [
+        builder.GNUTestBuilder(test_cfg, build_config_name="default",
+                               user_mak=user_mak,
+                               config_site=config_site,
+                               exclude=cfg_site.EXCLUDE,
+                               not_exclude=cfg_site.NOT_EXCLUDE)
+        ]
+
+    return builders
