Skip to content

Commit

Permalink
Use ocamlbuild for building genfft
Browse files Browse the repository at this point in the history
Remove the old Makefile cruft to support ocaml, and use ocamlbuild
instead.
  • Loading branch information
matteo-frigo committed May 8, 2011
1 parent d183b35 commit c48d28b
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 255 deletions.
2 changes: 0 additions & 2 deletions bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
############################################################################

touch ChangeLog
touch genfft/.depend

echo "PLEASE IGNORE WARNINGS AND ERRORS"

Expand All @@ -27,5 +26,4 @@ rm -f config.cache
# rebuild of codelets whenever genfft changes
(
./configure --disable-shared --enable-maintainer-mode --enable-threads $*
(cd genfft; make depend)
)
11 changes: 1 addition & 10 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,6 @@ if test "$with_windows_f77_mangling" = "yes"; then
AC_DEFINE(WINDOWS_F77_MANGLING,1,[Use common Windows Fortran mangling styles for the Fortran interfaces.])
fi

OCAML_INIT_PATHS

dnl compute library suffix
case "$PRECISION" in
s) PREC_SUFFIX=f;;
Expand All @@ -175,14 +173,7 @@ AC_PROG_MAKE_SET
AC_LIBTOOL_WIN32_DLL
AC_PROG_LIBTOOL

AC_CHECK_PROG(OCAMLC, ocamlc, ocamlc)
AC_CHECK_PROG(OCAMLOPT, ocamlopt, ocamlopt)
AC_CHECK_PROG(OCAMLDEP, ocamldep, ocamldep)

AC_SUBST(OCAMLCFLAGS)
AC_SUBST(OCAMLOPTCFLAGS)
AC_SUBST(OCAMLDEFS)
AC_SUBST(OCAMLLDFLAGS)
AC_CHECK_PROG(OCAMLBUILD, ocamlbuild, ocamlbuild)

dnl -----------------------------------------------------------------------

Expand Down
159 changes: 8 additions & 151 deletions genfft/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -12,157 +12,14 @@ dag.mli expr.mli fft.mli littlesimp.mli number.mli oracle.mli \
schedule.mli simd.mli to_alist.mli trig.mli twiddle.mli unique.mli \
util.mli variable.mli

noinst_SCRIPTS=gen_notw gen_notw_c gen_twiddle gen_twiddle_c \
gen_twidsq gen_twidsq_c gen_r2r gen_r2cf gen_r2cb gen_hc2c gen_hc2cdft \
gen_hc2cdft_c gen_hc2hc gen_mdct
GENFFT_NATIVE=gen_notw.native gen_notw_c.native gen_twiddle.native \
gen_twiddle_c.native gen_twidsq.native gen_twidsq_c.native \
gen_r2r.native gen_r2cf.native gen_r2cb.native gen_hc2c.native \
gen_hc2cdft.native gen_hc2cdft_c.native gen_hc2hc.native \
gen_mdct.native

libgenfft_objects = unique.cmo magic.cmo util.cmo number.cmo \
variable.cmo expr.cmo littlesimp.cmo monads.cmo complex.cmo \
assoctable.cmo oracle.cmo algsimp.cmo simdmagic.cmo to_alist.cmo \
dag.cmo schedule.cmo annotate.cmo twiddle.cmo fft.cmo conv.cmo c.cmo \
simd.cmo genutil.cmo trig.cmo
all-local::
$(OCAMLBUILD) -classic-display -libs unix,nums $(GENFFT_NATIVE)

libgenfft.cma: $(libgenfft_objects)
$(OCAMLC) -a -o $@ $^

libgenfft.cmxa libgenfft.a: $(libgenfft_objects:.cmo=.cmx)
$(OCAMLOPT) -a -o libgenfft.cmxa $^
$(RANLIB) libgenfft.a

gen_notw_OBJECTS = gen_notw.cmo
gen_notw: libgenfft.cmxa $(gen_notw_OBJECTS:.cmo=.cmx)
$(OCAMLOPTLINK)
maintainer-clean-local::
rm -f gen_notw

gen_notw_c_OBJECTS = gen_notw_c.cmo
gen_notw_c: libgenfft.cmxa $(gen_notw_c_OBJECTS:.cmo=.cmx)
$(OCAMLOPTLINK)
maintainer-clean-local::
rm -f gen_notw_c

gen_twiddle_OBJECTS = gen_twiddle.cmo
gen_twiddle: libgenfft.cmxa $(gen_twiddle_OBJECTS:.cmo=.cmx)
$(OCAMLOPTLINK)
maintainer-clean-local::
rm -f gen_twiddle

