
include_directories(
    ../External/mpir
)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(Header_Files
    "config.h"
    "../External/mpir/gmp-impl.h"
    "gmp-mparam.h"
    "longlong.h"
    "mpir.h"
)
source_group("Header Files" FILES ${Header_Files})

set(Source_Files
    "../External/mpir/assert.c"
    "../External/mpir/errno.c"
    "../External/mpir/extract-dbl.c"
    "../External/mpir/invalid.c"
    "../External/mpir/memory.c"
    "../External/mpir/mp_bpl.c"
    "../External/mpir/mp_clz_tab.c"
    "../External/mpir/mp_dv_tab.c"
    "../External/mpir/mp_get_fns.c"
    "../External/mpir/mp_minv_tab.c"
    "../External/mpir/mp_set_fns.c"
    "../External/mpir/nextprime.c"
    "../External/mpir/primesieve.c"
    "../External/mpir/randbui.c"
    "../External/mpir/randclr.c"
    "../External/mpir/randdef.c"
    "../External/mpir/randiset.c"
    "../External/mpir/randlc2s.c"
    "../External/mpir/randlc2x.c"
    "../External/mpir/randmt.c"
    "../External/mpir/randmts.c"
    "../External/mpir/randmui.c"
    "../External/mpir/rands.c"
    "../External/mpir/randsd.c"
    "../External/mpir/randsdui.c"
    "../External/mpir/tal-reent.c"
    "../External/mpir/version.c"
)
source_group("Source Files" FILES ${Source_Files})

set(Source_Files__cxx
    "../External/mpir/cxx/dummy.cc"
    "../External/mpir/cxx/isfuns.cc"
    "../External/mpir/cxx/ismpf.cc"
    "../External/mpir/cxx/ismpq.cc"
    "../External/mpir/cxx/ismpz.cc"
    "../External/mpir/cxx/ismpznw.cc"
    "../External/mpir/cxx/osdoprnti.cc"
    "../External/mpir/cxx/osfuns.cc"
    "../External/mpir/cxx/osmpf.cc"
    "../External/mpir/cxx/osmpq.cc"
    "../External/mpir/cxx/osmpz.cc"
)
source_group("Source Files\\cxx" FILES ${Source_Files__cxx})

set(Source_Files__fft
    "../External/mpir/fft/adjust.c"
    "../External/mpir/fft/adjust_sqrt2.c"
    "../External/mpir/fft/butterfly_lshB.c"
    "../External/mpir/fft/butterfly_rshB.c"
    "../External/mpir/fft/combine_bits.c"
    "../External/mpir/fft/div_2expmod_2expp1.c"
    "../External/mpir/fft/fermat_to_mpz.c"
    "../External/mpir/fft/fft_mfa_trunc_sqrt2.c"
    "../External/mpir/fft/fft_mfa_trunc_sqrt2_inner.c"
    "../External/mpir/fft/fft_negacyclic.c"
    "../External/mpir/fft/fft_radix2.c"
    "../External/mpir/fft/fft_trunc.c"
    "../External/mpir/fft/fft_trunc_sqrt2.c"
    "../External/mpir/fft/ifft_mfa_trunc_sqrt2.c"
    "../External/mpir/fft/ifft_negacyclic.c"
    "../External/mpir/fft/ifft_radix2.c"
    "../External/mpir/fft/ifft_trunc.c"
    "../External/mpir/fft/ifft_trunc_sqrt2.c"
    "../External/mpir/fft/mul_2expmod_2expp1.c"
    "../External/mpir/fft/mul_fft_main.c"
    "../External/mpir/fft/mul_mfa_trunc_sqrt2.c"
    "../External/mpir/fft/mul_trunc_sqrt2.c"
    "../External/mpir/fft/mulmod_2expp1.c"
    "../External/mpir/fft/normmod_2expp1.c"
    "../External/mpir/fft/revbin.c"
    "../External/mpir/fft/split_bits.c"
)
source_group("Source Files\\fft" FILES ${Source_Files__fft})

