aboutsummaryrefslogtreecommitdiff
path: root/devel/simavr/Makefile
blob: 19815d8083a873b21be60f57587d1a2b5d9bb99e (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
PORTNAME=	simavr
PORTVERSION=	1.7
DISTVERSIONPREFIX=	v
PORTREVISION=	2
CATEGORIES=	devel emulators

MAINTAINER=	felix@palmen-it.de
COMMENT=	Simulator for several Atmel AVR chips

LICENSE=	GPLv3

BUILD_DEPENDS=	avr-gcc:devel/avr-gcc \
		bash:shells/bash \
		${LOCALBASE}/avr/lib/libc.a:devel/avr-libc

USES=		compiler:c11 gl gmake pathfix pkgconfig xorg
USE_GL=	gl glu glut
PATHFIX_MAKEFILEIN=	Makefile
USE_XORG=	xdamage xcb xext xfixes xrandr
USE_GITHUB=	yes
GH_ACCOUNT=	buserror
USE_LDCONFIG=	yes

ALL_TARGET=	build-parts
DESTDIRNAME=	DUMMYDESTDIR
		# Avoid default DESTDIR handling, so we can set a custom
		# one that includes PREFIX, as required by unusual upstream
		# install targets
MAKE_ARGS=	RELEASE=1 PREFIX=${PREFIX} DESTDIR=${STAGEDIR}${PREFIX}
MAKE_ENV=	SIMAVR_VERSION=v${PORTVERSION}

OPTIONS_DEFINE=		DOCS EXAMPLES

AVR_STRIP_CMD?=	avr-strip
DUMPMACHINE=	${CC} -dumpmachine
OBJDIRNAME=	obj-$$(${DUMPMACHINE})

post-patch:
	${REINPLACE_CMD} -e 's:Linux:FreeBSD:' \
		-e 's:unknown:v${PORTVERSION}:' \
		${WRKSRC}/simavr/Makefile \
		${WRKSRC}/examples/parts/Makefile

post-install:
	${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/simavr
	${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libsimavr.so.1
	${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libsimavrparts.so.1

post-install-DOCS-on:
	${MKDIR} ${STAGEDIR}${DOCSDIR}
	${INSTALL_DATA} ${WRKSRC}/doc/manual/manual.pdf ${STAGEDIR}${DOCSDIR}
	${INSTALL_DATA} ${WRKSRC}/doc/simavr_callgraph.pdf ${STAGEDIR}${DOCSDIR}

post-install-EXAMPLES-on:
.for BOARDELF in ds1338,ds1338demo hd44780,charlcd i2ctest ledramp rotenc,rotenc_test simduino ssd1306,ssd1306demo timer_64led
	BOARDELF=${BOARDELF}; \
	BOARD=$${BOARDELF%%,*}; \
	ELF=$${BOARDELF##*,}; \
	${MKDIR} ${STAGEDIR}${EXAMPLESDIR}/board_$${BOARD}; \
	${INSTALL_PROGRAM} \
		${WRKSRC}/examples/board_$${BOARD}/${OBJDIRNAME}/$${ELF}.elf \
		${STAGEDIR}${EXAMPLESDIR}/board_$${BOARD}/$${ELF}; \
	${INSTALL_DATA} ${WRKSRC}/examples/board_$${BOARD}/*.[aihc]* \
			${WRKSRC}/examples/board_$${BOARD}/Makefile \
			${STAGEDIR}${EXAMPLESDIR}/board_$${BOARD}/;\
	${TEST} -f ${WRKSRC}/examples/board_$${BOARD}/README && \
	${INSTALL_DATA} ${WRKSRC}/examples/board_$${BOARD}/README \
			${STAGEDIR}${EXAMPLESDIR}/board_$${BOARD}/ || ${TRUE}
.endfor
.for AXF in \
		ds1338/atmega32_ds1338 \
		hd44780/atmega48_charlcd \
		i2ctest/atmega1280_i2ctest \
		ledramp/atmega48_ledramp \
		rotenc/atmega32_rotenc_test \
		ssd1306/atmega32_ssd1306 \
		timer_64led/atmega168_timer_64led
	${AVR_STRIP_CMD} ${STAGEDIR}${EXAMPLESDIR}/board_${AXF}.axf
.endfor
.for EXDIR in parts shared
	${MKDIR} ${STAGEDIR}${EXAMPLESDIR}/${EXDIR}
	${INSTALL_DATA} ${WRKSRC}/examples/${EXDIR}/*.[hc] \
			${STAGEDIR}${EXAMPLESDIR}/${EXDIR}
.endfor
	${INSTALL_DATA} ${WRKSRC}/Makefile.common ${STAGEDIR}${EXAMPLESDIR}
	${INSTALL_DATA} ${WRKSRC}/examples/Makefile ${STAGEDIR}${EXAMPLESDIR}
	${INSTALL_DATA} ${WRKSRC}/examples/Makefile.opengl \
			${STAGEDIR}${EXAMPLESDIR}

.include <bsd.port.mk>