# ex:ts=8 # Ports collection makefile for: egcs # Date created: 9 Jan 1998 # Whom: John Polstra # # $FreeBSD$ # SNAPDATE= 2002-10-14 SNAPVER= ${SNAPDATE:S/-//g} #CVS_DATE= ${SNAPDATE} 18:53:04 EDT PORTNAME= gcc PORTVERSION= 3.3 PORTREVISION= ${SNAPVER} CATEGORIES= lang java MASTER_SITES= ${MASTER_SITE_GCC} MASTER_SITE_SUBDIR= snapshots/${SNAPDATE} .if !defined(CVS_DATE) DISTFILES= \ gcc-core-${SNAPVER}${EXTRACT_SUFX} \ gcc-g++-${SNAPVER}${EXTRACT_SUFX} \ gcc-g77-${SNAPVER}${EXTRACT_SUFX} \ gcc-java-${SNAPVER}${EXTRACT_SUFX} \ gcc-objc-${SNAPVER}${EXTRACT_SUFX} .endif PATCH_SITES= ftp://relay.nuxi.com/obrien/ PATCHFILES= port_gcc33_${SNAPDATE}.diff MAINTAINER= ports@FreeBSD.org NO_CDROM= 'dated material' LATEST_LINK= gcc33 USE_BZIP2= yes PATCH_WRKSRC= ${SRCDIR} CONFIGURE_SCRIPT= ../${SRCDIR:C/${WRKDIR}//}/configure NOMANCOMPRESS= yes # to hard to deal with differences on 5-cur and releng4 .include .if ${PORTOBJFORMAT} == "aout" CONFIGURE_TARGET= ${ARCH}-portbld-freebsdaout${OSREL} .else CONFIGURE_TARGET= ${ARCH}-portbld-freebsd${OSREL} .endif #GCC_REV= ${PORTVERSION:C/\.0$//} GCC_REV= 3.3 #SRCDIR= ${WRKDIR}/gcc-${GCC_REV} SRCDIR= ${WRKDIR}/gcc-${SNAPVER} WRKSRC= ${WRKDIR}/build TARGLIB= ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${GCC_REV} PLIST_SUB= GCC_REV=${GCC_REV} GNU_HOST=${CONFIGURE_TARGET} \ SNAPVER=${SNAPVER} GNU_CONFIGURE= yes USE_GMAKE= yes USE_BISON= yes CONFIGURE_ARGS= --disable-nls --with-gnu-as --with-gnu-ld \ --with-gxx-include-dir=${TARGLIB}/include/g++-v3 #CONFIGURE_ARGS+= --program-suffix=33 # Java CONFIGURE_ARGS+= --with-system-zlib #--includedir=${TARGLIB}/include/Java -libdir=${TARGLIB} #CONFIGURE_ARGS+= --disable-libgcj # does not bootstrap now CONFIGURE_ENV= MAKEINFO="makeinfo --no-split" MAKE_ARGS+= MAKEINFOFLAGS="--no-split" .if defined(WANT_SHAREDLIBS) CONFIGURE_ARGS+= --enable-shared .else CONFIGURE_ARGS+= --disable-shared .endif .if defined(WANT_THREADS_SUPPORT) CONFIGURE_ARGS+= --enable-threads # ?is this an ObjC only thing? CONFIGURE_ARGS+= --enable-threads=posix .endif ALL_TARGET= bootstrap MAN1= cpp33.1 g++33.1 g77-33.1 gcc33.1 gcov33.1 \ gcj33.1 gcjh33.1 gij.1 grepjar33.1 jar33.1 \ jcf-dump33.1 jv-scan33.1 jv-convert.1 MAN7= fsf-funding.7 gfdl.7 gpl.7 pre-fetch: @${ECHO} "Making GCC ${DISTNAME:S/^gcc-//} for ${OPSYS} ${OSREL} ${PORTOBJFORMAT} target ${CONFIGURE_TARGET}" .if defined(CVS_DATE) NO_CHECKSUM= yes DIST_SUBDIR= ${PKGNAME} CVS_CMD?= cvs -z3 -qR CVSROOT= :pserver:anoncvs@subversions.gnu.org:/cvsroot/gcc STAMPFILE= ${DISTDIR}/${DIST_SUBDIR}/.timestamp do-fetch: @if [ ! -e ${STAMPFILE} ] || \ [ "X${CVS_DATE}" != "X$$(${CAT} ${STAMPFILE})" ]; then \ ${MKDIR} ${DISTDIR}/${DIST_SUBDIR} && \ cd ${DISTDIR}/${DIST_SUBDIR} ; \ unset CVS_RSH CVS_SERVER || ${TRUE} ; \ ${ECHO_MSG} ">> Attempting to CVS checkout from ${CVSROOT}." ;\ if ${CVS_CMD} -d ${CVSROOT} co -D "${CVS_DATE}" gcc ; \ then \ ( ${ECHO} -n "${CVS_DATE}" > ${STAMPFILE} ) ; \ exit ; \ fi ; \ ${ECHO_MSG} ">> Couldn't CVS checkout ${PKGNAME}." ; \ ${ECHO_MSG} ">> Please try again later."; \ exit 1; \ fi @test -e ${DISTDIR}/${DIST_SUBDIR}/${PATCHFILES} \ || fetch -o ${DISTDIR}/${DIST_SUBDIR}/${PATCHFILES} \ ${PATCH_SITES}${PATCHFILES} do-extract: ${MKDIR} ${SRCDIR} cd ${DISTDIR}/${DIST_SUBDIR}/gcc ; pax -pe -rwt . ${SRCDIR} .endif # CVS_DATE pre-configure: @# Keep from running `autoconf' and `autoheader' since we modified @# configure.in by patching it. @${TOUCH} ${SRCDIR}/gcc/configure @${TOUCH} ${SRCDIR}/gcc/cstamp-h.in @${MKDIR} ${CONFIGURE_WRKSRC} @${RM} -f ${SRCDIR}/gcc/*/*.info* pre-build: cd ${SRCDIR} ; contrib/gcc_update --touch pre-install: ${MKDIR} ${PREFIX}/info post-install: @${RM} -f ${PREFIX}/bin/c++ ${PREFIX}/bin/${CONFIGURE_TARGET}-c++ @(for prog in ${PREFIX}/bin/gcc ${PREFIX}/bin/g++ \ ${PREFIX}/bin/g77 ${PREFIX}/bin/gcov \ ${PREFIX}/bin/${CONFIGURE_TARGET}-gcc \ ${TARGLIB}/cc1 ${TARGLIB}/cc1obj ${TARGLIB}/cc1plus \ ${TARGLIB}/collect2 ${TARGLIB}/f771 ; \ do \ strip $$prog ; \ done ) .for file in gcc g++ cpp gcov ${CONFIGURE_TARGET}-gcc ${CONFIGURE_TARGET}-g++ gcj gcjh jv-scan jcf-dump jar grepjar ${MV} -f ${PREFIX}/bin/${file} ${PREFIX}/bin/${file}33 ( ${TEST} ! -e ${PREFIX}/man/man1/${file}.1 \ || ${MV} -f ${PREFIX}/man/man1/${file}.1 \ ${PREFIX}/man/man1/${file}33.1 ) .endfor .for file in g77 ${MV} -f ${PREFIX}/bin/${file} ${PREFIX}/bin/${file}-33 ( ${TEST} ! -e ${PREFIX}/man/man1/${file}.1 \ || ${MV} -f ${PREFIX}/man/man1/${file}.1 \ ${PREFIX}/man/man1/${file}-33.1 ) .endfor ${MV} -f ${PREFIX}/bin/gccbug ${PREFIX}/bin/gccbug-${PORTVERSION} # These 3 libraries are moved from PREFIX/lib to avoid conflicts # with the stock compiler. .for file in libstdc++ libsupc++ libg2c libfrtbegin libobjc ${MV} -f ${PREFIX}/lib/${file}.* ${TARGLIB} .endfor -${MV} -f ${PREFIX}/lib/ieee ${TARGLIB} # Java -${MV} -f ${PREFIX}/lib/libgcj.* ${TARGLIB} ${RM} -f ${PREFIX}/lib/libiberty.a ${RM} -f ${TARGLIB}/*.la .for info in cpp cppinternals g77 gcc gcj install-info ${PREFIX}/info/${info}.info ${PREFIX}/info/dir .endfor # I am sick and tired of the anonyance that man pages can only be generated if # perl 5.6 is installed. This is becoming a royal PITA on non-5-CURRENT systems .for mp in ${_MANPAGES} ( ${TEST} -e ${mp} && ${TOUCH} ${TOUCH_FLAGS} ${mp} ) .endfor cd ${PREFIX} ;\ ${FIND} ${TARGLIB:S/^${PREFIX}\///} -type f -o -type l \ >${WRKDIR}/PLIST.gcc-lib cd ${PREFIX} ;\ ${FIND} ${TARGLIB:S/^${PREFIX}\///} -type d \ | sort -r | ${SED} -e 's/^/@dirrm /g' >>${WRKDIR}/PLIST.gcc-lib (${ECHO_CMD} "@unexec rmdir %D/lib/gcc-lib/${CONFIGURE_TARGET} 2>&1 || true" ; ${ECHO_CMD} "@unexec rmdir %D/lib/gcc-lib 2>&1 || true") >> ${WRKDIR}/PLIST.gcc-lib ${ECHO_CMD} "r ${TMPPLIST}" > ${WRKDIR}/ex.script ${ECHO_CMD} "/Insert PLIST.gcc-lib" >> ${WRKDIR}/ex.script ${ECHO_CMD} "d" >> ${WRKDIR}/ex.script ${ECHO_CMD} "r ${WRKDIR}/PLIST.gcc-lib" >> ${WRKDIR}/ex.script ${ECHO_CMD} "x!" >> ${WRKDIR}/ex.script ${CP} -p ${TMPPLIST} ${TMPPLIST}.pre-gcc-lib cd ${WRKDIR} ; ex < ex.script cklatest: .for SITE in ftp://gcc.gnu.org/pub/gcc/snapshots/ ftp://mirrors.rcn.net/mirrors/sources.redhat.com/gcc/snapshots/ @-ncftpls ${SITE} | grep LATEST .endfor .include argin-top: 0px; } .markdown-body ul li p:last-of-type, .markdown-body ol li p:last-of-type { margin-bottom: 0; } .markdown-body ul ul, .markdown-body ul ol, .markdown-body ol ol, .markdown-body ol ul { margin-bottom: 0; } .markdown-body dl { padding: 0; } .markdown-body dl dt { font-size: 14px; font-weight: bold; font-style: italic; padding: 0; margin: 15px 0 5px; } .markdown-body dl dt:first-child { padding: 0; } .markdown-body dl dt>:first-child { margin-top: 0px; } .markdown-body dl dt>:last-child { margin-bottom: 0px; } .markdown-body dl dd { margin: 0 0 15px; padding: 0 15px; } .markdown-body dl dd>:first-child { margin-top: 0px; } .markdown-body dl dd>:last-child { margin-bottom: 0px; } .markdown-body blockquote { border-left: 4px solid #DDD; padding: 0 15px; color: #777; } .markdown-body blockquote>:first-child { margin-top: 0px; } .markdown-body blockquote>:last-child { margin-bottom: 0px; } .markdown-body table th { font-weight: bold; } .markdown-body table th, .markdown-body table td { border: 1px solid #ccc; padding: 6px 13px; } .markdown-body table tr { border-top: 1px solid #ccc; background-color: #fff; } .markdown-body table tr:nth-child(2n) { background-color: #f8f8f8; } .markdown-body img { max-width: 100%; -moz-box-sizing: border-box; box-sizing: border-box; } .markdown-body span.frame { display: block; overflow: hidden; } .markdown-body span.frame>span { border: 1px solid #ddd; display: block; float: left; overflow: hidden; margin: 13px 0 0; padding: 7px; width: auto; } .markdown-body span.frame span img { display: block; float: left; } .markdown-body span.frame span span { clear: both; color: #333; display: block; padding: 5px 0 0; } .markdown-body span.align-center { display: block; overflow: hidden; clear: both; } .markdown-body span.align-center>span { display: block; overflow: hidden; margin: 13px auto 0; text-align: center; } .markdown-body span.align-center span img { margin: 0 auto; text-align: center; } .markdown-body span.align-right { display: block; overflow: hidden; clear: both; } .markdown-body span.align-right>span { display: block; overflow: hidden; margin: 13px 0 0; text-align: right; } .markdown-body span.align-right span img { margin: 0; text-align: right; } .markdown-body span.float-left { display: block; margin-right: 13px; overflow: hidden; float: left; } .markdown-body span.float-left span { margin: 13px 0 0; } .markdown-body span.float-right { display: block; margin-left: 13px; overflow: hidden; float: right; } .markdown-body span.float-right>span { display: block; overflow: hidden; margin: 13px auto 0; text-align: right; } .markdown-body code, .markdown-body tt { margin: 0 2px; padding: 0px 5px; border: 1px solid #eaeaea; background-color: #f8f8f8; border-radius: 3px; } .markdown-body code { white-space: nowrap; } .markdown-body pre>code { margin: 0; padding: 0; white-space: pre; border: none; background: transparent; } .markdown-body .highlight pre, .markdown-body pre { background-color: #f8f8f8; border: 1px solid #ccc; font-size: 13px; line-height: 19px; overflow: auto; padding: 6px 10px; border-radius: 3px; } .markdown-body pre code, .markdown-body pre tt { margin: 0; padding: 0; background-color: transparent; border: none; } pre { line-height: 125%; } td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } .highlight { background: #ffffff; } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */

The Solidity Contract-Oriented Programming Language

Build Status Solidity is a statically typed, contract-oriented, high-level language for implementing smart contracts on the Ethereum platform.

Table of Contents

Background

Solidity is a statically-typed curly-braces programming language designed for developing smart contracts that run on the Ethereum Virtual Machine. Smart contracts are programs that are executed inside a peer-to-peer network where nobody has special authority over the execution and thus they allow to implement tokens of value, ownership, voting and other kinds of logics.

When deploying contracts, you should use the latest released version of Solidity. This is because breaking changes as well as new features and bug fixes are introduced regularly. We currently use a 0.x version number to indicate this fast pace of change.

Build and Install

Instructions about how to build and install the Solidity compiler can be found in the Solidity documentation

Example

A "Hello World" program in Solidity is of even less use than in other languages, but still:

pragma solidity ^0.5.0;

contract HelloWorld {
  function helloWorld() external pure returns (string memory) {
    return "Hello, World!";
  }
}

To get started with Solidity, you can use Remix, which is an browser-based IDE. Here are some example contracts:

  1. Voting
  2. Blind Auction
  3. Safe remote purchase
  4. Micropayment Channel

Documentation

The Solidity documentation is hosted at Read the docs.

Development

Solidity is still under development. Contributions are always welcome! Please follow the Developers Guide if you want to help.

Maintainers

@axic @chriseth

License

Solidity is licensed under GNU General Public License v3.0

Some third-party code has its own licensing terms.