aboutsummaryrefslogblamecommitdiff
path: root/devel/gcc-msp430-ti-toolchain/Makefile
blob: 48486211a35a529075cab0ba5066e1148151c53d (plain) (tree)
1
2
3
4
5
6
7
8
9
                                       
                                             
                 
                     
                                                         



                                                       
                                                                                                                           

                                                                                                                             
                                                   
                                                               
                                               
                                                        


                                                                               
                                               
                                                      
                                           
                                                 
                                                                       
                                                               
 





                                                             
                                      




                                      

                                                
 

                                                                         
                     
 
                           
 



                               

                            
                             
                                
                            
                                
                                  


                   
                                  
 
                         

                                                        
                                                             
                                                                   
 
                                                                        
 





                                                                              






                                                          

                                       





                                                    


                                                         
                                                 
                                                                                                                           

                                                       
                                               


                                                                                                                                         
                                              
                                                                                                                               

                                                   
                                                                                                                                     
 
             
                                    
                                                                                                       
       



                                   

         

















































                                                                                                                       




















                                                                                                                   
           
                                                                                                          

                                                    
                                                    

                                              
                                                       

                                                                     
                                              
                                                  
                                 
                                                                             

                                                       


                                                                                   
 
                      
PORTNAME=	gcc-msp430-ti-toolchain
PORTVERSION=	${TI_VERSION}.${RELEASE_DATE}
PORTREVISION=	0
CATEGORIES=	devel
MASTER_SITES=	GCC/releases/gcc-${GCC_REL_VERSION}:gcc \
		SOURCEWARE/binutils/releases:binutils \
		ftp://sources.redhat.com/pub/:newlib \
		GNU/gdb:gdb \
		SOURCEWARE/newlib:newlib \
		http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPGCC/${TI_VERSION:S/./_/g}/export/:tipatch \
		http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSPGCC/${TI_VERSION:S/./_/g}/export/:tisupport \
		http://www.ti.com/lit/ug/slau${DOC_VERSION}/:tidocs
DISTFILES=	gcc-${GCC_REL_VERSION}.tar.xz:gcc \
		binutils-${BINUTILS_VERSION}.tar.bz2:binutils \
		gdb-${GDB_VERSION}.tar.xz:gdb \
		newlib-${NEWLIB_VERSION}.tar.gz:newlib \
		msp430-gcc-${PATCHSET_VERSION}-source-patches.tar.bz2:tipatch \
		msp430-gcc-support-files-${SUPPORT_VERSION}.zip:tisupport \
		slau${DOC_VERSION}.pdf:tidocs
EXTRACT_ONLY=	gcc-${GCC_REL_VERSION}.tar.xz \
		binutils-${BINUTILS_VERSION}.tar.bz2 \
		gdb-${GDB_VERSION}.tar.xz \
		newlib-${NEWLIB_VERSION}.tar.gz \
		msp430-gcc-${PATCHSET_VERSION}-source-patches.tar.bz2 \
		msp430-gcc-support-files-${SUPPORT_VERSION}.zip

MAINTAINER=	lev@FreeBSD.org
COMMENT=	Complete gcc-based toolcahin for TI MSP430 uC

LICENSE=	GPLv2 LGPL20 LGPL21 GPLv3 LGPL3
LICENSE_COMB=	multi

BUILD_DEPENDS=	objdump:devel/binutils
LIB_DEPENDS=	libgmp.so:math/gmp \
		libmpfr.so:math/mpfr \
		libmpc.so:math/mpc \
		libisl.so:devel/isl

# Akami tarpitting fetch by user agent
FETCH_BEFORE_ARGS=	--user-agent=Wget/1.20.3

USES=		bison compiler cpe gmake iconv libtool makeinfo ncurses \
		tar:bzip2
USE_CSTD=	gnu89

GNU_CONFIGURE=		yes

TI_VERSION=		9.3.1.2
GCC_REL_VERSION=	9.3.0
GCC_VERSION=		9.3.1
SUPPORT_VERSION=	1.212
BINUTILS_VERSION=	2.34
GDB_VERSION=		9.1
NEWLIB_VERSION=		2.4.0
PATCHSET_VERSION=	9.3.1.11
DOC_VERSION=		646f
RELEASE_DATE=		20210722
TARGET=			msp430-elf

CPE_PRODUCT=	gcc
CPE_VENDOR=	gnu
CPE_VERSION=	${GCC_REL_VERSION}

