core/pkgs/build-support/dotnet/dotnetenv/wrapper.nix

73 lines
1.8 KiB
Nix
Raw Normal View History

2024-06-30 08:12:46 +00:00
{ dotnetenv }:
2024-05-02 00:46:19 +00:00
2024-06-30 08:12:46 +00:00
{
name,
src,
baseDir ? ".",
slnFile,
targets ? "ReBuild",
verbosity ? "detailed",
options ? "/p:Configuration=Debug;Platform=Win32",
assemblyInputs ? [ ],
preBuild ? "",
namespace,
mainClassName,
mainClassFile,
modifyPublicMain ? true,
2024-05-02 00:46:19 +00:00
}:
let
application = dotnetenv.buildSolution {
2024-06-30 08:12:46 +00:00
inherit
name
src
baseDir
slnFile
targets
verbosity
;
2024-05-02 00:46:19 +00:00
inherit options assemblyInputs preBuild;
inherit modifyPublicMain mainClassFile;
};
in
dotnetenv.buildSolution {
name = "${name}-wrapper";
src = ./Wrapper;
slnFile = "Wrapper.sln";
assemblyInputs = [ application ];
preBuild = ''
2024-06-30 08:12:46 +00:00
addRuntimeDeps()
{
if [ -f $1/nix-support/dotnet-assemblies ]
then
for i in $(cat $1/nix-support/dotnet-assemblies)
do
windowsPath=$(cygpath --windows $i | sed 's|\\|\\\\|g')
assemblySearchArray="$assemblySearchArray @\"$windowsPath\""
2024-05-02 00:46:19 +00:00
2024-06-30 08:12:46 +00:00
addRuntimeDeps $i
done
fi
}
2024-05-02 00:46:19 +00:00
2024-06-30 08:12:46 +00:00
export exePath=$(cygpath --windows $(find ${application} -name \*.exe) | sed 's|\\|\\\\|g')
2024-05-02 00:46:19 +00:00
2024-06-30 08:12:46 +00:00
# Generate assemblySearchPaths string array contents
for path in ${toString assemblyInputs}
do
assemblySearchArray="$assemblySearchArray @\"$(cygpath --windows $path | sed 's|\\|\\\\|g')\", "
addRuntimeDeps $path
done
2024-05-02 00:46:19 +00:00
2024-06-30 08:12:46 +00:00
sed -e "s|@ROOTNAMESPACE@|${namespace}Wrapper|" \
-e "s|@ASSEMBLYNAME@|${namespace}|" \
Wrapper/Wrapper.csproj.in > Wrapper/Wrapper.csproj
2024-05-02 00:46:19 +00:00
2024-06-30 08:12:46 +00:00
sed -e "s|@NAMESPACE@|${namespace}|g" \
-e "s|@MAINCLASSNAME@|${mainClassName}|g" \
-e "s|@EXEPATH@|$exePath|g" \
-e "s|@ASSEMBLYSEARCHPATH@|$assemblySearchArray|" \
Wrapper/Wrapper.cs.in > Wrapper/Wrapper.cs
2024-05-02 00:46:19 +00:00
'';
}