set(Source_Files__mpf
    "../External/mpir/mpf/abs.c"
    "../External/mpir/mpf/add.c"
    "../External/mpir/mpf/add_ui.c"
    "../External/mpir/mpf/ceilfloor.c"
    "../External/mpir/mpf/clear.c"
    "../External/mpir/mpf/clears.c"
    "../External/mpir/mpf/cmp.c"
    "../External/mpir/mpf/cmp_d.c"
    "../External/mpir/mpf/cmp_si.c"
    "../External/mpir/mpf/cmp_ui.c"
    "../External/mpir/mpf/cmp_z.c"
    "../External/mpir/mpf/div.c"
    "../External/mpir/mpf/div_2exp.c"
    "../External/mpir/mpf/div_ui.c"
    "../External/mpir/mpf/dump.c"
    "../External/mpir/mpf/eq.c"
    "../External/mpir/mpf/fits_si.c"
    "../External/mpir/mpf/fits_sint.c"
    "../External/mpir/mpf/fits_slong.c"
    "../External/mpir/mpf/fits_sshort.c"
    "../External/mpir/mpf/fits_ui.c"
    "../External/mpir/mpf/fits_uint.c"
    "../External/mpir/mpf/fits_ulong.c"
    "../External/mpir/mpf/fits_ushort.c"
    "../External/mpir/mpf/get_d.c"
    "../External/mpir/mpf/get_d_2exp.c"
    "../External/mpir/mpf/get_dfl_prec.c"
    "../External/mpir/mpf/get_prc.c"
    "../External/mpir/mpf/get_si.c"
    "../External/mpir/mpf/get_str.c"
    "../External/mpir/mpf/get_ui.c"
    "../External/mpir/mpf/init.c"
    "../External/mpir/mpf/init2.c"
    "../External/mpir/mpf/inits.c"
    "../External/mpir/mpf/inp_str.c"
    "../External/mpir/mpf/int_p.c"
    "../External/mpir/mpf/iset.c"
    "../External/mpir/mpf/iset_d.c"
    "../External/mpir/mpf/iset_si.c"
    "../External/mpir/mpf/iset_str.c"
    "../External/mpir/mpf/iset_ui.c"
    "../External/mpir/mpf/mul.c"
    "../External/mpir/mpf/mul_2exp.c"
    "../External/mpir/mpf/mul_ui.c"
    "../External/mpir/mpf/neg.c"
    "../External/mpir/mpf/out_str.c"
    "../External/mpir/mpf/pow_ui.c"
    "../External/mpir/mpf/random2.c"
    "../External/mpir/mpf/reldiff.c"
    "../External/mpir/mpf/rrandomb.c"
    "../External/mpir/mpf/set.c"
    "../External/mpir/mpf/set_d.c"
    "../External/mpir/mpf/set_dfl_prec.c"
    "../External/mpir/mpf/set_prc.c"
    "../External/mpir/mpf/set_prc_raw.c"
    "../External/mpir/mpf/set_q.c"
    "../External/mpir/mpf/set_si.c"
    "../External/mpir/mpf/set_str.c"
    "../External/mpir/mpf/set_ui.c"
    "../External/mpir/mpf/set_z.c"
    "../External/mpir/mpf/size.c"
    "../External/mpir/mpf/sqrt.c"
    "../External/mpir/mpf/sqrt_ui.c"
    "../External/mpir/mpf/sub.c"
    "../External/mpir/mpf/sub_ui.c"
    "../External/mpir/mpf/swap.c"
    "../External/mpir/mpf/trunc.c"
    "../External/mpir/mpf/ui_div.c"
    "../External/mpir/mpf/ui_sub.c"
    "../External/mpir/mpf/urandomb.c"
)
source_group("Source Files\\mpf" FILES ${Source_Files__mpf})

