Add code generator for convolutional codes

Add python utility to generate .c code with convolutional
encoder/decoder based on polynomial description of the code. If argument
given it'll be interpreted as intended output directory, otherwise
current working directory is used.

Codes for *CCH, CS2/3 and TCH/AFS are generated. Corresponding manual
implementations are removed from tests. This introduce build-time
dependency on python.

The main work for this patch was generously contributed by Sylvain
Munaut.

Fixes: OS#1629
diff --git a/src/gsm/Makefile.am b/src/gsm/Makefile.am
index b0ea643..1b186b1 100644
--- a/src/gsm/Makefile.am
+++ b/src/gsm/Makefile.am
@@ -18,6 +18,11 @@
 			gprs_cipher_core.c gsm0480.c abis_nm.c gsm0502.c \
 			gsm0411_utils.c gsm0411_smc.c gsm0411_smr.c \
 			lapd_core.c lapdm.c kasumi.c \
+			conv_cs2_gen.c conv_cs3_gen.c conv_xcch_gen.c \
+			conv_tch_afs_12_2_gen.c conv_tch_afs_10_2_gen.c \
+			conv_tch_afs_7_95_gen.c conv_tch_afs_7_4_gen.c \
+			conv_tch_afs_6_7_gen.c conv_tch_afs_5_9_gen.c \
+			conv_tch_afs_5_15_gen.c conv_tch_afs_4_75_gen.c \
 			auth_core.c auth_comp128v1.c auth_comp128v23.c \
 			auth_milenage.c milenage/aes-encblock.c \
 			milenage/aes-internal.c milenage/aes-internal-enc.c \
@@ -30,3 +35,6 @@
 libosmogsm_la_LIBADD = libgsmint.la
 
 EXTRA_DIST = libosmogsm.map
+
+conv%gen.c: ../../utils/conv_gen.py
+	$(AM_V_GEN)python ../../utils/conv_gen.py
diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map
index f9a8369..5ed9499 100644
--- a/src/gsm/libosmogsm.map
+++ b/src/gsm/libosmogsm.map
@@ -56,6 +56,18 @@
 
 gsm0502_calc_paging_group;
 
+gsm0503_xcch;
+gsm0503_cs2;
+gsm0503_cs3;
+gsm0503_tch_afs_12_2;
+gsm0503_tch_afs_10_2;
+gsm0503_tch_afs_7_95;
+gsm0503_tch_afs_7_4;
+gsm0503_tch_afs_6_7;
+gsm0503_tch_afs_5_9;
+gsm0503_tch_afs_5_15;
+gsm0503_tch_afs_4_75;
+
 gsm0808_att_tlvdef;
 gsm0808_bssap_name;
 gsm0808_bssmap_name;