Line 0
Link Here
|
|
|
1 |
# Created by: Felix Palmen <felix@palmen-it.de> |
2 |
# $FreeBSD$ |
3 |
|
4 |
PORTNAME= makemkv |
5 |
PORTVERSION= 1.15.0 |
6 |
CATEGORIES= multimedia |
7 |
MASTER_SITES= http://www.makemkv.com/download/:makemkv \ |
8 |
http://www.makemkv.com/download/old/:makemkv \ |
9 |
KERNEL_ORG/linux/kernel/v2.6:linux \ |
10 |
GNU/binutils:binutils \ |
11 |
GNU/glibc:glibc \ |
12 |
GNU/gmp:gmp \ |
13 |
GNU/mpfr:mpfr \ |
14 |
GNU/mpc:mpc \ |
15 |
GCC/releases/gcc-${GCCVERSION}:gcc \ |
16 |
SF/opencore-amr/fdk-aac/:fdkaac \ |
17 |
https://ffmpeg.org/releases/:ffmpeg \ |
18 |
https://www.openssl.org/source/old/${OPENSSLVERSION}/:openssl |
19 |
DISTFILES= makemkv-oss-${PORTVERSION}.tar.gz:makemkv \ |
20 |
makemkv-bin-${PORTVERSION}.tar.gz:makemkv \ |
21 |
linux-${LINUXVERSION}.tar.xz:linux \ |
22 |
binutils-${BINUTILSVERSION}.tar.bz2:binutils \ |
23 |
glibc-${GLIBCVERSION}.tar.xz:glibc \ |
24 |
gmp-${GMPVERSION}.tar.xz:gmp \ |
25 |
mpfr-${MPFRVERSION}.tar.xz:mpfr \ |
26 |
mpc-${MPCVERSION}.tar.gz:mpc \ |
27 |
gcc-${GCCVERSION}.tar.gz:gcc \ |
28 |
fdk-aac-${FDKAACVERSION}.tar.gz:fdkaac \ |
29 |
ffmpeg-${FFMPEGVERSION}.tar.bz2:ffmpeg \ |
30 |
openssl-${OPENSSLFULLVER}.tar.gz:openssl |
31 |
DIST_SUBDIR= ${PORTNAME} |
32 |
|
33 |
MAINTAINER= felix@palmen-it.de |
34 |
COMMENT= Video converter reading from DVD and Bluray |
35 |
|
36 |
LICENSE= MAKEMKV FDK GPLv2 GPLv3 LGPL21+ LGPL3 OpenSSL |
37 |
LICENSE_COMB= multi |
38 |
LICENSE_NAME_MAKEMKV= The MakeMKV EULA |
39 |
LICENSE_NAME_FDK= The FDK AAC License |
40 |
LICENSE_FILE_MAKEMKV= ${WRKDIR}/makemkv-bin-${PORTVERSION}/src/eula_en_linux.txt |
41 |
LICENSE_FILE_FDK= ${WRKDIR}/fdk-aac-${FDKAACVERSION}/NOTICE |
42 |
LICENSE_PERMS_MAKEMKV= no-dist-mirror no-dist-sell no-pkg-mirror no-pkg-sell \ |
43 |
no-auto-accept |
44 |
LICENSE_PERMS_FDK= dist-mirror no-dist-sell pkg-mirror no-pkg-sell \ |
45 |
auto-accept |
46 |
LICENSE_DISTFILES_FDK= fdk-aac-${FDKAACVERSION}.tar.gz |
47 |
LICENSE_DISTFILES_GPLv2= binutils-${BINUTILSVERSION}.tar.bz2 \ |
48 |
glibc-${GLIBCVERSION}.tar.xz \ |
49 |
linux-${LINUXVERSION}.tar.xz \ |
50 |
gcc-${GCCVERSION}.tar.gz |
51 |
LICENSE_DISTFILES_LGPL21+ = ffmpeg-${FFMPEGVERSION}.tar.bz2 |
52 |
LICENSE_DISTFILES_GPLv3= gmp-${GMPVERSION}.tar.xz \ |
53 |
mpfr-${MPFRVERSION}.tar.xz |
54 |
LICENSE_DISTFILES_LGPL3= mpc-${MPCVERSION}.tar.gz |
55 |
LICENSE_DISTFILES_OpenSSL= openssl-${OPENSSLFULLVER}.tar.gz |
56 |
LICENSE_DISTFILES_MAKEMKV= makemkv-bin-${PORTVERSION}.tar.gz \ |
57 |
makemkv-oss-${PORTVERSION}.tar.gz |
58 |
|
59 |
ONLY_FOR_ARCHS= amd64 i386 |
60 |
USES= gmake linux pkgconfig perl5 |
61 |
USE_LINUX= base expat expat:build openssl openssl:build |
62 |
USE_PERL5= build |
63 |
USE_GCC= yes |
64 |
BUILD_DEPENDS= nasm>0:devel/nasm \ |
65 |
${LOCALBASE}/include/expat.h:textproc/expat2 \ |
66 |
patchelf>0:sysutils/patchelf \ |
67 |
gawk>0:lang/gawk \ |
68 |
gsed>0:textproc/gsed |
69 |
|
70 |
RESTRICTED= yes |
71 |
RESTRICTED_FILES= makemkv-bin-${PORTVERSION}.tar.gz |
72 |
|
73 |
WRKSRC= ${WRKDIR}/makemkv-oss-${PORTVERSION} |
74 |
|
75 |
SUB_FILES= update-makemkv-drives |
76 |
SUB_LIST= LINUXBASE=${LINUXBASE} |
77 |
PLIST_SUB= LINUXBASE=${LINUXBASE} |
78 |
|
79 |
LINUXVERSION= 2.6.32.27 |
80 |
BINUTILSVERSION= 2.27 |
81 |
GLIBCVERSION= 2.17 |
82 |
GMPVERSION= 5.1.3 |
83 |
MPFRVERSION= 3.1.2 |
84 |
MPCVERSION= 1.0.3 |
85 |
GCCVERSION= 5.5.0 |
86 |
FDKAACVERSION= 2.0.1 |
87 |
FFMPEGVERSION= 4.2.2 |
88 |
OPENSSLVERSION= 1.0.2 |
89 |
OPENSSLPATCHLEVEL= k |
90 |
OPENSSLFULLVER= ${OPENSSLVERSION}${OPENSSLPATCHLEVEL} |
91 |
|
92 |
LINUXARCH= ${ARCH:S/amd64/x86_64/} |
93 |
LINUXTRIPLET= ${LINUXARCH}-unknown-linux-gnu |
94 |
LINUXLIBDIR= ${LINUXBASE}/${"${LINUXARCH:Mx86_64}" != "":?lib64:lib} |
95 |
GNUCROSSDIR= ${WRKDIR}/gnuroot/${LINUXTRIPLET} |
96 |
GNUCROSSLIBDIR= ${GNUCROSSDIR}/${"${LINUXARCH:Mx86_64}" != "":?lib64:lib} |
97 |
OPENSSLTARGET= ${"${LINUXARCH:Mx86_64}" != "":?linux-x86_64:linux-elf} |
98 |
|
99 |
PATCHELF_CMD?= ${LOCALBASE}/bin/patchelf |
100 |
|
101 |
CFLAGS+= -DFORCE_OPENSSL_NO_EC -I${WRKDIR}/gnuroot/include \ |
102 |
-I${WRKDIR}/openssl-${OPENSSLFULLVER}/include |
103 |
SSP_CFLAGS= |
104 |
LDFLAGS+= -L${WRKDIR}/gnuroot/lib -Wl,-rpath-link=${WRKDIR}/gnuroot/lib |
105 |
HAS_CONFIGURE= yes |
106 |
CONFIGURE_ARGS= --prefix=${PREFIX} --disable-gui --host=${LINUXTRIPLET} \ |
107 |
--libdir=${PREFIX}/lib/makemkv |
108 |
CONFIGURE_ENV= CC=${LINUXTRIPLET}-gcc CXX=${LINUXTRIPLET}-g++ \ |
109 |
CFLAGS="${CFLAGS:N-Wl,-rpath=*}" \ |
110 |
CXXFLAGS="${CXXFLAGS:N-Wl,-rpath=*}" \ |
111 |
LDFLAGS="${LDFLAGS:N-Wl,-rpath=*}" \ |
112 |
PATH=${WRKDIR}/gnuroot/bin:${PATH} \ |
113 |
PKG_CONFIG_PATH=${WRKDIR}/gnuroot/lib/pkgconfig |
114 |
MAKE_ENV= PATH=${WRKDIR}/gnuroot/bin:${PATH} |
115 |
STRIP_CMD= ${WRKDIR}/gnuroot/bin/${LINUXTRIPLET}-strip |
116 |
|
117 |
post-extract: |
118 |
@${MV} -f ${WRKDIR}/gmp-${GMPVERSION} \ |
119 |
${WRKDIR}/gcc-${GCCVERSION}/gmp |
120 |
@${MV} -f ${WRKDIR}/mpfr-${MPFRVERSION} \ |
121 |
${WRKDIR}/gcc-${GCCVERSION}/mpfr |
122 |
@${MV} -f ${WRKDIR}/mpc-${MPCVERSION} \ |
123 |
${WRKDIR}/gcc-${GCCVERSION}/mpc |
124 |
@${MKDIR} ${WRKDIR}/gnuroot/lib |
125 |
@cd ${WRKDIR}/gnuroot/lib; \ |
126 |
${LN} -s ${LINUXLIBDIR}/libz.so.1; \ |
127 |
${LN} -s libz.so.1 libz.so; \ |
128 |
${LN} -s ${LINUXLIBDIR}/libcrypto.so.10; \ |
129 |
${LN} -s libcrypto.so.10 libcrypto.so; \ |
130 |
${LN} -s ${LINUXLIBDIR}/libexpat.so.1; \ |
131 |
${LN} -s libexpat.so.1 libexpat.so |
132 |
@${MKDIR} ${WRKDIR}/gnuroot/include |
133 |
@cd ${WRKDIR}/gnuroot/include; \ |
134 |
${LN} -s /usr/include/zlib.h; \ |
135 |
${LN} -s /usr/include/zconf.h; \ |
136 |
${LN} -s ${LOCALBASE}/include/expat.h; \ |
137 |
${LN} -s ${LOCALBASE}/include/expat_config.h; \ |
138 |
${LN} -s ${LOCALBASE}/include/expat_external.h |
139 |
@${MKDIR} ${WRKDIR}/binutils-build |
140 |
@${MKDIR} ${WRKDIR}/gcc-build |
141 |
@${MKDIR} ${WRKDIR}/glibc-build |
142 |
|
143 |
post-patch: |
144 |
@${REINPLACE_CMD} -e 's:INSTALL) -D:INSTALL):' \ |
145 |
${WRKSRC}/Makefile.in |
146 |
@${REINPLACE_CMD} -e 's:/bin/bash:/bin/sh:' \ |
147 |
-e 's:x86_64:amd64:' \ |
148 |
-e 's:-t \([^ ]*\) \([^ ]*\):\2 \1:' \ |
149 |
${WRKDIR}/makemkv-bin-${PORTVERSION}/Makefile |
150 |
@${REINPLACE_CMD} -e 's:3\.79:4.*:' \ |
151 |
${WRKDIR}/glibc-${GLIBCVERSION}/configure |
152 |
@${REINPLACE_CMD} -e 's:#ifndef __u_char_defined:#if 0:' \ |
153 |
-e 's:#ifndef __daddr_t_defined:#if 0:' \ |
154 |
${WRKDIR}/glibc-${GLIBCVERSION}/sunrpc/rpc/types.h |
155 |
@${REINPLACE_CMD} -e 's:^\([[:space:]]*\)sed :\1gsed :' \ |
156 |
${WRKDIR}/glibc-${GLIBCVERSION}/Makerules |
157 |
|
158 |
pre-configure: |
159 |
# Linux headers |
160 |
cd ${WRKDIR}/linux-${LINUXVERSION}; \ |
161 |
${MAKE_CMD} V=1 HOSTCC=${CC} ARCH=${LINUXARCH} \ |
162 |
INSTALL_HDR_PATH=${GNUCROSSDIR} headers_install; \ |
163 |
# Binutils |
164 |
cd ${WRKDIR}/binutils-build; \ |
165 |
CC=${CC} CXX=${CXX} ../binutils-${BINUTILSVERSION}/configure \ |
166 |
--target=${LINUXTRIPLET} \ |
167 |
--prefix=${WRKDIR}/gnuroot \ |
168 |
--disable-multilib --disable-nls; \ |
169 |
${MAKE_CMD} ${_MAKE_JOBS} && \ |
170 |
${MAKE_CMD} install |
171 |
# GCC compiler |
172 |
cd ${WRKDIR}/gcc-build; \ |
173 |
export PATH=${WRKDIR}/gnuroot/bin:$$PATH; \ |
174 |
CC=${CC} CXX=${CXX} ../gcc-${GCCVERSION}/configure \ |
175 |
--target=${LINUXTRIPLET} \ |
176 |
--prefix=${WRKDIR}/gnuroot \ |
177 |
--enable-languages=c,c++ --disable-multilib; \ |
178 |
${MAKE_CMD} ${_MAKE_JOBS} all-gcc && \ |
179 |
${MAKE_CMD} install-gcc |
180 |
# Glibc headers / startup code |
181 |
cd ${WRKDIR}/glibc-build; \ |
182 |
export PATH=${WRKDIR}/gnuroot/bin:$$PATH; \ |
183 |
export nargs=0; \ |
184 |
BUILD_CC=${CC} CC=${LINUXTRIPLET}-gcc \ |
185 |
../glibc-${GLIBCVERSION}/configure \ |
186 |
--host=${LINUXTRIPLET} \ |
187 |
--prefix=${GNUCROSSDIR} \ |
188 |
--with-binutils=${WRKDIR}/gnuroot/bin \ |
189 |
--with-headers=${GNUCROSSDIR}/include \ |
190 |
--disable-profile --disable-multilib \ |
191 |
--enable-kernel=2.6.32 libc_cv_forced_unwind=yes \ |
192 |
libc_cv_ssp=no; \ |
193 |
${MAKE_CMD} install-bootstrap-headers=yes install-headers; \ |
194 |
${MAKE_CMD} ${_MAKE_JOBS} csu/subdir_lib; \ |
195 |
${INSTALL_DATA} csu/crt1.o csu/crti.o csu/crtn.o \ |
196 |
${GNUCROSSDIR}/lib; \ |
197 |
${LINUXTRIPLET}-gcc -nostdlib -nostartfiles -shared \ |
198 |
-x c /dev/null -o ${GNUCROSSDIR}/lib/libc.so; \ |
199 |
${TOUCH} ${GNUCROSSDIR}/include/gnu/stubs.h |
200 |
# GCC support libs |
201 |
cd ${WRKDIR}/gcc-build; \ |
202 |
export PATH=${WRKDIR}/gnuroot/bin:$$PATH; \ |
203 |
${MAKE_CMD} ${_MAKE_JOBS} all-target-libgcc; \ |
204 |
${MAKE_CMD} install-target-libgcc |
205 |
# Glibc library |
206 |
cd ${WRKDIR}/glibc-build; \ |
207 |
export PATH=${WRKDIR}/gnuroot/bin:$$PATH; \ |
208 |
${MAKE_CMD} ${_MAKE_JOBS}; \ |
209 |
${MAKE_CMD} install |
210 |
# GCC libstdc++ |
211 |
${ECHO_CMD} '#/bin/sh\ntrue' \ |
212 |
>${WRKDIR}/gnuroot/bin/ldconfig |
213 |
${CHMOD} +x ${WRKDIR}/gnuroot/bin/ldconfig |
214 |
cd ${WRKDIR}/gcc-build; \ |
215 |
export PATH=${WRKDIR}/gnuroot/bin:$$PATH; \ |
216 |
${MAKE_CMD} ${_MAKE_JOBS}; \ |
217 |
${MAKE_CMD} install |
218 |
# FDK AAC |
219 |
cd ${WRKDIR}/fdk-aac-${FDKAACVERSION}; \ |
220 |
export PATH=${WRKDIR}/gnuroot/bin:$$PATH; \ |
221 |
export CXXFLAGS="${CFLAGS}"; \ |
222 |
LDFLAGS=-L${WRKDIR}/gnuroot/lib \ |
223 |
./configure --prefix=${WRKDIR}/gnuroot \ |
224 |
--disable-shared --enable-static --with-pic \ |
225 |
--host=${LINUXTRIPLET} --disable-silent-rules; \ |
226 |
${MAKE_CMD} ${_MAKE_JOBS} install |
227 |
# ffmpeg |
228 |
cd ${WRKDIR}/ffmpeg-${FFMPEGVERSION}; \ |
229 |
export PATH=${WRKDIR}/gnuroot/bin:$$PATH; \ |
230 |
export CFLAGS="${CFLAGS}"; \ |
231 |
PKG_CONFIG_PATH=${WRKDIR}/gnuroot/lib/pkgconfig \ |
232 |
CPPFLAGS="-Dcaddr_t=void\* -D__daddr_t_defined" \ |
233 |
LDFLAGS=-L${WRKDIR}/gnuroot/lib \ |
234 |
./configure --prefix=${WRKDIR}/gnuroot \ |
235 |
--disable-shared --enable-static --enable-pic \ |
236 |
--enable-libfdk-aac --pkg-config=pkg-config \ |
237 |
--cross-prefix=${LINUXTRIPLET}- --arch=${LINUXARCH} \ |
238 |
--target-os=linux --host-cc=${CC}; \ |
239 |
CFLAGS="${CFLAGS}" \ |
240 |
${MAKE_CMD} ${_MAKE_JOBS} V=1 ARCH=x86 all install |
241 |
# OpenSSL headers |
242 |
cd ${WRKDIR}/openssl-${OPENSSLFULLVER}; \ |
243 |
./Configure --openssldir= --prefix=/usr ${OPENSSLTARGET} |
244 |
|
245 |
pre-install: |
246 |
${MKDIR} ${STAGEDIR}${PREFIX}/lib/makemkv |
247 |
|
248 |
post-install: |
249 |
${INSTALL_MAN} ${FILESDIR}/makemkvcon.1 \ |
250 |
${STAGEDIR}${PREFIX}/man/man1 |
251 |
${INSTALL_LIB} ${GNUCROSSLIBDIR}/libstdc++.so.6 \ |
252 |
${STAGEDIR}${PREFIX}/lib/makemkv |
253 |
cd ${WRKDIR}/makemkv-bin-${PORTVERSION}; \ |
254 |
${MKDIR} tmp; \ |
255 |
${ECHO_CMD} accepted > tmp/eula_accepted; \ |
256 |
${MAKE_CMD} DESTDIR=${STAGEDIR} PREFIX=${PREFIX} install |
257 |
${PATCHELF_CMD} --set-rpath ${PREFIX}/lib/makemkv \ |
258 |
${STAGEDIR}${PREFIX}/bin/makemkvcon |
259 |
${REINPLACE_CMD} -e 's:/sys/bus/scsi:/etc/makemkv/:' \ |
260 |
${STAGEDIR}${PREFIX}/bin/makemkvcon |
261 |
${INSTALL_SCRIPT} ${WRKDIR}/update-makemkv-drives \ |
262 |
${STAGEDIR}${PREFIX}/sbin |
263 |
|
264 |
.include <bsd.port.mk> |