set(Source_Files__mpn
    "../External/mpir/mpn/generic/add.c"
    "../External/mpir/mpn/generic/add_1.c"
    "../External/mpir/mpn/generic/add_err1_n.c"
    "../External/mpir/mpn/generic/add_err2_n.c"
    "../External/mpir/mpn/generic/add_n.c"
    "../External/mpir/mpn/generic/addadd_n.c"
    "../External/mpir/mpn/generic/addmul_1.c"
    "../External/mpir/mpn/generic/addsub_n.c"
    "../External/mpir/mpn/generic/and_n.c"
    "../External/mpir/mpn/generic/andn_n.c"
    "../External/mpir/mpn/generic/bdivmod.c"
    "../External/mpir/mpn/generic/binvert.c"
    "../External/mpir/mpn/generic/cmp.c"
    "../External/mpir/mpn/generic/com_n.c"
    "../External/mpir/mpn/generic/comb_tables.c"
    "../External/mpir/mpn/generic/copyd.c"
    "../External/mpir/mpn/generic/copyi.c"
    "../External/mpir/mpn/generic/dc_bdiv_q.c"
    "../External/mpir/mpn/generic/dc_bdiv_q_n.c"
    "../External/mpir/mpn/generic/dc_bdiv_qr.c"
    "../External/mpir/mpn/generic/dc_bdiv_qr_n.c"
    "../External/mpir/mpn/generic/dc_div_q.c"
    "../External/mpir/mpn/generic/dc_div_qr.c"
    "../External/mpir/mpn/generic/dc_div_qr_n.c"
    "../External/mpir/mpn/generic/dc_divappr_q.c"
    "../External/mpir/mpn/generic/divexact.c"
    "../External/mpir/mpn/generic/divexact_1.c"
    "../External/mpir/mpn/generic/divexact_by3c.c"
    "../External/mpir/mpn/generic/divexact_byff.c"
    "../External/mpir/mpn/generic/divexact_byfobm1.c"
    "../External/mpir/mpn/generic/divisible_p.c"
    "../External/mpir/mpn/generic/divrem.c"
    "../External/mpir/mpn/generic/divrem_1.c"
    "../External/mpir/mpn/generic/divrem_2.c"
    "../External/mpir/mpn/generic/divrem_euclidean_qr_1.c"
    "../External/mpir/mpn/generic/divrem_euclidean_qr_2.c"
    "../External/mpir/mpn/generic/divrem_euclidean_r_1.c"
    "../External/mpir/mpn/generic/divrem_hensel_qr_1.c"
    "../External/mpir/mpn/generic/divrem_hensel_qr_1_1.c"
    "../External/mpir/mpn/generic/divrem_hensel_qr_1_2.c"
    "../External/mpir/mpn/generic/divrem_hensel_r_1.c"
    "../External/mpir/mpn/generic/divrem_hensel_rsh_qr_1.c"
    "../External/mpir/mpn/generic/dump.c"
    "../External/mpir/mpn/generic/fib2_ui.c"
    "../External/mpir/mpn/generic/fib_table.c"
    "../External/mpir/mpn/generic/gcd.c"
    "../External/mpir/mpn/generic/gcd_1.c"
    "../External/mpir/mpn/generic/gcd_subdiv_step.c"
    "../External/mpir/mpn/generic/gcdext.c"
    "../External/mpir/mpn/generic/gcdext_1.c"
    "../External/mpir/mpn/generic/gcdext_lehmer.c"
    "../External/mpir/mpn/generic/get_d.c"
    "../External/mpir/mpn/generic/get_str.c"
    "../External/mpir/mpn/generic/hamdist.c"
    "../External/mpir/mpn/generic/hgcd.c"
    "../External/mpir/mpn/generic/hgcd2.c"
    "../External/mpir/mpn/generic/hgcd2_jacobi.c"
    "../External/mpir/mpn/generic/hgcd_appr.c"
    "../External/mpir/mpn/generic/hgcd_jacobi.c"
    "../External/mpir/mpn/generic/hgcd_matrix.c"
    "../External/mpir/mpn/generic/hgcd_reduce.c"
    "../External/mpir/mpn/generic/hgcd_step.c"
    "../External/mpir/mpn/generic/inv_div_q.c"
    "../External/mpir/mpn/generic/inv_div_qr.c"
    "../External/mpir/mpn/generic/inv_div_qr_n.c"
    "../External/mpir/mpn/generic/inv_divappr_q.c"
    "../External/mpir/mpn/generic/inv_divappr_q_n.c"
    "../External/mpir/mpn/generic/invert.c"
    "../External/mpir/mpn/generic/ior_n.c"
    "../External/mpir/mpn/generic/iorn_n.c"
    "../External/mpir/mpn/generic/jacobi.c"
    "../External/mpir/mpn/generic/jacobi_2.c"
    "../External/mpir/mpn/generic/jacobi_base.c"
    "../External/mpir/mpn/generic/lshift.c"
    "../External/mpir/mpn/generic/matrix22_mul.c"
    "../External/mpir/mpn/generic/matrix22_mul1_inverse_vector.c"
    "../External/mpir/mpn/generic/mod_1.c"
    "../External/mpir/mpn/generic/mod_1_1.c"
    "../External/mpir/mpn/generic/mod_1_2.c"
    "../External/mpir/mpn/generic/mod_1_3.c"
    "../External/mpir/mpn/generic/mod_34lsub1.c"
    "../External/mpir/mpn/generic/modexact_1c_odd.c"
    "../External/mpir/mpn/generic/mp_bases.c"
    "../External/mpir/mpn/generic/mul.c"
    "../External/mpir/mpn/generic/mul_1.c"
    "../External/mpir/mpn/generic/mul_basecase.c"
    "../External/mpir/mpn/generic/mul_fft.c"
    "../External/mpir/mpn/generic/mul_n.c"
    "../External/mpir/mpn/generic/mulhigh_n.c"
    "../External/mpir/mpn/generic/mullow_basecase.c"
    "../External/mpir/mpn/generic/mullow_n.c"
    "../External/mpir/mpn/generic/mullow_n_basecase.c"
    "../External/mpir/mpn/generic/mulmid.c"
    "../External/mpir/mpn/generic/mulmid_basecase.c"
    "../External/mpir/mpn/generic/mulmid_n.c"
    "../External/mpir/mpn/generic/mulmod_2expm1.c"
    "../External/mpir/mpn/generic/mulmod_2expp1_basecase.c"
    "../External/mpir/mpn/generic/mulmod_bexpp1.c"
    "../External/mpir/mpn/generic/nand_n.c"
    "../External/mpir/mpn/generic/neg_n.c"
    "../External/mpir/mpn/generic/nior_n.c"
    "../External/mpir/mpn/generic/nsumdiff_n.c"
    "../External/mpir/mpn/generic/perfect_square_p.c"
    "../External/mpir/mpn/generic/popcount.c"
    "../External/mpir/mpn/generic/pow_1.c"
    "../External/mpir/mpn/generic/powlo.c"
    "../External/mpir/mpn/generic/powm.c"
    "../External/mpir/mpn/generic/preinv_divrem_1.c"
    "../External/mpir/mpn/generic/preinv_mod_1.c"
    "../External/mpir/mpn/generic/random.c"
    "../External/mpir/mpn/generic/random2.c"
    "../External/mpir/mpn/generic/randomb.c"
    "../External/mpir/mpn/generic/redc_1.c"
    "../External/mpir/mpn/generic/redc_2.c"
    "../External/mpir/mpn/generic/redc_n.c"
    "../External/mpir/mpn/generic/rootrem.c"
    "../External/mpir/mpn/generic/rootrem_basecase.c"
    "../External/mpir/mpn/generic/rrandom.c"
    "../External/mpir/mpn/generic/rsh_divrem_hensel_qr_1.c"
    "../External/mpir/mpn/generic/rsh_divrem_hensel_qr_1_1.c"
    "../External/mpir/mpn/generic/rsh_divrem_hensel_qr_1_2.c"
    "../External/mpir/mpn/generic/rshift.c"
    "../External/mpir/mpn/generic/sb_bdiv_q.c"
    "../External/mpir/mpn/generic/sb_bdiv_qr.c"
    "../External/mpir/mpn/generic/sb_div_q.c"
    "../External/mpir/mpn/generic/sb_div_qr.c"
    "../External/mpir/mpn/generic/sb_divappr_q.c"
    "../External/mpir/mpn/generic/scan0.c"
    "../External/mpir/mpn/generic/scan1.c"
    "../External/mpir/mpn/generic/set_str.c"
    "../External/mpir/mpn/generic/sizeinbase.c"
    "../External/mpir/mpn/generic/sqr_basecase.c"
    "../External/mpir/mpn/generic/sqrtrem.c"
    "../External/mpir/mpn/generic/sub.c"
    "../External/mpir/mpn/generic/sub_1.c"
    "../External/mpir/mpn/generic/sub_err1_n.c"
    "../External/mpir/mpn/generic/sub_err2_n.c"
    "../External/mpir/mpn/generic/sub_n.c"
    "../External/mpir/mpn/generic/subadd_n.c"
    "../External/mpir/mpn/generic/submul_1.c"
    "../External/mpir/mpn/generic/sumdiff_n.c"
    "../External/mpir/mpn/generic/tdiv_q.c"
    "../External/mpir/mpn/generic/tdiv_qr.c"
    "../External/mpir/mpn/generic/toom3_mul.c"
    "../External/mpir/mpn/generic/toom3_mul_n.c"
    "../External/mpir/mpn/generic/toom42_mulmid.c"
    "../External/mpir/mpn/generic/toom4_mul.c"
    "../External/mpir/mpn/generic/toom4_mul_n.c"
    "../External/mpir/mpn/generic/toom8_sqr_n.c"
    "../External/mpir/mpn/generic/toom8h_mul.c"
    "../External/mpir/mpn/generic/toom_couple_handling.c"
    "../External/mpir/mpn/generic/toom_eval_dgr3_pm1.c"
    "../External/mpir/mpn/generic/toom_eval_dgr3_pm2.c"
    "../External/mpir/mpn/generic/toom_eval_pm1.c"
    "../External/mpir/mpn/generic/toom_eval_pm2.c"
    "../External/mpir/mpn/generic/toom_eval_pm2exp.c"
    "../External/mpir/mpn/generic/toom_eval_pm2rexp.c"
    "../External/mpir/mpn/generic/toom_interpolate_16pts.c"
    "../External/mpir/mpn/generic/urandomb.c"
    "../External/mpir/mpn/generic/urandomm.c"
    "../External/mpir/mpn/generic/xnor_n.c"
    "../External/mpir/mpn/generic/xor_n.c"
    "../External/mpir/mpn/generic/zero.c"
    "../External/mpir/mpn/generic/zero_p.c"
)
source_group("Source Files\\mpn" FILES ${Source_Files__mpn})

