summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2021-06-19 16:52:38 +0000
committermidipix <writeonce@midipix.org>2021-06-19 16:52:38 +0000
commit5d8f7ae2d3ea618fe88695572b08a43e8195a920 (patch)
tree9ac40c5c86377245ae3e20ec3a50b048b0dcaf30
parente64c9dfb9a3e3c032b1cb4c011977ecc71452204 (diff)
downloadsbpython3-5d8f7ae2d3ea618fe88695572b08a43e8195a920.tar.bz2
sbpython3-5d8f7ae2d3ea618fe88695572b08a43e8195a920.tar.xz
project: pyext: _decimal extension: added refined host configuration.
-rw-r--r--project/config/cfgdefs.sh30
-rw-r--r--project/pycompile.mk3
-rw-r--r--project/variants/3.6.3/pyexts.h2
-rw-r--r--project/variants/3.6.3/pyexts.mk4
-rw-r--r--project/variants/3.7.1/pyexts.h2
-rw-r--r--project/variants/3.7.1/pyexts.mk4
6 files changed, 36 insertions, 9 deletions
diff --git a/project/config/cfgdefs.sh b/project/config/cfgdefs.sh
index c04c86d..fc13f41 100644
--- a/project/config/cfgdefs.sh
+++ b/project/config/cfgdefs.sh
@@ -239,6 +239,11 @@ cfgdefs_perform_common_tests()
cfgtest_newline
cfgtest_comment 'toolchain'
+ # math configuration
+ cfghost_x87_asm=
+ cfghost_x64_asm=
+ cfghost_aarch64_types=
+
# x87
mb_code_snippet=''
mb_code_snippet="$mb_code_snippet "'void fn(void)'
@@ -247,6 +252,7 @@ cfgdefs_perform_common_tests()
if cfgtest_code_snippet_asm "$mb_code_snippet"; then
cfgtest_cflags_append '-DHAVE_GCC_ASM_FOR_X87'
+ cfghost_x87_asm='yes'
fi
# x64
@@ -256,6 +262,30 @@ cfgdefs_perform_common_tests()
if cfgtest_code_snippet_asm "$mb_code_snippet"; then
cfgtest_cflags_append '-DHAVE_GCC_ASM_FOR_X64'
+ cfghost_x64_asm='yes'
+ fi
+
+ # aarch64
+ mb_code_snippet='__uint128_t aarch64_dummy = 0;'
+
+ if cfgtest_code_snippet_asm "$mb_code_snippet"; then
+ cfgtest_cflags_append '-DHAVE_GCC_UINT128_T'
+ cfghost_aarch64_types='yes'
+ fi
+
+ # math configuration selection
+ if [ $cfghost_aarch64_types = 'yes' ]; then
+ cfgtest_cflags_append '-DCONFIG_64'
+ cfgtest_cflags_append '-DANSI'
+ cfgtest_cflags_append '-DHAVE_UINT128_T'
+
+ elif [ $cfghost_x64_asm = 'yes' ]; then
+ cfgtest_cflags_append '-DCONFIG_64'
+ cfgtest_cflags_append '-DASM'
+
+ elif [ $cfghost_x87_asm = 'yes' ]; then
+ cfgtest_cflags_append '-DCONFIG_32'
+ cfgtest_cflags_append '-DANSI'
fi
# IEEE 754: little endian / big endian
diff --git a/project/pycompile.mk b/project/pycompile.mk
index 314c6d4..074a3ea 100644
--- a/project/pycompile.mk
+++ b/project/pycompile.mk
@@ -88,9 +88,6 @@ $(PYCOMPILE_DIR)/core/%.o: $(SOURCE_DIR)/%.c $(ALL_HEADERS) $(PYCOMPILE_TAGS)
$(PYCOMPILE_DIR)/pyext/obj/%.o: $(SOURCE_DIR)/Modules/%.c $(ALL_HEADERS) $(PYCOMPILE_TAGS)
$(NATIVE_CC) -c -o $@ $< $(PYCOMPILE_CFLAGS)
-$(PYCOMPILE_DIR)/pyext/obj/_decimal/%.o: NATIVE_CFLAGS += -DUNIVERSAL
-
-
PYCOMPILE_PYEXT_SRCS = \
$(PYEXT_DECIMAL_SRCS) \
$(PYEXT_ELEMENTTREE_SRCS) \
diff --git a/project/variants/3.6.3/pyexts.h b/project/variants/3.6.3/pyexts.h
index 0cd5a7e..352bb3d 100644
--- a/project/variants/3.6.3/pyexts.h
+++ b/project/variants/3.6.3/pyexts.h
@@ -124,7 +124,7 @@ static const struct pyext_meta pyexts[] = {
"_curses_panel"),
PYEXT_COMMON("_decimal",
- "-I$(SOURCE_DIR)/Modules/_decimal/libmpdec -DUNIVERSAL",
+ "-I$(SOURCE_DIR)/Modules/_decimal/libmpdec",
0,
"_decimal/_decimal",
"_decimal/libmpdec/basearith",
diff --git a/project/variants/3.6.3/pyexts.mk b/project/variants/3.6.3/pyexts.mk
index 4cc0eab..753ef69 100644
--- a/project/variants/3.6.3/pyexts.mk
+++ b/project/variants/3.6.3/pyexts.mk
@@ -1552,8 +1552,8 @@ PYEXT_DECIMAL_SRCS += pyext/obj/_decimal/libmpdec/transpose.c
PYEXT_DECIMAL_LOBJS = $(PYEXT_DECIMAL_SRCS:.c=.lo)
PYEXT_DECIMAL_OBJS = $(PYEXT_DECIMAL_SRCS:.c=.o)
-$(PYEXT_DECIMAL_LOBJS): CFLAGS_CONFIG += -I$(SOURCE_DIR)/Modules/_decimal/libmpdec -DUNIVERSAL
-$(PYEXT_DECIMAL_OBJS): CFLAGS_CONFIG += -I$(SOURCE_DIR)/Modules/_decimal/libmpdec -DUNIVERSAL
+$(PYEXT_DECIMAL_LOBJS): CFLAGS_CONFIG += -I$(SOURCE_DIR)/Modules/_decimal/libmpdec
+$(PYEXT_DECIMAL_OBJS): CFLAGS_CONFIG += -I$(SOURCE_DIR)/Modules/_decimal/libmpdec
PYEXT_DECIMAL_SHARED = pyext/_decimal$(PYTHON_SOEXT)
PYEXT_DECIMAL_STATIC = pyext/_decimal$(OS_ARCHIVE_EXT)
diff --git a/project/variants/3.7.1/pyexts.h b/project/variants/3.7.1/pyexts.h
index 40b7aa8..c0e6487 100644
--- a/project/variants/3.7.1/pyexts.h
+++ b/project/variants/3.7.1/pyexts.h
@@ -130,7 +130,7 @@ static const struct pyext_meta pyexts[] = {
"_curses_panel"),
PYEXT_COMMON("_decimal",
- "-I$(SOURCE_DIR)/Modules/_decimal/libmpdec -DUNIVERSAL",
+ "-I$(SOURCE_DIR)/Modules/_decimal/libmpdec",
0,
"_decimal/_decimal",
"_decimal/libmpdec/basearith",
diff --git a/project/variants/3.7.1/pyexts.mk b/project/variants/3.7.1/pyexts.mk
index 542473b..2cf217d 100644
--- a/project/variants/3.7.1/pyexts.mk
+++ b/project/variants/3.7.1/pyexts.mk
@@ -1637,8 +1637,8 @@ PYEXT_DECIMAL_SRCS += pyext/obj/_decimal/libmpdec/transpose.c
PYEXT_DECIMAL_LOBJS = $(PYEXT_DECIMAL_SRCS:.c=.lo)
PYEXT_DECIMAL_OBJS = $(PYEXT_DECIMAL_SRCS:.c=.o)
-$(PYEXT_DECIMAL_LOBJS): CFLAGS_CONFIG += -I$(SOURCE_DIR)/Modules/_decimal/libmpdec -DUNIVERSAL
-$(PYEXT_DECIMAL_OBJS): CFLAGS_CONFIG += -I$(SOURCE_DIR)/Modules/_decimal/libmpdec -DUNIVERSAL
+$(PYEXT_DECIMAL_LOBJS): CFLAGS_CONFIG += -I$(SOURCE_DIR)/Modules/_decimal/libmpdec
+$(PYEXT_DECIMAL_OBJS): CFLAGS_CONFIG += -I$(SOURCE_DIR)/Modules/_decimal/libmpdec
PYEXT_DECIMAL_SHARED = pyext/_decimal$(PYTHON_SOEXT)
PYEXT_DECIMAL_STATIC = pyext/_decimal$(OS_ARCHIVE_EXT)