openbsd-ports/math/umfpack/Makefile

98 lines
3.6 KiB
Makefile

# $OpenBSD: Makefile,v 1.7 2008/01/04 17:48:36 espie Exp $
COMMENT= unsymmetric multifrontal sparse LU factorization package
VERSION= 5.1.0
DISTNAME= UMFPACK-${VERSION}
PKGNAME= umfpack-${VERSION}
SHARED_LIBS= umfpack 0.0
CATEGORIES= math
HOMEPAGE= http://www.cise.ufl.edu/research/sparse/umfpack/
MAINTAINER= Steven Mestdagh <steven@openbsd.org>
# LGPL
PERMIT_PACKAGE_CDROM= Yes
PERMIT_PACKAGE_FTP= Yes
PERMIT_DISTFILES_CDROM= Yes
PERMIT_DISTFILES_FTP= Yes
AMD_DIR= math/amd
BUILD_DEPENDS= ::${AMD_DIR}:patch
RUN_DEPENDS= ::${AMD_DIR}
MASTER_SITES= ${HOMEPAGE}
MASTER_SITES0= ${HOMEPAGE}../UFconfig/
DISTFILES= ${DISTNAME}${EXTRACT_SUFX} UFconfig-3.0.0.tar.gz:0
WRKDIST= ${WRKDIR}/UMFPACK
WRKSRC= ${WRKDIST}/Source
MAKE_FILE= ${FILESDIR}/Makefile
MAKE_ENV= SHLIB_MAJOR=${LIBumfpack_VERSION:R} \
SHLIB_MINOR=${LIBumfpack_VERSION:E}
FAKE_FLAGS= LIBDIR=${LOCALBASE}/lib DEBUGLIBS=no
CFLAGS+= -I${WRKDIST}/Include -I${WRKDIR}/UFconfig \
-I${WRKDIR}/${AMD_DIR}/AMD/Include
SRC1= analyze apply_order colamd free fsize is_permutation malloc \
realloc report_perm singletons
SRC2= ltsolve utsolve
SRC3= assemble blas3_update build_tuples create_element dump \
extend_front garbage_collection get_memory init_front \
kernel kernel_init kernel_wrapup local_search lsolve \
ltsolve mem_alloc_element mem_alloc_head_block \
mem_alloc_tail_block mem_free_tail_block mem_init_memoryspace \
report_vector row_search scale_column set_stats solve \
symbolic_usage transpose tuple_lengths usolve utsolve \
valid_numeric valid_symbolic grow_front start_front 2by2 \
store_lu scale
SRC4= col_to_triplet defaults free_numeric free_symbolic get_numeric \
get_lunz get_symbolic get_determinant numeric qsymbolic \
report_control report_info report_matrix report_numeric report_perm \
report_status report_symbolic report_triplet report_vector solve \
symbolic transpose triplet_to_col scale load_numeric save_numeric \
load_symbolic save_symbolic
pre-configure:
@echo "#define DINT 1" > ${WRKSRC}/di.c
@echo "#define DLONG 1" > ${WRKSRC}/dl.c
@echo "#define ZINT 1" > ${WRKSRC}/zi.c
@echo "#define ZLONG 1" > ${WRKSRC}/zl.c
@echo "#define CONJUGATE_SOLVE 1" > ${WRKSRC}/conjugate_solve.c
@echo "#define DO_MAP 1" > ${WRKSRC}/do_map.c
@echo "#define DO_VALUES 1" > ${WRKSRC}/do_values.c
@echo "#define FIXQ 1" > ${WRKSRC}/fixq.c
@echo "#define DROP 1" > ${WRKSRC}/drop.c
@echo "#define WSOLVE 1" > ${WRKSRC}/wsolve.c
.for s in ${SRC1}
@cd ${WRKSRC} && cat di.c umf_${s}.c > umf_i_${s}.c
@cd ${WRKSRC} && cat dl.c umf_${s}.c > umf_l_${s}.c
.endfor
.for i in di dl zi zl
. for s in ${SRC2}
@cd ${WRKSRC} && cat ${i}.c conjugate_solve.c umf_${s}.c > umf_${i}_${s:S/t/h/}.c
. endfor
@cd ${WRKSRC} && cat ${i}.c do_map.c umf_triplet.c > umf_${i}_triplet_map_nox.c
@cd ${WRKSRC} && cat ${i}.c do_values.c umf_triplet.c > umf_${i}_triplet_nomap_x.c
@cd ${WRKSRC} && cat ${i}.c umf_triplet.c > umf_${i}_triplet_nomap_nox.c
@cd ${WRKSRC} && cat ${i}.c do_map.c do_values.c umf_triplet.c > umf_${i}_triplet_map_x.c
@cd ${WRKSRC} && cat ${i}.c fixq.c umf_assemble.c > umf_${i}_assemble_fixq.c
@cd ${WRKSRC} && cat ${i}.c drop.c umf_store_lu.c > umf_${i}_store_lu_drop.c
. for s in ${SRC3}
@cd ${WRKSRC} && cat ${i}.c umf_${s}.c > umf_${i}_${s}.c
. endfor
@cd ${WRKSRC} && cat ${i}.c wsolve.c umfpack_solve.c > umfpack_${i}_wsolve.c
. for s in ${SRC4}
@cd ${WRKSRC} && cat ${i}.c umfpack_${s}.c > umfpack_${i}_${s}.c
. endfor
.endfor
post-install:
${INSTALL_DATA_DIR} ${PREFIX}/include/umfpack
${INSTALL_DATA} ${WRKDIST}/Include/*.h ${PREFIX}/include/umfpack
${INSTALL_DATA} ${WRKDIR}/UFconfig/UFconfig.h ${PREFIX}/include/umfpack
.include <bsd.port.mk>