set(Source_Files__mpq
    "../External/mpir/mpq/abs.c"
    "../External/mpir/mpq/aors.c"
    "../External/mpir/mpq/canonicalize.c"
    "../External/mpir/mpq/clear.c"
    "../External/mpir/mpq/clears.c"
    "../External/mpir/mpq/cmp.c"
    "../External/mpir/mpq/cmp_si.c"
    "../External/mpir/mpq/cmp_ui.c"
    "../External/mpir/mpq/div.c"
    "../External/mpir/mpq/equal.c"
    "../External/mpir/mpq/get_d.c"
    "../External/mpir/mpq/get_den.c"
    "../External/mpir/mpq/get_num.c"
    "../External/mpir/mpq/get_str.c"
    "../External/mpir/mpq/init.c"
    "../External/mpir/mpq/inits.c"
    "../External/mpir/mpq/inp_str.c"
    "../External/mpir/mpq/inv.c"
    "../External/mpir/mpq/md_2exp.c"
    "../External/mpir/mpq/mul.c"
    "../External/mpir/mpq/neg.c"
    "../External/mpir/mpq/out_str.c"
    "../External/mpir/mpq/set.c"
    "../External/mpir/mpq/set_d.c"
    "../External/mpir/mpq/set_den.c"
    "../External/mpir/mpq/set_f.c"
    "../External/mpir/mpq/set_num.c"
    "../External/mpir/mpq/set_si.c"
    "../External/mpir/mpq/set_str.c"
    "../External/mpir/mpq/set_ui.c"
    "../External/mpir/mpq/set_z.c"
    "../External/mpir/mpq/swap.c"
)
source_group("Source Files\\mpq" FILES ${Source_Files__mpq})

