Module Name: src
Committed By: mrg
Date: Fri Jun 24 03:50:23 UTC 2011
Modified Files:
src/external/lgpl3/gmp/lib/libgmp: Makefile
src/external/lgpl3/gmp/lib/libgmp/arch/x86_64: Makefile.inc
Added Files:
src/external/lgpl3/gmp: README build-gmp-Makefile.inc.awk
Log Message:
add a README to describe how to port GMP build framework, and a script
to parse the GMP ./configure output and generate part of a makefile.
move all the mpn build stuff into the MD part of the framework, and
update the amd64 port to build all the parts it should.
XXX: amd64 build fails to preprocess redc_1.asm gcd_1.asm mod_1_4.asm,
XXX: so we're using the generic C versions for now.
To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/external/lgpl3/gmp/README \
src/external/lgpl3/gmp/build-gmp-Makefile.inc.awk
cvs rdiff -u -r1.2 -r1.3 src/external/lgpl3/gmp/lib/libgmp/Makefile
cvs rdiff -u -r1.1 -r1.2 \
src/external/lgpl3/gmp/lib/libgmp/arch/x86_64/Makefile.inc
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/lgpl3/gmp/lib/libgmp/Makefile
diff -u src/external/lgpl3/gmp/lib/libgmp/Makefile:1.2 src/external/lgpl3/gmp/lib/libgmp/Makefile:1.3
--- src/external/lgpl3/gmp/lib/libgmp/Makefile:1.2 Thu Jun 23 12:09:30 2011
+++ src/external/lgpl3/gmp/lib/libgmp/Makefile Fri Jun 24 03:50:23 2011
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.2 2011/06/23 12:09:30 mrg Exp $
+# $NetBSD: Makefile,v 1.3 2011/06/24 03:50:23 mrg Exp $
.include <bsd.init.mk>
@@ -91,138 +91,6 @@
equal.c set_z.c set_d.c \
set_f.c swap.c
-# addmul_2.c \
-# addmul_3.c \
-# addmul_4.c \
-# addmul_5.c \
-# addmul_6.c \
-# addmul_7.c \
-# addmul_8.c \
-# and_n.c \
-# andn_n.c \
-# ior_n.c \
-# iorn_n.c \
-# mul_2.c \
-# mul_3.c \
-# mul_4.c \
-# nand_n.c \
-# nior_n.c \
-# udiv_qrnnd.c \
-# xor_n.c
-# xnor_n.c
-# many asm
-# sqr_diagonal.c \
-
-MPN_SRCS = \
- add.c \
- add_1.c \
- add_n.c \
- addmul_1.c \
- cmp.c \
- com.c \
- copyd.c \
- copyi.c \
- dive_1.c \
- diveby3.c \
- divexact.c \
- divis.c \
- divrem.c \
- divrem_1.c \
- divrem_2.c \
- sbpi1_bdiv_qr.c \
- sbpi1_bdiv_q.c \
- sbpi1_div_qr.c \
- sbpi1_div_q.c \
- sbpi1_divappr_q.c \
- dcpi1_bdiv_qr.c \
- dcpi1_bdiv_q.c \
- dcpi1_div_qr.c \
- dcpi1_div_q.c \
- dcpi1_divappr_q.c \
- dump.c \
- fib2_ui.c \
- gcd.c \
- gcd_1.c \
- gcdext.c \
- get_d.c \
- get_str.c \
- hgcd2.c \
- hgcd.c \
- jacbase.c \
- lshift.c \
- matrix22_mul.c \
- mod_1.c \
- mod_34lsub1.c \
- mode1o.c \
- mod_1_1.c \
- mod_1_2.c \
- mod_1_3.c \
- mod_1_4.c \
- mul.c \
- mul_1.c \
- mul_fft.c \
- mul_n.c \
- mul_basecase.c \
- nussbaumer_mul.c \
- toom22_mul.c \
- toom32_mul.c \
- toom42_mul.c \
- toom52_mul.c \
- toom62_mul.c \
- toom33_mul.c \
- toom43_mul.c \
- toom53_mul.c \
- toom63_mul.c \
- toom44_mul.c \
- toom6h_mul.c \
- toom6_sqr.c \
- toom8h_mul.c \
- toom8_sqr.c \
- toom_couple_handling.c \
- toom2_sqr.c \
- toom3_sqr.c \
- toom4_sqr.c \
- toom_eval_dgr3_pm1.c \
- toom_eval_dgr3_pm2.c \
- toom_eval_pm1.c \
- toom_eval_pm1.c \
- toom_eval_pm2exp.c \
- toom_eval_pm2rexp.c \
- toom_interpolate_5pts.c \
- toom_interpolate_6pts.c \
- toom_interpolate_7pts.c \
- toom_interpolate_8pts.c \
- toom_interpolate_12pts.c \
- toom_interpolate_16pts.c \
- invertappr.c \
- invert.c \
- binvert.c \
- mulmod_bnm1.c \
- sqrmod_bnm1.c \
- mullo_n.c \
- mullo_basecase.c \
- neg.c \
- perfsqr.c \
- pre_divrem_1.c \
- pre_mod_1.c \
- pow_1.c \
- random.c \
- random2.c \
- rshift.c \
- rootrem.c \
- scan0.c \
- scan1.c \
- set_str.c \
- sqr_basecase.c \
- sqrtrem.c \
- sub.c \
- sub_1.c \
- sub_n.c \
- submul_1.c \
- tdiv_qr.c \
-
-# udiv_w_sdiv.c
-
MPN_GENERIC_SRCS = \
popcount.c \
hamdist.c
@@ -251,11 +119,6 @@
randlc2x.c randmt.c randmts.c rands.c randsd.c randsdui.c \
randbui.c randmui.c version.c nextprime.c
-.for _src in ${MPN_SRCS}
-COPTS.${_src}+= -DOPERATION_${_src:R}
-.endfor
-SRCS+= ${MPN_SRCS}
-
SRCS+= tal-reent.c
# these are generated
@@ -279,6 +142,7 @@
.endfor
+.if 0
# Build the generic popcount/hamdist for now
.for _srcfile in \
${MPN_GENERIC_SRCS}
@@ -290,6 +154,7 @@
SRCS+= mpn_${_srcfile}
CLEANFILES+= mpn_${_srcfile}
.endfor
+.endif
INCS= gmp.h
INCSDIR= /usr/include
Index: src/external/lgpl3/gmp/lib/libgmp/arch/x86_64/Makefile.inc
diff -u src/external/lgpl3/gmp/lib/libgmp/arch/x86_64/Makefile.inc:1.1 src/external/lgpl3/gmp/lib/libgmp/arch/x86_64/Makefile.inc:1.2
--- src/external/lgpl3/gmp/lib/libgmp/arch/x86_64/Makefile.inc:1.1 Thu Jun 23 12:09:30 2011
+++ src/external/lgpl3/gmp/lib/libgmp/arch/x86_64/Makefile.inc Fri Jun 24 03:50:23 2011
@@ -1,63 +1,168 @@
-# $NetBSD: Makefile.inc,v 1.1 2011/06/23 12:09:30 mrg Exp $
+# $NetBSD: Makefile.inc,v 1.2 2011/06/24 03:50:23 mrg Exp $
SRCS+= \
+ random.c \
+ toom_interpolate_7pts.c \
+ sbpi1_divappr_q.c \
+ random2.c \
+ mu_bdiv_q.c \
+ toom32_mul.c \
+ toom44_mul.c \
+ toom8h_mul.c \
+ toom2_sqr.c \
+ zero.c \
+ gcdext.c \
+ binvert.c \
+ mu_div_q.c \
+ invertappr.c \
+ dump.c \
+ dcpi1_div_qr.c \
+ mu_divappr_q.c \
+ redc_1_sec.c \
+ toom6_sqr.c \
+ mod_1.c \
+ divexact.c \
+ powlo.c \
+ mul.c \
+ set_str.c \
+ toom42_mul.c \
+ toom_interpolate_6pts.c \
+ dcpi1_divappr_q.c \
+ toom_eval_dgr3_pm2.c \
+ mod_1_3.c \
+ toom_couple_handling.c \
+ add.c \
+ toom_interpolate_12pts.c \
+ perfsqr.c \
+ toom53_mul.c \
+ toom_eval_pm2exp.c \
+ toom_interpolate_16pts.c \
+ mu_div_qr.c \
bdiv_q.c \
- bdiv_qr.c \
+ toom22_mul.c \
+ toom4_sqr.c \
div_q.c \
- pow_1.c \
- powm.c \
- powm_sec.c \
- powlo.c \
+ jacbase.c \
+ gcdext_subdiv_step.c \
+ mullo_n.c \
+ toom33_mul.c \
+ toom_eval_dgr3_pm1.c \
+ mod_1_2.c \
+ sub_1.c \
+ trialdiv.c \
+ add_1.c \
+ toom_interpolate_5pts.c \
+ sbpi1_bdiv_q.c \
+ pre_mod_1.c \
+ hgcd.c \
+ sqrtrem.c \
+ gcdext_1.c \
+ toom63_mul.c \
+ toom8_sqr.c \
+ neg.c \
+ gcdext_lehmer.c \
+ divis.c \
+ dcpi1_div_q.c \
+ subcnd_n.c \
toom_eval_pm2.c \
- toom_eval_pm2exp.c \
+ hgcd2.c \
+ toom62_mul.c \
+ sbpi1_bdiv_qr.c \
+ scan1.c \
+ perfpow.c \
+ get_str.c \
+ mullo_basecase.c \
+ mulmod_bnm1.c \
+ tdiv_qr.c \
+ toom43_mul.c \
+ mod_1_1.c \
+ matrix22_mul.c \
+ powm_sec.c \
+ divrem.c \
+ mul_n.c \
+ dcpi1_bdiv_qr.c \
+ redc_2.c \
+ toom6h_mul.c \
+ mul_fft.c \
+ sqrmod_bnm1.c \
+ powm.c \
+ rootrem.c \
+ toom_interpolate_8pts.c \
+ remove.c \
+ cmp.c \
+ toom_eval_pm1.c \
+ scan0.c \
+ gcd_subdiv_step.c \
+ sbpi1_div_qr.c \
+ invert.c \
+ sub.c \
toom_eval_pm2rexp.c \
- mu_bdiv_qr.c \
- mu_div_qr.c \
+ dcpi1_bdiv_q.c \
sqr.c \
+ nussbaumer_mul.c \
+ pow_1.c \
gcd_lehmer.c \
- gcd_subdiv_step.c \
- gcdext_lehmer.c \
- gcdext_subdiv_step.c \
- perfpow.c \
- gcdext_1.c \
- mu_bdiv_q.c \
mu_bdiv_qr.c \
- mu_div_q.c \
- mu_div_qr.c \
- mu_divappr_q.c \
- redc_1_sec.c \
- redc_2.c \
+ get_d.c \
+ toom52_mul.c \
+ sbpi1_div_q.c \
+ diveby3.c \
+ fib2_ui.c \
+ bdiv_qr.c \
+ toom3_sqr.c \
+ gcd.c \
redc_n.c \
- subcnd_n.c \
- trialdiv.c
ASM_SRCS_LIST= \
- add_n mpn/x86_64/aors_n.asm \
- addaddmul_1msb0 mpn/x86_64/addaddmul_1msb0.asm \
- addlsh1_n mpn/x86_64/aorrlsh1_n.asm \
- addlsh2_n mpn/x86_64/aorrlsh2_n.asm \
- addlsh_n mpn/x86_64/aorrlsh_n.asm \
- addmul_2 mpn/x86_64/addmul_2.asm \
- bdiv_q_1 mpn/x86_64/bdiv_q_1.asm \
- bdiv_dbm1c mpn/x86_64/bdiv_dbm1c.asm \
- lshiftc mpn/x86_64/lshiftc.asm \
- mul_1 mpn/x86_64/mul_1.asm \
- mul_2 mpn/x86_64/mul_2.asm \
- rsblsh1_n mpn/x86_64/aorrlsh1_n.asm \
- rsblsh2_n mpn/x86_64/aorrlsh2_n.asm \
- rsblsh_n mpn/x86_64/aorrlsh_n.asm \
- rsh1add_n mpn/x86_64/rsh1aors_n.asm \
- rsh1sub_n mpn/x86_64/rsh1aors_n.asm \
- rshift mpn/x86_64/rshift.asm \
- sub_n mpn/x86_64/aors_n.asm \
- sublsh1_n mpn/x86_64/sublsh1_n.asm \
- invert_limb mpn/x86_64/invert_limb.asm \
- mode1o mpn/x86_64/mode1o.asm \
- and_n mpn/x86_64/logops_n.asm \
-
-# XXX using redc_1.c
-# redc_1 mpn/x86_64/redc_1.asm
-SRCS+= redc_1.c
+ nand_n.asm mpn/x86_64/logops_n.asm \
+ rsh1sub_n.asm mpn/x86_64/rsh1aors_n.asm \
+ add_n.asm mpn/x86_64/aors_n.asm \
+ rsh1add_n.asm mpn/x86_64/rsh1aors_n.asm \
+ sqr_basecase.asm mpn/x86_64/sqr_basecase.asm \
+ rsblsh2_n.asm mpn/x86_64/aorrlsh2_n.asm \
+ sublsh1_n.asm mpn/x86_64/sublsh1_n.asm \
+ bdiv_q_1.asm mpn/x86_64/bdiv_q_1.asm \
+ addaddmul_1msb0.asm mpn/x86_64/addaddmul_1msb0.asm \
+ xor_n.asm mpn/x86_64/logops_n.asm \
+ rsblsh_n.asm mpn/x86_64/aorrlsh_n.asm \
+ addmul_2.asm mpn/x86_64/addmul_2.asm \
+ submul_1.asm mpn/x86_64/aorsmul_1.asm \
+ nior_n.asm mpn/x86_64/logops_n.asm \
+ mul_basecase.asm mpn/x86_64/mul_basecase.asm \
+ lshift.asm mpn/x86_64/lshift.asm \
+ and_n.asm mpn/x86_64/logops_n.asm \
+ hamdist.asm mpn/x86_64/popham.asm \
+ mul_1.asm mpn/x86_64/mul_1.asm \
+ addlsh2_n.asm mpn/x86_64/aorrlsh2_n.asm \
+ divrem_1.asm mpn/x86_64/divrem_1.asm \
+ copyd.asm mpn/x86_64/copyd.asm \
+ bdiv_dbm1c.asm mpn/x86_64/bdiv_dbm1c.asm \
+ rsblsh1_n.asm mpn/x86_64/aorrlsh1_n.asm \
+ dive_1.asm mpn/x86_64/dive_1.asm \
+ andn_n.asm mpn/x86_64/logops_n.asm \
+ com.asm mpn/x86_64/com.asm \
+ copyi.asm mpn/x86_64/copyi.asm \
+ rshift.asm mpn/x86_64/rshift.asm \
+ addlsh_n.asm mpn/x86_64/aorrlsh_n.asm \
+ iorn_n.asm mpn/x86_64/logops_n.asm \
+ ior_n.asm mpn/x86_64/logops_n.asm \
+ mod_34lsub1.asm mpn/x86_64/mod_34lsub1.asm \
+ popcount.asm mpn/x86_64/popham.asm \
+ xnor_n.asm mpn/x86_64/logops_n.asm \
+ lshiftc.asm mpn/x86_64/lshiftc.asm \
+ mode1o.asm mpn/x86_64/mode1o.asm \
+ addlsh1_n.asm mpn/x86_64/aorrlsh1_n.asm \
+ mul_2.asm mpn/x86_64/mul_2.asm \
+ invert_limb.asm mpn/x86_64/invert_limb.asm \
+ addmul_1.asm mpn/x86_64/aorsmul_1.asm \
+ divrem_2.asm mpn/x86_64/divrem_2.asm \
+ sub_n.asm mpn/x86_64/aors_n.asm \
+
+# XXX using C versions
+# redc_1.asm mpn/x86_64/redc_1.asm
+# gcd_1.asm mpn/x86_64/gcd_1.asm
+# mod_1_4.asm mpn/x86_64/mod_1_4.asm
+SRCS+= redc_1.c gcd_1.c mod_1_4.c
gen-trialdivtab: gen-trialdivtab.c
${HOST_CC} -o ${.OBJDIR}/gen-trialdivtab ${.ALLSRC} -lm
@@ -78,9 +183,9 @@
cp ${.CURDIR}/arch/${MACHINE_ARCH}/config.m4 ${.TARGET}
.for _build _src in ${ASM_SRCS_LIST}
-${_build}.s: Makefile dummy ${.OBJDIR}/config.m4
+${_build:R}.s: Makefile dummy ${.OBJDIR}/config.m4
${TOOL_M4} -DCONFIG_TOP_SRCDIR=${DIST} -I${.CURDIR} -I${.OBJDIR}/dummy -I${DIST}/ -I${DIST}/mpn -DOPERATION_${.TARGET:R} ${DIST}/${_src} > ${.TARGET}
-SRCS+= ${_build}.s
+SRCS+= ${_build:R}.s
.endfor
Added files:
Index: src/external/lgpl3/gmp/README
diff -u /dev/null src/external/lgpl3/gmp/README:1.1
--- /dev/null Fri Jun 24 03:50:23 2011
+++ src/external/lgpl3/gmp/README Fri Jun 24 03:50:23 2011
@@ -0,0 +1,46 @@
+$NetBSD: README,v 1.1 2011/06/24 03:50:23 mrg Exp $
+
+GMP in NetBSD. We need GMP for GCC >= 4.2.
+
+
+Building GMP without configure - how to port GMP build to a new platform.
+
+The GMP build doesn't map very well to normal make. The ./configure phase
+creates a bunch of symlinks and weeds out the sources lists, and there are
+files with the same name in different subdirectories linked into the same
+final product. All of these issues need to be dealt with.
+
+There are a few steps to this:
+
+ - run ./configure, save the output
+
+ - create src/external/gpl3/gmp/lib/libgmp/arch/${MACHINE_ARCH} dir,
+ and copy these files into it:
+ config.h
+ config.m4
+ gmp-mparam.h
+ gmp.h
+ mp.h
+
+ - parse the ./configure output and note all created symlinks
+ for mpn. these need to be converted into a new Makefile.inc.
+ there is a script in this subdir build-gmp-Makefile.inc.awk
+ that can be used to do this. it should just work to generate
+ the first section of Makefile.inc if fed the entire configure
+ output.
+
+ assembler files generally want -DOPERATION_${foo} defined for
+ each way they are compiled or pre-processed. the pre-processor
+ used is m4 to parse, and we and create .s files from the .asm
+ files that we then we feed into $CC.
+
+The amd64 port is a good reference to compare. The trialdivtab.h
+generation may need to be moved the into libgmp/Makefile itself.
+
+
+This is still a work in progress and methods used to build may be
+changed at any time.
+
+
[email protected]
+- 2001/06/22
Index: src/external/lgpl3/gmp/build-gmp-Makefile.inc.awk
diff -u /dev/null src/external/lgpl3/gmp/build-gmp-Makefile.inc.awk:1.1
--- /dev/null Fri Jun 24 03:50:23 2011
+++ src/external/lgpl3/gmp/build-gmp-Makefile.inc.awk Fri Jun 24 03:50:23 2011
@@ -0,0 +1,26 @@
+#! /usr/bin/awk -f
+
+/^config.status: linking/ {
+ # $3 = src
+ # $5 = dst
+
+ sub(/mpn\//, "", $5)
+ if (match($3, /\.c$/)) {
+ c_list[$5] = $3
+ } else if (match($3, /\.asm$/)) {
+ asm_list[$5] = $3
+ }
+}
+
+END {
+ printf("SRCS+= \\\n");
+ # XXX check that the basenames are the same?
+ # XXX yeah - logops_n.c and popham.c may need this
+ for (c in c_list) {
+ printf("\t%s \\\n", c)
+ }
+ printf("\nASM_SRCS_LIST= \\\n");
+ for (asm in asm_list) {
+ printf("\t%s\t\t%s \\\n", asm, asm_list[asm])
+ }
+}