gen_twiddle_c_OBJECTS = gen_twiddle_c.cmo
gen_twiddle_c: libgenfft.cmxa $(gen_twiddle_c_OBJECTS:.cmo=.cmx)
$(OCAMLOPTLINK)
maintainer-clean-local::
rm -f gen_twiddle_c

gen_twidsq_OBJECTS = gen_twidsq.cmo
gen_twidsq: libgenfft.cmxa $(gen_twidsq_OBJECTS:.cmo=.cmx)
$(OCAMLOPTLINK)
maintainer-clean-local::
rm -f gen_twidsq

gen_twidsq_c_OBJECTS = gen_twidsq_c.cmo
gen_twidsq_c: libgenfft.cmxa $(gen_twidsq_c_OBJECTS:.cmo=.cmx)
$(OCAMLOPTLINK)
maintainer-clean-local::
rm -f gen_twidsq_c

gen_r2cf_OBJECTS = gen_r2cf.cmo
gen_r2cf: libgenfft.cmxa $(gen_r2cf_OBJECTS:.cmo=.cmx)
$(OCAMLOPTLINK)
maintainer-clean-local::
rm -f gen_r2cf

gen_r2cb_OBJECTS = gen_r2cb.cmo
gen_r2cb: libgenfft.cmxa $(gen_r2cb_OBJECTS:.cmo=.cmx)
$(OCAMLOPTLINK)
maintainer-clean-local::
rm -f gen_r2cb

gen_hc2hc_OBJECTS = gen_hc2hc.cmo
gen_hc2hc: libgenfft.cmxa $(gen_hc2hc_OBJECTS:.cmo=.cmx)
$(OCAMLOPTLINK)
maintainer-clean-local::
rm -f gen_hc2hc

gen_hc2c_OBJECTS = gen_hc2c.cmo
gen_hc2c: libgenfft.cmxa $(gen_hc2c_OBJECTS:.cmo=.cmx)
$(OCAMLOPTLINK)
maintainer-clean-local::
rm -f gen_hc2c

gen_hc2cdft_OBJECTS = gen_hc2cdft.cmo
gen_hc2cdft: libgenfft.cmxa $(gen_hc2cdft_OBJECTS:.cmo=.cmx)
$(OCAMLOPTLINK)
maintainer-clean-local::
rm -f gen_hc2cdft

gen_hc2cdft_c_OBJECTS = gen_hc2cdft_c.cmo
gen_hc2cdft_c: libgenfft.cmxa $(gen_hc2cdft_c_OBJECTS:.cmo=.cmx)
$(OCAMLOPTLINK)
maintainer-clean-local::
rm -f gen_hc2cdft_c

gen_r2r_OBJECTS = gen_r2r.cmo
gen_r2r: libgenfft.cmxa $(gen_r2r_OBJECTS:.cmo=.cmx)
$(OCAMLOPTLINK)
maintainer-clean-local::
rm -f gen_r2r

gen_mdct_OBJECTS = gen_mdct.cmo
gen_mdct: libgenfft.cmxa $(gen_mdct_OBJECTS:.cmo=.cmx)
$(OCAMLOPTLINK)
maintainer-clean-local::
rm -f gen_mdct


SUFFIXES = .mli .ml .cmi .cmo .cmx .p.cmx .c .o .cma .cmxa .a

OCAMLC=@OCAMLC@
OCAMLOPT=@OCAMLOPT@
OCAMLDEP=@OCAMLDEP@
OCAMLCFLAGS=@OCAMLCFLAGS@
OCAMLOPTCFLAGS=@OCAMLOPTCFLAGS@
OCAMLLDFLAGS=@OCAMLLDFLAGS@
OCAMLTK_LIBDIR=@OCAMLTK_LIBDIR@
OCAMLDEFS=@OCAMLDEFS@

LIBS=@LIBS@ -lnums -lunix

CMA = nums.cma unix.cma
CMXA = $(CMA:.cma=.cmxa)

OCAMLCOMPILE = $(OCAMLC) $(OCAMLDEFS) $(OCAMLINCLUDES) $(OCAMLCFLAGS)
OCAMLOPTCOMPILE = $(OCAMLOPT) $(OCAMLDEFS) $(OCAMLINCLUDES) $(OCAMLOPTCFLAGS)
OCAMLLINK = $(OCAMLC) -custom $(OCAMLLDFLAGS) -o $@ $(CMA) $^ -cclib "${LIBS}"
OCAMLOPTLINK = $(OCAMLOPT) $(OCAMLLDFLAGS) -o $@ $(CMXA) $^ -cclib "${LIBS}"

