From 781030419ae3cb5c6c086c7d404723468f8e8327 Mon Sep 17 00:00:00 2001 From: Edgar Costa Date: Sat, 21 Jun 2025 19:00:56 -0400 Subject: [PATCH 1/4] Makefile.in modeled after flints --- src/flintxx/test/t-dummy.c | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 src/flintxx/test/t-dummy.c diff --git a/src/flintxx/test/t-dummy.c b/src/flintxx/test/t-dummy.c deleted file mode 100644 index aff0885ad9..0000000000 --- a/src/flintxx/test/t-dummy.c +++ /dev/null @@ -1,7 +0,0 @@ -/* Empty file to keep MinGW happy */ - -int main(void) -{ - return 0; -} - From 04c000bf0f320b133940515d61c0847b8f618e43 Mon Sep 17 00:00:00 2001 From: Edgar Costa Date: Sat, 21 Jun 2025 19:03:20 -0400 Subject: [PATCH 2/4] Makefile.in modeled after flints --- Makefile.in | 840 +++++----------------------------------------------- 1 file changed, 76 insertions(+), 764 deletions(-) diff --git a/Makefile.in b/Makefile.in index 1c7b55da80..ac1b4b27d0 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,801 +1,113 @@ -# -# Copyright (C) 2023 Albin Ahlbäck -# -# This file is part of FLINT. -# -# FLINT is free software: you can redistribute it and/or modify it under -# the terms of the GNU Lesser General Public License (LGPL) as published -# by the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. See . -# - -FLINT_DIR:=. -SRC_DIR:=src -BUILD_DIR:=build -ABS_FLINT_DIR:='$(patsubst %/,%, $(dir $(abspath $(lastword $(MAKEFILE_LIST)))))' -ABS_SRC_DIR:=$(ABS_FLINT_DIR)/$(SRC_DIR) -ABS_BUILD_DIR:=$(ABS_FLINT_DIR)/$(SRC_DIR) - -FLINT_MAJOR:=@FLINT_MAJOR@ -FLINT_MINOR:=@FLINT_MINOR@ -FLINT_PATCH:=@FLINT_PATCH@ -FLINT_MAJOR_SO:=@FLINT_MAJOR_SO@ -FLINT_MINOR_SO:=@FLINT_MINOR_SO@ -FLINT_PATCH_SO:=@FLINT_PATCH_SO@ - -FLINT_LIB:=@FLINT_LIB@ -FLINT_LIB_MAJOR:=@FLINT_LIB_MAJOR@ -FLINT_LIB_FULL:=@FLINT_LIB_FULL@ -FLINT_IMPLIB:=@FLINT_IMPLIB@ -FLINT_LIB_STATIC:=@FLINT_LIB_STATIC@ - -FLINT_DLLLIB:=@FLINT_DLLLIB@ -FLINT_DYLIB:=@FLINT_DYLIB@ -FLINT_SOLIB:=@FLINT_SOLIB@ - -prefix:=@prefix@ -exec_prefix:=@exec_prefix@ - -INCLUDEDIR:=$(DESTDIR)@includedir@ -LIBDIR:=$(DESTDIR)@libdir@ -BINDIR:=$(DESTDIR)@bindir@ -PKGCONFIGDIR:=$(LIBDIR)/pkgconfig - -HOST_OS:=@host_os@ - -EXEEXT:=@EXEEXT@ - -AR:=@AR@ -CC:=@CC@ -CXX:=@CC@ -DLLTOOL:=@DLLTOOL@ -LD:=@LD@ -LDCONFIG:=@LDCONFIG@ -LN_S:=@LN_S@ -MKDIR_P:=@MKDIR_P@ -STRIP:=@STRIP@ -RM_F:=rm -f -RM_RF:=rm -rf -CP:=cp -CP_A:=cp -a - -STATIC:=@STATIC@ -SHARED:=@SHARED@ - -COVERAGE:=@COVERAGE@ -WANT_NTL:=@WANT_NTL@ - -WANT_DEPS:=@WANT_DEPS@ - -WANT_CXX:=@WANT_CXX@ - -GMP_LIB_PATH:=@GMP_LIB_PATH@ -MPFR_LIB_PATH:=@MPFR_LIB_PATH@ -BLAS_LIB_PATH:=@BLAS_LIB_PATH@ -GC_LIB_PATH:=@GC_LIB_PATH@ -NTL_LIB_PATH:=@NTL_LIB_PATH@ - -CFLAGS:=@CFLAGS@ -TESTCFLAGS:=@TESTCFLAGS@ -CPPFLAGS:=@CPPFLAGS@ -CPPFLAGS2:=-L$(FLINT_DIR) $(CPPFLAGS) -LIB_CPPFLAGS:=@LIB_CPPFLAGS@ -CXXFLAGS:=@CXXFLAGS@ -LIBS:=@LIBS@ -LIBS2:=$(LIBS) -lflint -PIC_FLAG:=@PIC_FLAG@ - -LDFLAGS:=@LDFLAGS@ -EXTRA_SHARED_FLAGS:=@EXTRA_SHARED_FLAGS@ $(foreach path, $(GMP_LIB_PATH) $(MPFR_LIB_PATH) $(BLAS_LIB_PATH) $(GC_LIB_PATH) $(NTL_LIB_PATH), @WL@-rpath,$(path)) -EXE_LDFLAGS:=$(LDFLAGS) $(foreach path, $(ABS_FLINT_DIR) $(GMP_LIB_PATH) $(MPFR_LIB_PATH) $(BLAS_LIB_PATH) $(GC_LIB_PATH) $(NTL_LIB_PATH), @WL@-rpath,$(path)) - -################################################################################ -################################################################################ -# files and directories -################################################################################ -################################################################################ - -################################################################################ -# configuration files -################################################################################ - -CFG_FILES := \ - $(FLINT_DIR)/config.log $(SRC_DIR)/flint-config.h \ - $(SRC_DIR)/fft_tuning.h $(FLINT_DIR)/flint.pc \ - $(FLINT_DIR)/Makefile $(SRC_DIR)/fmpz/fmpz.c - -################################################################################ -# directories -################################################################################ - -HEADLESS_DIRS := generic_files - -HEADER_DIRS := \ - thread_pool thread_support \ - \ - ulong_extras \ - long_extras \ - perm \ - double_extras d_vec d_mat \ - mpn_extras \ - mpf_vec mpf_mat \ - mpfr_vec mpfr_mat \ - nmod nmod_vec nmod_mat nmod_poly \ - fmpz fmpz_vec fmpz_mat fmpz_poly \ - fmpz_mod fmpz_mod_vec fmpz_mod_mat fmpz_mod_poly \ - fmpq fmpq_vec fmpq_mat fmpq_poly \ - \ - fq fq_vec fq_mat fq_poly \ - fq_nmod fq_nmod_vec fq_nmod_mat fq_nmod_poly \ - fq_zech fq_zech_mat fq_zech_poly \ - fq_default fq_default_mat fq_default_poly \ - fq_embed \ - fq_nmod_embed \ - fq_zech_embed \ - padic padic_mat padic_poly \ - qadic \ - \ - nmod_poly_factor fmpz_factor \ - fmpz_poly_factor fmpz_mod_poly_factor \ - fq_poly_factor fq_nmod_poly_factor \ - fq_zech_poly_factor fq_default_poly_factor \ - \ - nmod_poly_mat fmpz_poly_mat \ - \ - mpoly nmod_mpoly fmpz_mpoly fmpz_mod_mpoly \ - fmpq_mpoly fq_nmod_mpoly fq_zech_mpoly \ - \ - nmod_mpoly_factor fmpz_mpoly_factor \ - fmpz_mod_mpoly_factor fmpq_mpoly_factor \ - fq_nmod_mpoly_factor fq_zech_mpoly_factor \ - \ - fft @FFT_SMALL@ fmpz_poly_q fmpz_lll \ - n_poly arith qsieve aprcl \ - \ - nf nf_elem qfb \ - \ - double_interval dlog \ - fmpz_extras fmpzi \ - bool_mat partitions \ - mag \ - arf acf arb acb \ - arb_mat arb_poly arb_calc arb_hypgeom \ - acb_mat acb_poly acb_calc acb_hypgeom \ - arb_fmpz_poly arb_fpwrap \ - acb_dft acb_elliptic acb_modular acb_dirichlet \ - dirichlet bernoulli hypgeom \ - \ - gr gr_generic gr_vec gr_mat \ - gr_poly gr_mpoly gr_special \ - \ - calcium \ - fmpz_mpoly_q \ - fexpr fexpr_builtin \ - qqbar \ - ca ca_ext ca_field ca_vec \ - ca_poly ca_mat - -DIRS := $(HEADLESS_DIRS) $(HEADER_DIRS) - -TEMPLATE_DIRS := \ - fq_vec_templates fq_mat_templates \ - fq_poly_templates fq_poly_factor_templates \ - fq_embed_templates fq_templates - -BUILD_DIRS := \ - $(BUILD_DIR) \ - $(patsubst %, $(BUILD_DIR)/%, $(DIRS)) \ - $(patsubst %, $(BUILD_DIR)/%/profile, $(DIRS)) \ - $(patsubst %, $(BUILD_DIR)/%/test, $(DIRS)) \ - $(patsubst %, $(BUILD_DIR)/%/tune, $(DIRS)) \ - $(BUILD_DIR)/examples $(BUILD_DIR)/profile \ - $(BUILD_DIR)/test $(BUILD_DIR)/tune -ifneq ($(WANT_NTL), 0) -BUILD_DIRS += \ - $(BUILD_DIR)/interfaces $(BUILD_DIR)/interfaces/test -endif -ifneq ($(COVERAGE), 0) -BUILD_DIRS += \ - $(BUILD_DIR)/coverage -endif - -INSTALL_DIRS := \ - $(LIBDIR) $(INCLUDEDIR)/flint \ - $(PKGCONFIGDIR) -ifneq ($(WANT_CXX),0) -INSTALL_DIRS += $(INCLUDEDIR)/flint/flintxx -endif -ifneq ($(FLINT_DLLLIB),0) -INSTALL_DIRS += $(BINDIR) -endif - -################################################################################ -# headers -################################################################################ - -SINGLE_HEADERS := \ - flint.h longlong.h exception.h gmpcompat.h \ - hashmap.h profiler.h templates.h flint-config.h \ - fft_tuning.h \ - crt_helpers.h machine_vectors.h \ - \ - fq_zech_vec.h \ - \ - limb_types.h mpoly_types.h \ - fmpz_types.h fmpq_types.h \ - nmod_types.h fmpz_mod_types.h \ - fq_types.h fq_nmod_types.h \ - fq_zech_types.h \ - arf_types.h acf_types.h \ - arb_types.h acb_types.h -ifneq ($(WANT_NTL), 0) -SINGLE_HEADERS += NTL-interface.h -endif - -HEADERS := $(patsubst %,$(SRC_DIR)/%, \ - $(patsubst %,%,$(SINGLE_HEADERS)) \ - $(patsubst %,%.h,$(HEADER_DIRS)) \ - $(patsubst %,%.h,$(TEMPLATE_DIRS)) \ - ) +## Makefile.in for flintxx, modeled after flint's + +# These point to the source directory +abs_top_srcdir := @abs_top_srcdir@ +SRCDIR := $(abs_top_srcdir)/src +BUILD_DIR := build +TEST_BUILD_DIR := $(BUILD_DIR)/test +EXAMPLE_BUILD_DIR := $(BUILD_DIR)/examples + +# These point to the source directory +FLINTXX_SRCDIR := $(SRCDIR)/flintxx +FLINTXX_PUBLIC_SRCDIR := $(SRCDIR)/flintxx_public + +# Build tools and flags from configure +CXX := @CXX@ +EXEEXT := @EXEEXT@ +CPPFLAGS := @CPPFLAGS@ +CXXFLAGS := @CXXFLAGS@ +LDFLAGS := @LDFLAGS@ +LIBS := @LIBS@ +FLINT_CFLAGS := @FLINT_CFLAGS@ +FLINT_LIBS := @FLINT_LIBS@ +MKDIR_P := @MKDIR_P@ +INCLUDEDIR := @includedir@ +CP := cp +RM_F := rm -f +RM_RF := rm -rf + +# Installation directory +INSTALL_DIR := $(DESTDIR)$(INCLUDEDIR)/flintxx + +# Our C++ flags +AM_CPPFLAGS := -I$(FLINTXX_PUBLIC_SRCDIR) -I$(FLINTXX_SRCDIR) $(FLINT_CFLAGS) +AM_LDFLAGS := $(LDFLAGS) +AM_LIBS := $(LIBS) $(FLINT_LIBS) ################################################################################ # sources ################################################################################ -define xxx_SOURCES -$(1)_SOURCES := $(wildcard $(SRC_DIR)/$(1)/*.c) -endef -$(foreach dir, $(DIRS), $(eval $(call xxx_SOURCES,$(dir)))) -SOURCES := $(foreach dir,$(DIRS),$($(dir)_SOURCES)) -# NOTE: We do not add CPP files to C files in SOURCES in order to not screw up -# the `patsubst' in the object files. -ifneq ($(WANT_NTL), 0) -interfaces_SOURCES := $(SRC_DIR)/interfaces/NTL-interface.cpp -endif - -define xxx_PROF_SOURCES -$(1)_PROF_SOURCES := $(wildcard $(SRC_DIR)/$(1)/profile/*.c) -endef -_PROF_SOURCES := $(wildcard $(SRC_DIR)/profile/*.c) -$(foreach dir, $(DIRS), $(eval $(call xxx_PROF_SOURCES,$(dir)))) -PROF_SOURCES := $(foreach dir,$(DIRS),$($(dir)_PROF_SOURCES)) $(_PROF_SOURCES) - -# FIXME: De-hardcode fq_zech_vec from this. -fq_zech_vec_TEST_SOURCES := $(wildcard $(SRC_DIR)/fq_zech_vec/test/*.c) -define xxx_TEST_SOURCES -$(1)_TEST_SOURCES := $(wildcard $(SRC_DIR)/$(1)/test/*.c) -endef -_TEST_SOURCES := $(wildcard $(SRC_DIR)/test/*.c) -$(foreach dir, $(DIRS), $(eval $(call xxx_TEST_SOURCES,$(dir)))) -TEST_SOURCES := $(foreach dir,$(DIRS),$($(dir)_TEST_SOURCES)) $(_TEST_SOURCES) $(fq_zech_vec_TEST_SOURCES) -ifneq ($(WANT_NTL), 0) -interfaces_TEST_SOURCES := $(SRC_DIR)/interfaces/test/t-NTL-interface.cpp -endif - -define xxx_TUNE_SOURCES -$(1)_TUNE_SOURCES := $(wildcard $(SRC_DIR)/$(1)/tune/*.c) -endef -_TUNE_SOURCES := $(wildcard $(SRC_DIR)/tune/*.c) -$(foreach dir, $(DIRS), $(eval $(call xxx_TUNE_SOURCES,$(dir)))) -TUNE_SOURCES := $(foreach dir,$(DIRS),$($(dir)_TUNE_SOURCES)) $(_TUNE_SOURCES) - -EXMP_SOURCES := $(wildcard $(FLINT_DIR)/examples/*.c) - -################################################################################ -# objects -################################################################################ - -ifneq ($(STATIC), 0) -define xxx_OBJS -$(1)_OBJS := $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$($(1)_SOURCES)) -endef -$(foreach dir, $(DIRS), $(eval $(call xxx_OBJS,$(dir)))) -OBJS := $(foreach dir, $(DIRS), $($(dir)_OBJS)) -ifneq ($(WANT_NTL), 0) -OBJS += $(BUILD_DIR)/interfaces/NTL-interface.o -endif -endif - -################################################################################ -# library objects -################################################################################ - -ifneq ($(SHARED), 0) -define xxx_LOBJS -$(1)_LOBJS := $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.lo,$($(1)_SOURCES)) -endef -$(foreach dir, $(DIRS), $(eval $(call xxx_LOBJS,$(dir)))) -LOBJS := $(foreach dir, $(DIRS), $($(dir)_LOBJS)) -ifneq ($(WANT_NTL), 0) -LOBJS += $(BUILD_DIR)/interfaces/NTL-interface.lo -endif -endif - -################################################################################ -# executables -################################################################################ - -define xxx_PROFS -$(1)_PROFS := $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%$(EXEEXT),$($(1)_PROF_SOURCES)) -endef -_PROFS := $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%$(EXEEXT),$(_PROF_SOURCES)) -$(foreach dir, $(DIRS), $(eval $(call xxx_PROFS,$(dir)))) -PROFS := $(foreach dir,$(DIRS),$($(dir)_PROFS)) $(_PROFS) - -define xxx_TESTS -$(1)_TESTS := $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%$(EXEEXT),$($(1)_TEST_SOURCES)) -endef -_TESTS := $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%$(EXEEXT),$(_TEST_SOURCES)) -ifneq ($(WANT_NTL), 0) -interfaces_TESTS := $(BUILD_DIR)/interfaces/test/t-NTL-interface$(EXEEXT) -endif -$(foreach dir, $(DIRS), $(eval $(call xxx_TESTS,$(dir)))) -TESTS := $(foreach dir,$(DIRS),$($(dir)_TESTS)) $(_TESTS) $(interfaces_TESTS) - -define xxx_TUNES -$(1)_TUNES := $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%$(EXEEXT),$($(1)_TUNE_SOURCES)) -endef -_TUNES := $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%$(EXEEXT),$(_TUNE_SOURCES)) -$(foreach dir, $(DIRS), $(eval $(call xxx_TUNES,$(dir)))) -TUNES := $(foreach dir,$(DIRS),$($(dir)_TUNES)) $(_TUNES) - -EXMPS := $(patsubst $(FLINT_DIR)/%.c,$(BUILD_DIR)/%$(EXEEXT),$(EXMP_SOURCES)) - -################################################################################ -################################################################################ -# recipes -################################################################################ -################################################################################ - -################################################################################ -# main recipe -################################################################################ - -all: library - -################################################################################ -# library -################################################################################ - -ifneq ($(SHARED), 0) -library: shared -endif -ifneq ($(STATIC), 0) -library: static -endif +TEST_SOURCES_CPP := $(wildcard $(FLINTXX_SRCDIR)/test/*.cpp) +TEST_SOURCES_CC := $(filter-out $(FLINTXX_SRCDIR)/test/t-compiler-errors.cc, $(wildcard $(FLINTXX_SRCDIR)/test/*.cc)) +TEST_SOURCES := $(TEST_SOURCES_CPP) $(TEST_SOURCES_CC) -ifneq ($(SHARED), 0) -shared: $(FLINT_DIR)/$(FLINT_LIB_FULL) - -# The following is to avoid reaching the maximum length of command line -# arguments, mainly present on MinGW. -define xxx_merged_lobj_rule -$(BUILD_DIR)/$(1)_merged.lo: $($(1)_LOBJS) | $(BUILD_DIR) - @$(LD) -r $($(1)_LOBJS) -o $(BUILD_DIR)/$(1)_merged.lo -endef -$(foreach dir, $(DIRS), $(eval $(call xxx_merged_lobj_rule,$(dir)))) -MERGED_LOBJS:=$(foreach dir, $(DIRS),$(BUILD_DIR)/$(dir)_merged.lo) - -$(FLINT_DIR)/$(FLINT_LIB_FULL): $(MERGED_LOBJS) - $(CC) $(CFLAGS) -shared $(EXTRA_SHARED_FLAGS) $(MERGED_LOBJS) -o $(FLINT_LIB_FULL) $(LDFLAGS) $(LIBS) -ifneq ($(FLINT_SOLIB), 0) - $(LDCONFIG) -n . -endif - $(RM_F) $(FLINT_LIB) - $(RM_F) $(FLINT_LIB_MAJOR) - $(LN_S) $(FLINT_LIB_FULL) $(FLINT_LIB) - $(LN_S) $(FLINT_LIB_FULL) $(FLINT_LIB_MAJOR) -endif - -ifneq ($(STATIC), 0) -static: $(FLINT_DIR)/$(FLINT_LIB_STATIC) - -# The following is to avoid reaching the maximum length of command line -# arguments, mainly present on MinGW. -define xxx_merged_obj_rule -$(BUILD_DIR)/$(1)_merged.o: $($(1)_OBJS) | $(BUILD_DIR) - @$(LD) -r $($(1)_OBJS) -o $(BUILD_DIR)/$(1)_merged.o -endef -$(foreach dir, $(DIRS), $(eval $(call xxx_merged_obj_rule,$(dir)))) -MERGED_OBJS:=$(foreach dir, $(DIRS),$(BUILD_DIR)/$(dir)_merged.o) - -$(FLINT_DIR)/$(FLINT_LIB_STATIC): $(MERGED_OBJS) - $(AR) rcs $(FLINT_DIR)/$(FLINT_LIB_STATIC) $(MERGED_OBJS) -endif - -################################################################################ -# directories -################################################################################ - -$(BUILD_DIRS) $(INSTALL_DIRS): - $(MKDIR_P) $@ +EXAMPLE_SOURCES := $(wildcard $(FLINTXX_SRCDIR)/examples/*.cpp) ################################################################################ -# inclusions -################################################################################ - -ifneq ($(WANT_DEPS), 0) - -ifeq ($(words $(MAKECMDGOALS)), 0) - --include $(BUILD_DIR)/*/*.o.d --include $(BUILD_DIR)/*/*.lo.d - -else ifeq ($(words $(MAKECMDGOALS)), 1) - -ifeq ($(MAKECMDGOALS), clean) -# Include nothing -else ifeq ($(MAKECMDGOALS), dist) -# Include nothing -else ifeq ($(MAKECMDGOALS), distclean) -# Include nothing -else ifeq ($(MAKECMDGOALS), uninstall) -# Include nothing -else ifeq ($(findstring print-,$(MAKECMDGOALS)), print-) -# Include nothing -else ifeq ($(MAKECMDGOALS), static) --include $(BUILD_DIR)/*/*.o.d -else ifeq ($(MAKECMDGOALS), shared) --include $(BUILD_DIR)/*/*.lo.d -else ifeq ($(MAKECMDGOALS), library) --include $(BUILD_DIR)/*/*.o.d --include $(BUILD_DIR)/*/*.lo.d -else ifeq ($(MAKECMDGOALS), install) --include $(BUILD_DIR)/*/*.o.d --include $(BUILD_DIR)/*/*.lo.d -else ifeq ($(MAKECMDGOALS), examples) --include $(BUILD_DIR)/*/*.o.d --include $(BUILD_DIR)/*/*.lo.d --include $(BUILD_DIR)/examples/*.d -else ifeq ($(MAKECMDGOALS), profile) -ifdef MOD -$(warning Dependency tracking only set to cover the profile executables of $(MOD).) --include $(foreach dir, $(MOD), $(BUILD_DIR)/$(dir)/profile/*.d) -else --include $(BUILD_DIR)/*/*.o.d --include $(BUILD_DIR)/*/*.lo.d --include $(BUILD_DIR)/profile/*.d --include $(BUILD_DIR)/*/profile/*.d -endif -else ifeq ($(MAKECMDGOALS), tests) --include $(BUILD_DIR)/*/*.o.d --include $(BUILD_DIR)/*/*.lo.d --include $(BUILD_DIR)/test/*.d --include $(BUILD_DIR)/*/test/*.d -else ifeq ($(MAKECMDGOALS), check) -ifdef MOD -$(warning Dependency tracking only set to cover the test executables of $(MOD).) --include $(foreach dir, $(MOD), $(BUILD_DIR)/$(dir)/test/*.d) -else --include $(BUILD_DIR)/*/*.o.d --include $(BUILD_DIR)/*/*.lo.d --include $(BUILD_DIR)/test/*.d --include $(BUILD_DIR)/*/test/*.d -endif -else ifeq ($(MAKECMDGOALS), tune) --include $(BUILD_DIR)/*/*.o.d --include $(BUILD_DIR)/*/*.lo.d --include $(BUILD_DIR)/tune/*.d --include $(BUILD_DIR)/*/tune/*.d -else ifeq ($(MAKECMDGOALS), valgrind) -ifdef MOD -$(warning Dependency tracking only set to cover the test executables of $(MOD).) --include $(foreach dir, $(MOD), $(BUILD_DIR)/$(dir)/test/*.d) -else --include $(BUILD_DIR)/*/*.o.d --include $(BUILD_DIR)/*/*.lo.d --include $(BUILD_DIR)/test/*.d --include $(BUILD_DIR)/*/test/*.d -endif -else -# Cannot recognize the command, so we simply include everything --include $(BUILD_DIR)/*/*.o.d --include $(BUILD_DIR)/*/*.lo.d --include $(BUILD_DIR)/test/*.d --include $(BUILD_DIR)/*/test/*.d --include $(BUILD_DIR)/profile/*.d --include $(BUILD_DIR)/*/profile/*.d --include $(BUILD_DIR)/examples/*.d -endif - -else - -# Multiple goals. Not currently implemented, so simply include everything. --include $(BUILD_DIR)/*/*.o.d --include $(BUILD_DIR)/*/*.lo.d --include $(BUILD_DIR)/test/*.d --include $(BUILD_DIR)/*/test/*.d --include $(BUILD_DIR)/profile/*.d --include $(BUILD_DIR)/*/profile/*.d --include $(BUILD_DIR)/examples/*.d - -endif - -endif - -################################################################################ -# objects -################################################################################ - -ifneq ($(STATIC), 0) -define xxx_OBJS_rule -$(BUILD_DIR)/$(1)/%.o: $(SRC_DIR)/$(1)/%.c | $(BUILD_DIR)/$(1) - @echo " CC $$(@:$(BUILD_DIR)/%=%)" - @$(CC) $(CFLAGS) $(CPPFLAGS) $(LIB_CPPFLAGS) -c $$< -o $$@ -MMD -MF $$(@:%=%.d) -endef - -$(foreach dir, $(DIRS), $(eval $(call xxx_OBJS_rule,$(dir)))) - -ifneq ($(WANT_NTL), 0) -$(BUILD_DIR)/interfaces/NTL-interface.o: $(SRC_DIR)/interfaces/test/t-NTL-interface.cpp | $(BUILD_DIR)/interfaces - @echo " CXX $(@:$(BUILD_DIR)/%=%)" - @$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LIB_CPPFLAGS) -c $< -o $@ -MMD -MF $(@:%=%.d) -endif -endif - -################################################################################ -# library objects +# headers ################################################################################ - -ifneq ($(SHARED), 0) -define xxx_LOBJS_rule -$(BUILD_DIR)/$(1)/%.lo: $(SRC_DIR)/$(1)/%.c | $(BUILD_DIR)/$(1) - @echo " CC $$(@:$(BUILD_DIR)/%=%)" - @$(CC) $(PIC_FLAG) $(CFLAGS) $(CPPFLAGS) $(LIB_CPPFLAGS) -c $$< -o $$@ -MMD -MF $$(@:%=%.d) -endef - -$(foreach dir, $(DIRS), $(eval $(call xxx_LOBJS_rule,$(dir)))) - -ifneq ($(WANT_NTL), 0) -$(BUILD_DIR)/interfaces/NTL-interface.lo: $(SRC_DIR)/interfaces/test/t-NTL-interface.cpp | $(BUILD_DIR)/interfaces - @echo " CXX $(@:$(BUILD_DIR)/%=%)" - @$(CXX) $(PIC_FLAG) $(CXXFLAGS) $(CPPFLAGS) $(LIB_CPPFLAGS) -c $< -o $@ -MMD -MF $(@:%=.d) -endif -endif +FLINTXX_HEADERS_PUBLIC := $(wildcard $(FLINTXX_PUBLIC_SRCDIR)/*.h) +FLINTXX_HEADERS_PRIVATE := $(wildcard $(FLINTXX_SRCDIR)/*.h) ################################################################################ # executables ################################################################################ -ifeq ($(SHARED), 0) -$(BUILD_DIR)/profile/%$(EXEEXT): $(SRC_DIR)/profile/%.c $(FLINT_DIR)/$(FLINT_LIB_STATIC) | $(BUILD_DIR)/profile - @echo " CC $(@:$(BUILD_DIR)/%=%)" - @$(CC) $(TESTCFLAGS) $(CPPFLAGS2) $< -o $@ $(EXE_LDFLAGS) $(LIBS2) -MMD -MF $(@:%=%.d) -else -$(BUILD_DIR)/profile/%$(EXEEXT): $(SRC_DIR)/profile/%.c | $(FLINT_DIR)/$(FLINT_LIB_FULL) $(BUILD_DIR)/profile - @echo " CC $(@:$(BUILD_DIR)/%=%)" - @$(CC) $(TESTCFLAGS) $(CPPFLAGS2) $< -o $@ $(EXE_LDFLAGS) $(LIBS2) -MMD -MF $(@:%=%.d) -endif - -ifeq ($(SHARED), 0) -define xxx_PROFS_rule -$(BUILD_DIR)/$(1)/profile/%$(EXEEXT): $(SRC_DIR)/$(1)/profile/%.c $(FLINT_DIR)/$(FLINT_LIB_STATIC) | $(BUILD_DIR)/$(1)/profile - @echo " CC $$(@:$(BUILD_DIR)/%=%)" - @$(CC) $(TESTCFLAGS) $(CPPFLAGS2) $$< -o $$@ $(EXE_LDFLAGS) $(LIBS2) -MMD -MF $$(@:%=%.d) -endef -else -define xxx_PROFS_rule -$(BUILD_DIR)/$(1)/profile/%$(EXEEXT): $(SRC_DIR)/$(1)/profile/%.c | $(FLINT_DIR)/$(FLINT_LIB_FULL) $(BUILD_DIR)/$(1)/profile - @echo " CC $$(@:$(BUILD_DIR)/%=%)" - @$(CC) $(TESTCFLAGS) $(CPPFLAGS2) $$< -o $$@ $(EXE_LDFLAGS) $(LIBS2) -MMD -MF $$(@:%=%.d) -endef -endif - -$(foreach dir, $(DIRS), $(eval $(call xxx_PROFS_rule,$(dir)))) - -ifeq ($(SHARED), 0) -$(BUILD_DIR)/test/%$(EXEEXT): $(SRC_DIR)/test/%.c $(FLINT_DIR)/$(FLINT_LIB_STATIC) | $(BUILD_DIR)/test - @echo " CC $(@:$(BUILD_DIR)/%=%)" - @$(CC) $(TESTCFLAGS) $(CPPFLAGS2) $< -o $@ $(EXE_LDFLAGS) $(LIBS2) -MMD -MF $(@:%=%.d) -else -$(BUILD_DIR)/test/%$(EXEEXT): $(SRC_DIR)/test/%.c | $(FLINT_DIR)/$(FLINT_LIB_FULL) $(BUILD_DIR)/test - @echo " CC $(@:$(BUILD_DIR)/%=%)" - @$(CC) $(TESTCFLAGS) $(CPPFLAGS2) $< -o $@ $(EXE_LDFLAGS) $(LIBS2) -MMD -MF $(@:%=%.d) -endif - -ifeq ($(SHARED), 0) -define xxx_TESTS_rule -$(BUILD_DIR)/$(1)/test/%$(EXEEXT): $(SRC_DIR)/$(1)/test/%.c $(FLINT_DIR)/libflint.a | $(BUILD_DIR)/$(1)/test - @echo " CC $$(@:$(BUILD_DIR)/%=%)" - @$(CC) $(TESTCFLAGS) $(CPPFLAGS2) $$< -o $$@ $(EXE_LDFLAGS) $(LIBS2) -MMD -MF $$(@:%=%.d) -endef -else -define xxx_TESTS_rule -$(BUILD_DIR)/$(1)/test/%$(EXEEXT): $(SRC_DIR)/$(1)/test/%.c | $(FLINT_DIR)/$(FLINT_LIB_FULL) $(BUILD_DIR)/$(1)/test - @echo " CC $$(@:$(BUILD_DIR)/%=%)" - @$(CC) $(TESTCFLAGS) $(CPPFLAGS2) $$< -o $$@ $(EXE_LDFLAGS) $(LIBS2) -MMD -MF $$(@:%=%.d) -endef -endif - -$(foreach dir, $(DIRS), $(eval $(call xxx_TESTS_rule,$(dir)))) +TESTS_FROM_CPP := $(patsubst $(FLINTXX_SRCDIR)/test/%.cpp,$(TEST_BUILD_DIR)/%$(EXEEXT),$(TEST_SOURCES_CPP)) +TESTS_FROM_CC := $(patsubst $(FLINTXX_SRCDIR)/test/%.cc,$(TEST_BUILD_DIR)/%$(EXEEXT),$(TEST_SOURCES_CC)) +TESTS := $(TESTS_FROM_CPP) $(TESTS_FROM_CC) +TEST_RUNS := $(TESTS:%=%_TEST_RUN) -ifneq ($(WANT_NTL), 0) -ifeq ($(SHARED), 0) -$(BUILD_DIR)/interfaces/test/t-NTL-interface$(EXEEXT): $(SRC_DIR)/interfaces/test/t-NTL-interface.cpp $(FLINT_DIR)/$(FLINT_LIB_STATIC) | $(BUILD_DIR)/interfaces/test - @echo " CXX $(@:$(BUILD_DIR)/%=%)" - @$(CXX) $(CXXFLAGS) $(CPPFLAGS2) $< -o $@ $(EXE_LDFLAGS) $(LIBS2) -MMD -MF $(@:%=%.d) -else -$(BUILD_DIR)/interfaces/test/t-NTL-interface$(EXEEXT): $(SRC_DIR)/interfaces/test/t-NTL-interface.cpp | $(FLINT_DIR)/$(FLINT_LIB_FULL) $(BUILD_DIR)/interfaces/test - @echo " CXX $(@:$(BUILD_DIR)/%=%)" - @$(CXX) $(CXXFLAGS) $(CPPFLAGS2) $< -o $@ $(EXE_LDFLAGS) $(LIBS2) -MMD -MF $(@:%=%.d) -endif -endif +EXAMPLES := $(patsubst $(FLINTXX_SRCDIR)/examples/%.cpp,$(EXAMPLE_BUILD_DIR)/%$(EXEEXT),$(EXAMPLE_SOURCES)) -ifeq ($(SHARED), 0) -$(BUILD_DIR)/tune/%$(EXEEXT): $(SRC_DIR)/tune/%.c $(FLINT_DIR)/$(FLINT_LIB_STATIC) | $(BUILD_DIR)/tune - @echo " CC $(@:$(BUILD_DIR)/%=%)" - @$(CC) $(TESTCFLAGS) $(CPPFLAGS2) $< -o $@ $(EXE_LDFLAGS) $(LIBS2) -MMD -MF $(@:%=%.d) -else -$(BUILD_DIR)/tune/%$(EXEEXT): $(SRC_DIR)/tune/%.c | $(FLINT_DIR)/$(FLINT_LIB_FULL) $(BUILD_DIR)/tune - @echo " CC $(@:$(BUILD_DIR)/%=%)" - @$(CC) $(TESTCFLAGS) $(CPPFLAGS2) $< -o $@ $(EXE_LDFLAGS) $(LIBS2) -MMD -MF $(@:%=%.d) -endif +# Targets +all: examples -ifeq ($(SHARED), 0) -define xxx_TUNES_rule -$(BUILD_DIR)/$(1)/tune/%$(EXEEXT): $(SRC_DIR)/$(1)/tune/%.c $(FLINT_DIR)/$(FLINT_LIB_STATIC) | $(BUILD_DIR)/$(1)/tune - @echo " CC $$(@:$(BUILD_DIR)/%=%)" - @$(CC) $(TESTCFLAGS) $(CPPFLAGS2) $$< -o $$@ $(EXE_LDFLAGS) $(LIBS2) -MMD -MF $$(@:%=%.d) -endef -else -define xxx_TUNES_rule -$(BUILD_DIR)/$(1)/tune/%$(EXEEXT): $(SRC_DIR)/$(1)/tune/%.c | $(FLINT_DIR)/$(FLINT_LIB_FULL) $(BUILD_DIR)/$(1)/tune - @echo " CC $$(@:$(BUILD_DIR)/%=%)" - @$(CC) $(TESTCFLAGS) $(CPPFLAGS2) $$< -o $$@ $(EXE_LDFLAGS) $(LIBS2) -MMD -MF $$(@:%=%.d) -endef -endif +examples: $(EXAMPLES) -$(foreach dir, $(DIRS), $(eval $(call xxx_TUNES_rule,$(dir)))) +tests: $(TESTS) -ifeq ($(SHARED), 0) -$(BUILD_DIR)/examples/%$(EXEEXT): $(FLINT_DIR)/examples/%.c $(FLINT_DIR)/$(FLINT_LIB_STATIC) | $(BUILD_DIR)/examples - @echo " CC $(@:$(BUILD_DIR)/%=%)" - @$(CC) $(TESTCFLAGS) $(CPPFLAGS2) $< -o $@ $(EXE_LDFLAGS) $(LIBS2) -MMD -MF $(@:%=%.d) -else -$(BUILD_DIR)/examples/%$(EXEEXT): $(FLINT_DIR)/examples/%.c | $(FLINT_DIR)/$(FLINT_LIB_FULL) $(BUILD_DIR)/examples - @echo " CC $(@:$(BUILD_DIR)/%=%)" - @$(CC) $(TESTCFLAGS) $(CPPFLAGS2) $< -o $@ $(EXE_LDFLAGS) $(LIBS2) -MMD -MF $(@:%=%.d) -endif +check: tests $(TEST_RUNS) + @echo + @echo "All tests passed." -################################################################################ -# examples -################################################################################ - -examples: library $(EXMPS) - -################################################################################ -# profiling -################################################################################ - -ifdef MOD -profile: library $(foreach dir, $(MOD), $($(dir)_PROFS)) -else -profile: library $(PROFS) -endif - -################################################################################ -# tests -################################################################################ - -tests: library $(TESTS) - -# NOTE: File has to be located in another directory in order for this to work. %_TEST_RUN: % - @$< - -ifdef PYTHON -check: library - PYTHONPATH=$(FLINT_DIR) python3 $(SRC_DIR)/python/flint_ctypes.py -else ifdef MOD -check: library $(patsubst %,%_TEST_RUN,$(foreach dir, $(MOD), $($(dir)_TESTS))) -else -check: library $(TESTS:%=%_TEST_RUN) -endif - -################################################################################ -# tuning -################################################################################ - -tune: library $(TUNES) - -################################################################################ -# valgrind -################################################################################ + @echo "Running $<..." + @./$< -%_VALGRIND_RUN: % - valgrind --track-origins=yes --leak-check=full --show-reachable=yes --log-file="$*.valgrind" $< +# Rules for building +$(TESTS_FROM_CPP): $(TEST_BUILD_DIR)/%$(EXEEXT): $(FLINTXX_SRCDIR)/test/%.cpp | $(TEST_BUILD_DIR) + $(CXX) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< -o $@ $(AM_LDFLAGS) $(AM_LIBS) -ifdef MOD -valgrind: library $(patsubst %,%_VALGRIND_RUN,$(foreach dir, $(MOD), $($(dir)_TESTS))) -else -valgrind: library $(TESTS:%=%_VALGRIND_RUN) -endif +$(TESTS_FROM_CC): $(TEST_BUILD_DIR)/%$(EXEEXT): $(FLINTXX_SRCDIR)/test/%.cc | $(TEST_BUILD_DIR) + $(CXX) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< -o $@ $(AM_LDFLAGS) $(AM_LIBS) -################################################################################ -# coverage -################################################################################ +$(EXAMPLES): $(EXAMPLE_BUILD_DIR)/%$(EXEEXT): $(FLINTXX_SRCDIR)/examples/%.cpp | $(EXAMPLE_BUILD_DIR) + $(CXX) $(AM_CPPFLAGS) $(CPPFLAGS) $(CXXFLAGS) $< -o $@ $(AM_LDFLAGS) $(AM_LIBS) -ifneq ($(COVERAGE), 0) -coverage: | $(BUILD_DIR)/coverage - lcov --capture --exclude "*test/t-*.c" --exclude "/usr/*" --directory $(BUILD_DIR) --output-file $(BUILD_DIR)/coverage/coverage.info - genhtml $(BUILD_DIR)/coverage/coverage.info --output-directory $(BUILD_DIR)/coverage -endif +# Create build directories +$(TEST_BUILD_DIR) $(EXAMPLE_BUILD_DIR): + $(MKDIR_P) $@ -################################################################################ -# clean -################################################################################ +$(INSTALL_DIR): + $(MKDIR_P) $@ +# Clean up build artifacts clean: - $(RM_F) $(FLINT_DIR)/$(FLINT_LIB) - $(RM_F) $(FLINT_DIR)/$(FLINT_LIB_MAJOR) - $(RM_F) $(FLINT_DIR)/$(FLINT_LIB_FULL) -ifneq ($(FLINT_DLLLIB), 0) - $(RM_F) $(FLINT_DIR)/$(FLINT_IMPLIB) -endif - $(RM_F) $(FLINT_DIR)/$(FLINT_LIB_STATIC) $(RM_RF) $(BUILD_DIR) distclean: clean - $(RM_F) $(CFG_FILES) - -################################################################################ -# install and uninstall -################################################################################ + $(RM_F) Makefile config.status config.log config.h -install: library | $(INSTALL_DIRS) - $(CP) flint.pc $(PKGCONFIGDIR)/flint.pc -ifneq ($(SHARED), 0) -ifneq ($(FLINT_DLLLIB),0) - $(CP_A) $(FLINT_DIR)/$(FLINT_LIB) $(BINDIR) - $(CP_A) $(FLINT_DIR)/$(FLINT_LIB_MAJOR) $(BINDIR) - $(CP_A) $(FLINT_DIR)/$(FLINT_LIB_FULL) $(BINDIR) - $(CP) $(FLINT_DIR)/$(FLINT_IMPLIB) $(LIBDIR) -else - $(CP_A) $(FLINT_DIR)/$(FLINT_LIB) $(LIBDIR) - $(CP_A) $(FLINT_DIR)/$(FLINT_LIB_MAJOR) $(LIBDIR) - $(CP_A) $(FLINT_DIR)/$(FLINT_LIB_FULL) $(LIBDIR) -endif -ifneq ($(FLINT_DYLIB),0) - install_name_tool -id $(LIBDIR)/$(FLINT_LIB_FULL) $(LIBDIR)/$(FLINT_LIB) -endif -endif -ifneq ($(STATIC), 0) - $(CP) $(FLINT_DIR)/$(FLINT_LIB_STATIC) $(LIBDIR) -endif - $(CP) $(HEADERS) $(INCLUDEDIR)/flint -ifneq ($(WANT_CXX), 0) - $(CP) $(SRC_DIR)/flintxx/*.h $(INCLUDEDIR)/flint/flintxx - $(CP) $(SRC_DIR)/flintxx_public/*xx.h $(INCLUDEDIR)/flint -endif +install: | $(INSTALL_DIR) + $(CP) $(FLINTXX_HEADERS_PUBLIC) $(INSTALL_DIR) + $(CP) $(FLINTXX_HEADERS_PRIVATE) $(INSTALL_DIR) uninstall: - $(RM_F) $(PKGCONFIGDIR)/flint.pc -ifneq ($(FLINT_DLLLIB),0) - $(RM_F) $(BINDIR)/$(FLINT_LIB) - $(RM_F) $(BINDIR)/$(FLINT_LIB_MAJOR) - $(RM_F) $(BINDIR)/$(FLINT_LIB_FULL) - $(RM_F) $(LIBDIR)/$(FLINT_IMPLIB) -else - $(RM_F) $(LIBDIR)/$(FLINT_LIB) - $(RM_F) $(LIBDIR)/$(FLINT_LIB_MAJOR) - $(RM_F) $(LIBDIR)/$(FLINT_LIB_FULL) -endif - $(RM_F) $(LIBDIR)/$(FLINT_LIB_STATIC) - $(RM_RF) $(INCLUDEDIR)/flint - -################################################################################ -# maintainer stuff -################################################################################ - -dist: - git archive --format tar --prefix flint-$(FLINT_MAJOR).$(FLINT_MINOR).$(FLINT_PATCH)/ origin/flint-$(FLINT_MAJOR).$(FLINT_MINOR) > ../flint-$(FLINT_MAJOR).$(FLINT_MINOR).$(FLINT_PATCH).tar; gzip ../flint-$(FLINT_MAJOR).$(FLINT_MINOR).$(FLINT_PATCH).tar - git archive --format zip --prefix flint-$(FLINT_MAJOR).$(FLINT_MINOR).$(FLINT_PATCH)/ origin/flint-$(FLINT_MAJOR).$(FLINT_MINOR) > ../flint-$(FLINT_MAJOR).$(FLINT_MINOR).$(FLINT_PATCH).zip - -################################################################################ -# debugging -################################################################################ + $(RM_RF) $(INSTALL_DIR) print-%: - @echo "$*=$($*)" + @echo "$* = $($*)" -.PHONY: all library shared static examples profile tests check tune valgrind clean distclean install uninstall dist %_TEST_RUN %_VALGRIND_RUN print-% coverage +.PHONY: all examples tests check clean distclean install uninstall %_TEST_RUN print-% \ No newline at end of file From 8d0cd81593a3d3a4d4049d8bae3a87adebfb7657 Mon Sep 17 00:00:00 2001 From: Edgar Costa Date: Sat, 21 Jun 2025 20:57:11 -0400 Subject: [PATCH 3/4] trying to improve the include statements --- src/flintxx/evaluation_tools.h | 18 +++++++++------ src/flintxx/flint_classes.h | 2 +- src/flintxx/frandxx.h | 13 ++++++++--- src/flintxx/test/helpers.h | 22 ++++++++++++++---- src/flintxx/test/t-codegen.cpp | 26 +++++++++++++-------- src/flintxx/test/t-expression.cpp | 8 +++++-- src/flintxx/test/t-flint_classes.cpp | 9 ++++++-- src/flintxx/test/t-forwarding.cpp | 10 ++++++--- src/flintxx/test/t-ltuple.cpp | 10 +++++---- src/flintxx/test/t-mp.cpp | 7 ++++-- src/flintxx/test/t-permxx.cpp | 8 +++++-- src/flintxx/test/t-traits.cpp | 17 +++++++++++--- src/flintxx/test/t-tuple.cpp | 15 ++++++++++--- src/flintxx/test/t-vector.cpp | 12 +++++----- src/flintxx_public/arithxx.h | 21 ++++++++++------- src/flintxx_public/fmpq_matxx.h | 16 ++++++++----- src/flintxx_public/fmpq_polyxx.h | 15 ++++++++----- src/flintxx_public/fmpz_matxx.h | 18 ++++++++++----- src/flintxx_public/fmpz_mod_polyxx.h | 20 +++++++++++------ src/flintxx_public/fmpz_poly_factorxx.h | 6 ++++- src/flintxx_public/fmpz_poly_qxx.h | 15 ++++++------- src/flintxx_public/fmpz_polyxx.h | 16 ++++++++----- src/flintxx_public/fmpz_vecxx.h | 15 ++++++++----- src/flintxx_public/fmpzxx.h | 30 +++++++++++++++---------- src/flintxx_public/nmod_matxx.h | 13 ++++++----- src/flintxx_public/nmod_poly_matxx.h | 4 +++- src/flintxx_public/nmod_polyxx.h | 4 ++-- src/flintxx_public/nmod_vecxx.h | 16 ++++++------- src/flintxx_public/padic_matxx.h | 6 +++-- src/flintxx_public/padic_polyxx.h | 6 ++++- src/flintxx_public/permxx.h | 10 ++++++--- src/flintxx_public/qadicxx.h | 12 +++++++--- 32 files changed, 280 insertions(+), 140 deletions(-) diff --git a/src/flintxx/evaluation_tools.h b/src/flintxx/evaluation_tools.h index 8d69b5871c..c84309b196 100644 --- a/src/flintxx/evaluation_tools.h +++ b/src/flintxx/evaluation_tools.h @@ -11,17 +11,21 @@ // This file contains helpers for evaluating expression templates. -#ifndef CXX_EVALUATION_TOOLS_H -#define CXX_EVALUATION_TOOLS_H +#ifndef EVALUATION_TOOLS_H +#define EVALUATION_TOOLS_H #include +#include +#include -#include "../flint.h" // FLINT_MAX and FLINT_MIN +#include // FLINT_MAX and FLINT_MIN +#include // fmpz_t -#include "expression_traits.h" -#include "mp.h" -#include "rules.h" -#include "tuple.h" +#include +#include +#include +#include +#include namespace flint { namespace mp { diff --git a/src/flintxx/flint_classes.h b/src/flintxx/flint_classes.h index 5cd1e6194d..23e2778ab3 100644 --- a/src/flintxx/flint_classes.h +++ b/src/flintxx/flint_classes.h @@ -13,7 +13,7 @@ // Contrary to other parts of this library, they are tailored very // specifically towards FLINT. -#include "../flint.h" +#include #include "mp.h" #include "expression.h" #include "expression_traits.h" diff --git a/src/flintxx/frandxx.h b/src/flintxx/frandxx.h index f04aadf99c..22c4737ec3 100644 --- a/src/flintxx/frandxx.h +++ b/src/flintxx/frandxx.h @@ -9,10 +9,17 @@ (at your option) any later version. See . */ -#ifndef CXX_FRANDXX_H -#define CXX_FRANDXX_H +#ifndef FRANDXX_H +#define FRANDXX_H -#include "../flint.h" +#include + +#include +#include +#include + +#include +#include // This class contains a first-class wrapper of flint_rand_t. // Note that frandxx is not copyable. diff --git a/src/flintxx/test/helpers.h b/src/flintxx/test/helpers.h index 095c38a793..381057c60c 100644 --- a/src/flintxx/test/helpers.h +++ b/src/flintxx/test/helpers.h @@ -9,16 +9,30 @@ (at your option) any later version. See . */ -#ifndef CXX_TEST_HELPERS_H -#define CXX_TEST_HELPERS_H +#ifndef HELPERS_H +#define HELPERS_H #include #include #include #include #include - -#include "flintxx/flint_classes.h" +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "myint.h" #ifndef EXIT_STATEMENT #define EXIT_STATEMENT std::exit(1) diff --git a/src/flintxx/test/t-codegen.cpp b/src/flintxx/test/t-codegen.cpp index eecceb5add..efa0791150 100644 --- a/src/flintxx/test/t-codegen.cpp +++ b/src/flintxx/test/t-codegen.cpp @@ -15,6 +15,7 @@ #include #include #include +#include // whether or not the compiler suppors __attribute__(__optimize__(..)) @@ -58,17 +59,24 @@ class skippable_exception skippable_exception(const std::string& n) : std::runtime_error(n) {} }; -#include "flintxx/test/helpers.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -#include "fmpz_matxx.h" -#include "fmpz_polyxx.h" -#include "fmpzxx.h" -#include "nmod_matxx.h" -#include "nmod_polyxx.h" -#include "nmod_vecxx.h" +#include "helpers.h" -#include "flintxx/tuple.h" -#include "flintxx/vector.h" +#include +#include + +#include +#include // Run a command and recver the output. std::string exec(const std::string& cmd) diff --git a/src/flintxx/test/t-expression.cpp b/src/flintxx/test/t-expression.cpp index d2fac53743..8af849dc17 100644 --- a/src/flintxx/test/t-expression.cpp +++ b/src/flintxx/test/t-expression.cpp @@ -9,9 +9,13 @@ (at your option) any later version. See . */ -#include +#include +#include + +#include +#include +#include -#include "flintxx/expression.h" #include "flintxx/tuple.h" #include "flintxx/test/helpers.h" diff --git a/src/flintxx/test/t-flint_classes.cpp b/src/flintxx/test/t-flint_classes.cpp index ee45a37917..50b6cd27cd 100644 --- a/src/flintxx/test/t-flint_classes.cpp +++ b/src/flintxx/test/t-flint_classes.cpp @@ -10,8 +10,13 @@ */ #include -#include "flintxx/test/helpers.h" -#include "fmpzxx.h" +#include +#include + +#include "helpers.h" + +#include +#include using namespace flint; diff --git a/src/flintxx/test/t-forwarding.cpp b/src/flintxx/test/t-forwarding.cpp index 7bd31b32c9..fceb84d809 100644 --- a/src/flintxx/test/t-forwarding.cpp +++ b/src/flintxx/test/t-forwarding.cpp @@ -13,12 +13,16 @@ // test file. #include +#include +#include #include -#include "flintxx/forwarding.h" +#include +#include +#include -#include "flintxx/test/myint.h" -#include "flintxx/test/helpers.h" +#include "helpers.h" +#include "myint.h" using namespace flint; diff --git a/src/flintxx/test/t-ltuple.cpp b/src/flintxx/test/t-ltuple.cpp index 6d796be3f4..f0a4035755 100644 --- a/src/flintxx/test/t-ltuple.cpp +++ b/src/flintxx/test/t-ltuple.cpp @@ -9,11 +9,13 @@ (at your option) any later version. See . */ -#include "flintxx/ltuple.h" -#include "fmpzxx.h" +#include -#include "flintxx/test/helpers.h" -#include "flintxx/test/myint.h" +#include +#include + +#include "helpers.h" +#include "myint.h" using namespace flint; diff --git a/src/flintxx/test/t-mp.cpp b/src/flintxx/test/t-mp.cpp index c6c01164cc..c89ab12f7a 100644 --- a/src/flintxx/test/t-mp.cpp +++ b/src/flintxx/test/t-mp.cpp @@ -9,8 +9,11 @@ (at your option) any later version. See . */ -#include "flintxx/test/helpers.h" -#include "flintxx/mp.h" +#include + +#include "helpers.h" +#include +#include "myint.h" using namespace flint; using namespace mp; diff --git a/src/flintxx/test/t-permxx.cpp b/src/flintxx/test/t-permxx.cpp index fe2f310dc4..c56449ddc4 100644 --- a/src/flintxx/test/t-permxx.cpp +++ b/src/flintxx/test/t-permxx.cpp @@ -10,9 +10,13 @@ */ #include +#include +#include -#include "permxx.h" -#include "flintxx/test/helpers.h" +#include +#include + +#include "helpers.h" using namespace flint; diff --git a/src/flintxx/test/t-traits.cpp b/src/flintxx/test/t-traits.cpp index 95325a4fd9..1790a8fa64 100644 --- a/src/flintxx/test/t-traits.cpp +++ b/src/flintxx/test/t-traits.cpp @@ -9,9 +9,20 @@ (at your option) any later version. See . */ -#include "flintxx/test/helpers.h" -#include "flintxx/traits.h" -#include "flintxx/mp.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "helpers.h" + +#include +#include using namespace flint; using namespace traits; diff --git a/src/flintxx/test/t-tuple.cpp b/src/flintxx/test/t-tuple.cpp index a9e3993234..1a2aca3024 100644 --- a/src/flintxx/test/t-tuple.cpp +++ b/src/flintxx/test/t-tuple.cpp @@ -9,11 +9,20 @@ (at your option) any later version. See . */ +#include +#include #include -#include "flintxx/test/helpers.h" -#include "flintxx/tuple.h" -#include "flintxx/mp.h" +#include +#include +#include +#include + +#include "helpers.h" + +#include +#include +#include using namespace flint; using namespace mp; diff --git a/src/flintxx/test/t-vector.cpp b/src/flintxx/test/t-vector.cpp index 4ce3ea80ca..1c804e7ce0 100644 --- a/src/flintxx/test/t-vector.cpp +++ b/src/flintxx/test/t-vector.cpp @@ -9,13 +9,13 @@ (at your option) any later version. See . */ -#include +#include +#include +#include -#include "flintxx/vector.h" - -#include "flintxx/test/helpers.h" -#include "flintxx/test/myint.h" -#include "fmpz_vecxx.h" +#include +#include +#include "helpers.h" using namespace flint; diff --git a/src/flintxx_public/arithxx.h b/src/flintxx_public/arithxx.h index 38247d8a4b..1d4cd6ec06 100644 --- a/src/flintxx_public/arithxx.h +++ b/src/flintxx_public/arithxx.h @@ -12,14 +12,19 @@ #ifndef ARITHXX_H #define ARITHXX_H -#include "arith.h" - -#include "fmpq_polyxx.h" -#include "fmpqxx.h" -#include "fmpz_matxx.h" -#include "fmpz_vecxx.h" -#include "fmpzxx.h" -#include "nmod_vecxx.h" +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include // TODO namespace arith? // TODO arith_hrr_expsum_factored diff --git a/src/flintxx_public/fmpq_matxx.h b/src/flintxx_public/fmpq_matxx.h index b86614c51a..a0db548218 100644 --- a/src/flintxx_public/fmpq_matxx.h +++ b/src/flintxx_public/fmpq_matxx.h @@ -10,16 +10,20 @@ */ #ifndef FMPQ_MATXX_H -#define FMPQ_MATXX_H FMPQ_MATXX_H +#define FMPQ_MATXX_H -#include "fmpq_mat.h" +#include -#include "fmpqxx.h" -#include "fmpz_matxx.h" -#include "fmpz_vecxx.h" +#include +#include +#include +#include +#include +#include + +#include #include "flintxx/ltuple.h" -#include "flintxx/matrix.h" // TODO wrap entry_num, entry_den? // TODO numden_rowwise_2 diff --git a/src/flintxx_public/fmpq_polyxx.h b/src/flintxx_public/fmpq_polyxx.h index 155d11c7dc..6cb2ca84df 100644 --- a/src/flintxx_public/fmpq_polyxx.h +++ b/src/flintxx_public/fmpq_polyxx.h @@ -9,16 +9,19 @@ (at your option) any later version. See . */ -#ifndef FMPQ_POLYXX_H #define FMPQ_POLYXX_H -#include -#include - -#include "flint.h" -#include "fmpq_poly.h" +#include "flint/flint.h" +#include "flint/fmpq_poly.h" +#include "flintxx.h" #include "fmpqxx.h" +#include "fmpz_polyxx.h" +#include "fmpzxx.h" +#include "fmpq_matxx.h" + +#include +#include #include "flintxx/expression.h" #include "flintxx/flint_classes.h" diff --git a/src/flintxx_public/fmpz_matxx.h b/src/flintxx_public/fmpz_matxx.h index c20105a0e0..3e3229ee54 100644 --- a/src/flintxx_public/fmpz_matxx.h +++ b/src/flintxx_public/fmpz_matxx.h @@ -10,17 +10,23 @@ */ #ifndef FMPZ_MATXX_H -#define FMPZ_MATXX_H FMPZ_MATXX_H +#define FMPZ_MATXX_H -#include "fmpz_mat.h" -#include "fmpq_mat.h" // fmpq_mat_get_fmpz_mat_mod_fmpz +#include +#include // fmpq_mat_get_fmpz_mat_mod_fmpz + +#include +#include +#include +#include +#include +#include + +#include -#include "fmpzxx.h" #include "fmpz_polyxx.h" #include "permxx.h" -#include "flintxx/ltuple.h" -#include "flintxx/matrix.h" #include "flintxx/traits_fwd.h" // TODO input and output diff --git a/src/flintxx_public/fmpz_mod_polyxx.h b/src/flintxx_public/fmpz_mod_polyxx.h index 6c855fa425..d20a194a8e 100644 --- a/src/flintxx_public/fmpz_mod_polyxx.h +++ b/src/flintxx_public/fmpz_mod_polyxx.h @@ -13,15 +13,21 @@ #ifndef FMPZ_MOD_POLYXX_H #define FMPZ_MOD_POLYXX_H -#include "fmpz_mod.h" -#include "fmpz_mod_poly.h" +#include +#include -#include "fmpzxx.h" -#include "fmpz_polyxx.h" -#include "nmod_polyxx.h" +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include -#include "flintxx/expression.h" -#include "flintxx/flint_classes.h" #include "flintxx/flint_exception.h" #include "flintxx/frandxx.h" #include "flintxx/ltuple.h" diff --git a/src/flintxx_public/fmpz_poly_factorxx.h b/src/flintxx_public/fmpz_poly_factorxx.h index 0a13f9d649..fcc212ef3a 100644 --- a/src/flintxx_public/fmpz_poly_factorxx.h +++ b/src/flintxx_public/fmpz_poly_factorxx.h @@ -12,9 +12,13 @@ #ifndef FMPZ_POLY_FACTORXX_H #define FMPZ_POLY_FACTORXX_H +#include "flint/fmpz_poly_factor.h" + +#include "flintxx.h" +#include "fmpz_polyxx.h" +#include "fmpzxx.h" #include "fmpz_poly.h" -#include "fmpz_poly_factor.h" #include "nmod_polyxx.h" #include "nmod_poly_factor.h" diff --git a/src/flintxx_public/fmpz_poly_qxx.h b/src/flintxx_public/fmpz_poly_qxx.h index f13a8be606..aa9b2d1017 100644 --- a/src/flintxx_public/fmpz_poly_qxx.h +++ b/src/flintxx_public/fmpz_poly_qxx.h @@ -10,16 +10,15 @@ */ #ifndef FMPZ_POLY_QXX_H -#define FMPZ_POLY_QXX_H FMPZ_POLY_QXX_H +#define FMPZ_POLY_QXX_H -#include -#include +#include +#include -#include "flint.h" -#include "fmpz_poly_q.h" - -#include "fmpz_polyxx.h" -#include "fmpqxx.h" +#include +#include +#include +#include #include "flintxx/expression.h" #include "flintxx/flint_classes.h" diff --git a/src/flintxx_public/fmpz_polyxx.h b/src/flintxx_public/fmpz_polyxx.h index 25968e4ef2..8d440f89cc 100644 --- a/src/flintxx_public/fmpz_polyxx.h +++ b/src/flintxx_public/fmpz_polyxx.h @@ -12,13 +12,15 @@ #ifndef FMPZ_POLYXX_H #define FMPZ_POLYXX_H -#include -#include - -#include "flint.h" -#include "fmpz_poly.h" +#include "flint/flint.h" +#include "flint/fmpz_poly.h" +#include "flintxx.h" #include "fmpzxx.h" +#include "fmpqxx.h" +#include "fmpz_matxx.h" +#include "nmod_polyxx.h" + #include "fmpz_vecxx.h" #include "flintxx/expression.h" @@ -29,6 +31,10 @@ #include "flintxx/traits.h" #include "flintxx/traits_fwd.h" +#include +#include +#include + // TODO exhibit this as a specialisation of a generic poly // TODO newton basis? // TODO power series class? diff --git a/src/flintxx_public/fmpz_vecxx.h b/src/flintxx_public/fmpz_vecxx.h index c2a91315b1..13ea5b5bd4 100644 --- a/src/flintxx_public/fmpz_vecxx.h +++ b/src/flintxx_public/fmpz_vecxx.h @@ -9,12 +9,17 @@ (at your option) any later version. See . */ -#ifndef CXX_FMPZ_VECXX_H -#define CXX_FMPZ_VECXX_H +#ifndef FMPZ_VECXX_H +#define FMPZ_VECXX_H -#include "fmpzxx.h" -#include "fmpz_vec.h" -#include "flintxx/vector.h" +#include +#include + +#include + +#include +#include +#include namespace flint { namespace detail { diff --git a/src/flintxx_public/fmpzxx.h b/src/flintxx_public/fmpzxx.h index f1b207626b..a03bdb05c9 100644 --- a/src/flintxx_public/fmpzxx.h +++ b/src/flintxx_public/fmpzxx.h @@ -9,21 +9,27 @@ (at your option) any later version. See . */ -#ifndef CXX_FMPZXX_H -#define CXX_FMPZXX_H +#ifndef FMPZXX_H +#define FMPZXX_H #include #include - -#include "flintxx/evaluation_tools.h" -#include "flintxx/expression.h" -#include "flintxx/expression_traits.h" -#include "flintxx/flint_classes.h" -#include "flintxx/frandxx.h" -#include "flintxx/ltuple.h" -#include "flintxx/stdmath.h" - -#include "fmpz.h" +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #undef clrbit /* no idea where these are coming from */ #undef setbit diff --git a/src/flintxx_public/nmod_matxx.h b/src/flintxx_public/nmod_matxx.h index 46d08d04be..aa37d38789 100644 --- a/src/flintxx_public/nmod_matxx.h +++ b/src/flintxx_public/nmod_matxx.h @@ -12,18 +12,21 @@ #ifndef NMOD_MATXX_H #define NMOD_MATXX_H -#include -#include +#include + +#include +#include +#include +#include +#include -#include "nmod_mat.h" +#include #include "nmod_vecxx.h" #include "fmpz_matxx.h" // for modular reduction -#include "permxx.h" #include "flintxx/flint_exception.h" #include "flintxx/ltuple.h" -#include "flintxx/matrix.h" // TODO addmul // TODO default argument for mat_solve_triu etc? diff --git a/src/flintxx_public/nmod_poly_matxx.h b/src/flintxx_public/nmod_poly_matxx.h index ef92408381..893dfd579e 100644 --- a/src/flintxx_public/nmod_poly_matxx.h +++ b/src/flintxx_public/nmod_poly_matxx.h @@ -12,7 +12,7 @@ #ifndef NMOD_POLY_MATXX_H #define NMOD_POLY_MATXX_H -#include "nmod_poly_mat.h" +#include "flint/nmod_poly_mat.h" #include "nmod_matxx.h" #include "nmod_polyxx.h" @@ -21,6 +21,8 @@ #include "flintxx/matrix.h" #include "flintxx/stdmath.h" +#include + // NOTE: it is *not* valid to use empty nmod_poly_matxx matrices! // TODO nullspace member diff --git a/src/flintxx_public/nmod_polyxx.h b/src/flintxx_public/nmod_polyxx.h index aee9943a8f..b9f32911a5 100644 --- a/src/flintxx_public/nmod_polyxx.h +++ b/src/flintxx_public/nmod_polyxx.h @@ -15,8 +15,8 @@ #include #include -#include "nmod_poly.h" -#include "nmod_poly_factor.h" +#include "flint/nmod_poly.h" +#include "flint/nmod_poly_factor.h" #include "fmpzxx.h" #include "nmod_vecxx.h" diff --git a/src/flintxx_public/nmod_vecxx.h b/src/flintxx_public/nmod_vecxx.h index b2c88b5ff3..8d152dbdbf 100644 --- a/src/flintxx_public/nmod_vecxx.h +++ b/src/flintxx_public/nmod_vecxx.h @@ -17,20 +17,20 @@ #ifndef NMOD_VECXX_H #define NMOD_VECXX_H -#include +#include +#include -#include "nmod.h" -#include "nmod_vec.h" +#include -// TODO reduce dependencies? -#include "fmpzxx.h" -#include "fmpqxx.h" +#include +#include +#include +#include +#include -#include "flintxx/expression.h" #include "flintxx/evaluation_tools.h" #include "flintxx/flint_classes.h" #include "flintxx/stdmath.h" -#include "flintxx/vector.h" namespace flint { ////////////////////////////////////////////////////////////////////////////// diff --git a/src/flintxx_public/padic_matxx.h b/src/flintxx_public/padic_matxx.h index f388355043..517d85a867 100644 --- a/src/flintxx_public/padic_matxx.h +++ b/src/flintxx_public/padic_matxx.h @@ -12,13 +12,15 @@ #ifndef PADIC_MATXX_H #define PADIC_MATXX_H -#include "padic_mat.h" +#include "flint/padic_mat.h" +#include "flintxx.h" #include "padicxx.h" -#include "fmpq_matxx.h" #include "flintxx/matrix.h" +#include + // TODO input and output namespace flint { diff --git a/src/flintxx_public/padic_polyxx.h b/src/flintxx_public/padic_polyxx.h index ce6f9e6fca..4eed4125c7 100644 --- a/src/flintxx_public/padic_polyxx.h +++ b/src/flintxx_public/padic_polyxx.h @@ -12,14 +12,18 @@ #ifndef PADIC_POLYXX_H #define PADIC_POLYXX_H -#include "padic_poly.h" +#include "flint/padic_poly.h" +#include "flintxx.h" #include "padicxx.h" #include "fmpz_polyxx.h" #include "fmpq_polyxx.h" #include "flintxx/stdmath.h" +#include +#include + // TODO input and output namespace flint { diff --git a/src/flintxx_public/permxx.h b/src/flintxx_public/permxx.h index 82ea8bea5d..b334a0d68d 100644 --- a/src/flintxx_public/permxx.h +++ b/src/flintxx_public/permxx.h @@ -12,10 +12,14 @@ #ifndef PERMXX_H #define PERMXX_H -#include "perm.h" +#include -#include "flintxx/frandxx.h" -#include "flintxx/mp.h" +#include +#include +#include + +#include +#include namespace flint { class permxx diff --git a/src/flintxx_public/qadicxx.h b/src/flintxx_public/qadicxx.h index d0ad7402f3..2a07f11998 100644 --- a/src/flintxx_public/qadicxx.h +++ b/src/flintxx_public/qadicxx.h @@ -9,12 +9,18 @@ (at your option) any later version. See . */ -#ifndef QADICXX_H #define QADICXX_H -#include // std::max +#include "flint/flint.h" +#include "flint/qadic.h" + +#include "flintxx.h" +#include "fmpzxx.h" +#include "fmpqxx.h" -#include "qadic.h" +#include + +#include // std::max #include "flintxx/expression.h" #include "flintxx/flint_classes.h" From 1612463170ba726cf375bf5187f289d855557c7b Mon Sep 17 00:00:00 2001 From: Edgar Costa Date: Fri, 9 Jan 2026 16:06:16 -0500 Subject: [PATCH 4/4] mostly include statements --- src/flintxx_public/fmpqxx.h | 25 ++++++++++++-------- src/flintxx_public/fmpz_factorxx.h | 28 ++++++++++++---------- src/flintxx_public/fmpz_poly_matxx.h | 20 ++++++++++------ src/flintxx_public/padicxx.h | 35 ++++++++++++---------------- 4 files changed, 59 insertions(+), 49 deletions(-) diff --git a/src/flintxx_public/fmpqxx.h b/src/flintxx_public/fmpqxx.h index d0c0950f4a..65b0c10023 100644 --- a/src/flintxx_public/fmpqxx.h +++ b/src/flintxx_public/fmpqxx.h @@ -9,19 +9,24 @@ (at your option) any later version. See . */ -#ifndef CXX_FMPQXX_H -#define CXX_FMPQXX_H +#ifndef FMPQXX_H +#define FMPQXX_H #include +#include -#include "fmpq.h" -#include "fmpq_vec.h" +#include +#include -#include "flintxx/expression.h" -#include "flintxx/flint_classes.h" -#include "flintxx/flint_exception.h" -#include "flintxx/frandxx.h" -#include "fmpzxx.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include // TODO exhibit this as a specialisation of a generic fraction // TODO summation @@ -473,7 +478,7 @@ FLINT_DEFINE_BINARY_EXPR_COND2(pow_op, fmpqxx, // fmpq_vecxx -#include "flintxx/vector.h" +#include namespace flint { namespace detail { diff --git a/src/flintxx_public/fmpz_factorxx.h b/src/flintxx_public/fmpz_factorxx.h index 9f23acf684..92c536719c 100644 --- a/src/flintxx_public/fmpz_factorxx.h +++ b/src/flintxx_public/fmpz_factorxx.h @@ -12,11 +12,15 @@ #ifndef FMPZ_FACTORXX_H #define FMPZ_FACTORXX_H -#include "fmpz_factor.h" -#include "fmpz_vec.h" -#include "fmpzxx.h" +#include +#include -#include "flintxx/ltuple.h" +#include +#include + +#include +#include +#include // TODO codegen // TODO factor_pp1 multiple return values @@ -36,14 +40,14 @@ class fmpz_factorxx_delayed void copy_init(const fmpz_factorxx_delayed& o) { - _fmpz_factor_fit_length(inner, o.inner->num); - _fmpz_factor_set_length(inner, o.inner->num); - inner->sign = o.inner->sign; - for(slong i = 0;i < o.inner->num;++i) - { - fmpz_set(inner->p + i, o.inner->p + i); - inner->exp[i] = o.inner->exp[i]; - } + _fmpz_factor_fit_length(inner, o.inner->num); + _fmpz_factor_set_length(inner, o.inner->num); + inner->sign = o.inner->sign; + for(slong i = 0;i < o.inner->num;++i) + { + fmpz_set(inner->p + i, o.inner->p + i); + inner->exp[i] = o.inner->exp[i]; + } } public: diff --git a/src/flintxx_public/fmpz_poly_matxx.h b/src/flintxx_public/fmpz_poly_matxx.h index 01bc8bdfd1..8347d967e4 100644 --- a/src/flintxx_public/fmpz_poly_matxx.h +++ b/src/flintxx_public/fmpz_poly_matxx.h @@ -10,16 +10,22 @@ */ #ifndef FMPZ_POLY_MATXX_H -#define FMPZ_POLY_MATXX_H FMPZ_POLY_MATXX_H +#define FMPZ_POLY_MATXX_H -#include "fmpz_poly_mat.h" +#include + +#include +#include +#include +#include +#include +#include + +#include #include "fmpz_matxx.h" -#include "fmpz_polyxx.h" #include "permxx.h" -#include "flintxx/matrix.h" - namespace flint { FLINT_DEFINE_UNOP(prod) @@ -254,9 +260,9 @@ namespace rules { FLINT_DEFINE_DOIT_COND2(assignment, FMPZ_POLY_MATXX_COND_T, FMPZ_POLY_MATXX_COND_S, fmpz_poly_mat_set(to._mat(), from._mat())) -FLINTXX_DEFINE_SWAP(fmpz_poly_matxx, fmpz_poly_mat_swap(e1._mat(), e2._mat())) +FLINT_DEFINE_SWAP(fmpz_poly_matxx, fmpz_poly_mat_swap(e1._mat(), e2._mat())) -FLINTXX_DEFINE_EQUALS(fmpz_poly_matxx, fmpz_poly_mat_equal(e1._mat(), e2._mat())) +FLINT_DEFINE_EQUALS(fmpz_poly_matxx, fmpz_poly_mat_equal(e1._mat(), e2._mat())) FLINT_DEFINE_PRINT_PRETTY_COND_2(FMPZ_POLY_MATXX_COND_S, const char*, (fmpz_poly_mat_print(from._mat(), extra), 1)) diff --git a/src/flintxx_public/padicxx.h b/src/flintxx_public/padicxx.h index b4f244770a..588150c8a7 100644 --- a/src/flintxx_public/padicxx.h +++ b/src/flintxx_public/padicxx.h @@ -9,28 +9,23 @@ (at your option) any later version. See . */ -#ifndef CXX_PADICXX_H -#define CXX_PADICXX_H CXX_PADICXX_H +#ifndef PADICXX_H +#define PADICXX_H -#include // std::max #include -#include "padic.h" - -#include "flintxx/expression.h" -#include "flintxx/flint_classes.h" -#include "flintxx/flint_exception.h" -#include "flintxx/frandxx.h" -#include "flintxx/stdmath.h" -#include "flintxx/traits.h" -#include "flintxx/tuple.h" +#include -#include "fmpzxx.h" -#include "fmpqxx.h" +#include +#include +#include +#include +#include +#include +#include -// TODO check codegen ... -// TODO padic_output_prec does not work on non-padic expressions, -// is that a problem? +#include +#include // std::max namespace flint { // function "declarations" @@ -423,7 +418,7 @@ struct ref_data \ structname* inner; \ ctxtype ctx; \ \ - template \ + template ref_data(T& o, typename detail::faketemplate::type* = 0) \ : inner(o._data().inner), ctx(o._data().ctx) {} \ \ @@ -449,11 +444,11 @@ struct srcref_data \ ctxtype ctx; \ slong N; \ \ - template \ + template srcref_data(const T& o, \ typename detail::faketemplate::type* = 0) \ : inner(o._data().inner), ctx(o._data().ctx), N(o.prec()) {} \ - template \ + template srcref_data(T o, typename detail::faketemplate::type* = 0) \ : inner(o._data().inner), ctx(o._data().ctx), N(o.prec()) {} \ \