aboutsummaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
Diffstat (limited to 'math')
-rw-r--r--math/Makefile1
-rw-r--r--math/librsb/Makefile28
-rw-r--r--math/librsb/distinfo2
-rw-r--r--math/librsb/files/patch-rsb__util.c29
-rw-r--r--math/librsb/pkg-descr15
-rw-r--r--math/librsb/pkg-plist221
6 files changed, 296 insertions, 0 deletions
diff --git a/math/Makefile b/math/Makefile
index 1d23fb6bd074..081c4060fa93 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -226,6 +226,7 @@
SUBDIR += libproj4
SUBDIR += libqalculate
SUBDIR += libranlip
+ SUBDIR += librsb
SUBDIR += libtommath
SUBDIR += libtsnnls
SUBDIR += linpack
diff --git a/math/librsb/Makefile b/math/librsb/Makefile
new file mode 100644
index 000000000000..a07afb9e4e19
--- /dev/null
+++ b/math/librsb/Makefile
@@ -0,0 +1,28 @@
+# Created by: stephen@FreeBSD.org
+# $FreeBSD$
+
+PORTNAME= librsb
+PORTVERSION= 1.2.0r1
+CATEGORIES= math
+MASTER_SITES= SF/librsb
+DISTNAME= ${PORTNAME}-${PORTVERSION:S/r/-rc/}
+
+MAINTAINER= stephen@FreeBSD.org
+COMMENT= Sparse matrix library
+
+LICENSE= GPLv3
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+BUILD_DEPENDS= gsed:${PORTSDIR}/textproc/gsed
+
+USES= fortran compiler:openmp gmake shebangfix
+GNU_CONFIGURE= yes
+CFLAGS= -fPIC
+CONFIGURE_ARGS= --enable-fortran-module-install \
+ --enable-matrix-types="double, double complex"
+SHEBANG_FILES= scripts/*.sh
+
+post-patch:
+ @${REINPLACE_CMD} -E s/sed/gsed/g ${WRKSRC}/scripts/*.sh
+
+.include <bsd.port.mk>
diff --git a/math/librsb/distinfo b/math/librsb/distinfo
new file mode 100644
index 000000000000..d603fa29fbb4
--- /dev/null
+++ b/math/librsb/distinfo
@@ -0,0 +1,2 @@
+SHA256 (librsb-1.2.0-rc1.tar.gz) = 88167a22a9a73fa2bf15e83a94a37c8829a838fe93870254414ace78ea2ecdaf
+SIZE (librsb-1.2.0-rc1.tar.gz) = 2212101
diff --git a/math/librsb/files/patch-rsb__util.c b/math/librsb/files/patch-rsb__util.c
new file mode 100644
index 000000000000..cbd4c5ab8804
--- /dev/null
+++ b/math/librsb/files/patch-rsb__util.c
@@ -0,0 +1,29 @@
+--- rsb_util.c.orig 2015-05-01 21:21:34 UTC
++++ rsb_util.c
+@@ -161,6 +161,26 @@ void rsb__util_set_area_to_converted_int
+ return;
+ }
+
++/*
++ * Added because of lack of functionality with FreeBSD
++ * See https://wiki.freebsd.org/Numerics
++ */
++complex float clogf(complex float a) {
++ return logf(cabsf(a)) + I*cargf(a);
++}
++
++complex float cpowf(complex float a, complex float b) {
++ return cexpf(b*clogf(a));
++}
++
++complex double clog(complex double a) {
++ return logf(cabs(a)) + I*carg(a);
++}
++
++complex double cpow(complex double a, complex double b) {
++ return cexp(b*clog(a));
++}
++
+ rsb_coo_idx_t * rsb__util_get_partitioning_array( size_t bs, size_t X , rsb_blk_idx_t * X_b, rsb_flags_t flags){
+ /*!
+ * Given a block size (be it rows or columns), an element size X in bytes,
diff --git a/math/librsb/pkg-descr b/math/librsb/pkg-descr
new file mode 100644
index 000000000000..5f7ccebd7312
--- /dev/null
+++ b/math/librsb/pkg-descr
@@ -0,0 +1,15 @@
+librsb is a library for sparse matrix computations featuring the Recursive
+Sparse Blocks (RSB) matrix format. This format allows cache efficient and
+multi-threaded (that is, shared memory parallel) operations on large sparse
+matrices. The most common operations necessary to iterative solvers are
+available, e.g.: matrix-vector multiplication, triangular solution,
+rows/columns scaling, diagonal extraction / setting, blocks extraction, norm
+computation, formats conversion. The RSB format is especially well suited
+for symmetric and transposed multiplication variants. Most numerical kernels
+code is auto generated, and the supported numerical types can be chosen by
+the user at build time.
+
+librsb implements the Sparse BLAS standard, as specified in the BLAS Forum
+documents.
+
+WWW: http://librsb.sourceforge.net/
diff --git a/math/librsb/pkg-plist b/math/librsb/pkg-plist
new file mode 100644
index 000000000000..7c9bf1cee007
--- /dev/null
+++ b/math/librsb/pkg-plist
@@ -0,0 +1,221 @@
+bin/librsb-config
+bin/rsbench
+include/blas_sparse.h
+include/blas_sparse.mod
+include/rsb-config.h
+include/rsb.F90
+include/rsb.h
+include/rsb.mod
+include/rsb_types.h
+lib/librsb.a
+%%PORTDOCS%%%%DOCSDIR%%/AUTHORS
+%%PORTDOCS%%%%DOCSDIR%%/README
+%%PORTDOCS%%%%DOCSDIR%%/examples/autotune.c
+%%PORTDOCS%%%%DOCSDIR%%/examples/benchex.sh
+%%PORTDOCS%%%%DOCSDIR%%/examples/fortran.F90
+%%PORTDOCS%%%%DOCSDIR%%/examples/fortran_rsb_fi.F90
+%%PORTDOCS%%%%DOCSDIR%%/examples/hello-spblas.c
+%%PORTDOCS%%%%DOCSDIR%%/examples/hello.c
+%%PORTDOCS%%%%DOCSDIR%%/examples/io-spblas.c
+%%PORTDOCS%%%%DOCSDIR%%/examples/make.sh
+%%PORTDOCS%%%%DOCSDIR%%/examples/pd.mtx
+%%PORTDOCS%%%%DOCSDIR%%/examples/power.c
+%%PORTDOCS%%%%DOCSDIR%%/examples/transpose.c
+%%PORTDOCS%%%%DOCSDIR%%/examples/vf.mtx
+%%PORTDOCS%%%%DOCSDIR%%/html/annotated.html
+%%PORTDOCS%%%%DOCSDIR%%/html/bc_s.png
+%%PORTDOCS%%%%DOCSDIR%%/html/bdwn.png
+%%PORTDOCS%%%%DOCSDIR%%/html/blas__sparse_8h.html
+%%PORTDOCS%%%%DOCSDIR%%/html/classblas__sparse.html
+%%PORTDOCS%%%%DOCSDIR%%/html/classes.html
+%%PORTDOCS%%%%DOCSDIR%%/html/classrsb.html
+%%PORTDOCS%%%%DOCSDIR%%/html/closed.png
+%%PORTDOCS%%%%DOCSDIR%%/html/deprecated.html
+%%PORTDOCS%%%%DOCSDIR%%/html/doxygen.css
+%%PORTDOCS%%%%DOCSDIR%%/html/doxygen.png
+%%PORTDOCS%%%%DOCSDIR%%/html/dynsections.js
+%%PORTDOCS%%%%DOCSDIR%%/html/files.html
+%%PORTDOCS%%%%DOCSDIR%%/html/form_0.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_1.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_10.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_11.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_12.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_13.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_14.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_15.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_16.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_17.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_18.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_19.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_2.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_20.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_21.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_22.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_23.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_24.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_25.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_26.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_27.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_28.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_29.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_3.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_30.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_31.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_32.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_33.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_34.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_35.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_36.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_37.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_38.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_39.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_4.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_40.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_41.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_42.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_43.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_44.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_45.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_46.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_47.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_48.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_49.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_5.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_50.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_6.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_7.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_8.png
+%%PORTDOCS%%%%DOCSDIR%%/html/form_9.png
+%%PORTDOCS%%%%DOCSDIR%%/html/formula.repository
+%%PORTDOCS%%%%DOCSDIR%%/html/ftv2blank.png
+%%PORTDOCS%%%%DOCSDIR%%/html/ftv2cl.png
+%%PORTDOCS%%%%DOCSDIR%%/html/ftv2doc.png
+%%PORTDOCS%%%%DOCSDIR%%/html/ftv2folderclosed.png
+%%PORTDOCS%%%%DOCSDIR%%/html/ftv2folderopen.png
+%%PORTDOCS%%%%DOCSDIR%%/html/ftv2lastnode.png
+%%PORTDOCS%%%%DOCSDIR%%/html/ftv2link.png
+%%PORTDOCS%%%%DOCSDIR%%/html/ftv2mlastnode.png
+%%PORTDOCS%%%%DOCSDIR%%/html/ftv2mnode.png
+%%PORTDOCS%%%%DOCSDIR%%/html/ftv2mo.png
+%%PORTDOCS%%%%DOCSDIR%%/html/ftv2node.png
+%%PORTDOCS%%%%DOCSDIR%%/html/ftv2ns.png
+%%PORTDOCS%%%%DOCSDIR%%/html/ftv2plastnode.png
+%%PORTDOCS%%%%DOCSDIR%%/html/ftv2pnode.png
+%%PORTDOCS%%%%DOCSDIR%%/html/ftv2splitbar.png
+%%PORTDOCS%%%%DOCSDIR%%/html/ftv2vertline.png
+%%PORTDOCS%%%%DOCSDIR%%/html/functions.html
+%%PORTDOCS%%%%DOCSDIR%%/html/functions_0x62.html
+%%PORTDOCS%%%%DOCSDIR%%/html/functions_0x63.html
+%%PORTDOCS%%%%DOCSDIR%%/html/functions_0x64.html
+%%PORTDOCS%%%%DOCSDIR%%/html/functions_0x6b.html
+%%PORTDOCS%%%%DOCSDIR%%/html/functions_0x6e.html
+%%PORTDOCS%%%%DOCSDIR%%/html/functions_0x72.html
+%%PORTDOCS%%%%DOCSDIR%%/html/functions_0x73.html
+%%PORTDOCS%%%%DOCSDIR%%/html/functions_0x75.html
+%%PORTDOCS%%%%DOCSDIR%%/html/functions_0x76.html
+%%PORTDOCS%%%%DOCSDIR%%/html/functions_0x7a.html
+%%PORTDOCS%%%%DOCSDIR%%/html/functions_func.html
+%%PORTDOCS%%%%DOCSDIR%%/html/functions_vars.html
+%%PORTDOCS%%%%DOCSDIR%%/html/functions_vars_0x62.html
+%%PORTDOCS%%%%DOCSDIR%%/html/functions_vars_0x6b.html
+%%PORTDOCS%%%%DOCSDIR%%/html/functions_vars_0x6e.html
+%%PORTDOCS%%%%DOCSDIR%%/html/functions_vars_0x72.html
+%%PORTDOCS%%%%DOCSDIR%%/html/functions_vars_0x76.html
+%%PORTDOCS%%%%DOCSDIR%%/html/globals.html
+%%PORTDOCS%%%%DOCSDIR%%/html/globals_0x72.html
+%%PORTDOCS%%%%DOCSDIR%%/html/globals_defs.html
+%%PORTDOCS%%%%DOCSDIR%%/html/globals_enum.html
+%%PORTDOCS%%%%DOCSDIR%%/html/globals_eval.html
+%%PORTDOCS%%%%DOCSDIR%%/html/globals_eval_0x72.html
+%%PORTDOCS%%%%DOCSDIR%%/html/globals_func.html
+%%PORTDOCS%%%%DOCSDIR%%/html/globals_func_0x72.html
+%%PORTDOCS%%%%DOCSDIR%%/html/globals_type.html
+%%PORTDOCS%%%%DOCSDIR%%/html/group__rsb__doc__examples.html
+%%PORTDOCS%%%%DOCSDIR%%/html/group__rsb__doc__rsb.html
+%%PORTDOCS%%%%DOCSDIR%%/html/group__rsb__doc__sparse__blas.html
+%%PORTDOCS%%%%DOCSDIR%%/html/index.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfaceblas__sparse_1_1rsb__blas__get__mtx.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfaceblas__sparse_1_1uscr__insert__block.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfaceblas__sparse_1_1uscr__insert__clique.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfaceblas__sparse_1_1uscr__insert__col.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfaceblas__sparse_1_1uscr__insert__entries.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfaceblas__sparse_1_1uscr__insert__entry.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfaceblas__sparse_1_1uscr__insert__row.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfaceblas__sparse_1_1usmm.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfaceblas__sparse_1_1usmv.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfaceblas__sparse_1_1ussm.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfaceblas__sparse_1_1ussv.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__coo__sort.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__file__mtx__get__dims.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__file__mtx__load.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__file__mtx__rndr.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__file__mtx__save.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__file__vec__load.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__file__vec__save.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__lib__exit.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__lib__get__opt.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__lib__init.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__lib__reinit.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__lib__set__opt.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__lib__set__opt__str.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__add__to__dense.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__alloc__from__coo__begin.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__alloc__from__coo__const.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__alloc__from__coo__end.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__alloc__from__coo__inplace.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__alloc__from__csc__const.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__alloc__from__csr__const.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__alloc__from__csr__inplace.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__clone.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__free.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__get__coo.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__get__coo__block.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__get__csr.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__get__info.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__get__info__str.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__get__nrm.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__get__prec.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__get__rows__sparse.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__get__vals.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__get__vec.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__rndr.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__set__vals.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__switch__to__coo.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__switch__to__csr.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__mtx__upd__vals.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__perror.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__psblas__trans__to__rsb__trans.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__spmm.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__spmsp.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__spmsp__to__dense.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__spmv.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__sppsp.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__spsm.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__spsv.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__strerror__r.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__time.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__tune__spmm.html
+%%PORTDOCS%%%%DOCSDIR%%/html/interfacersb_1_1rsb__tune__spsm.html
+%%PORTDOCS%%%%DOCSDIR%%/html/modules.html
+%%PORTDOCS%%%%DOCSDIR%%/html/nav_f.png
+%%PORTDOCS%%%%DOCSDIR%%/html/nav_g.png
+%%PORTDOCS%%%%DOCSDIR%%/html/nav_h.png
+%%PORTDOCS%%%%DOCSDIR%%/html/open.png
+%%PORTDOCS%%%%DOCSDIR%%/html/pages.html
+%%PORTDOCS%%%%DOCSDIR%%/html/rsb_8F90.html
+%%PORTDOCS%%%%DOCSDIR%%/html/rsb_8h.html
+%%PORTDOCS%%%%DOCSDIR%%/html/rsb__blas__sparse_8F90.html
+%%PORTDOCS%%%%DOCSDIR%%/html/rsb__libspblas_8c.html
+%%PORTDOCS%%%%DOCSDIR%%/html/rsb__libspblas_8h.html
+%%PORTDOCS%%%%DOCSDIR%%/html/rsb__libspblas__handle_8c.html
+%%PORTDOCS%%%%DOCSDIR%%/html/rsb__rsb_8c.html
+%%PORTDOCS%%%%DOCSDIR%%/html/rsb__types_8h.html
+%%PORTDOCS%%%%DOCSDIR%%/html/structrsb__initopts.html
+%%PORTDOCS%%%%DOCSDIR%%/html/sync_off.png
+%%PORTDOCS%%%%DOCSDIR%%/html/sync_on.png
+%%PORTDOCS%%%%DOCSDIR%%/html/tab_a.png
+%%PORTDOCS%%%%DOCSDIR%%/html/tab_b.png
+%%PORTDOCS%%%%DOCSDIR%%/html/tab_h.png
+%%PORTDOCS%%%%DOCSDIR%%/html/tab_s.png
+%%PORTDOCS%%%%DOCSDIR%%/html/tabs.css
+%%PORTDOCS%%%%DOCSDIR%%/html/todo.html