diff --git a/include/Makefile.am b/include/Makefile.am
index f95d90c..b5b0341 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -162,7 +162,7 @@ osmocom/core/crc%gen.h: osmocom/core/crcXXgen.h.tpl
$(AM_V_GEN)sed -e's/XX/$*/g' $< > $@
osmocom/gsm/gsm0503.h: $(top_srcdir)/utils/conv_gen.py $(top_srcdir)/utils/conv_codes_gsm.py
- $(AM_V_GEN)python2 $(top_srcdir)/utils/conv_gen.py gen_header gsm \
+ $(AM_V_GEN)@PYTHON_EXECUTABLE@ $(top_srcdir)/utils/conv_gen.py gen_header gsm \
--target-path $(builddir)/osmocom/gsm
CLEANFILES = osmocom/gsm/gsm0503.h
diff --git a/src/gsm/Makefile.am b/src/gsm/Makefile.am
index f85aba3..3bfaea7 100644
--- a/src/gsm/Makefile.am
+++ b/src/gsm/Makefile.am
@@ -47,6 +47,6 @@ EXTRA_DIST = libosmogsm.map
# Convolutional codes generation
gsm0503_conv.c: $(top_srcdir)/utils/conv_gen.py $(top_srcdir)/utils/conv_codes_gsm.py
- $(AM_V_GEN)python2 $(top_srcdir)/utils/conv_gen.py gen_codes gsm
+ $(AM_V_GEN)@PYTHON_EXECUTABLE@ $(top_srcdir)/utils/conv_gen.py gen_codes gsm
CLEANFILES = gsm0503_conv.c
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 5dd8e22..3d2a44d 100644
@@ -280,5 +280,5 @@ $(TESTSUITE): $(srcdir)/testsuite.at $(srcdir)/package.m4
conv/gsm0503_test_vectors.c: $(top_srcdir)/utils/conv_gen.py $(top_srcdir)/utils/conv_codes_gsm.py
- $(AM_V_GEN)python2 $(top_srcdir)/utils/conv_gen.py gen_vectors gsm \
+ $(AM_V_GEN)@PYTHON_EXECUTABLE@ $(top_srcdir)/utils/conv_gen.py gen_vectors gsm \
--target-path $(builddir)/conv
diff --git a/utils/conv_codes_gsm.py b/utils/conv_codes_gsm.py
index eeed4fd..ba84b5a 100644
--- a/utils/conv_codes_gsm.py
+++ b/utils/conv_codes_gsm.py
from conv_gen import ConvolutionalCode
from conv_gen import poly
diff --git a/utils/conv_gen.py b/utils/conv_gen.py
index 6b6b267..88968d3 100644