PATCH_WRKSRC=	${WRKDIR}
MANPREFIX=	${PREFIX}/${PORTNAME}-${TI_VERSION}
DOCSDIR=	${PREFIX}/${PORTNAME}-${TI_VERSION}/docs
PLIST_SUB+=	TARGET=${TARGET} GCC_VERSION=${GCC_VERSION} \
		TI_VERSION=${TI_VERSION} DOC_VERSION=${DOC_VERSION}

DIST_PATCH_ARGS=--forward --force --quiet --remove-empty-files --strip=0

UNNEEDED_HOST_FILES=	lib/lib${TARGET}-sim.a
UNNEEDED_HOST_DIRS=	lib/gcc/${TARGET}/${GCC_VERSION}/plugin/include/ada \
			lib/gcc/${TARGET}/${GCC_VERSION}/plugin/include/java \
			lib/gcc/${TARGET}/${GCC_VERSION}/plugin/include/objc \
			include info man share

BUILD_DIR=	${WRKDIR}/build
INTERIM_WORLD=	${WRKDIR}/install
INTERIM_PREFIX=	${INTERIM_WORLD}/${PORTNAME}-${TI_VERSION}

MAKE_ENV=	PATH="${PATH}:${INTERIM_PREFIX}/bin"
CONFIGURE_ENV=	PATH="${PATH}:${INTERIM_PREFIX}/bin"

GCC_DIRS_FROM_NEWLIB=	libgloss newlib

CONFIGURE_ARGS_COMMON=	--prefix=${INTERIM_PREFIX} \
			--target=msp430-elf \
			--enable-languages=c,c++ \
			--disable-nls \
			--enable-initfini-array

pre-patch:
	@${ECHO_MSG} "===> Apply distribution patches..."
	@${ECHO_MSG} "====> Patch gcc"
	@cd ${WRKDIR}/gcc-${GCC_REL_VERSION} && \
	 ${PATCH} ${DIST_PATCH_ARGS} < ${WRKDIR}/msp430-gcc-${PATCHSET_VERSION}-source-patches/gcc-${GCC_REL_VERSION}.patch
	@${ECHO_MSG} "====> Patch binutils"
	@cd ${WRKDIR}/binutils-${BINUTILS_VERSION} && \
	 ${MKDIR} sim/testsuite/sim/msp430 && \
	 ${PATCH} ${DIST_PATCH_ARGS} < ${WRKDIR}/msp430-gcc-${PATCHSET_VERSION}-source-patches/binutils-${BINUTILS_VERSION:S/./_/g}.patch
	@${ECHO_MSG} "====> Patch gdb"
	@cd ${WRKDIR}/gdb-${GDB_VERSION} && \
	 ${MKDIR} gas/config ld/emultempl && \
	 ${PATCH} ${DIST_PATCH_ARGS} < ${WRKDIR}/msp430-gcc-${PATCHSET_VERSION}-source-patches/gdb-${GDB_VERSION}-release.patch
	@${ECHO_MSG} "====> Patch newlib"
	@cd ${WRKDIR}/newlib-${NEWLIB_VERSION} && \
	 ${PATCH} ${DIST_PATCH_ARGS} < ${WRKDIR}/msp430-gcc-${PATCHSET_VERSION}-source-patches/newlib-${NEWLIB_VERSION:S/./_/g}.patch

do-configure:
.for _DIR in ${GCC_DIRS_FROM_NEWLIB}
	@${LN} -fns ${WRKDIR}/newlib-${NEWLIB_VERSION}/${_DIR} ${WRKDIR}/gcc-${GCC_REL_VERSION}/${_DIR}
.endfor
	@${RM} -r ${BUILD_DIR}
	@${MKDIR} ${BUILD_DIR}
	@${RM} -r ${INTERIM_PREFIX}
	@${MKDIR} ${INTERIM_PREFIX}

do-build:
# Build & install binutils
	${MKDIR} ${BUILD_DIR}/binutils
	@cd ${BUILD_DIR}/binutils && \
		${MAKE_ENV} ${CONFIGURE_ENV} ${WRKDIR}/binutils-${BINUTILS_VERSION}/configure \
		 ${CONFIGURE_ARGS_COMMON} \
		 --disable-sim \
		 --disable-gdb \
		 --disable-werror \
		 --with-pkgversion="FreeBSD Ports Collection" \
	         --with-system-zlib
	@cd ${BUILD_DIR}/binutils && \
		${DO_MAKE_BUILD}
	@cd ${BUILD_DIR}/binutils && \
		${SETENV} ${MAKE_ENV} ${FAKEROOT} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} install DESTDIR=''
