summaryrefslogtreecommitdiff
path: root/devel/arduino/Makefile
blob: 62a64393a8f6416f576b13dbee8a5107c2546409 (plain) (blame)
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
128
129
130
# Created by: Warren Block <wblock@wonkity.com>
# $FreeBSD$

PORTNAME=	arduino
PORTVERSION=	1.0.6
PORTREVISION=	2
PORTEPOCH=	1
CATEGORIES=	devel java lang
MASTER_SITES=	https://arduino.cc/download.php?f=/
DISTNAME=	${PORTNAME}-${PORTVERSION}-linux32

MAINTAINER=	leres@FreeBSD.org
COMMENT=	Open-source electronics prototyping platform

LICENSE=	GPLv2 LGPL21
LICENSE_COMB=	multi

RUN_DEPENDS=	${JAVA_HOME}/jre/lib/ext/RXTXcomm.jar:comms/rxtx \
		${LOCALBASE}/bin/avrdude:devel/avrdude \
		${LOCALBASE}/avr/include/avr/io.h:devel/avr-libc

WRKSRC=		${WRKDIR}/${PORTNAME}-${PORTVERSION}
USES=		dos2unix tar:tgz kmod
DOS2UNIX_REGEX=	.*(\.(c|cpp|h|hex|txt)|Makefile|makefile)

USE_JAVA=	yes
JAVA_OS=	native
JAVA_VENDOR=	openjdk
JAVA_RUN=	yes

NO_BUILD=	yes
USE_LDCONFIG=	${PREFIX}/arduino/lib

PLIST_SUB=	ARCH=${ARCH:S|i386||:S|amd64|64|}

SUB_FILES=	arduino pkg-message
SUB_LIST=	PORTNAME=${PORTNAME} LINUXBASE=${PREFIX}

# Confirmed for ARCHS below. Arm, PowerPC and Sparc untested. (Feedback welcome)
ONLY_FOR_ARCHS=	i386 amd64

REINPLACE_ARGS=	-i ""

DESKTOP_ENTRIES=	"Arduino" "Arduino IDE" \
			${PREFIX}/${PORTNAME}/logo.png \
			"arduino" "Development;IDE;" false

OPTIONS_DEFINE=		ATMEGA644P DOCS EXAMPLES UARDUNO
ATMEGA644P_DESC=	ATmega644p patches
DOCS_DESC=		Install the reference documents
UARDUNO_DESC=		Kernel module for Arduino Uno USB interface

INSLIST=	arduino hardware lib libraries logo.png revisions.txt tools

# Add serial drivers for those who are new to this.
UARDUNO_RUN_DEPENDS+=	${KMODDIR}/uarduno.ko:comms/uarduno

.include <bsd.port.options.mk>

.if ${PORT_OPTIONS:MATMEGA644P}
EXTRA_PATCHES+=	\
	${FILESDIR}/extrapatch-hardware-arduino-boards.txt \
	${FILESDIR}/extrapatch-hardware-arduino-cores-arduino-WInterrupts.c \
	${FILESDIR}/extrapatch-hardware-arduino-variants-atmega644p-pins_arduino.h
.endif

.if empty(PORT_OPTIONS:MDOCS)
PLIST_SUB+=	REFDOCS="@comment "
.else
PLIST_SUB+=	REFDOCS=""
INSLIST+=	reference
.endif

FIND_EXCLUDES=	! -name *.orig

.if empty(PORT_OPTIONS:MEXAMPLES)
PLIST_SUB+=	EXAMPLES="@comment "
FIND_EXCLUDES+=	! -path */examples ! -path */examples/*
.else
PLIST_SUB+=	EXAMPLES=""
INSLIST+=	examples
.endif

FIND_EXPR=	"${FIND_EXCLUDES} -prune"

.if ${PORT_OPTIONS:MATMEGA644P}
PLIST_SUB+=	ATMEGA644P=""
.else
PLIST_SUB+=	ATMEGA644P="@comment "
.endif

.if ${PORT_OPTIONS:MATMEGA644P}
pre-patch:
	@${MKDIR} ${WRKSRC}/hardware/arduino/variants/atmega644p
.endif

post-patch:
	@${RM} -r ${WRKSRC}/hardware/tools/
	@${MKDIR} ${WRKSRC}/hardware/tools/avr/
	@${LN} -s ${PREFIX}/bin ${WRKSRC}/hardware/tools/avr/bin
	@${LN} -s ${PREFIX}/etc ${WRKSRC}/hardware/tools/avr/etc

	# Remove broken jar, and Linux C6 based libraries.
	@${RM} ${WRKSRC}/lib/RXTXcomm.jar

	# This port relys on comms/RXTX working without Linux C6 compatibility.
	@${RM} ${WRKSRC}/lib/librxtxSerial.so
	@${RM} ${WRKSRC}/lib/librxtxSerial64.so

	# Map the RXTX port for our use
	@${LN} -s ${JAVA_HOME}/jre/lib/ext/RXTXcomm.jar ${WRKSRC}/lib/RXTXcomm.jar

# Add in links to the libraries compiled in RXTX for the above jar to use based on architecture.
.if ${ARCH} == i386
	@${LN} -s ${JAVA_HOME}/jre/lib/i386/librxtxSerial.so ${WRKSRC}/lib/librxtxSerial.so
.endif

.if ${ARCH} == amd64
	@${LN} -s ${JAVA_HOME}/jre/lib/amd64/librxtxSerial.so ${WRKSRC}/lib/librxtxSerial64.so
.endif

	@${MV} ${WRKSRC}/reference/img/logo.png ${WRKSRC}/
	@${RM} -r ${WRKSRC}/reference/img/

do-install:
	${MKDIR} ${STAGEDIR}${PREFIX}/${PORTNAME}
	(cd ${WRKSRC}/ && ${COPYTREE_SHARE} "${INSLIST}" ${STAGEDIR}${PREFIX}/${PORTNAME} ${FIND_EXPR})
	${INSTALL_SCRIPT} ${WRKDIR}/arduino ${STAGEDIR}${PREFIX}/bin/

.include <bsd.port.mk>