.mli.cmi:
$(OCAMLCOMPILE) -c -o $@ $<

.ml.cmo:
$(OCAMLCOMPILE) -c -o $@ $<

.ml.cmx:
$(OCAMLOPTCOMPILE) -c -o $@ $<

.ml.p.cmx:
$(OCAMLOPTCOMPILE) -p -c -o $@ $<

%.o: %.c
$(OCAMLCOMPILE) -ccopt "$(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)" -c -o $@ $<

%.cma:
$(OCAMLC) -a -o $@ $^

%.cmxa %.a:
$(OCAMLOPT) -a -o $*.cmxa $^
$(RANLIB) $*.a

maintainer-clean-local::
rm -f *.cm* *.o *.a
rm -f *~

depend:
(cd ${srcdir}; $(OCAMLDEP) *.mli *.ml > .depend)

include .depend

$(OCAMLBUILD) -classic-display -clean
2 changes: 1 addition & 1 deletion m4/Makefile.am
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
EXTRA_DIST = acx_mpi.m4 acx_pthread.m4 ax_cc_maxopt.m4 \
ax_check_compiler_flags.m4 ax_compiler_vendor.m4 \
ax_gcc_aligns_stack.m4 ax_gcc_archflag.m4 ax_gcc_version.m4 \
ax_gcc_x86_cpuid.m4 ax_openmp.m4 ocaml.m4
ax_gcc_x86_cpuid.m4 ax_openmp.m4

# libtool sticks a bunch of extra .m4 files in this directory,
# but they don't seem to be needed for the distributed tarball
Expand Down
78 changes: 0 additions & 78 deletions m4/ocaml.m4

This file was deleted.

26 changes: 13 additions & 13 deletions support/Makefile.codelets
Original file line number Diff line number Diff line change
Expand Up @@ -46,19 +46,19 @@ if MAINTAINER_MODE
INDENT = indent -kr -cs -i5 -l800 -fca -nfc1 -sc -sob -cli4 -TR -Tplanner -TV
TWOVERS = sh ${top_srcdir}/support/twovers.sh
GENFFTDIR = ${top_builddir}/genfft
GEN_NOTW = ${GENFFTDIR}/gen_notw
GEN_NOTW_C = ${GENFFTDIR}/gen_notw_c
GEN_TWIDDLE = ${GENFFTDIR}/gen_twiddle
GEN_TWIDDLE_C = ${GENFFTDIR}/gen_twiddle_c
GEN_TWIDSQ = ${GENFFTDIR}/gen_twidsq
GEN_TWIDSQ_C = ${GENFFTDIR}/gen_twidsq_c
GEN_R2CF = ${GENFFTDIR}/gen_r2cf
GEN_R2CB = ${GENFFTDIR}/gen_r2cb
GEN_HC2HC = ${GENFFTDIR}/gen_hc2hc
GEN_HC2C = ${GENFFTDIR}/gen_hc2c
GEN_HC2CDFT = ${GENFFTDIR}/gen_hc2cdft
GEN_HC2CDFT_C = ${GENFFTDIR}/gen_hc2cdft_c
GEN_R2R = ${GENFFTDIR}/gen_r2r
GEN_NOTW = ${GENFFTDIR}/gen_notw.native
GEN_NOTW_C = ${GENFFTDIR}/gen_notw_c.native
GEN_TWIDDLE = ${GENFFTDIR}/gen_twiddle.native
GEN_TWIDDLE_C = ${GENFFTDIR}/gen_twiddle_c.native
GEN_TWIDSQ = ${GENFFTDIR}/gen_twidsq.native
GEN_TWIDSQ_C = ${GENFFTDIR}/gen_twidsq_c.native
GEN_R2CF = ${GENFFTDIR}/gen_r2cf.native
GEN_R2CB = ${GENFFTDIR}/gen_r2cb.native
GEN_HC2HC = ${GENFFTDIR}/gen_hc2hc.native
GEN_HC2C = ${GENFFTDIR}/gen_hc2c.native
GEN_HC2CDFT = ${GENFFTDIR}/gen_hc2cdft.native
GEN_HC2CDFT_C = ${GENFFTDIR}/gen_hc2cdft_c.native
GEN_R2R = ${GENFFTDIR}/gen_r2r.native
PRELUDE_DFT = ${top_srcdir}/support/codelet_prelude.dft
PRELUDE_RDFT = ${top_srcdir}/support/codelet_prelude.rdft
ADD_DATE = sed -e s/@DATE@/"`date`"/
Expand Down

0 comments on commit c48d28b

Please sign in to comment.