summaryrefslogblamecommitdiff
path: root/lang/mlton/Makefile
blob: 060792021865100841bc0efa7323053484445529 (plain) (tree)
1
2
3
4
5
6
7
8
9
                                               
           






                                                                     
                        
                  
                    
                                                              
                                                                  
                                              


                                        
                                                              
                                               
                                               
 
                                           
                                            
                                            
 

                      


                                                          
 
                   
                              
 
                         
                                                
                                                    
                           


                               
      
 
                                     
 
                          


                                                                 
                           

                                    
                            
      

                                                                                        
                                                  

      
                            

                                                           
                                                                                 
                                                           
                                                                                 




                                        


                    
                                                              



                                         




                                                                     

                     
      
 



                          



                       
                        

             
                                                         
                          







                                                               

                                                                            
      
 

                              

                                                                                               
                              
















                                                       
 
           
                            



                                                       
             
                                                






                                                                     

                                                      
                         




                                                            
                      
# Created by: Stephen Weeks <sweeks@sweeks.com>
# $FreeBSD$

# Because MLton is written in SML, it needs an SML compiler to build.
# It is easiest to use another (earlier) binary version of MLton as
# the SML compiler.  So, this Makefile fetches and installs an
# alread-built version of MLton, BOOT_DIST, to use for bootstrapping.

PORTNAME=	mlton
PORTVERSION=	20070826
PORTREVISION=	10
CATEGORIES=	lang
MASTER_SITES=	http://mlton.org/pages/Download/attachments/ \
		http://mlton.org/pages/Experimental/attachments/ \
		http://www.tbrk.org/distfiles/
DISTFILES=	${BOOT_DIST} ${SRC_DIST}
EXTRACT_ONLY=	${SRC_DIST}

# Other maintainer is Geoffrey Mainland (mainland@apeiron.net)
MAINTAINER=	jesper.louis.andersen@gmail.com
COMMENT=	Optimizing Standard ML compiler

LIB_DEPENDS=	gmp.10:${PORTSDIR}/math/gmp
RUN_DEPENDS=	bash:${PORTSDIR}/shells/bash
BUILD_DEPENDS=	bash:${PORTSDIR}/shells/bash

BROKEN=	Does not build

OPTIONS_DEFINE=	SMLNJ MINGW32
SMLNJ_DESC=	Bootstrap with SML/NJ (can take >15 hours)
MINGW32_DESC=	Add the mingw32 target (requires wine)

NO_STAGE=	yes
.include <bsd.port.options.mk>

.if ${PORT_OPTIONS:MDOCS}
BUILD_DEPENDS+=	gsed:${PORTSDIR}/textproc/gsed \
		htmldoc:${PORTSDIR}/textproc/htmldoc
USE_TEX=	latex:build
.else
INSTALL_TARGET=	install-no-docs
ALL_TARGET=	all-no-docs
.endif

SRC_DIST=	${DISTNAME}-1.src.tgz

.if ${PORT_OPTIONS:MSMLNJ}
BUILD_DEPENDS+=	smlnj-devel>=110.65:${PORTSDIR}/lang/sml-nj-devel
BOOT_DIST=
MAKE_ENV+=	SMLNJ_DEVEL=yes
.if ! ${PORT_OPTIONS:MDOCS}
ALL_TARGET=	nj-mlton all-no-docs
.else
ALL_TARGET=	bootstrap-nj
.endif
.else
BOOT_DIST=	${PORTNAME}-${BOOT_VER}-1.${MACHINE_ARCH}-freebsd${OSRELMAJ}.${BOOT_SUF}
MAKE_ENV+=	LD_LIBMAP=libgmp.so.7=libgmp.so.10
.endif

.if ${PORT_OPTIONS:MMINGW32}
BUILD_DEPENDS+=	wine:${PORTSDIR}/emulators/wine \
		mingw32-gcc:${PORTSDIR}/devel/mingw32-gcc \
		${LOCALBASE}/mingw32/lib/libgmp.a:${PORTSDIR}/math/mingw32-libgmp
RUN_DEPENDS+=	mingw32-gcc:${PORTSDIR}/devel/mingw32-gcc \
		${LOCALBASE}/mingw32/lib/libgmp.a:${PORTSDIR}/math/mingw32-libgmp

PLIST_SUB+=	MINGW32CROSS=""
.else
PLIST_SUB+=	MINGW32CROSS="@comment "
.endif