# Build & install gcc & newlib
	@${MKDIR} ${BUILD_DIR}/gcc
	@cd ${BUILD_DIR}/gcc && \
		${MAKE_ENV} ${CONFIGURE_ENV} ${WRKDIR}/gcc-${GCC_REL_VERSION}/configure \
		 ${CONFIGURE_ARGS_COMMON} \
		 --enable-target-optspace \
		 --enable-newlib-nano-formatted-io \
		 --with-gmp=${PREFIX} \
		 --with-mprf=${PREFIX} \
		 --with-mpc=${PREFIX} \
		 --with-isl=${PREFIX} \
		 --with-pkgversion="FreeBSD Ports Collection" \
		 --with-system-zlib
	@cd ${BUILD_DIR}/gcc && \
		${DO_MAKE_BUILD}
	@cd ${BUILD_DIR}/gcc && \
		${SETENV} ${MAKE_ENV} ${FAKEROOT} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} install DESTDIR=''
# Build & install gdb
	@${MKDIR} ${BUILD_DIR}/gdb
	@cd ${BUILD_DIR}/gdb && \
		${MAKE_ENV} ${CONFIGURE_ENV} ${WRKDIR}/gdb-${GDB_VERSION}/configure \
		 ${CONFIGURE_ARGS_COMMON} \
		 --disable-binutils \
		 --disable-gas \
		 --disable-ld \
		 --disable-gprof \
		 --disable-etc \
		 --without-mpfr \
		 --without-lzma \
		 --with-python=no \
		 --with-pkgversion="FreeBSD Ports Collection" \
		 --with-system-zlib
	@cd ${BUILD_DIR}/gdb && \
		${DO_MAKE_BUILD}
	@cd ${BUILD_DIR}/gdb && \
		${SETENV} ${MAKE_ENV} ${FAKEROOT} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} install DESTDIR=''
# Strip binaries
.if !defined(DEBUG)
	@for bin in $$(${FIND} ${INTERIM_PREFIX}/bin -type f -name ${TARGET}-\*) ; do \
		if ! ${FILE} $$bin | ${GREP} -qs ': ELF' ; then continue ; fi ; \
		${STRIP_CMD} $${bin} ; \
	done
	@for bin in $$(${FIND} ${INTERIM_PREFIX}/${TARGET}/bin -type f -maxdepth 1 -mindepth 1) ; do \
		if ! ${FILE} $$bin | ${GREP} -qs ': ELF' ; then continue ; fi ; \
		${STRIP_CMD} $${bin} ; \
	done
	@for bin in $$(${FIND} ${INTERIM_PREFIX}/libexec/gcc/${TARGET}/${GCC_VERSION} -type f) ; do \
		if ! ${FILE} $$bin | ${GREP} -qs ': ELF' ; then continue ; fi ; \
		${STRIP_CMD} $${bin} ; \
	done
	@${STRIP_CMD} ${INTERIM_PREFIX}/lib/libcc1.so.0
	@for bin in $$(${FIND} ${INTERIM_PREFIX}/lib/gcc/${TARGET}/${GCC_VERSION} -perm +111 -and ! -type d) ; do \
		if ! ${FILE} $$bin | ${GREP} -qs ': ELF' ; then continue ; fi ; \
		${STRIP_CMD} $${bin} ; \
	done
.endif
		
do-install:
	@${TAR} -cf - -C ${INTERIM_WORLD} ${PORTNAME}-${TI_VERSION} | ${TAR} -xf - -C ${STAGEDIR}${PREFIX}
	@${ECHO_MSG} "Remove unneeded host files..."
	@for f in ${UNNEEDED_HOST_FILES} ; do \
		${RM} "${STAGEDIR}${PREFIX}/$$f" ; \
	done
	@for f in ${UNNEEDED_HOST_DIRS} ; do \
		${RM} -r "${STAGEDIR}${PREFIX}/$$f" ; \
	done
	@${ECHO_MSG} "Install devices' headers and linker scripts..."
	@${MKDIR} ${STAGEDIR}${PREFIX}/include
	cd ${WRKDIR}/msp430-gcc-support-files && \
		${TAR} cf - . | \
		${TAR} xf - -C ${STAGEDIR}${PREFIX}/${PORTNAME}-${TI_VERSION}
	@${ECHO_MSG} "Install minimal documentation..."
	@${MKDIR} ${STAGEDIR}${DOCSDIR}
	${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/slau${DOC_VERSION}.pdf \
		${STAGEDIR}${DOCSDIR}/slau${DOC_VERSION}.pdf
	${INSTALL_DATA} ${FILESDIR}/watchdog.txt ${STAGEDIR}${DOCSDIR}/watchdog.txt

.include <bsd.port.mk>