set(Source_Files__mpz
    "../External/mpir/mpz/2fac_ui.c"
    "../External/mpir/mpz/abs.c"
    "../External/mpir/mpz/add.c"
    "../External/mpir/mpz/add_ui.c"
    "../External/mpir/mpz/and.c"
    "../External/mpir/mpz/aorsmul.c"
    "../External/mpir/mpz/aorsmul_i.c"
    "../External/mpir/mpz/array_init.c"
    "../External/mpir/mpz/bin_ui.c"
    "../External/mpir/mpz/bin_uiui.c"
    "../External/mpir/mpz/cdiv_q.c"
    "../External/mpir/mpz/cdiv_q_ui.c"
    "../External/mpir/mpz/cdiv_qr.c"
    "../External/mpir/mpz/cdiv_qr_ui.c"
    "../External/mpir/mpz/cdiv_r.c"
    "../External/mpir/mpz/cdiv_r_ui.c"
    "../External/mpir/mpz/cdiv_ui.c"
    "../External/mpir/mpz/cfdiv_q_2exp.c"
    "../External/mpir/mpz/cfdiv_r_2exp.c"
    "../External/mpir/mpz/clear.c"
    "../External/mpir/mpz/clears.c"
    "../External/mpir/mpz/clrbit.c"
    "../External/mpir/mpz/cmp.c"
    "../External/mpir/mpz/cmp_d.c"
    "../External/mpir/mpz/cmp_si.c"
    "../External/mpir/mpz/cmp_ui.c"
    "../External/mpir/mpz/cmpabs.c"
    "../External/mpir/mpz/cmpabs_d.c"
    "../External/mpir/mpz/cmpabs_ui.c"
    "../External/mpir/mpz/com.c"
    "../External/mpir/mpz/combit.c"
    "../External/mpir/mpz/cong.c"
    "../External/mpir/mpz/cong_2exp.c"
    "../External/mpir/mpz/cong_ui.c"
    "../External/mpir/mpz/dive_ui.c"
    "../External/mpir/mpz/divegcd.c"
    "../External/mpir/mpz/divexact.c"
    "../External/mpir/mpz/divis.c"
    "../External/mpir/mpz/divis_2exp.c"
    "../External/mpir/mpz/divis_ui.c"
    "../External/mpir/mpz/dump.c"
    "../External/mpir/mpz/export.c"
    "../External/mpir/mpz/fac_ui.c"
    "../External/mpir/mpz/fdiv_q.c"
    "../External/mpir/mpz/fdiv_q_ui.c"
    "../External/mpir/mpz/fdiv_qr.c"
    "../External/mpir/mpz/fdiv_qr_ui.c"
    "../External/mpir/mpz/fdiv_r.c"
    "../External/mpir/mpz/fdiv_r_ui.c"
    "../External/mpir/mpz/fdiv_ui.c"
    "../External/mpir/mpz/fib2_ui.c"
    "../External/mpir/mpz/fib_ui.c"
    "../External/mpir/mpz/fits_si.c"
    "../External/mpir/mpz/fits_sint.c"
    "../External/mpir/mpz/fits_slong.c"
    "../External/mpir/mpz/fits_sshort.c"
    "../External/mpir/mpz/fits_ui.c"
    "../External/mpir/mpz/fits_uint.c"
    "../External/mpir/mpz/fits_ulong.c"
    "../External/mpir/mpz/fits_ushort.c"
    "../External/mpir/mpz/gcd.c"
    "../External/mpir/mpz/gcd_ui.c"
    "../External/mpir/mpz/gcdext.c"
    "../External/mpir/mpz/get_d.c"
    "../External/mpir/mpz/get_d_2exp.c"
    "../External/mpir/mpz/get_si.c"
    "../External/mpir/mpz/get_str.c"
    "../External/mpir/mpz/get_sx.c"
    "../External/mpir/mpz/get_ui.c"
    "../External/mpir/mpz/get_ux.c"
    "../External/mpir/mpz/getlimbn.c"
    "../External/mpir/mpz/hamdist.c"
    "../External/mpir/mpz/import.c"
    "../External/mpir/mpz/init.c"
    "../External/mpir/mpz/init2.c"
    "../External/mpir/mpz/inits.c"
    "../External/mpir/mpz/inp_raw.c"
    "../External/mpir/mpz/inp_str.c"
    "../External/mpir/mpz/invert.c"
    "../External/mpir/mpz/ior.c"
    "../External/mpir/mpz/iset.c"
    "../External/mpir/mpz/iset_d.c"
    "../External/mpir/mpz/iset_si.c"
    "../External/mpir/mpz/iset_str.c"
    "../External/mpir/mpz/iset_sx.c"
    "../External/mpir/mpz/iset_ui.c"
    "../External/mpir/mpz/iset_ux.c"
    "../External/mpir/mpz/jacobi.c"
    "../External/mpir/mpz/kronsz.c"
    "../External/mpir/mpz/kronuz.c"
    "../External/mpir/mpz/kronzs.c"
    "../External/mpir/mpz/kronzu.c"
    "../External/mpir/mpz/lcm.c"
    "../External/mpir/mpz/lcm_ui.c"
    "../External/mpir/mpz/likely_prime_p.c"
    "../External/mpir/mpz/limbs_finish.c"
    "../External/mpir/mpz/limbs_modify.c"
    "../External/mpir/mpz/limbs_read.c"
    "../External/mpir/mpz/limbs_write.c"
    "../External/mpir/mpz/lucnum2_ui.c"
    "../External/mpir/mpz/lucnum_ui.c"
    "../External/mpir/mpz/mfac_uiui.c"
    "../External/mpir/mpz/miller_rabin.c"
    "../External/mpir/mpz/millerrabin.c"
    "../External/mpir/mpz/mod.c"
    "../External/mpir/mpz/mul.c"
    "../External/mpir/mpz/mul_2exp.c"
    "../External/mpir/mpz/mul_si.c"
    "../External/mpir/mpz/mul_ui.c"
    "../External/mpir/mpz/n_pow_ui.c"
    "../External/mpir/mpz/neg.c"
    "../External/mpir/mpz/next_prime_candidate.c"
    "../External/mpir/mpz/nextprime.c"
    "../External/mpir/mpz/nthroot.c"
    "../External/mpir/mpz/oddfac_1.c"
    "../External/mpir/mpz/out_raw.c"
    "../External/mpir/mpz/out_str.c"
    "../External/mpir/mpz/perfpow.c"
    "../External/mpir/mpz/perfsqr.c"
    "../External/mpir/mpz/popcount.c"
    "../External/mpir/mpz/pow_ui.c"
    "../External/mpir/mpz/powm.c"
    "../External/mpir/mpz/powm_ui.c"
    "../External/mpir/mpz/pprime_p.c"
    "../External/mpir/mpz/primorial_ui.c"
    "../External/mpir/mpz/probable_prime_p.c"
    "../External/mpir/mpz/prodlimbs.c"
    "../External/mpir/mpz/realloc.c"
    "../External/mpir/mpz/realloc2.c"
    "../External/mpir/mpz/remove.c"
    "../External/mpir/mpz/roinit_n.c"
    "../External/mpir/mpz/root.c"
    "../External/mpir/mpz/rootrem.c"
    "../External/mpir/mpz/rrandomb.c"
    "../External/mpir/mpz/scan0.c"
    "../External/mpir/mpz/scan1.c"
    "../External/mpir/mpz/set.c"
    "../External/mpir/mpz/set_d.c"
    "../External/mpir/mpz/set_f.c"
    "../External/mpir/mpz/set_q.c"
    "../External/mpir/mpz/set_si.c"
    "../External/mpir/mpz/set_str.c"
    "../External/mpir/mpz/set_sx.c"
    "../External/mpir/mpz/set_ui.c"
    "../External/mpir/mpz/set_ux.c"
    "../External/mpir/mpz/setbit.c"
    "../External/mpir/mpz/size.c"
    "../External/mpir/mpz/sizeinbase.c"
    "../External/mpir/mpz/sqrt.c"
    "../External/mpir/mpz/sqrtrem.c"
    "../External/mpir/mpz/sub.c"
    "../External/mpir/mpz/sub_ui.c"
    "../External/mpir/mpz/swap.c"
    "../External/mpir/mpz/tdiv_q.c"
    "../External/mpir/mpz/tdiv_q_2exp.c"
    "../External/mpir/mpz/tdiv_q_ui.c"
    "../External/mpir/mpz/tdiv_qr.c"
    "../External/mpir/mpz/tdiv_qr_ui.c"
    "../External/mpir/mpz/tdiv_r.c"
    "../External/mpir/mpz/tdiv_r_2exp.c"
    "../External/mpir/mpz/tdiv_r_ui.c"
    "../External/mpir/mpz/tdiv_ui.c"
    "../External/mpir/mpz/trial_division.c"
    "../External/mpir/mpz/tstbit.c"
    "../External/mpir/mpz/ui_pow_ui.c"
    "../External/mpir/mpz/ui_sub.c"
    "../External/mpir/mpz/urandomb.c"
    "../External/mpir/mpz/urandomm.c"
    "../External/mpir/mpz/xor.c"
)
source_group("Source Files\\mpz" FILES ${Source_Files__mpz})