ONLY_FOR_ARCHS=	i386

MAN1=		mllex.1 mlprof.1 mlton.1 mlyacc.1 mlnlffigen.1
MANCOMPRESSED=	yes

BOOT_WRKSRC=	${WRKDIR}/mlton-bootstrap

USE_GMAKE=	yes
MAKE_ARGS=	DESTDIR='' \
		PATH=${WRKSRC}/build/bin:${BOOT_WRKSRC}/bin:${PATH} \
		PREFIX=${PREFIX}

.if ${ARCH} == "i386"
MLTON_ARCH=	"x86"
.endif

.if ${OSVERSION} >= 700000
OSRELMAJ=
.else
OSRELMAJ=	-6
.endif

BOOT_EXTRACT=	--bzip2
BOOT_SUF=	tbz
BOOT_VER=	20070826

post-extract:
	@${CP} ${FILESDIR}/add-local-cross ${WRKSRC}/bin/
.if ${PORT_OPTIONS:MSMLNJ}
	@${CP} ${FILESDIR}/upgrade-basis.sml ${WRKSRC}/mlton/
	@for f in `ls ${FILESDIR}/ml.* ${FILESDIR}/mlb.*`; do \
		${CP} $$f ${WRKSRC}/mlton/front-end/; \
	done
	@for f in `ls ${FILESDIR}/yacc.*`; do \
		${CP} $$f ${WRKSRC}/mlyacc/src/; \
	done
.else
	@${MKDIR} ${BOOT_WRKSRC}
	@${TAR} xf ${DISTDIR}/${BOOT_DIST} ${BOOT_EXTRACT} -C ${BOOT_WRKSRC}
.endif

post-patch:
	@${REINPLACE_CMD} -e \
		"s|/usr/local/lib/mlton|${BOOT_WRKSRC}/lib/mlton|;s|/usr/local|${LOCALBASE}|" \
		${BOOT_WRKSRC}/bin/mlton
	@${REINPLACE_CMD} -e \
		"s|/usr/local|${LOCALBASE}|" \
		${WRKSRC}/runtime/Makefile \
		${WRKSRC}/runtime/bytecode/Makefile \
		${WRKSRC}/runtime/cenv.h \
		${WRKSRC}/bin/add-cross \
		${WRKSRC}/bin/add-local-cross \
		${WRKSRC}/bin/regression \
		${WRKSRC}/bin/mlton-script \
		${WRKSRC}/doc/guide/PortingMLton \
		${WRKSRC}/doc/guide/SelfCompiling \
		${WRKSRC}/doc/guide/Installation \
		${WRKSRC}/regression/parse.sml \
		${BOOT_WRKSRC}/lib/mlton/include/cenv.h
	@${RM} \
		${WRKSRC}/doc/guide/PortingMLton.bak \
		${WRKSRC}/doc/guide/SelfCompiling.bak \
		${WRKSRC}/doc/guide/Installation.bak

post-build:
.if ${PORT_OPTIONS:MMINGW32}
	@${ECHO} Adding mingw32 target...
	${WRKSRC}/bin/add-local-cross mingw32 x86 mingw
.endif

post-install:
.for bin in mllex mlnlffigen mlprof mlton mlyacc
	${CHOWN} ${SHAREOWN}:${SHAREGRP} ${PREFIX}/bin/${bin}	\
		${MAN1PREFIX}/man/man1/${bin}.1.gz
	${CHMOD} a+rx ${PREFIX}/bin/${bin}
.endfor
	${CHOWN} -R ${SHAREOWN}:${SHAREGRP} ${PREFIX}/lib/mlton
	${FIND} ${PREFIX}/lib/mlton -type f -exec ${CHMOD} a+r {} \;
	${FIND} ${PREFIX}/lib/mlton -type d -exec ${CHMOD} a+rx {} \;
	${CHMOD} a+x ${PREFIX}/lib/mlton/mlton-compile
	${CHMOD} a+x ${PREFIX}/lib/mlton/platform
.if ${PORT_OPTIONS:MDOCS}
	${CHOWN} -R ${SHAREOWN}:${SHAREGRP} ${DOCSDIR}
	${FIND} ${DOCSDIR} -type f -exec ${CHMOD} a+r {} \;
	${FIND} ${DOCSDIR} -type d -exec ${CHMOD} a+rx {} \;
.endif

.include <bsd.port.mk>