diff --git a/.gitignore b/.gitignore index a4d6980..700564a 100644 --- a/.gitignore +++ b/.gitignore @@ -67,4 +67,14 @@ npytest *.prompt testoptimize readme.gelfand +doc/.build +doxygen-doc +test-driver +*.pdf +answers* +bugtests +doc_questions.md +instructions +suspected_bugs.md +optimize_discussion*.md # CVS default ignores end diff --git a/Makefile.am b/Makefile.am index 700e944..03d88d8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,6 +4,7 @@ libla_la_SOURCES = simple.cc optimize.cc tensor.cc miscfunc.cc quaternion.cc vec nodist_libla_la_SOURCES = version.cc noinst_HEADERS = testoptimize.h check_PROGRAMS = t test tX test_reg test_regsurf testoptimize +TESTS = testoptimize t_SOURCES = t.cc t2.cc #nodist_t_SOURCES = test_SOURCES = test.cc @@ -43,9 +44,39 @@ AM_LDFLAGS += $(CUDALIBS) tX_LDFLAGS = $(AM_LDFLAGS) -lX11 -lm -.PHONY: always +.PHONY: always manual version.cc: always ./get_git_version >version.cc # commented out since autoreconf complains about duplicit .PHONY #include $(top_srcdir)/aminclude.am + +#documentation: make manual (alias doc) builds doc/manual.pdf, make doxygen the doxygen pages in doxygen-doc, +#make all builds both besides the library (each only if its tool was found by configure) +MANUAL_TEX = doc/biblio.tex doc/bitvector.tex doc/building.tex doc/concepts.tex doc/fourindex.tex doc/introduction.tex doc/iterative.tex doc/lamacros.tex doc/manual.tex doc/mat.tex doc/nonclass.tex doc/optimize.tex doc/permutation.tex doc/polynomial.tex doc/quaternion.tex doc/regression.tex doc/smat.tex doc/sparse.tex doc/tensor.tex doc/utilities.tex doc/vec.tex doc/vecmat3.tex \ + doc/bib/iterative.tex doc/bib/optimize.tex doc/bib/permutation.tex doc/bib/polynomial.tex doc/bib/quaternion.tex doc/bib/utilities.tex doc/bib/vecmat3.tex +EXTRA_DIST += doc/manual.pdf $(MANUAL_TEX) + +doc/manual.pdf: $(MANUAL_TEX) + mkdir -p doc/.build + cd doc && for i in 1 2 3; do $(PDFLATEX) -interaction=nonstopmode -halt-on-error -output-directory=.build manual.tex >/dev/null 2>&1 || { tail -20 .build/manual.log; exit 1; }; done + cp doc/.build/manual.pdf $@ + +manual doc: doc/manual.pdf + +doxygen-doc/html/index.html: doxygen.cfg $(include_HEADERS) $(libla_la_SOURCES) + $(DX_ENV) $(DX_DOXYGEN) $(DX_CONFIG) >/dev/null + +doxygen: doxygen-doc/html/index.html + +ALL_DOCS = +if HAVE_PDFLATEX +ALL_DOCS += doc/manual.pdf +endif +#if DX_COND_doc +#ALL_DOCS += doxygen-doc/html/index.html +#endif +all-local: $(ALL_DOCS) + +clean-local: + rm -rf doc/.build doxygen-doc diff --git a/configure.ac b/configure.ac index 210171d..920d933 100755 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) -AC_INIT([libla],[1.4],[jiri@pittnerovi.com]) +AC_INIT([libla],[1.5],[jiri@pittnerovi.com]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) AM_PROG_AR @@ -12,6 +12,7 @@ LT_INIT # Checks for programs. AC_PROG_CXX +AX_CXX_COMPILE_STDCXX([14],[ext],[mandatory]) LT_INIT AC_PROG_CC #AC_PROG_RANLIB obsoleted by libtool @@ -107,17 +108,20 @@ AC_SUBST([MATPTROPT]) #process options FORINTOPT="" -AC_ARG_ENABLE([fotran64int],[ --enable-fotran64int to link with 64-bit-integer-BLAS+LAPACK ], - [case "${enableval}" in +forint64="" +AC_ARG_ENABLE([fortran64int],[ --enable-fortran64int to link with 64-bit-integer-BLAS+LAPACK ],[forint64=${enableval}],) +AC_ARG_ENABLE([fotran64int],[ --enable-fotran64int old misspelled alias of --enable-fortran64int ],[forint64=${enableval}],) +if test -n "${forint64}"; then + case "${forint64}" in yes) FORINTOPT="-DLONG_FORTRAN_INT" CBLASLIB="" CBLASOPT=-DNONCBLAS CLAPACKOPT=-DNONCLAPACK ;; no) FORINTOPT="" ;; - *) FORINTOPT=${enableval} - esac], - ,) + *) FORINTOPT=${forint64} + esac +fi AC_SUBST([FORINTOPT]) @@ -169,6 +173,10 @@ AC_CHECK_FUNCS([getpagesize memset sqrt]) #Doxygen support DX_INIT_DOXYGEN($PACKAGE_NAME, doxygen.cfg) +#LaTeX manual (doc/manual.tex), built by make if pdflatex is available +AC_CHECK_PROG([PDFLATEX],[pdflatex],[pdflatex]) +AM_CONDITIONAL([HAVE_PDFLATEX],[test -n "$PDFLATEX"]) + AC_CONFIG_FILES([Makefile]) AC_OUTPUT echo @@ -180,8 +188,8 @@ echo "set to '-I/path' and '-L/path' for your preferred BLAS/LAPACK library vers echo "Either use export or specify these options on the command line ./configure ..... " echo "In addition, similarly you might set include and link paths for Nvidia CUBLAS. " echo "Use ./configure --disable-optimize CXXFLAGS='' LDFLAGS='' for a fast compile. " -echo "Use --enable-fotran64int to link with BLAS and LAPACK using 64-bit integers. " -echo "For documentation, 'make doxygen-doc' and see doxygen-doc/html/index.html " +echo "Use --enable-fortran64int to link with BLAS and LAPACK using 64-bit integers. " +echo "For documentation see doc/manual.pdf; 'doxygen doxygen.cfg' makes the doxygen pages" echo "For usage examples see file t.cc. Do not forget using copyonwrite() before " echo "changing individual matrix/vector elements via l.h.s. operator() " echo "**********************************************************************************"