| licenses(["reciprocal"]) |
| |
| load( |
| ":mpn.bzl", |
| "architecture_includes", |
| "config_include_from_architecture", |
| "file_from_architecture", |
| "mparam_path", |
| "mpn_cc_library", |
| "mpn_m4_cc_library", |
| ) |
| load("@//tools/build_rules:select.bzl", "address_size_select", "cpu_select") |
| |
| architecture_paths = { |
| "@//tools:cpu_k8": [ |
| "x86_64", |
| "generic", |
| ], |
| "@//tools:cpu_web": [ |
| "x86_64", |
| "generic", |
| ], |
| "@//tools:cpu_roborio": [ |
| "arm/v7a/cora9", |
| "arm/v6t2", |
| "arm/v6", |
| "arm/v5", |
| "arm", |
| "generic", |
| ], |
| "@//tools:cpu_armhf": [ |
| "arm/v7a/cora9", |
| "arm/v6t2", |
| "arm/v6", |
| "arm/v5", |
| "arm", |
| "generic", |
| ], |
| "@//tools:cpu_cortex_m4f": [ |
| "arm", |
| "generic", |
| ], |
| "@//tools:cpu_cortex_m4f_k22": [ |
| "arm", |
| "generic", |
| ], |
| } |
| |
| genrule( |
| name = "gmp_h_copy", |
| srcs = file_from_architecture(architecture_paths, "gmp.h"), |
| outs = ["gmp.h"], |
| cmd = "cp $< $@", |
| ) |
| |
| genrule( |
| name = "config_m4_copy", |
| srcs = file_from_architecture(architecture_paths, "config.m4"), |
| outs = ["config.m4"], |
| cmd = "cp $< $@", |
| ) |
| |
| copts_common = [ |
| "-Wno-error", |
| "-Wno-format-nonliteral", |
| "-Wno-unused-parameter", |
| "-Wno-missing-field-initializers", |
| "-DHAVE_CONFIG_H", |
| "-Ithird_party/gmp", |
| "-I$(GENDIR)/third_party/gmp", |
| "-Ithird_party/gmp/mpn", |
| "-I$(GENDIR)/third_party/gmp/mpn", |
| "-Wno-cast-align", |
| "-Wno-dangling-else", |
| "-Wno-cast-qual", |
| "-Wno-sign-compare", |
| "-Wno-unused-function", |
| "-Wno-unused-value", |
| "-Wno-unknown-warning-option", |
| "-Wno-unused-variable", |
| ] + architecture_includes(architecture_paths) + cpu_select({ |
| "arm": [ |
| "-Wno-old-style-declaration", |
| "-Wno-maybe-uninitialized", |
| "-Wno-empty-body", |
| "-Wno-unused-but-set-variable", |
| ], |
| "amd64": [], |
| }) + config_include_from_architecture(architecture_paths) |
| |
| ccopts = copts_common + [ |
| "-D__GMP_WITHIN_GMPXX", |
| "-Wno-unused-label", |
| ] |
| |
| copts = copts_common + [ |
| "-D__GMP_WITHIN_GMP", |
| ] |
| |
| cc_library( |
| name = "bootstrap", |
| textual_hdrs = [ |
| "bootstrap.c", |
| "mini-gmp/mini-gmp.c", |
| "mini-gmp/mini-gmp.h", |
| ], |
| ) |
| |
| cc_binary( |
| name = "gen-fac", |
| srcs = ["gen-fac.c"], |
| copts = copts, |
| deps = [":bootstrap"], |
| ) |
| |
| nail_bits = "0" |
| |
| limb_bits = address_size_select({ |
| "64": "64", |
| "32": "32", |
| }) |
| |
| genrule( |
| name = "fac_table_h", |
| outs = ["fac_table.h"], |
| cmd = "$(location :gen-fac) " + limb_bits + " " + nail_bits + " > $@", |
| tools = [":gen-fac"], |
| ) |
| |
| cc_binary( |
| name = "gen-fib", |
| srcs = ["gen-fib.c"], |
| copts = copts, |
| deps = [":bootstrap"], |
| ) |
| |
| genrule( |
| name = "fib_table_h", |
| outs = ["fib_table.h"], |
| cmd = "$(location :gen-fib) header " + limb_bits + " " + nail_bits + " > $@", |
| tools = [":gen-fib"], |
| ) |
| |
| genrule( |
| name = "fib_table_c", |
| outs = ["mpn/fib_table.c"], |
| cmd = "$(location :gen-fib) table " + limb_bits + " " + nail_bits + " > $@", |
| tools = [":gen-fib"], |
| ) |
| |
| cc_binary( |
| name = "gen-bases", |
| srcs = ["gen-bases.c"], |
| copts = copts, |
| deps = [":bootstrap"], |
| ) |
| |
| genrule( |
| name = "mp_bases_h", |
| outs = ["mp_bases.h"], |
| cmd = "$(location :gen-bases) header " + limb_bits + " " + nail_bits + " > $@", |
| tools = [":gen-bases"], |
| ) |
| |
| genrule( |
| name = "mp_bases_c", |
| outs = ["mpn/mp_bases.c"], |
| cmd = "$(location :gen-bases) table " + limb_bits + " " + nail_bits + " > $@", |
| tools = [":gen-bases"], |
| ) |
| |
| cc_binary( |
| name = "gen-trialdivtab", |
| srcs = ["gen-trialdivtab.c"], |
| copts = copts, |
| deps = [":bootstrap"], |
| ) |
| |
| genrule( |
| name = "trialdivtab_h", |
| outs = ["trialdivtab.h"], |
| cmd = "$(location :gen-trialdivtab) " + limb_bits + " 8000 > $@", |
| tools = [":gen-trialdivtab"], |
| ) |
| |
| cc_binary( |
| name = "gen-jacobitab", |
| srcs = ["gen-jacobitab.c"], |
| copts = copts, |
| deps = [":bootstrap"], |
| ) |
| |
| genrule( |
| name = "jacobitab_h", |
| outs = ["mpn/jacobitab.h"], |
| cmd = "$(location :gen-jacobitab) > $@", |
| tools = [":gen-jacobitab"], |
| ) |
| |
| cc_binary( |
| name = "gen-psqr", |
| srcs = ["gen-psqr.c"], |
| copts = copts, |
| deps = [":bootstrap"], |
| ) |
| |
| genrule( |
| name = "perfsqr_h", |
| outs = ["mpn/perfsqr.h"], |
| cmd = "$(location :gen-psqr) " + limb_bits + " " + nail_bits + " > $@", |
| tools = [":gen-psqr"], |
| ) |
| |
| extra_functions = ["invert_limb_table"] |
| |
| gmp_mpn_functions_optional = extra_functions + [ |
| "umul", |
| "udiv", |
| "invert_limb", |
| "sqr_diagonal", |
| "sqr_diag_addlsh1", |
| "mul_2", |
| "mul_3", |
| "mul_4", |
| "mul_5", |
| "mul_6", |
| "addmul_2", |
| "addmul_3", |
| "addmul_4", |
| "addmul_5", |
| "addmul_6", |
| "addmul_7", |
| "addmul_8", |
| "addlsh1_n", |
| "sublsh1_n", |
| "rsblsh1_n", |
| "rsh1add_n", |
| "rsh1sub_n", |
| "addlsh2_n", |
| "sublsh2_n", |
| "rsblsh2_n", |
| "addlsh_n", |
| "sublsh_n", |
| "rsblsh_n", |
| "add_n_sub_n", |
| "addaddmul_1msb0", |
| ] |
| |
| gmp_mpn_functions = [ |
| "add", |
| "add_1", |
| "add_n", |
| "sub", |
| "sub_1", |
| "sub_n", |
| "cnd_add_n", |
| "cnd_sub_n", |
| "cnd_swap", |
| "neg", |
| "com", |
| "mul_1", |
| "addmul_1", |
| "submul_1", |
| "add_err1_n", |
| "add_err2_n", |
| "add_err3_n", |
| "sub_err1_n", |
| "sub_err2_n", |
| "sub_err3_n", |
| "lshift", |
| "rshift", |
| "dive_1", |
| "diveby3", |
| "divis", |
| "divrem", |
| "divrem_1", |
| "divrem_2", |
| "fib2_ui", |
| "fib2m", |
| "mod_1", |
| "mod_34lsub1", |
| "mode1o", |
| # TODO(austin): Why is this not getting included by configure? It looks like it should... |
| #"pre_divrem_1", |
| "pre_mod_1", |
| "dump", |
| "mod_1_1", |
| "mod_1_2", |
| "mod_1_3", |
| "mod_1_4", |
| "lshiftc", |
| "mul", |
| "mul_fft", |
| "mul_n", |
| "sqr", |
| "mul_basecase", |
| "sqr_basecase", |
| "nussbaumer_mul", |
| "mulmid_basecase", |
| "toom42_mulmid", |
| "mulmid_n", |
| "mulmid", |
| "random", |
| "random2", |
| "pow_1", |
| "rootrem", |
| "sqrtrem", |
| "sizeinbase", |
| "get_str", |
| "set_str", |
| "compute_powtab", |
| "scan0", |
| "scan1", |
| "popcount", |
| "hamdist", |
| "cmp", |
| "zero_p", |
| "perfsqr", |
| "perfpow", |
| "strongfibo", |
| "gcd_11", |
| "gcd_22", |
| "gcd_1", |
| "gcd", |
| "gcdext_1", |
| "gcdext", |
| "gcd_subdiv_step", |
| "gcdext_lehmer", |
| "div_q", |
| "tdiv_qr", |
| "jacbase", |
| "jacobi_2", |
| "jacobi", |
| "get_d", |
| "matrix22_mul", |
| "matrix22_mul1_inverse_vector", |
| "hgcd_matrix", |
| "hgcd2", |
| "hgcd_step", |
| "hgcd_reduce", |
| "hgcd", |
| "hgcd_appr", |
| "hgcd2_jacobi", |
| "hgcd_jacobi", |
| "mullo_n", |
| "mullo_basecase", |
| "sqrlo", |
| "sqrlo_basecase", |
| "toom22_mul", |
| "toom32_mul", |
| "toom42_mul", |
| "toom52_mul", |
| "toom62_mul", |
| "toom33_mul", |
| "toom43_mul", |
| "toom53_mul", |
| "toom54_mul", |
| "toom63_mul", |
| "toom44_mul", |
| "toom6h_mul", |
| "toom6_sqr", |
| "toom8h_mul", |
| "toom8_sqr", |
| "toom_couple_handling", |
| "toom2_sqr", |
| "toom3_sqr", |
| "toom4_sqr", |
| "toom_eval_dgr3_pm1", |
| "toom_eval_dgr3_pm2", |
| "toom_eval_pm1", |
| "toom_eval_pm2", |
| "toom_eval_pm2exp", |
| "toom_eval_pm2rexp", |
| "toom_interpolate_5pts", |
| "toom_interpolate_6pts", |
| "toom_interpolate_7pts", |
| "toom_interpolate_8pts", |
| "toom_interpolate_12pts", |
| "toom_interpolate_16pts", |
| "invertappr", |
| "invert", |
| "binvert", |
| "mulmod_bnm1", |
| "sqrmod_bnm1", |
| "div_qr_1", |
| "div_qr_1n_pi1", |
| "div_qr_2", |
| "div_qr_2n_pi1", |
| "div_qr_2u_pi1", |
| "sbpi1_div_q", |
| "sbpi1_div_qr", |
| "sbpi1_divappr_q", |
| "dcpi1_div_q", |
| "dcpi1_div_qr", |
| "dcpi1_divappr_q", |
| "mu_div_qr", |
| "mu_divappr_q", |
| "mu_div_q", |
| "bdiv_q_1", |
| "sbpi1_bdiv_q", |
| "sbpi1_bdiv_qr", |
| "sbpi1_bdiv_r", |
| "dcpi1_bdiv_q", |
| "dcpi1_bdiv_qr", |
| "mu_bdiv_q", |
| "mu_bdiv_qr", |
| "bdiv_q", |
| "bdiv_qr", |
| "broot", |
| "brootinv", |
| "bsqrt", |
| "bsqrtinv", |
| "divexact", |
| "bdiv_dbm1c", |
| "redc_1", |
| "redc_2", |
| "redc_n", |
| "powm", |
| "powlo", |
| "sec_powm", |
| "sec_mul", |
| "sec_sqr", |
| "sec_div_qr", |
| "sec_div_r", |
| "sec_pi1_div_qr", |
| "sec_pi1_div_r", |
| "sec_add_1", |
| "sec_sub_1", |
| "sec_invert", |
| "trialdiv", |
| "remove", |
| "and_n", |
| "andn_n", |
| "nand_n", |
| "ior_n", |
| "iorn_n", |
| "nior_n", |
| "xor_n", |
| "xnor_n", |
| "copyi", |
| "copyd", |
| "zero", |
| "sec_tabselect", |
| "comb_tables", |
| ] + gmp_mpn_functions_optional |
| |
| [ |
| mpn_m4_cc_library( |
| name = x, |
| architecture_paths = architecture_paths, |
| ) |
| for x in gmp_mpn_functions |
| ] |
| |
| cc_library( |
| name = "mpn_core", |
| srcs = gmp_mpn_functions + [ |
| "assert.c", |
| "compat.c", |
| "errno.c", |
| "extract-dbl.c", |
| "invalid.c", |
| "memory.c", |
| "mp_bpl.c", |
| "mp_clz_tab.c", |
| "mp_dv_tab.c", |
| "mp_get_fns.c", |
| "mp_minv_tab.c", |
| "mp_set_fns.c", |
| "nextprime.c", |
| "primesieve.c", |
| "tal-reent.c", |
| "version.c", |
| ], |
| hdrs = [ |
| "gmp.h", |
| "gmp-impl.h", |
| "fac_table.h", |
| "mp_bases.h", |
| "fib_table.h", |
| "longlong.h", |
| "trialdivtab.h", |
| "mpn/perfsqr.h", |
| "mpn/jacobitab.h", |
| "gmpxx.h", |
| ] + mparam_path(architecture_paths) + file_from_architecture(architecture_paths, "config.h"), |
| copts = copts + [ |
| "-Wno-unused-command-line-argument", |
| "-Wa,--noexecstack", |
| ], |
| ) |
| |
| # TODO(austin): Can we run these through the mpn_m4_cc_library and get operation baked in without work? |
| mpn_cc_library( |
| name = "fib_table", |
| srcs = [ |
| "mpn/fib_table.c", |
| ], |
| copts = copts, |
| deps = [":mpn_core"], |
| ) |
| |
| mpn_cc_library( |
| name = "mp_bases", |
| srcs = [ |
| "mpn/mp_bases.c", |
| ], |
| copts = copts, |
| deps = [":mpn_core"], |
| ) |
| |
| cc_library( |
| name = "mpn", |
| deps = [ |
| ":fib_table", |
| ":mp_bases", |
| ":mpn_core", |
| ], |
| ) |
| |
| cc_library( |
| name = "mpz", |
| srcs = [ |
| "mpz/2fac_ui.c", |
| "mpz/abs.c", |
| "mpz/add.c", |
| "mpz/add_ui.c", |
| "mpz/and.c", |
| "mpz/aors.h", |
| "mpz/aors_ui.h", |
| "mpz/aorsmul.c", |
| "mpz/aorsmul_i.c", |
| "mpz/array_init.c", |
| "mpz/bin_ui.c", |
| "mpz/bin_uiui.c", |
| "mpz/cdiv_q.c", |
| "mpz/cdiv_q_ui.c", |
| "mpz/cdiv_qr.c", |
| "mpz/cdiv_qr_ui.c", |
| "mpz/cdiv_r.c", |
| "mpz/cdiv_r_ui.c", |
| "mpz/cdiv_ui.c", |
| "mpz/cfdiv_q_2exp.c", |
| "mpz/cfdiv_r_2exp.c", |
| "mpz/clear.c", |
| "mpz/clears.c", |
| "mpz/clrbit.c", |
| "mpz/cmp.c", |
| "mpz/cmp_d.c", |
| "mpz/cmp_si.c", |
| "mpz/cmp_ui.c", |
| "mpz/cmpabs.c", |
| "mpz/cmpabs_d.c", |
| "mpz/cmpabs_ui.c", |
| "mpz/com.c", |
| "mpz/combit.c", |
| "mpz/cong.c", |
| "mpz/cong_2exp.c", |
| "mpz/cong_ui.c", |
| "mpz/dive_ui.c", |
| "mpz/divegcd.c", |
| "mpz/divexact.c", |
| "mpz/divis.c", |
| "mpz/divis_2exp.c", |
| "mpz/divis_ui.c", |
| "mpz/dump.c", |
| "mpz/export.c", |
| "mpz/fac_ui.c", |
| "mpz/fdiv_q.c", |
| "mpz/fdiv_q_ui.c", |
| "mpz/fdiv_qr.c", |
| "mpz/fdiv_qr_ui.c", |
| "mpz/fdiv_r.c", |
| "mpz/fdiv_r_ui.c", |
| "mpz/fdiv_ui.c", |
| "mpz/fib2_ui.c", |
| "mpz/fib_ui.c", |
| "mpz/fits_s.h", |
| "mpz/fits_sint.c", |
| "mpz/fits_slong.c", |
| "mpz/fits_sshort.c", |
| "mpz/fits_uint.c", |
| "mpz/fits_ulong.c", |
| "mpz/fits_ushort.c", |
| "mpz/gcd.c", |
| "mpz/gcd_ui.c", |
| "mpz/gcdext.c", |
| "mpz/get_d.c", |
| "mpz/get_d_2exp.c", |
| "mpz/get_si.c", |
| "mpz/get_str.c", |
| "mpz/get_ui.c", |
| "mpz/getlimbn.c", |
| "mpz/hamdist.c", |
| "mpz/import.c", |
| "mpz/init.c", |
| "mpz/init2.c", |
| "mpz/inits.c", |
| "mpz/inp_raw.c", |
| "mpz/inp_str.c", |
| "mpz/invert.c", |
| "mpz/ior.c", |
| "mpz/iset.c", |
| "mpz/iset_d.c", |
| "mpz/iset_si.c", |
| "mpz/iset_str.c", |
| "mpz/iset_ui.c", |
| "mpz/jacobi.c", |
| "mpz/kronsz.c", |
| "mpz/kronuz.c", |
| "mpz/kronzs.c", |
| "mpz/kronzu.c", |
| "mpz/lcm.c", |
| "mpz/lcm_ui.c", |
| "mpz/limbs_finish.c", |
| "mpz/limbs_modify.c", |
| "mpz/limbs_read.c", |
| "mpz/limbs_write.c", |
| "mpz/lucmod.c", |
| "mpz/lucnum2_ui.c", |
| "mpz/lucnum_ui.c", |
| "mpz/mfac_uiui.c", |
| "mpz/millerrabin.c", |
| "mpz/mod.c", |
| "mpz/mul.c", |
| "mpz/mul_2exp.c", |
| "mpz/mul_i.h", |
| "mpz/mul_si.c", |
| "mpz/mul_ui.c", |
| "mpz/n_pow_ui.c", |
| "mpz/neg.c", |
| "mpz/nextprime.c", |
| "mpz/oddfac_1.c", |
| "mpz/out_raw.c", |
| "mpz/out_str.c", |
| "mpz/perfpow.c", |
| "mpz/perfsqr.c", |
| "mpz/popcount.c", |
| "mpz/pow_ui.c", |
| "mpz/powm.c", |
| "mpz/powm_sec.c", |
| "mpz/powm_ui.c", |
| "mpz/pprime_p.c", |
| "mpz/primorial_ui.c", |
| "mpz/prodlimbs.c", |
| "mpz/random.c", |
| "mpz/random2.c", |
| "mpz/realloc.c", |
| "mpz/realloc2.c", |
| "mpz/remove.c", |
| "mpz/roinit_n.c", |
| "mpz/root.c", |
| "mpz/rootrem.c", |
| "mpz/rrandomb.c", |
| "mpz/scan0.c", |
| "mpz/scan1.c", |
| "mpz/set.c", |
| "mpz/set_d.c", |
| "mpz/set_f.c", |
| "mpz/set_q.c", |
| "mpz/set_si.c", |
| "mpz/set_str.c", |
| "mpz/set_ui.c", |
| "mpz/setbit.c", |
| "mpz/size.c", |
| "mpz/sizeinbase.c", |
| "mpz/sqrt.c", |
| "mpz/sqrtrem.c", |
| "mpz/stronglucas.c", |
| "mpz/sub.c", |
| "mpz/sub_ui.c", |
| "mpz/swap.c", |
| "mpz/tdiv_q.c", |
| "mpz/tdiv_q_2exp.c", |
| "mpz/tdiv_q_ui.c", |
| "mpz/tdiv_qr.c", |
| "mpz/tdiv_qr_ui.c", |
| "mpz/tdiv_r.c", |
| "mpz/tdiv_r_2exp.c", |
| "mpz/tdiv_r_ui.c", |
| "mpz/tdiv_ui.c", |
| "mpz/tstbit.c", |
| "mpz/ui_pow_ui.c", |
| "mpz/ui_sub.c", |
| "mpz/urandomb.c", |
| "mpz/urandomm.c", |
| "mpz/xor.c", |
| ], |
| copts = copts, |
| deps = [ |
| ":mpn", |
| ], |
| ) |
| |
| cc_library( |
| name = "mpq", |
| srcs = [ |
| "mpq/abs.c", |
| "mpq/aors.c", |
| "mpq/canonicalize.c", |
| "mpq/clear.c", |
| "mpq/clears.c", |
| "mpq/cmp.c", |
| "mpq/cmp_si.c", |
| "mpq/cmp_ui.c", |
| "mpq/div.c", |
| "mpq/equal.c", |
| "mpq/get_d.c", |
| "mpq/get_den.c", |
| "mpq/get_num.c", |
| "mpq/get_str.c", |
| "mpq/init.c", |
| "mpq/inits.c", |
| "mpq/inp_str.c", |
| "mpq/inv.c", |
| "mpq/md_2exp.c", |
| "mpq/mul.c", |
| "mpq/neg.c", |
| "mpq/out_str.c", |
| "mpq/set.c", |
| "mpq/set_d.c", |
| "mpq/set_den.c", |
| "mpq/set_f.c", |
| "mpq/set_num.c", |
| "mpq/set_si.c", |
| "mpq/set_str.c", |
| "mpq/set_ui.c", |
| "mpq/set_z.c", |
| "mpq/swap.c", |
| ], |
| copts = copts, |
| deps = [ |
| ":mpn", |
| ], |
| ) |
| |
| cc_library( |
| name = "mpf", |
| srcs = [ |
| "mpf/abs.c", |
| "mpf/add.c", |
| "mpf/add_ui.c", |
| "mpf/ceilfloor.c", |
| "mpf/clear.c", |
| "mpf/clears.c", |
| "mpf/cmp.c", |
| "mpf/cmp_d.c", |
| "mpf/cmp_si.c", |
| "mpf/cmp_ui.c", |
| "mpf/cmp_z.c", |
| "mpf/div.c", |
| "mpf/div_2exp.c", |
| "mpf/div_ui.c", |
| "mpf/dump.c", |
| "mpf/eq.c", |
| "mpf/fits_s.h", |
| "mpf/fits_sint.c", |
| "mpf/fits_slong.c", |
| "mpf/fits_sshort.c", |
| "mpf/fits_u.h", |
| "mpf/fits_uint.c", |
| "mpf/fits_ulong.c", |
| "mpf/fits_ushort.c", |
| "mpf/get_d.c", |
| "mpf/get_d_2exp.c", |
| "mpf/get_dfl_prec.c", |
| "mpf/get_prc.c", |
| "mpf/get_si.c", |
| "mpf/get_str.c", |
| "mpf/get_ui.c", |
| "mpf/init.c", |
| "mpf/init2.c", |
| "mpf/inits.c", |
| "mpf/inp_str.c", |
| "mpf/int_p.c", |
| "mpf/iset.c", |
| "mpf/iset_d.c", |
| "mpf/iset_si.c", |
| "mpf/iset_str.c", |
| "mpf/iset_ui.c", |
| "mpf/mul.c", |
| "mpf/mul_2exp.c", |
| "mpf/mul_ui.c", |
| "mpf/neg.c", |
| "mpf/out_str.c", |
| "mpf/pow_ui.c", |
| "mpf/random2.c", |
| "mpf/reldiff.c", |
| "mpf/set.c", |
| "mpf/set_d.c", |
| "mpf/set_dfl_prec.c", |
| "mpf/set_prc.c", |
| "mpf/set_prc_raw.c", |
| "mpf/set_q.c", |
| "mpf/set_si.c", |
| "mpf/set_str.c", |
| "mpf/set_ui.c", |
| "mpf/set_z.c", |
| "mpf/size.c", |
| "mpf/sqrt.c", |
| "mpf/sqrt_ui.c", |
| "mpf/sub.c", |
| "mpf/sub_ui.c", |
| "mpf/swap.c", |
| "mpf/trunc.c", |
| "mpf/ui_div.c", |
| "mpf/ui_sub.c", |
| "mpf/urandomb.c", |
| ], |
| copts = copts, |
| deps = [ |
| ":mpn", |
| ], |
| ) |
| |
| cc_library( |
| name = "printf", |
| srcs = [ |
| "printf/asprintf.c", |
| "printf/asprntffuns.c", |
| "printf/doprnt.c", |
| "printf/doprntf.c", |
| "printf/doprnti.c", |
| "printf/fprintf.c", |
| "printf/obprintf.c", |
| "printf/obprntffuns.c", |
| "printf/obvprintf.c", |
| "printf/printf.c", |
| "printf/printffuns.c", |
| "printf/repl-vsnprintf.c", |
| "printf/snprintf.c", |
| "printf/snprntffuns.c", |
| "printf/sprintf.c", |
| "printf/sprintffuns.c", |
| "printf/vasprintf.c", |
| "printf/vfprintf.c", |
| "printf/vprintf.c", |
| "printf/vsnprintf.c", |
| "printf/vsprintf.c", |
| ], |
| copts = copts, |
| deps = [ |
| ":mpn", |
| ], |
| ) |
| |
| cc_library( |
| name = "scanf", |
| srcs = [ |
| "scanf/doscan.c", |
| "scanf/fscanf.c", |
| "scanf/fscanffuns.c", |
| "scanf/scanf.c", |
| "scanf/sscanf.c", |
| "scanf/sscanffuns.c", |
| "scanf/vfscanf.c", |
| "scanf/vscanf.c", |
| "scanf/vsscanf.c", |
| ], |
| copts = copts, |
| deps = [ |
| ":mpn", |
| ], |
| ) |
| |
| cc_library( |
| name = "rand", |
| srcs = [ |
| "rand/rand.c", |
| "rand/randbui.c", |
| "rand/randclr.c", |
| "rand/randdef.c", |
| "rand/randiset.c", |
| "rand/randlc2s.c", |
| "rand/randlc2x.c", |
| "rand/randmt.c", |
| "rand/randmt.h", |
| "rand/randmts.c", |
| "rand/randmui.c", |
| "rand/rands.c", |
| "rand/randsd.c", |
| "rand/randsdui.c", |
| ], |
| copts = copts, |
| deps = [ |
| ":mpn", |
| ], |
| ) |
| |
| cc_library( |
| name = "cxx", |
| srcs = [ |
| "cxx/isfuns.cc", |
| "cxx/ismpf.cc", |
| "cxx/ismpq.cc", |
| "cxx/ismpz.cc", |
| "cxx/ismpznw.cc", |
| "cxx/limits.cc", |
| "cxx/osdoprnti.cc", |
| "cxx/osfuns.cc", |
| "cxx/osmpf.cc", |
| "cxx/osmpq.cc", |
| "cxx/osmpz.cc", |
| ], |
| copts = ccopts, |
| deps = [ |
| ":mpn", |
| ], |
| ) |
| |
| cc_library( |
| name = "gmp", |
| includes = ["."], |
| visibility = ["//visibility:public"], |
| deps = [ |
| ":cxx", |
| ":mpf", |
| ":mpn", |
| ":mpq", |
| ":mpz", |
| ":printf", |
| ":rand", |
| ":scanf", |
| ], |
| ) |
| |
| genrule( |
| name = "call_m4", |
| srcs = native.glob([ |
| "**/*.m4", |
| "**/*.asm", |
| ]) + ["config.m4"], |
| outs = ["tests/call.s"], |
| cmd = "cd third_party/gmp/tests; ../../../$(location @m4_v1.4.18//:bin) -I ../../../$(GENDIR)/third_party/gmp/tests -DHAVE_CONFIG_H -DPIC " + cpu_select({ |
| "arm": "arm32call.asm", |
| "amd64": "amd64call.asm", |
| }) + |
| " > ../../../$@", |
| tools = ["@m4_v1.4.18//:bin"], |
| ) |
| |
| cc_library( |
| name = "testlib", |
| srcs = |
| cpu_select({ |
| "arm": ["tests/arm32check.c"], |
| "amd64": [ |
| "tests/amd64check.c", |
| ], |
| }) + [ |
| "tests/memory.c", |
| "tests/misc.c", |
| "tests/refmpf.c", |
| "tests/refmpn.c", |
| "tests/refmpq.c", |
| "tests/refmpz.c", |
| "tests/spinner.c", |
| "tests/trace.c", |
| ":call_m4", |
| ], |
| hdrs = [ |
| "tests/cxx/t-ops2.h", |
| "tests/mpn/toom-shared.h", |
| "tests/mpn/toom-sqr-shared.h", |
| "tests/tests.h", |
| ], |
| copts = copts + ["-Wno-unused-command-line-argument"], |
| includes = [ |
| ".", |
| "tests", |
| ] + ["mpn/" + p for p in architecture_paths], |
| deps = [":gmp"], |
| ) |
| |
| [cc_test( |
| name = "tests/" + x, |
| srcs = ["tests/" + x + ".c"], |
| copts = copts, |
| deps = [":testlib"], |
| ) for x in [ |
| "t-bswap", |
| "t-constants", |
| "t-count_zeros", |
| "t-hightomask", |
| "t-modlinv", |
| "t-popc", |
| "t-parity", |
| "t-sub", |
| ]] |
| |
| [cc_test( |
| name = "tests/mpn/" + x, |
| srcs = ["tests/mpn/" + x + ".c"], |
| copts = copts, |
| deps = [":testlib"], |
| ) for x in [ |
| "t-asmtype", |
| "t-aors_1", |
| "t-divrem_1", |
| "t-mod_1", |
| "t-fat", |
| "t-get_d", |
| "t-instrument", |
| "t-iord_u", |
| "t-mp_bases", |
| "t-perfsqr", |
| "t-scan", |
| "logic", |
| "t-toom22", |
| "t-toom32", |
| "t-toom33", |
| "t-toom42", |
| "t-toom43", |
| "t-toom44", |
| "t-toom52", |
| "t-toom53", |
| "t-toom54", |
| "t-toom62", |
| "t-toom63", |
| "t-toom6h", |
| "t-toom8h", |
| "t-toom2-sqr", |
| "t-toom3-sqr", |
| "t-toom4-sqr", |
| "t-toom6-sqr", |
| "t-toom8-sqr", |
| "t-div", |
| "t-mul", |
| "t-mullo", |
| "t-sqrlo", |
| "t-mulmod_bnm1", |
| "t-sqrmod_bnm1", |
| "t-mulmid", |
| "t-hgcd", |
| "t-hgcd_appr", |
| "t-matrix22", |
| "t-invert", |
| "t-bdiv", |
| "t-fib2m", |
| "t-broot", |
| "t-brootinv", |
| "t-minvert", |
| "t-sizeinbase", |
| "t-gcd_11", |
| "t-gcd_22", |
| "t-gcdext_1", |
| ]] |
| |
| [cc_test( |
| name = "tests/mpz/" + x, |
| srcs = ["tests/mpz/" + x + ".c"], |
| copts = copts, |
| deps = [":testlib"], |
| ) for x in [ |
| "reuse", |
| "t-addsub", |
| "t-cmp", |
| "t-mul", |
| "t-mul_i", |
| "t-tdiv", |
| "t-tdiv_ui", |
| "t-fdiv", |
| "t-fdiv_ui", |
| "t-cdiv_ui", |
| "t-gcd", |
| "t-gcd_ui", |
| "t-lcm", |
| "t-invert", |
| "dive", |
| "dive_ui", |
| "t-sqrtrem", |
| "convert", |
| "io", |
| "t-inp_str", |
| "logic", |
| "bit", |
| "t-powm", |
| "t-powm_ui", |
| "t-pow", |
| "t-div_2exp", |
| "t-root", |
| "t-perfsqr", |
| "t-perfpow", |
| "t-jac", |
| "t-bin", |
| "t-get_d", |
| "t-get_d_2exp", |
| "t-get_si", |
| "t-set_d", |
| "t-set_si", |
| "t-lucm", |
| "t-fac_ui", |
| "t-mfac_uiui", |
| "t-primorial_ui", |
| "t-fib_ui", |
| "t-lucnum_ui", |
| "t-scan", |
| "t-fits", |
| "t-divis", |
| "t-divis_2exp", |
| "t-cong", |
| "t-cong_2exp", |
| "t-sizeinbase", |
| "t-set_str", |
| "t-aorsmul", |
| "t-cmp_d", |
| "t-cmp_si", |
| "t-hamdist", |
| "t-oddeven", |
| "t-popcount", |
| "t-set_f", |
| "t-io_raw", |
| "t-import", |
| "t-export", |
| "t-pprime_p", |
| "t-nextprime", |
| "t-remove", |
| "t-limbs", |
| ]] |
| |
| [cc_test( |
| name = "tests/mpq/" + x, |
| srcs = ["tests/mpq/" + x + ".c"], |
| copts = copts, |
| deps = [":testlib"], |
| ) for x in [ |
| "t-aors", |
| "t-cmp", |
| "t-cmp_ui", |
| "t-cmp_si", |
| "t-equal", |
| "t-get_d", |
| "t-get_str", |
| "t-inp_str", |
| "t-inv", |
| "t-md_2exp", |
| "t-set_f", |
| "t-set_str", |
| "io", |
| "reuse", |
| "t-cmp_z", |
| ]] |
| |
| [cc_test( |
| name = "tests/mpf/" + x, |
| srcs = ["tests/mpf/" + x + ".c"], |
| copts = copts, |
| deps = [":testlib"], |
| ) for x in [ |
| "t-dm2exp", |
| "t-conv", |
| "t-add", |
| "t-sub", |
| "t-sqrt", |
| "t-sqrt_ui", |
| "t-muldiv", |
| "reuse", |
| "t-cmp_d", |
| "t-cmp_si", |
| "t-div", |
| "t-fits", |
| "t-get_d", |
| "t-get_d_2exp", |
| "t-get_si", |
| "t-get_ui", |
| "t-gsprec", |
| "t-inp_str", |
| "t-int_p", |
| "t-mul_ui", |
| "t-set", |
| "t-set_q", |
| "t-set_si", |
| "t-set_ui", |
| "t-trunc", |
| "t-ui_div", |
| "t-eq", |
| "t-pow_ui", |
| ]] |
| |
| [cc_test( |
| name = "tests/rand/" + x, |
| srcs = ["tests/rand/" + x + ".c"], |
| copts = copts, |
| deps = [":testlib"], |
| ) for x in [ |
| "t-iset", |
| "t-lc2exp", |
| "t-mt", |
| "t-rand", |
| "t-urbui", |
| "t-urmui", |
| "t-urndmm", |
| ]] |
| |
| [cc_test( |
| name = "tests/misc/" + x, |
| srcs = ["tests/misc/" + x + ".c"], |
| copts = copts, |
| deps = [":testlib"], |
| ) for x in [ |
| "t-printf", |
| "t-scanf", |
| "t-locale", |
| ]] |
| |
| [cc_test( |
| name = "tests/cxx/" + x, |
| srcs = ["tests/cxx/" + x + ".cc"], |
| copts = copts, |
| deps = [":testlib"], |
| ) for x in [ |
| "t-binary", |
| "t-cast", |
| "t-cxx11", |
| "t-headers", |
| "t-iostream", |
| "t-istream", |
| "t-locale", |
| "t-misc", |
| "t-mix", |
| "t-ops", |
| "t-ops2qf", |
| "t-ops2f", |
| "t-ops3", |
| "t-ostream", |
| "t-prec", |
| "t-ternary", |
| "t-unary", |
| "t-do-exceptions-work-at-all-with-this-compiler", |
| "t-ops2z", |
| "t-assign", |
| "t-constr", |
| "t-rand", |
| ]] |