set(Source_Files__printf
    "../External/mpir/printf/asprintf.c"
    "../External/mpir/printf/asprntffuns.c"
    "../External/mpir/printf/doprnt.c"
    "../External/mpir/printf/doprntf.c"
    "../External/mpir/printf/doprnti.c"
    "../External/mpir/printf/fprintf.c"
    "../External/mpir/printf/obprintf.c"
    "../External/mpir/printf/obprntffuns.c"
    "../External/mpir/printf/obvprintf.c"
    "../External/mpir/printf/printf.c"
    "../External/mpir/printf/printffuns.c"
    "../External/mpir/printf/repl-vsnprintf.c"
    "../External/mpir/printf/snprintf.c"
    "../External/mpir/printf/snprntffuns.c"
    "../External/mpir/printf/sprintf.c"
    "../External/mpir/printf/sprintffuns.c"
    "../External/mpir/printf/vasprintf.c"
    "../External/mpir/printf/vfprintf.c"
    "../External/mpir/printf/vprintf.c"
    "../External/mpir/printf/vsnprintf.c"
    "../External/mpir/printf/vsprintf.c"
)
source_group("Source Files\\printf" FILES ${Source_Files__printf})

set(Source_Files__scanf
    "../External/mpir/scanf/doscan.c"
    "../External/mpir/scanf/fscanf.c"
    "../External/mpir/scanf/fscanffuns.c"
    "../External/mpir/scanf/scanf.c"
    "../External/mpir/scanf/sscanf.c"
    "../External/mpir/scanf/sscanffuns.c"
    "../External/mpir/scanf/vfscanf.c"
    "../External/mpir/scanf/vscanf.c"
    "../External/mpir/scanf/vsscanf.c"
)
source_group("Source Files\\scanf" FILES ${Source_Files__scanf})


