summaryrefslogtreecommitdiff
path: root/cad/mex-wcalc/Makefile
blob: 41c8ad3cee166fe183895aa41be1ba24b07b45a0 (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
# $NetBSD: Makefile,v 1.12 2019/06/08 11:04:29 rillig Exp $
#

.include "../../cad/wcalc/Makefile.common"
PKGNAME=	mex-${DISTNAME}
PKGREVISION=	2

COMMENT=	Matlab Based Transmission Line Analysis/Synthesis Calculator

# Only enable the matlab frontend
CONFIGURE_ARGS+=	--disable-cgi
CONFIGURE_ARGS+=	--disable-gtk1
CONFIGURE_ARGS+=	--disable-gtk2
CONFIGURE_ARGS+=	--disable-htdocs
CONFIGURE_ARGS+=	--disable-libwcalc
CONFIGURE_ARGS+=	--disable-stdio
CONFIGURE_ARGS+=	--with-matlab
CONFIGURE_ARGS+=	--without-octave
CONFIGURE_ARGS+=	--without-scilab

SUBST_CLASSES+=		mwc
SUBST_STAGE.mwc=	pre-configure
SUBST_FILES.mwc=	mex-wcalc/mexopts.sh.in
SUBST_SED.mwc=		-e 's;\.\./libwcalc;${BUILDLINK_DIR}/lib;g'

# This depends on an installation of Matlab which pkgsrc does
# not have.  We should find a sane way to deal with this.  It is
# not clear if linux/solaris matlab users care to use pkgsrc
# to manage its installation or if it will always be installed
# outside of pkgsrc.

# In addition, mex-wcalc will not currently build correctly
# if you are using a non-native matlab (i.e. linux or solaris
# matlab on NetBSD).
#
# To get mex-wcalc to work under emulation you need to set up
# a cross-tool chain, build a libwcalc targeted to the same
# system as the matlab installation, and modify the mexopts.sh
# file in ${WRKSRC}/mex-wcalc to use this cross tool chain.
# Basically what it comes down to is you need to compile shared
# modules for the same os as the matlab binary.
#
ONLY_FOR_PLATFORM=	Linux-*-i386 SunOS-*-sparc*

.include "../../mk/bsd.prefs.mk"

DEF_MATLAB_ARCH=	unknown
DEF_MATLAB_MEX=		mex
DEF_MEX_SUFX=		unknown
.if ${OPSYS} == "Linux"
.  if (${MACHINE_ARCH} == "i386")
DEF_MATLAB_ARCH=	glnx86
DEF_MEX_SUFX=		mexglx
.  endif
.elif ${OPSYS} == "SunOS"
.  if (${MACHINE_ARCH} == "sparc")
DEF_MATLAB_ARCH=	sol2
DEF_MEX_SUFX=		mexsol
.  endif
.endif
MATLAB_ARCH?=		${DEF_MATLAB_ARCH}
MEX_SUFX?=		${DEF_MEX_SUFX}

MATLAB_MEX?=		${DEF_MATLAB_MEX}

PLIST_SUBST+=		MEX_SUFX=${MEX_SUFX:Q}

.if !defined(MATLAB_DIR)
MATLAB_DIR!=								\
	case ${MATLAB_MEX:Q}"" in					\
	/*)	matlab_mex=${MATLAB_MEX:Q} ;;				\
	*)	SAVEIFS="$$IFS"; IFS=:;					\
		for p in $$PATH; do					\
			${TEST} ! -x $$p/${MATLAB_MEX} ||		\
				matlab_mex=$$p/${MATLAB_MEX};		\
		done;							\
		IFS="$$SAVEIFS";					\
		;;							\
	esac;								\
	if ${TEST} -z "$$matlab_mex"; then				\
		${ECHO} "MATLAB_DIR_not_set";				\
	else								\
		$$matlab_mex -v 2>/dev/null |				\
		${AWK} 'BEGIN { s = "MATLAB_DIR_not_set" }		\
			/[ \t]MATLAB[ \t]/ { s = $$NF }			\
			END { print s }';				\
	fi
.  if empty(MATLAB_DIR:M*not_set)
MAKEVARS+=	MATLAB_DIR
.  endif
.endif

BUILDLINK_PASSTHRU_DIRS+=	${MATLAB_DIR}/extern/include
BUILDLINK_PASSTHRU_DIRS+=	${MATLAB_DIR}/simulink/include
BUILDLINK_PASSTHRU_DIRS+=	${MATLAB_DIR}/bin/${MATLAB_ARCH}

.include "../../cad/libwcalc/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"