diff options
Diffstat (limited to 'profiles/prefix/windows/winnt/profile.bashrc')
-rw-r--r-- | profiles/prefix/windows/winnt/profile.bashrc | 305 |
1 files changed, 0 insertions, 305 deletions
diff --git a/profiles/prefix/windows/winnt/profile.bashrc b/profiles/prefix/windows/winnt/profile.bashrc deleted file mode 100644 index 3b61ad73d6dc..000000000000 --- a/profiles/prefix/windows/winnt/profile.bashrc +++ /dev/null @@ -1,305 +0,0 @@ -# Copyright 1999-2019 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -# On windows, binary files (executables, shared libraries) in use -# cannot be replaced during merge. -# But it is possible to rename them and remove lateron when they are -# not used any more by any running program. -# -# This is a workaround for portage bug#199868, -# and should be dropped once portage does sth. like this itself. -# - -####################################################################### -# -# Unix aware build tools may provide (e.g. pkg-config) and accept -# (e.g. gcc) the -lNAME linker option. While they create libNAME.so -# as the import library, they may be unaware of the additional dll. -# The dllhelper wrappers take care of copying the real dll when -# copying the libNAME.so. -# -# Cygwin and MinGW aware build tools may create the import library -# as libNAME.dll.a or libNAME.dll.lib, and are aware of the dll, -# while a subsequent linker step still receives the -lNAME option. -# -# MSVC aware build tools may provide (e.g. icu-config) and accept -# (e.g. cl.exe) the NAME.lib linker option, maybe with full path, -# and are aware of the dll. -# -# Libtool does accept both the Unix and MSVC variants now, but does -# search for the libNAME(.la|.dll|.so|.a) file upon -lNAME, in order. -# -# As Gentoo ebuilds may remove libNAME.la, we need the libNAME.so -# because we don't want to have libNAME.dll as an import library. -# -# The static library may be created as libNAME.a, libNAME.lib or even -# NAME.lib - the latter we need to check for static or import library. -# -# For whatever import library file we find, make sure there is both the -# NAME.lib and the libNAME.so for dynamic linkability via all the -# -lNAME, the NAME.lib and the libNAME.so linker option. -# -# For whatever static library file we find, make sure there is both the -# libNAME.lib and the libNAME.a for static linkability via all the -# -lNAME, the libNAME.lib and the libNAME.a linker option. -# -####################################################################### - -winnt_setup_dllhelper() { - case ${CATEGORY}/${PN} in - sys-libs/zlib |\ - '') - # When a package build system does not know about Windows at all, - # still it can be built for Windows using Gentoo Parity. - # But as there is another file to install (the real dll), - # and installation is done using cp, we override cp to - # additionally copy the dll when the library is copied. - ebegin "Setting up wrapper to copy the DLL along the LIB" - winnt_setup_dllhelper_cp - eend $? - ;; - esac -} - -post_src_install() { - winnt_post_src_install -} - -winnt_post_src_install() { - cd "${ED}" || return 0 - # - # File names being treated as import library: - # libNAME.so - # NAME.lib if CHOST-dumpbin yields 'DLL name' - # libNAME.dll.lib - # libNAME.dll.a - # - # File names being treated as static library: - # libNAME.lib - # NAME.lib if CHOST-dumpbin lacks 'DLL name' - # libNAME.a - # - # File names being warned about as suspect: - # NAME.so - # NAME.a - # NAME.dll.lib - # NAME.dll.a - # - find . -name '*.so' -o -name '*.lib' -o -name '*.a' | - while read f - do - f=${f#./} - libdir=$(dirname "${f}") - libfile=${f##*/} - libname= - NAMElib= # import lib to create - libNAMEso= # import lib to create - libNAMElib= # static lib to create - libNAMEa= # static lib to create - case ${libfile} in - lib*.so) # found import library - libname=${libfile%.so} - libname=${libname#lib} - NAMElib=${libname}.lib - libNAMEso=lib${libname}.so - ;; - *.so) ;; # warn - lib*.dll.lib) # found import library - libname=${libfile%.dll.lib} - libname=${libname#lib} - NAMElib=${libname}.lib - libNAMEso=lib${libname}.so - ;; - *.dll.lib) ;; # warn - *.lib) # found static or import library - ${CHOST}-dumpbin.exe /headers "./${libdir}/${libfile}" | grep -q 'DLL name' - case "${PIPESTATUS[*]}" in - '0 0') # found import library - libname=${libfile%.lib} - libname=${libname#lib} - NAMElib=${libname}.lib - libNAMEso=lib${libname}.so - ;; - '0 1') # found static library - libname=${libfile%.lib} - libname=${libname#lib} - libNAMEa=lib${libname}.a - libNAMElib=lib${libname}.lib - ;; - *) - die "Cannot run ${CHOST}-dumpbin on ${libdir}/${libfile}" - ;; - esac - ;; - lib*.dll.a) # found import library - libname=${libfile%.dll.a} - libname=${libname#lib} - NAMElib=${libname}.lib - libNAMEso=lib${libname}.so - ;; - *.dll.a) ;; # warn - lib*.a) # found static library - libname=${libfile%.a} - libname=${libname#lib} - libNAMEa=lib${libname}.a - libNAMElib=lib${libname}.lib - ;; - *.a) ;; # warn - esac - if [[ -z ${libname} ]]; then - ewarn "Ignoring suspect file with library extension: ${f}" - continue - fi - - if [[ ${NAMElib} && ! -e ./${libdir}/${NAMElib} ]]; then - ebegin "creating ${NAMElib} from ${libfile} for MSVC linkability" - cp -pf "./${libdir}/${libfile}" "./${libdir}/${NAMElib}" || die - eend $? - fi - if [[ ${libNAMElib} && ! -e ./${libdir}/${libNAMElib} ]]; then - ebegin "creating ${libNAMElib} from ${libfile} for MSVC linkability" - cp -pf "./${libdir}/${libfile}" "./${libdir}/${libNAMElib}" || die - eend $? - fi - if [[ ${libNAMEso} && ! -e ./${libdir}/${libNAMEso} ]]; then - ebegin "creating ${libNAMEso} from ${f##*/} for POSIX linkability" - cp -pf "./${libdir}/${libfile}" "./${libdir}/${libNAMEso}" || die - eend $? - fi - if [[ ${libNAMEa} && ! -e ./${libdir}/${libNAMEa} ]]; then - ebegin "creating ${libNAMEa} from ${f##*/} for POSIX linkability" - cp -pf "./${libdir}/${libfile}" "./${libdir}/${libNAMEa}" || die - eend $? - fi - done - if [[ -d usr/$(get_libdir) ]] - then - # The native loader does not understand symlinks to dlls, - # seen to be created by dev-libs/icu eventually. For any - # dll we find in usr/lib we need to perform a real copy to - # usr/bin, to resolve potential symlinks (seen from icu), - # and perform the remove from usr/lib afterwards, to not - # break symlinks later on discovered by find. - local toremove=() - local f - while read f - do - [[ -f usr/bin/${f##*/} ]] && continue - ebegin "moving ${f} to usr/bin for the native loader" - dodir usr/bin || die - cp -f "${f}" usr/bin/ || die - eend $? - toremove=( "${toremove[@]}" "${f}" ) - done < <(find usr/$(get_libdir) -maxdepth 1 -name '*.dll') - if [[ ${#toremove[@]} -gt 0 ]] - then - rm -f "${toremove[@]}" || die "removing dlls from usr/$(get_libdir) failed" - fi - fi -} - -winnt_setup_dllhelper_cp() { - if ! [[ $(type -P cp) -ef ${T}/dllhelper/cp ]] - then - mkdir -p "${T}/dllhelper" - cat > "${T}/dllhelper/cp" <<'EOCP' -#!/usr/bin/env bash - -mysrcs=() -myopts=() -mydest= -force_dest_file_opt= - -nextargs=( "$@" ) - -while [[ $# -gt 0 ]] -do - arg=${1} - shift - case ${arg} in - --) - mysrcs+=( "${@}" ) - break - ;; - -S) - myopts+=( "${arg}" ${1+"$1"} ) - ${1:+shift} - ;; - -t) - mydest="${1-}" - ${1:+shift} - ;; - -T) - force_dest_file_opt=${arg} - ;; - -*) - myopts+=( "${arg}" ) - ;; - *) - mysrcs+=( "${arg}" ) - ;; - esac -done - -me=${0##*/} -nextPATH= -oIFS=$IFS -IFS=: -for p in ${PATH} -do - [[ ${p}/${me} -ef ${0} ]] && continue - nextPATH+=${nextPATH:+:}${p} -done -IFS=${oIFS} - -PATH=${nextPATH} - -${me} "${nextargs[@]}" -ret=$? -[[ ${ret} == 0 ]] || exit ${ret} - -if [[ -z ${mydest} ]] -then - [[ ${#mysrcs[@]} -lt 2 ]] && exit 0 - : "${mysrcs[@]}" "${#mysrcs[@]}" - mydest=${mysrcs[${#mysrcs[@]}-1]} - unset mysrcs[${#mysrcs[@]}-1] -elif [[ ${#mysrcs[@]} == 0 ]] -then - exit 0 -fi - -for src in ${mysrcs[@]} -do - ret=0 - [[ ${src##*/} != lib*.so* ]] && continue - for ext in dll pdb - do - [[ ${src##*/} == *.${ext} ]] && continue - [[ -f ${src} && -f ${src}.${ext} ]] || continue - if [[ -d ${mydest} && ! -n ${force_dest_file_opt} ]] - then - # When copying to directory we keep the basename. - ${me} -T "${myopts[@]}" "${src}.${ext}" "${mydest}/${src##*/}.${ext}" - ret=$? - elif [[ ${mydest##*/} == ${src##*/} ]] - then - # Copy the dll only when we keep the basename. - ${me} -T "${myopts[@]}" "${src}.${ext}" "${mydest}.${ext}" - ret=$? - fi - [[ ${ret} == 0 ]] || exit ${ret} - done -done - -exit 0 -EOCP - chmod +x "${T}/dllhelper/cp" - PATH="${T}/dllhelper:${PATH}" - fi -} - -if [[ ${EBUILD_PHASE} == 'setup' ]] -then - winnt_setup_dllhelper -fi |