set(ALL_FILES
    ${no_group_source_files}
    ${Header_Files}
    ${Source_Files}
    ${Source_Files__cxx}
    ${Source_Files__fft}
    ${Source_Files__mpf}
    ${Source_Files__mpn}
    ${Source_Files__mpq}
    ${Source_Files__mpz}
    ${Source_Files__printf}
    ${Source_Files__scanf}
)

add_definitions("-DMSC_BUILD_DLL -DHAVE_CONFIG_H -DWIN32 -DWIN32 -D_WIN64")

configure_file(gmp-h-msvc.in mpir.h @ONLY)
configure_file(longlong.in.h longlong.h)
configure_file(../External/mpir/mpirxx.h mpirxx.h)
configure_file(../External/mpir/mpirxx.h gmpxx.h)
configure_file(cfg.h cfg.h)
configure_file(gmp-h-msvc.in gmp.h @ONLY)

if(BUILD_PYTHON)
    add_library(mpir_static STATIC ${ALL_FILES})
elseif()
add_library(mpir SHARED ${ALL_FILES})
endif(BUILD_PYTHON)

add_library(mpir SHARED ${ALL_FILES})

#install(TARGETS mpir DESTINATION lib)
#install(TARGETS mpir DESTINATION bin)
install(FILES "${PROJECT_BINARY_DIR}/mpir.h" "${PROJECT_BINARY_DIR}/gmp.h" "${PROJECT_BINARY_DIR}/gmpxx.h" "${PROJECT_BINARY_DIR}/mpirxx.h"
  DESTINATION include
  )

add_custom_target(
    myCustomTarget
    COMMAND cmd "cd //C${CMAKE_SOURCE_DIR}\\msvc\\ && prebuild.bat gc /win32 /19"
    COMMENT "generating build date header"
    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)


