# $Id: Portfile 153814 2016-10-12 09:20:28Z jeremyhu@macports.org $ PortSystem 1.0 name cctools # Xcode 7.3.1 version 886 revision 6 set ld64_version 264.3.102 categories devel platforms darwin maintainers jeremyhu openmaintainer license {APSL-2 GPL-2+} installs_libs no description Compiler Tools for Mac OS X and Darwin long_description A set of essential tools to support development \ on Mac OS X and Darwin. Conceptually similar \ similar to binutils on other platforms. homepage http://opensource.apple.com/source/${name}/ master_sites http://opensource.apple.com/tarballs/${name} \ http://opensource.apple.com/tarballs/ld64 distfiles ld64-${ld64_version}.tar.gz ${name}-${version}.tar.gz checksums ld64-264.3.102.tar.gz \ rmd160 c8169a8dd591989abdf45c0834397891ec72b458 \ sha256 307f73678a3e5c9ed4d1bcf77da7399d84efac32916c5df6cd477c3b5c36f953 \ cctools-886.tar.gz \ rmd160 ecd54d8b4ec062909044c003b7e5bd638729cf57 \ sha256 f3a4fa7dad4a54d862b1d9f48e3dfb25fc532c9cf46a041cf8134694328a8878 depends_build port:libunwind-headers patchfiles \ cctools-829-lto.patch \ PR-37520.patch \ cctools-839-static-dis_info.patch \ PR-12400897.patch \ cctools-862-prunetrie.patch \ not-clang.patch variant universal {} if {${os.major} < 11} { patchfiles-append snowleopard-strnlen.patch } set all_llvm_variants {llvm38 llvm39 llvmdev} if {${os.major} < 10} { lappend all_llvm_variants llvm33 } if {${os.major} < 12} { lappend all_llvm_variants llvm34 } array set llvm_variant_version {llvm33 3.3 llvm34 3.4 llvm38 3.8 llvm39 3.9 llvmdev devel} set llvm_version {} foreach variantname $all_llvm_variants { set this_llvm_version $llvm_variant_version($variantname) variant $variantname conflicts {*}[ldelete $all_llvm_variants $variantname] description "Use llvm-${this_llvm_version} for libLTO, llvm-mc, llvm-size, and llvm-nm" " set llvm_version $this_llvm_version depends_lib-append port:llvm-${this_llvm_version} " } proc some_llvm_variant_set {} { global all_llvm_variants foreach variantname $all_llvm_variants { if {[variant_isset $variantname]} { return yes } } return no } if {![some_llvm_variant_set]} { if {${os.major} == 10 || ${os.major} == 11} { default_variants +llvm34 } elseif {${os.major} == 9} { # Using llvm-3.3 to break dependency cycle (https://trac.macports.org/ticket/52091) default_variants +llvm33 } if {![some_llvm_variant_set] && ${os.major} >= 9} { default_variants +llvm38 } } set has_llvm_nm true set has_llvm_size true if {${llvm_version} eq "3.3" || ${llvm_version} eq "3.4" || ${llvm_version} eq ""} { set has_llvm_nm false set has_llvm_size false } use_configure no destroot.args RAW_DSTROOT=${destroot} DSTROOT=${destroot}${prefix} RC_ProjectSourceVersion=${version} post-extract { file copy ${worksrcpath}/../ld64-${ld64_version}/src/other/PruneTrie.cpp ${worksrcpath}/misc system "touch ${worksrcpath}/../ld64-${ld64_version}/src/abstraction/configure.h" } post-patch { # We don't want to build cctools ld. We want to use ld64 reinplace "/^SUBDIRS_32/s/ld//" ${worksrcpath}/Makefile reinplace "/^COMMON_SUBDIRS/s/ ld / /" ${worksrcpath}/Makefile # Use our chosen version of llvm if {${llvm_version} ne ""} { reinplace "s:\"llvm-mc\":\"llvm-mc-mp-${llvm_version}\":" ${worksrcpath}/as/driver.c reinplace "s:@@LLVM_LIBDIR@@:${prefix}/libexec/llvm-${llvm_version}/lib:" ${worksrcpath}/libstuff/lto.c } foreach file [glob ${worksrcpath}/{*/,}Makefile] { reinplace "s:/usr/local:@PREFIX@:g" ${file} reinplace "s:/usr:@PREFIX@:g" ${file} reinplace "s:@PREFIX@:${prefix}:g" ${file} reinplace "s:${prefix}/efi:${prefix}:g" ${file} reinplace "s:/Developer${prefix}:${prefix}:g" ${file} reinplace "s:${prefix}/man:${prefix}/share/man:g" ${file} # Don't strip installed binaries reinplace "s:\\(install .*\\)-s :\\1:g" ${file} if {${os.major} < 10} { reinplace "s:${prefix}/bin/mig:/usr/bin/mig:g" ${file} } } } use_configure no use_parallel_build yes # https://trac.macports.org/ticket/43745 configure.cflags-append -std=gnu99 build.target all set cxx_stdlibflags {} if {[string match *clang* ${configure.cxx}]} { set cxx_stdlibflags -stdlib=${configure.cxx_stdlib} } configure.cppflags-append -I${worksrcpath}/../ld64-${ld64_version}/src/abstraction -I${worksrcpath}/../ld64-${ld64_version}/src/other -I${worksrcpath}/include pre-build { build.args-append \ RC_ProjectSourceVersion=${version} \ USE_DEPENDENCY_FILE=NO \ BUILD_DYLIBS=NO \ CC="${configure.cc} ${configure.cflags}" \ CXX="${configure.cxx} ${configure.cxxflags}" \ CXXLIB="${cxx_stdlibflags}" \ TRIE=-DTRIE_SUPPORT \ RC_ARCHS="[get_canonical_archs]" \ SDK="${configure.cppflags}" if {${llvm_version} ne ""} { build.args-append \ LTO=-DLTO_SUPPORT \ RC_CFLAGS="[get_canonical_archflags] `llvm-config-mp-${llvm_version} --cflags`" \ LLVM_MC="llvm-mc-mp-${llvm_version}" } else { build.args-append \ LTO= \ RC_CFLAGS="[get_canonical_archflags]" } } pre-destroot { destroot.args-append \ RC_ProjectSourceVersion=${version} \ USE_DEPENDENCY_FILE=NO \ BUILD_DYLIBS=NO \ CC="${configure.cc} ${configure.cflags}" \ CXX="${configure.cxx} ${configure.cxxflags}" \ CXXLIB="${cxx_stdlibflags}" \ TRIE=-DTRIE_SUPPORT \ RC_ARCHS="[get_canonical_archs]" \ SDK="${configure.cppflags}" if {${llvm_version} ne ""} { destroot.args-append \ LTO=-DLTO_SUPPORT \ RC_CFLAGS="[get_canonical_archflags] `llvm-config-mp-${llvm_version} --cflags`" \ LLVM_MC="llvm-mc-mp-${llvm_version}" } else { destroot.args-append \ LTO= \ RC_CFLAGS="[get_canonical_archflags]" } } platform macosx { build.args-append RC_OS="macos" destroot.args-append RC_OS="macos" } destroot.target install_tools destroot.args-append DSTROOT=${destroot} post-destroot { file delete -force ${destroot}${prefix}/OpenSourceLicenses file delete -force ${destroot}${prefix}/OpenSourceVersions file delete -force ${destroot}${prefix}/RelNotes if {${os.major} < 10} { file delete -force ${destroot}/Developer } # Provided by port:cctools-headers file delete -force ${destroot}${prefix}/include file delete -force ${destroot}${prefix}/bin/nm if {${has_llvm_nm}} { ln -s llvm-nm-mp-${llvm_version} ${destroot}${prefix}/bin/nm } else { ln -s nm-classic ${destroot}${prefix}/bin/nm } file delete -force ${destroot}${prefix}/bin/size if {${has_llvm_size}} { ln -s llvm-size-mp-${llvm_version} ${destroot}${prefix}/bin/size } else { ln -s size-classic ${destroot}${prefix}/bin/size } } livecheck.type regex livecheck.regex "${name}-(\[\\d.\]+)"