freebsd-ports/math/vtk5/Makefile
2004-03-14 07:58:26 +00:00

238 lines
7.7 KiB
Makefile

# New ports collection makefile for: vtk
# Date created: 10 Oct 2003
# Whom: Mykola Khotyaintsev <ko@irfu.se>
#
# $FreeBSD$
#
# By default
#
# There are some options to tune VTK towards your specific needs.
# You can activate a feature by typing something like
# "make -DKNOB" or "make KNOB=yes" instead of just "make"
#
# WITH_TESTING build the testing binaries (only for vtk and vtk-java port)
#
PORTNAME= vtk
PORTVERSION= 4.3.0
PORTREVISION= 3
CATEGORIES= math graphics
MASTER_SITES= http://ovt.irfu.se/vtk/files/
DISTFILES?= VTK-${PORTVERSION}-cvs${CVSDATE}.tar.gz
MAINTAINER= ko@irfu.se
COMMENT?= The Visualization Toolkit shared libs
USE_REINPLACE= yes
LIBVER= 1
CVSDATE= 20031006
VTKSRCDIR= ${WRKDIR}/VTK
TESTINGDIR= ${EXAMPLESDIR}/Testing
VTKDATAROOT= ${EXAMPLESDIR}/VTKData
DOCSDIR= ${PREFIX}/share/doc/${PKGNAME}
PLIST= ${.CURDIR}/pkg-plist
FILESDIR= ${.CURDIR}/files
RESTRICTED= yes
VTK_KITS= Common Filtering Graphics Hybrid IO Imaging Rendering Parallel Patented
PLIST_SUB+= LIBVER=${LIBVER} PKGNAME=${PKGNAME}
.include <bsd.port.pre.mk>
.if defined(WRAP) || !defined(PKGNAMESUFFIX) || ${PKGNAMESUFFIX}=="-headers"
WRKSRC= ${WRKDIR}/${PORTNAME}${PKGNAMESUFFIX}-build
BUILD_DEPENDS+= ${CMAKE}:${PORTSDIR}/devel/cmake
LIB_DEPENDS+= expat.5:${PORTSDIR}/textproc/expat2 \
jpeg.9:${PORTSDIR}/graphics/jpeg \
png.5:${PORTSDIR}/graphics/png \
tiff.4:${PORTSDIR}/graphics/tiff
.if defined(WITH_TESTING) && (!defined(PKGNAMESUFFIX) || ${PKGNAMESUFFIX}=="-java")
RUN_DEPENDS+= ${VTKDATAROOT}/VTKData.readme:${PORTSDIR}/math/vtk-data
BUILD_DEPENDS+= ${VTKDATAROOT}/VTKData.readme:${PORTSDIR}/math/vtk-data
.endif
ONLY_FOR_ARCHS= i386 # was not tested on other ARCHS
USE_GMAKE= yes
USE_GL= yes
INSTALLS_SHLIB= yes
# if optimization flag -O2 or -O3 is present - use g++33
# There is a problem compiling Imaging/vtkImageEuclideanDistance.o by gcc 3.2.2
# with -02 -march=pentium3
.if defined(CXXFLAGS)
TTT= "${CXXFLAGS}" # this quotes are VERY important!
OPTFLAGPRESENT= ${TTT:C/^.*-O[23].*$/yes/}
.if ${OPTFLAGPRESENT} == "yes"
USE_GCC= 3.3
.endif
.endif
.if ${OSVERSION} < 500016
ADDITIONAL_EXE_LINKER_FLAGS= ${PTHREAD_LIBS}
.endif
CMAKE?= ${LOCALBASE}/bin/cmake
CXXFLAGS+= -Wno-deprecated
CMAKE_DEFS+= -DCMAKE_INSTALL_PREFIX:PATH=${PREFIX} \
-DBUILD_SHARED_LIBS:BOOL=ON \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_SHARED_LINKER_FLAGS:STRING="${LINKERFLAGS}" \
-DCMAKE_EXE_LINKER_FLAGS:STRING="${LINKERFLAGS} ${ADDITIONAL_EXE_LINKER_FLAGS}" \
-DCMAKE_THREAD_LIBS:STRING="${PTHREAD_LIBS}"\
-DCMAKE_USE_PTHREADS:BOOL=ON \
-DCMAKE_C_COMPILER:STRING='${CC}' \
-DCMAKE_CXX_COMPILER:STRING=${CXX} \
-DCMAKE_C_FLAGS:STRING="${CFLAGS} ${PTHREAD_CFLAGS}" \
-DCMAKE_CXX_FLAGS:STRING="${CXXFLAGS} ${PTHREAD_CFLAGS}" \
-DVTK_USE_RENDERING:BOOL=ON \
-DVTK_USE_HYBRID:BOOL=ON \
-DVTK_USE_PARALLEL:BOOL=ON \
-DVTK_USE_PATENTED:BOOL=ON \
-DVTK_USE_SYSTEM_EXPAT:BOOL=ON \
-DVTK_USE_SYSTEM_JPEG:BOOL=ON \
-DVTK_USE_SYSTEM_PNG:BOOL=ON \
-DVTK_USE_SYSTEM_TIFF:BOOL=ON \
-DVTK_USE_SYSTEM_ZLIB:BOOL=ON \
-DVTK_DATA_ROOT:PATH=${VTKDATAROOT}
.if defined(WITH_TESTING)
CMAKE_DEFS+= -DBUILD_TESTING:BOOL=ON
PLIST_SUB+= TESTING_ONLY=""
.else
CMAKE_DEFS+= -DBUILD_TESTING:BOOL=OFF
PLIST_SUB+= TESTING_ONLY="@comment "
.endif
################################# vtk port start #############################################
.ifndef(PKGNAMESUFFIX)
EXTRA_LIBS= DICOMParser freetype ftgl
.if defined(WITH_TESTING)
BINARIES= ${VTK_KITS:C/Parallel//:C/Patented//:S/$/CxxTests/}
BINARIES+= TestCxxFeatures TestInstantiator TimeRenderer TimeRenderer2 ParallelIsoTest
BINARIES+= SocketClient SocketServer GenericCommunicator ThreadedCommunicator TestPStream
.endif
.ifndef(WITH_TESTING)
pre-everything::
@${ECHO_MSG} "---------------------- N O T E ------------------------"
@${ECHO_MSG} ""
@${ECHO_MSG} "If you want to build C++ Testing binaries press Ctrl-C now"
@${ECHO_MSG} "and execute \"make WITH_TESTING=yes\""
@${ECHO_MSG} ""
@${ECHO_MSG} "-------------------------------------------------------------"
.endif
do-patch: patch-common
do-install: install-cnotice install-binaries install-libs
.endif
################################# vtk port end #############################################
pre-configure:
${MKDIR} ${WRKSRC}
do-configure:
cd ${WRKSRC} && ${CMAKE} ${VTKSRCDIR} ${CMAKE_DEFS}
patch-common:
@${FIND} ${VTKSRCDIR} -name "*.cxx" | ${XARGS} ${REINPLACE_CMD} -e \
's|malloc.h|stdlib.h|g'
@${REINPLACE_CMD} -E 's|lib/vtk\)|lib\)|g' \
${VTKSRCDIR}/vtkGenerateVTKConfig.cmake
.if defined(WRAP)
# No need to build many libs, such as: vtkCommon,... Better link to those ones installed by vtk port.
# Patch (MAIN_KIT_LIB = [Common_LIB Filtering_LIB ...]:
# ${VTKSRCDIR}/CMakeLists.txt :
# -SUBDIRS(Wrapping Utilities)
# +SUBDIRS(Wrapping)
#
# ${VTKSRCDIR}/[Common Filtering IO ...]/CMakeLists.txt :
# -ADD_LIBRARY(vtk${KIT} ...
# +FIND_LIBRARY(MAIN_KIT_LIB NAMES vtk${KIT} PATHS ${PREFIX}/lib)
#
# -TARGET_LINK_LIBRARIES(vtk${KIT}Python vtk${KIT} ...
# +TARGET_LINK_LIBRARIES(vtk${KIT}Python ${MAIN_KIT_LIB} ...
#
# Sometimes TARGET_LINK_LIBRARIES(vtk${KIT}Python vtk${KIT} can be separated to two lines:
# TARGET_LINK_LIBRARIES(vtk${KIT}Python
# vtk${KIT}
# -^[spaces or tabs]vtk${KIT}[spaces or tabs]$
# +[space]${MAIN_KIT_LIB}
#
# -TARGET_LINK_LIBRARIES(vtk${KIT} ${KIT_LIBS})
#
# ${VTKSRCDIR}/[Common Filtering IO ...]/Tests/CMakeLists.txt :
# -SUBDIRS(Cxx)
#
@${REINPLACE_CMD} -E 's|SUBDIRS\(Wrapping Utilities\)|SUBDIRS\(Wrapping\)|g' \
${VTKSRCDIR}/CMakeLists.txt
@for dir in ${VTK_KITS} ; do \
${ECHO_MSG} "Patching ${WRKDIR}/${VTKSRCDIR}/$$dir/CMakeLists.txt ..." ; \
${REINPLACE_CMD} -E 's|ADD_LIBRARY *\(vtk\$$\{KIT\} .*$$|FIND_LIBRARY\('$$dir'_LIB NAMES vtk\$$\{KIT\} PATHS ${PREFIX}/lib\)|g ; s|TARGET_LINK_LIBRARIES *\(vtk\$$\{KIT\}${WRAP} vtk\$$\{KIT\}|TARGET_LINK_LIBRARIES\(vtk\$$\{KIT\}${WRAP} \$$\{'$$dir'_LIB\}|g ; s|^[ \t]*vtk\$$\{KIT\}[ \t]*$$| \$$\{'$$dir'_LIB\}|g ; s|TARGET_LINK_LIBRARIES *\(vtk\$$\{KIT\} .*$$||g' \
${VTKSRCDIR}/$$dir/CMakeLists.txt ; \
done
.if defined(WITH_TESTING)
@for dir in ${VTK_KITS} ; do \
${ECHO_MSG} "Patching ${VTKSRCDIR}/$$dir/Testing/CMakeLists.txt ..." ; \
${REINPLACE_CMD} -E 's|SUBDIRS *\(Cxx\).*$$||g' \
${VTKSRCDIR}/$$dir/Testing/CMakeLists.txt ; \
done
.endif
.endif #end of patch-common
install-binaries:
.if defined(BINARIES)
@${ECHO_MSG} "Installing binaries to ${PREFIX}/bin :"
.for i in ${BINARIES}
@${ECHO_MSG} "Installing ${i} ..."
@${INSTALL_PROGRAM} ${WRKSRC}/bin/${i} ${PREFIX}/bin
.endfor
.endif
install-libs:
@${ECHO_MSG} "Installing shared libraries to ${PREFIX}/lib ..."
.for i in ${VTK_KITS:S/$/${WRAP}/} ${EXTRA_LIBS}
@${ECHO_MSG} "Installing libvtk${i}.so ..."
@${INSTALL_PROGRAM} ${WRKSRC}/bin/libvtk${i}.so \
${PREFIX}/lib/libvtk${i}.so.${LIBVER}
@${LN} -sf ${PREFIX}/lib/libvtk${i}.so.${LIBVER} \
${PREFIX}/lib/libvtk${i}.so
.endfor
.endif
install-cnotice:
@${ECHO_MSG} "Installing copyright notice to ${DOCSDIR} ..."
@${MKDIR} ${DOCSDIR}
@${INSTALL_DATA} ${VTKSRCDIR}/README.html ${DOCSDIR}
@${INSTALL_DATA} ${VTKSRCDIR}/vtkLogo.jpg ${DOCSDIR}
@${ECHO_MSG} -e "A list of the patented classes.\n\n" > ${WRKDIR}/README.patented-classes
@cd ${VTKSRCDIR} ; ${LS} Patented/*.h >> ${WRKDIR}/README.patented-classes
@${INSTALL_DATA} ${WRKDIR}/README.patented-classes ${DOCSDIR}
print-pkg-message:
@if ${TEST} -f ${PKGMESSAGE} ; then \
${ECHO_MSG} -e "-- V T K - N O T E ----------------------------------------------------\n\n" ; \
${CAT} ${PKGMESSAGE} | ${SED} -e 's|%%PREFIX%%|${PREFIX}|' ; \
${ECHO_MSG} -e "\n\n-----------------------------------------------------------------------" ; \
fi
post-install: print-pkg-message
.ifndef(PKGNAMESUFFIX)
.include <bsd.port.post.mk>
.endif