| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 4.0.0-r2 | 8 | amd64 arm64 | 0 |
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="8"
SLOT="0"
KEYWORDS="amd64 arm64"
RESTRICT="mirror"
USE_DOTNET="net45"
USE_MSBUILD="msbuild15-9"
inherit vcs-snapshot
# inherit directives are placed before IUSE line because of dotnet_expand and msbuild_expand functions
inherit dotnet
inherit msbuild-framework
IUSE="$(dotnet_expand ${USE_DOTNET}) $(msbuild_expand ${USE_MSBUILD}) +msbuild +debug developer"
NAME="roslyn"
HOMEPAGE="https://github.com/dotnet/${NAME}"
EGIT_COMMIT="c7d6f9fab845ffd943216da465022744e7d35f22"
SRC_URI="${HOMEPAGE}/archive/${EGIT_COMMIT}.tar.gz -> ${NAME}-${PV}.tar.gz"
S="${WORKDIR}/roslyn-${PV}"
DESCRIPTION="C# compiler with rich code analysis APIs"
LICENSE="MIT" # https://github.com/dotnet/roslyn/blob/master/License.txt
COMMON_DEPEND=">=dev-lang/mono-5.4.0.167 <dev-lang/mono-9999
msbuild_targets_msbuild15-9? (
dev-dotnet/msbuild-tasks-api:15.9
dev-dotnet/msbuild-defaulttasks:15.9
)
"
RDEPEND="${COMMON_DEPEND}
"
DEPEND="${COMMON_DEPEND}
"
# BDEPEND
# dev-dotnet/msbuildtasks
src_prepare() {
if ! use msbuild_targets_msbuild15-9 ; then
die "USE_MSBUILD is not set"
fi
# eapply "${FILESDIR}/99-CopyRefAssemblyFix.patch"
eapply "${FILESDIR}/csc-name.patch"
eapply "${FILESDIR}/remove-analyzers.patch"
cd ${S}/src/Compilers/Core/MSBuildTask || die
eres2cs "ErrorString.resx" "ErrorString.resx.cs" "ErrorString" "Microsoft.CodeAnalysis.BuildTasks"
cd ${S} || die
eapply_user
}
src_resources() {
local OUTNAME=""
OUTNAME=Microsoft.CodeAnalysis.BuildTasks.ErrorString.resources
eresgen "ErrorString.resx" "${OUTNAME}"
echo -n ' -resource:"'${OUTNAME}'" '
}
SOURCES=(
"../../Shared/NamedPipeUtil.cs"
"../../Shared/BuildServerConnection.cs"
"../../Shared/RuntimeHostInfo.cs"
"../CommandLine/BuildProtocol.cs"
"../CommandLine/ConsoleUtil.cs"
"../CommandLine/NativeMethods.cs"
"../CommandLine/CompilerServerLogger.cs"
"../Portable/CommitHashAttribute.cs"
"../Portable/InternalUtilities/CommandLineUtilities.cs"
"../Portable/InternalUtilities/CompilerOptionParseUtilities.cs"
"../Portable/InternalUtilities/Debug.cs"
"../Portable/InternalUtilities/IReadOnlySet.cs"
# "../Portable/InternalUtilities/NullableAttributes.cs"
"../Portable/InternalUtilities/PlatformInformation.cs"
"../Portable/InternalUtilities/ReflectionUtilities.cs"
"../Portable/InternalUtilities/RoslynString.cs"
"../Portable/InternalUtilities/UnicodeCharacterUtilities.cs"
"ManagedToolTask.cs"
"CanonicalError.cs"
"MvidReader.cs"
"CopyRefAssembly.cs"
"ValidateBootstrap.cs"
"CommandLineBuilderExtension.cs"
"Csc.cs"
"Csi.cs"
"ICompilerOptionsHostObject.cs"
"ICscHostObject5.cs"
"InteractiveCompiler.cs"
"IVbcHostObject6.cs"
"ManagedCompiler.cs"
"PropertyDictionary.cs"
"RCWForCurrentContext.cs"
"Utilities.cs"
"Vbc.cs"
"ErrorString.resx.cs"
"IAnalyzerConfigFilesHostObject.cs"
)
src_references() {
echo -n " $(reference_dependency Microsoft.Build.Framework-15.9) "
echo -n " $(reference_dependency Microsoft.Build.Tasks-15.9) "
}
src_compile_one_target()
{
cd "${S}/src/Compilers/Core/MSBuildTask" || die
mkdir -p "$(bin_dir)/${MSBUILD_TARGET}" || die
local RESOURCES="$(src_resources)"
einfo RESOURCES="${RESOURCES}"
local REFERENCES="$(src_references)"
einfo REFERENCES="${REFERENCES}"
ecsc ${RESOURCES} ${REFERENCES} /langversion:9.0 /nullable:annotations /define:NET472 "${SOURCES[@]}" $(output_dll "${MSBUILD_TARGET}/Microsoft.Build.Tasks.CodeAnalysis")
return 0;
}
src_install_one_target()
{
local OUTPUT_FILENAME="$(bin_dir)/${MSBUILD_TARGET}/Microsoft.Build.Tasks.CodeAnalysis.dll"
insinto "$(RoslynTargetsPath)"
doins "${S}/src/Compilers/Core/MSBuildTask/Microsoft.Managed.Core.targets"
doins "${S}/src/Compilers/Core/MSBuildTask/Microsoft.CSharp.Core.targets"
doins "${S}/src/Compilers/Core/MSBuildTask/Microsoft.VisualBasic.Core.targets"
doins "${FILESDIR}/Microsoft.Managed.Core.CurrentVersions.targets"
doins "${OUTPUT_FILENAME}"
# Create a symlink to the target specified as the first parameter, at the path specified by the second parameter.
# Note that the target is interpreted verbatim; it needs to either specify a relative path or an absolute path including ${EPREFIX}.
dosym "${EPREFIX}/usr/bin/csc" "$(RoslynTargetsPath)/csc"
# if use gac; then
# egacinstall "${OUTPUT_FILENAME}"
# fi
return 0;
}
src_compile() {
if use msbuild; then
local targets=( ${USE_MSBUILD} )
for target in ${targets[@]}; do
local etarget="$( msbuild_expand ${target} )"
if use ${etarget}; then
local TARGET_SLOT=${target//msbuild/}
MSBUILD_TARGET=${TARGET_SLOT//-/.}
src_compile_one_target "${MSBUILD_TARGET}" || die
fi
done
fi
}
src_install() {
if use msbuild; then
local targets=( ${USE_MSBUILD} )
for target in ${targets[@]}; do
local etarget="$( msbuild_expand ${target} )"
if use ${etarget}; then
local TARGET_SLOT=${target//msbuild/}
MSBUILD_TARGET=${TARGET_SLOT//-/.}
src_install_one_target "${MSBUILD_TARGET}" || die
fi
done
fi
}
>=dev-lang/mono-5.4.0.167 <dev-lang/mono-9999 msbuild_targets_msbuild15-9? ( dev-dotnet/msbuild-tasks-api:15.9 dev-dotnet/msbuild-defaulttasks:15.9 )
>=dev-lang/mono-5.4.0.167 <dev-lang/mono-9999 msbuild_targets_msbuild15-9? ( dev-dotnet/msbuild-tasks-api:15.9 dev-dotnet/msbuild-defaulttasks:15.9 )