aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSylvain Munaut <tnt@246tNt.com>2010-11-12 19:36:21 +0100
committerSylvain Munaut <tnt@246tNt.com>2010-11-12 20:47:30 +0100
commitaa55d30d20bf419deb36301010337b4642770964 (patch)
tree802cf24eaa8dc2494679b10738e4f83b324b5db9
parent0d2a82c312056046ecafba318e60a930df395ea2 (diff)
[2/4] HR support: Add logic to fetch reference source code and build it
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
-rw-r--r--configure.ac1
-rw-r--r--libgsmhr/Makefile.am18
-rwxr-xr-xlibgsmhr/fetch_sources.py66
3 files changed, 84 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index eb2c332..a8244c2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -27,6 +27,7 @@ AC_ARG_ENABLE(gsmhr,
[enable_gsmhr=0], [enable_gsmhr=1])
AM_CONDITIONAL(ENABLE_GSMHR, test "x$enable_gsmhr" = "x1")
if test "x$enable_gsmhr" = "x1"; then
+ AM_PATH_PYTHON([2.4])
AC_DEFINE(HAVE_LIBGSMHR, 1, [Define to 1 if libgsmhr is available])
fi
diff --git a/libgsmhr/Makefile.am b/libgsmhr/Makefile.am
index f32e948..ab49a1f 100644
--- a/libgsmhr/Makefile.am
+++ b/libgsmhr/Makefile.am
@@ -3,5 +3,21 @@ AM_CFLAGS = -fPIC -Wall ${SYMBOL_VISIBILITY}
LIBVERSION=0:0:0
+REFSRC_PATH=refsrc
+REFSRC_SRC=refsrc/dtx.c refsrc/globdefs.c refsrc/host.c refsrc/mathhalf.c refsrc/sp_enc.c refsrc/sp_rom.c refsrc/vad.c refsrc/err_conc.c refsrc/homing.c refsrc/mathdp31.c refsrc/sp_dec.c refsrc/sp_frm.c refsrc/sp_sfrm.c
+
+${REFSRC_PATH}/.downloaded:
+ ./fetch_sources.py "${REFSRC_PATH}"
+ for f in "${REFSRC_PATH}"/*.{c,h}; do \
+ sed -i -e"s/round/round_l2s/" "$$f"; \
+ done
+ sed -i -e"s/long int/int/" -e"s/long/int/" "${REFSRC_PATH}/typedefs.h"
+ touch $@
+
+${REFSRC_PATH}/dtx.c: ${REFSRC_PATH}/.downloaded
+
lib_LTLIBRARIES = libgsmhr.la
-libgsmhr_la_SOURCES = libgsmhr.c
+libgsmhr_la_SOURCES = $(REFSRC_SRC) libgsmhr.c
+
+clean-local:
+ -rm -rf ${REFSRC_PATH}
diff --git a/libgsmhr/fetch_sources.py b/libgsmhr/fetch_sources.py
new file mode 100755
index 0000000..cb37e0c
--- /dev/null
+++ b/libgsmhr/fetch_sources.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+
+import urllib2
+import os
+import sys
+import zipfile
+
+try:
+ import cStringIO as StringIO
+except:
+ import StringIO
+
+
+SRC = "http://ftp.3gpp.org/Specs/2001-06/Ph2/06_series/0606-421/0606_421.zip"
+
+
+def get_zipfile(data):
+ return zipfile.ZipFile(StringIO.StringIO(data))
+
+
+def get_subfile_data(data, filename):
+ z = get_zipfile(data)
+ return z.read(filename)
+
+
+def process_file(z, e):
+ fh = open(e.filename.lower(), 'w')
+ d = z.read(e).replace('\r','')
+ fh.write(d)
+ fh.close()
+
+
+def main(*args):
+
+ # Args
+ if len(args) != 2:
+ print "Usage: %s target_dir" % args[0]
+ return
+
+ tgt = args[1]
+
+ # Create and go to target dir
+ if not os.path.isdir(tgt):
+ os.mkdir(tgt)
+ os.chdir(tgt)
+
+ # Get the original data
+ u = urllib2.urlopen(SRC)
+ d = u.read()
+
+ # Get DISK.zip
+ d = get_subfile_data(d, 'DISK.zip')
+
+ # Get Dir_C.zip
+ d = get_subfile_data(d, 'Dir_C.zip')
+
+ # Get zip file object
+ z = get_zipfile(d)
+
+ # Save each file
+ for e in z.filelist:
+ process_file(z, e)
+
+
+if __name__ == '__main__':
+ main(*sys.argv)