summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 820b647c089b8d1e08e8cdc60cebf67cb6641f33 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# Maintainer of this PKBGUILD file: Martino Pilia <martino.pilia@gmail.com>
pkgname=minc-toolkit-v2
pkgver=1.9.15
pkgrel=2
pkgdesc="Medical Imaging NetCDF Toolkit"
arch=('any')
url="https://www.mcgill.ca/bic/software/minc"
license=('GPL3')
depends=('perl' 'libjpeg-turbo' 'libxi' 'libxmu' 'libgl' 'glu' 'fftw' 'glut' 'netcdf' 'pcre' 'zlib' 'hdf5' 'nifticlib' 'insight-toolkit' 'elastix')
makedepends=('git' 'cmake' 'bc' 'libhdf5')
provides=('minc-toolkit')
source=('git+https://github.com/BIC-MNI/minc-toolkit-v2.git'
		'FindNIFTI.patch')
sha512sums=('SKIP'
            '28e12be5c8c7e397a063fa570fd4819dc45daf845a608164b9e7aec6fb6fb99d58f4f494d648147613bb80393b88d40f63748ea9f6096d96a1df1e66d17bbed7')

_release_commit="29273c3f065c86496c6a1270355077b534e676a3"

_itk=`ls /usr/lib/cmake | grep -m1 ITK`
_install_prefix="/usr/share/minc"

prepare() {

	# ensure that the required ITK modules are present
	if [ `ls "/usr/include/$_itk" | grep 'itkMINCImageIO.h'` == "" ];
	then
		echo "ERROR: ITK must be built with -DModule_ITKIOMINC:BOOL=ON"
		exit 1
	fi
	if [ `ls "/usr/include/$_itk" | grep 'itkMINCTransformAdapter.h'` == "" ];
	then
		echo "ERROR: ITK must be built with -DModule_ITKIOTransformMINC:BOOL=ON"
		exit 1
	fi

	cd "$srcdir/$pkgname"
	git checkout $_release_commit
	git submodule update --init --recursive

	# that hash seems to be wrong
	sed -i \
		's/5c9dad3705a3408d27f696e5b31fb88c/41fe6758d46cccb1675693d155ee7001/' \
		cmake-modules/BuildNETCDF.cmake

	# find system NIFTI in the right place
	sed -i \
		's/FIND_PACKAGE(NIFTI OPTIONAL)/FIND_PACKAGE(NIFTI REQUIRED)/' \
		CMakeLists.txt
	patch -p0 -i ${srcdir}/FindNIFTI.patch

	# static version of HDF5
	sed -i \
		'74iSET(HDF5_LIBRARY "/usr/lib/libhdf5.a")' \
		cmake-modules/FindHDF5.cmake
	sed -i \
		'75iSET(HDF5_LIBRARIES ${HDF5_LIBRARY})' \
		cmake-modules/FindHDF5.cmake

	# libminc for patch_morphology
	sed -i \
		'5iINCLUDE_DIRECTORIES(${LIBMINC_INCLUDE_DIRS})' \
		patch_morphology/legacy/CMakeLists.txt
	sed -i \
		'6iLINK_DIRECTORIES(${LIBMINC_LIBRARY_DIRS})' \
		patch_morphology/legacy/CMakeLists.txt

	# the compiler won't like this
	sed -i \
		's/enum {false=0, true=1};//' \
		minctools/progs/mincdump/mincdump.h

    mkdir build || :
    cd build

    cmake .. \
        -DCMAKE_BUILD_TYPE:STRING=Release   \
        -DCMAKE_INSTALL_PREFIX:PATH="${_install_prefix}" \
        -DMT_BUILD_ABC:BOOL=ON   \
        -DMT_BUILD_ANTS:BOOL=ON   \
        -DMT_BUILD_C3D:BOOL=ON   \
        -DMT_BUILD_ELASTIX:BOOL=OFF   \
        -DMT_BUILD_IM:BOOL=OFF   \
        -DMT_BUILD_ITK_TOOLS:BOOL=ON   \
        -DMT_BUILD_LITE:BOOL=OFF   \
        -DMT_BUILD_SHARED_LIBS:BOOL=ON   \
        -DMT_BUILD_VISUAL_TOOLS:BOOL=ON   \
        -DMT_USE_OPENMP:BOOL=ON   \
        -DUSE_SYSTEM_ELASTIX:BOOL=ON   \
        -DUSE_SYSTEM_FFTW3D:BOOL=ON   \
        -DUSE_SYSTEM_FFTW3F:BOOL=ON   \
        -DUSE_SYSTEM_GLUT:BOOL=ON   \
        -DUSE_SYSTEM_GSL:BOOL=ON   \
        -DUSE_SYSTEM_HDF5:BOOL=ON   \
        -DUSE_SYSTEM_ITK:BOOL=ON   \
        -DUSE_SYSTEM_NETCDF:BOOL=ON   \
        -DUSE_SYSTEM_NIFTI:BOOL=ON   \
        -DUSE_SYSTEM_PCRE:BOOL=ON   \
        -DUSE_SYSTEM_ZLIB:BOOL=ON \
		-DITK_DIR:PATH=/usr/lib/cmake/$_itk
}

build() {
    cd "$srcdir/$pkgname/build"
    make
}

#check() {
#	cd "$srcdir/$pkgname/build"
#	make test
#}

package() {
	cd "$srcdir/$pkgname/build"

	make install DESTDIR="${pkgdir}"

	cd "${pkgdir}${_install_prefix}"
	rm -rf minc-toolkit-config*

	mkdir -p $pkgdir/usr/share/bash-completion/completions
	mv share/bashcomp.sh $pkgdir/usr/share/bash-completion/completions/c3d
	mv bin $pkgdir/usr/bin
	mv include $pkgdir/usr/include
	mv lib $pkgdir/usr/lib
	mv man $pkgdir/usr/share/man
}