# New ports collection makefile for: vtk # Date created: 10 Oct 2003 # Whom: Mykola Khotyaintsev # # $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= 2 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 .if defined(WRAP) || !defined(PKGNAMESUFFIX) || ${PKGNAMESUFFIX}=="-headers" WRKSRC= ${WRKDIR}/${PORTNAME}${PKGNAMESUFFIX}-build BUILD_DEPENDS+= ${CMAKE}:${PORTSDIR}/devel/cmake LIB_DEPENDS+= expat.4:${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 .endif