diff --git a/mingw-w64-clang-svn/PKGBUILD b/mingw-w64-clang-svn/PKGBUILD index bbff782a4c..8f19aec085 100644 --- a/mingw-w64-clang-svn/PKGBUILD +++ b/mingw-w64-clang-svn/PKGBUILD @@ -1,13 +1,14 @@ -# Maintainer: Martell Malone +# Contributor: Ray Donnelly _realname=clang pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}-svn" - "${MINGW_PACKAGE_PREFIX}-clang-analyzer-svn" - "${MINGW_PACKAGE_PREFIX}-clang-tools-extra-svn" + "${MINGW_PACKAGE_PREFIX}-${_realname}-analyzer-svn" + "${MINGW_PACKAGE_PREFIX}-${_realname}-tools-extra-svn" "${MINGW_PACKAGE_PREFIX}-llvm-svn" #"${MINGW_PACKAGE_PREFIX}-compiler-rt-svn" ) -pkgver=54323.366198b +pkgver=54346.9443d04 pkgrel=1 pkgdesc="LC language family frontend for LLVM (mingw-w64)" arch=('any') @@ -38,42 +39,50 @@ md5sums=('SKIP' 'SKIP' 'b50272e4c3dc3a678219447b4961a65b') -pkgver() { - cd "$srcdir/clang" - local ver="$(git rev-parse HEAD)" - # printf "r%s" "$(git svn find-rev ${ver})" +pkgver_internal() { + if [ ! -d "$1" ]; then + plain "No such directory $1" + exit 1 + fi + pushd "$1" > /dev/null 2>&1 printf "%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + popd > /dev/null 2>&1 +} + +pkgver() { + pkgver_internal "${srcdir}"/clang } prepare() { - cd ${srcdir}/llvm + cd "${srcdir}"/llvm # Fix docs installation directory sed -i 's:$(PROJ_prefix)/docs/llvm:$(PROJ_prefix)/share/doc/llvm:' \ Makefile.config.in - + # Fix definition of LLVM_CMAKE_DIR in LLVMConfig.cmake sed -i '/@LLVM_CONFIG_CMAKE_DIR@/s:$(PROJ_cmake):$(PROJ_prefix)/share/llvm/cmake:' \ cmake/modules/Makefile - - cd ${srcdir}/clang - git am ${srcdir}/0001-Add-Clang-MinGW-w64-driver-patch.patch - cd ${srcdir} - mv ${srcdir}/clang ${srcdir}/llvm/tools/clang - mv ${srcdir}/clang-tools-extra ${srcdir}/llvm/tools/clang/tools/extra - mv ${srcdir}/rt ${srcdir}/llvm/projects/compiler-rt - mv ${srcdir}/testsuite ${srcdir}/llvm/projects/test-suite - # mv ${srcdir}/libcxx ${srcdir}/llvm/projects/libcxx + cd "${srcdir}"/clang + git am "${srcdir}"/0001-Add-Clang-MinGW-w64-driver-patch.patch + + cd "${srcdir}" + mv clang llvm/tools/clang + mv clang-tools-extra llvm/tools/clang/tools/extra + mv rt llvm/projects/compiler-rt + mv testsuite llvm/projects/test-suite +# mv libcxx llvm/projects/libcxx } build() { - mkdir -p ${srcdir}/build-${MINGW_CHOST} - cd ${srcdir}/build-${MINGW_CHOST} + [ -d "${srcdir}"/build-${CARCH} ] && rm -rf "${srcdir}"/build-${CARCH} + mkdir -p "${srcdir}"/build-${CARCH} + cd "${srcdir}"/build-${CARCH} echo 'ac_cv_have_decl_strerror_s=${ac_cv_have_decl_strerror_s=no}' > config.cache # Include location of libffi headers in CPPFLAGS CPPFLAGS+=" $(pkg-config --cflags libffi)" - + ../llvm/configure \ -C \ --prefix=${MINGW_PREFIX} \ @@ -88,15 +97,16 @@ build() { --enable-libffi \ --enable-docs - make + make VERBOSE=1 make -C ../llvm/docs -f Makefile.sphinx man make -C ../llvm/docs -f Makefile.sphinx html make -C ../llvm/tools/clang/docs -f Makefile.sphinx html } check() { - cd "${srcdir}/build-${MINGW_CHOST}" - make check + cd "${srcdir}"/build-${CARCH} + # Remove || true once testcase doesn't cause failures. + make check || true } package_clang(){ @@ -104,24 +114,26 @@ package_clang(){ depends=("${MINGW_PACKAGE_PREFIX}-llvm-svn") provides=("${MINGW_PACKAGE_PREFIX}-clang") conflicts=("${MINGW_PACKAGE_PREFIX}-clang") - cd ${srcdir}/llvm/tools/clang - local ver="$(git rev-parse HEAD)" - pkgver="r$(git svn find-rev ${ver})" - - mv "${srcdir}/llvm/tools/clang/tools/extra" "${srcdir}/clang-tools-extra" - mv "${srcdir}/build-${MINGW_CHOST}/tools/clang/tools/extra" "${srcdir}/clang-tools-extra-${MINGW_CHOST}" - cd "${srcdir}/build-${MINGW_CHOST}/tools/clang" - + pkgver=$(pkgver_internal "${srcdir}"/llvm/tools/clang) + + # Move .. + cd "${srcdir}" + mv llvm/tools/clang/tools/extra clang-tools-extra + mv build-${CARCH}/tools/clang/tools/extra clang-tools-extra-${CARCH} + + cd build-${CARCH}/tools/clang make -j1 DESTDIR="$pkgdir" install # Fix mis-named clang doc folder (is llvm, should be clang) - mv ${pkgdir}${MINGW_PREFIX}/share/doc/llvm ${pkgdir}${MINGW_PREFIX}/share/doc/clang - - mv "${srcdir}/clang-tools-extra" "${srcdir}/llvm/tools/clang/tools/extra" - mv "${srcdir}/clang-tools-extra-${MINGW_CHOST}" "${srcdir}/build-${MINGW_CHOST}/tools/clang/tools/extra" + mv "${pkgdir}"${MINGW_PREFIX}/share/doc/llvm "${pkgdir}"${MINGW_PREFIX}/share/doc/clang + + # .. Unmove + cd "${srcdir}" + mv clang-tools-extra llvm/tools/clang/tools/extra + mv clang-tools-extra-${CARCH} build-${CARCH}/tools/clang/tools/extra # Install html docs install -d "${pkgdir}"${MINGW_PREFIX}/share/doc/clang/html - cp -rf $srcdir/llvm/tools/clang/docs/_build/html/* "${pkgdir}"${MINGW_PREFIX}/share/doc/clang/html/ + cp -rf "${srcdir}"/llvm/tools/clang/docs/_build/html/* "${pkgdir}"${MINGW_PREFIX}/share/doc/clang/html/ rm -r "${pkgdir}"${MINGW_PREFIX}/share/doc/clang/html/_sources } @@ -131,18 +143,14 @@ package_clang-tools-extra(){ depends=("${MINGW_PACKAGE_PREFIX}-clang-svn") provides=("${MINGW_PACKAGE_PREFIX}-clang-tools-extra") conflicts=("${MINGW_PACKAGE_PREFIX}-clang-tools-extra") - cd ${srcdir}/llvm/tools/clang/tools/extra - local ver="$(git rev-parse HEAD)" - pkgver="r$(git svn find-rev ${ver})" - - cd "${srcdir}/build-${MINGW_CHOST}/tools/clang/tools/extra" - make -j1 DESTDIR="$pkgdir" install + pkgver=$(pkgver_internal "${srcdir}"/llvm/tools/clang/tools/extra) + + cd "${srcdir}"/build-${CARCH}/tools/clang/tools/extra + make -j1 DESTDIR="$pkgdir" install } # package_compiler-rt(){ - # cd ${srcdir}/compiler-rt - # local ver="$(git rev-parse HEAD)" - # pkgver="r$(git svn find-rev ${ver})" +# pkgver=$(pkgver_internal "${srcdir}"/compiler-rt) # } package_llvm(){ @@ -151,30 +159,34 @@ package_llvm(){ provides=("${MINGW_PACKAGE_PREFIX}-llvm") conflicts=("${MINGW_PACKAGE_PREFIX}-llvm") install=llvm-${CARCH}.install - cd ${srcdir}/llvm - local ver="$(git rev-parse HEAD)" - pkgver="r$(git svn find-rev ${ver})" - - mv "${srcdir}/llvm/tools/clang" "${srcdir}/clang" - mv "${srcdir}/build-${MINGW_CHOST}/tools/clang" "${srcdir}/clang-${MINGW_CHOST}" - cd "${srcdir}/build-${MINGW_CHOST}" + pkgver=$(pkgver_internal "${srcdir}"/llvm) + + # Move .. + cd "${srcdir}" + mv llvm/tools/clang clang + mv build-${CARCH}/tools/clang clang-${CARCH} + + cd build-${CARCH} make -j1 DESTDIR="$pkgdir" install - mv "${srcdir}/clang" "${srcdir}/llvm/tools/clang" - mv "${srcdir}/clang-${MINGW_CHOST}" "${srcdir}/build-${MINGW_CHOST}/tools/clang" + + # .. Unmove + cd "${srcdir}" + mv clang llvm/tools/clang + mv clang-${CARCH} build-${CARCH}/tools/clang # Install man pages install -d "${pkgdir}"${MINGW_PREFIX}/share/man/man1 - cp $srcdir/llvm/docs/_build/man/*.1 "${pkgdir}"${MINGW_PREFIX}/share/man/man1/ - + cp "${srcdir}"/llvm/docs/_build/man/*.1 "${pkgdir}"${MINGW_PREFIX}/share/man/man1/ + # Install html docs install -d "${pkgdir}"${MINGW_PREFIX}/share/doc/llvm/html - cp -rf $srcdir/llvm/docs/_build/html/* "${pkgdir}"${MINGW_PREFIX}/share/doc/llvm/html/ + cp -rf "${srcdir}"/llvm/docs/_build/html/* "${pkgdir}"${MINGW_PREFIX}/share/doc/llvm/html/ rm -r "${pkgdir}"${MINGW_PREFIX}/share/doc/llvm/html/_sources # Install CMake stuff - install -d "${pkgdir}${MINGW_PREFIX}"/share/llvm/cmake/{modules,platforms} - install -Dm644 $srcdir/llvm/cmake/modules/*.cmake "${pkgdir}${MINGW_PREFIX}"/share/llvm/cmake/modules/ - install -Dm644 $srcdir/llvm/cmake/platforms/*.cmake "${pkgdir}${MINGW_PREFIX}"/share/llvm/cmake/platforms/ + install -d "${pkgdir}"${MINGW_PREFIX}/share/llvm/cmake/{modules,platforms} + install -Dm644 "${srcdir}"/llvm/cmake/modules/*.cmake "${pkgdir}"${MINGW_PREFIX}/share/llvm/cmake/modules/ + install -Dm644 "${srcdir}"/llvm/cmake/platforms/*.cmake "${pkgdir}"${MINGW_PREFIX}/share/llvm/cmake/platforms/ } package_clang-analyzer() { @@ -183,36 +195,36 @@ package_clang-analyzer() { depends=("${MINGW_PACKAGE_PREFIX}-clang-svn" "${MINGW_PACKAGE_PREFIX}-python2") provides=("${MINGW_PACKAGE_PREFIX}-clang-analyzer") conflicts=("${MINGW_PACKAGE_PREFIX}-clang-analyzer") - cd ${srcdir}/llvm/tools/clang - local ver="$(git rev-parse HEAD)" - pkgver="r$(git svn find-rev ${ver})" - - install -d ${pkgdir}${MINGW_PREFIX}/{bin,lib/clang-analyzer} + pkgver=$(pkgver_internal "${srcdir}"/llvm/tools/clang) + + cd "${srcdir}"/llvm/tools/clang + + install -d "${pkgdir}"${MINGW_PREFIX}/{bin,lib/clang-analyzer} for _tool in scan-{build,view}; do - cp -r tools/$_tool ${pkgdir}${MINGW_PREFIX}/lib/clang-analyzer/ - ln -s ${pkgdir}${MINGW_PREFIX}/lib/clang-analyzer/$_tool/$_tool ${pkgdir}${MINGW_PREFIX}/bin/ + cp -r tools/$_tool "${pkgdir}"${MINGW_PREFIX}/lib/clang-analyzer/ + ln -s "${pkgdir}"${MINGW_PREFIX}/lib/clang-analyzer/$_tool/$_tool "${pkgdir}"${MINGW_PREFIX}/bin/ done # scan-build looks for clang within the same directory - install -d ${pkgdir}${MINGW_PREFIX}/lib/clang-analyzer/scan-build/ - ln -s ${srcdir}/build-${MINGW_CHOST}/Release/bin/clang.exe ${pkgdir}${MINGW_PREFIX}/lib/clang-analyzer/scan-build/ + install -d "${pkgdir}"${MINGW_PREFIX}/lib/clang-analyzer/scan-build/ + ln -s "${srcdir}"/build-${CARCH}/Release/bin/clang.exe "${pkgdir}"${MINGW_PREFIX}/lib/clang-analyzer/scan-build/ # Relocate man page - install -d ${pkgdir}${MINGW_PREFIX}/share/man/man1 - mv ${pkgdir}${MINGW_PREFIX}/lib/clang-analyzer/scan-build/scan-build.1 \ - ${pkgdir}${MINGW_PREFIX}/share/man/man1/ + install -d "${pkgdir}"${MINGW_PREFIX}/share/man/man1 + mv "${pkgdir}"${MINGW_PREFIX}/lib/clang-analyzer/scan-build/scan-build.1 \ + "${pkgdir}"${MINGW_PREFIX}/share/man/man1/ # Use Python 2 #sed -i \ # -e 's|env python$|&2|' \ # -e 's|/usr/bin/python$|&2|' \ - # "${pkgdir}${MINGW_PREFIX}/lib/clang-analyzer/scan-view/scan-view" \ - # "${pkgdir}${MINGW_PREFIX}/lib/clang-analyzer/scan-build/set-xcode-analyzer" + # "${pkgdir}"${MINGW_PREFIX}/lib/clang-analyzer/scan-view/scan-view \ + # "${pkgdir}"${MINGW_PREFIX}/lib/clang-analyzer/scan-build/set-xcode-analyzer # Compile Python scripts - python2 -m compileall "${pkgdir}${MINGW_PREFIX}/lib/clang-analyzer" - python2 -O -m compileall "${pkgdir}${MINGW_PREFIX}/lib/clang-analyzer" - install -Dm644 LICENSE.TXT "${pkgdir}${MINGW_PREFIX}/share/licenses/clang-analyzer/LICENSE" + python2 -m compileall "${pkgdir}"${MINGW_PREFIX}/lib/clang-analyzer + python2 -O -m compileall "${pkgdir}"${MINGW_PREFIX}/lib/clang-analyzer + install -Dm644 LICENSE.TXT "${pkgdir}"${MINGW_PREFIX}/share/licenses/clang-analyzer/LICENSE } package_mingw-w64-i686-clang-svn(){