mirror of
https://github.com/SFML/CSFML.git
synced 2026-10-24 13:53:36 +02:00
Add NuGet package tools
This commit is contained in:
1 parent
61f17e3c1d
commit
d8e19e74ed
14 files changed
+680
No files matched your search
@@ -0,0 +1,2 @@
|
||||
*.sh eol=lf -text
|
||||
*.ps1 eol=crlf -text
|
||||
@@ -0,0 +1,9 @@
|
||||
# Ignore .NET build artifacts
|
||||
/*/bin/
|
||||
/*/obj/
|
||||
|
||||
# Ignore compiled CSFML assemblies generated by the scripts
|
||||
/*/runtimes/
|
||||
|
||||
# Ignore the intermediate folder used by scripts to compile CSFML
|
||||
/Build/
|
||||
@@ -0,0 +1,39 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard1.0</TargetFramework>
|
||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
|
||||
|
||||
<!-- Workaround to remove the NETStandard.Library NuGet reference without breaking everything -->
|
||||
<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
|
||||
|
||||
<Version>2.5.0</Version>
|
||||
<Authors>Laurent Gomila</Authors>
|
||||
<PackageTags>sfml csfml</PackageTags>
|
||||
<Copyright>Copyright © Laurent Gomila</Copyright>
|
||||
|
||||
<PackageLicenseExpression>Zlib</PackageLicenseExpression>
|
||||
<PackageProjectUrl>https://www.sfml-dev.org/</PackageProjectUrl>
|
||||
<PackageIconUrl>https://www.sfml-dev.org/images/sfml-icon.png</PackageIconUrl>
|
||||
|
||||
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||
<IncludeBuildOutput>false</IncludeBuildOutput>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0-beta2-18618-05" PrivateAssets="all" />
|
||||
|
||||
<!-- Workaround to remove the NETStandard.Library NuGet reference without breaking everything -->
|
||||
<PackageReference Include="NETStandard.Library" Version="[1.6.0,)" PrivateAssets="all" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<Description>This package contains the native libraries for the C port of SFML, used as a dependency for SFML.Net</Description>
|
||||
<Title>CSFML</Title>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Pack="True" Include="runtimes/**" PackagePath="runtimes" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,31 @@
|
||||
# CSFML NuGet Packages
|
||||
This directory contains all the files needed to build and package the native CSFML libraries for [SFML.Net](github.com/SFML/SFML.Net).
|
||||
**All scripts must be run from the directory they are located in**.
|
||||
That means that your current working directory (`$PWD`) must be the same where the script is.
|
||||
|
||||
All build scripts follow the same routine:
|
||||
1. Clone the SFML repository at `Build/SFML`, if it isn't already there
|
||||
1. Configure & compile SFML with cmake inside of `Build/(RID)/SFML`, where `(RID)` is the [Runtime Identifier](https://docs.microsoft.com/en-us/dotnet/core/rid-catalog) for the target of the libraries being built
|
||||
1. Configure & compile CSFML with cmake inside of `Build/(RID)/CSFML`
|
||||
1. Copy the resulting libraries to `CSFML/runtimes/(RID)/native/`
|
||||
|
||||
|
||||
* `build.win.ps1`
|
||||
* A [PowerShell](https://github.com/PowerShell/PowerShell) script to build Windows native libraries. By default, both `win-x86` and `win-x64` are built. To build only one specific Runtime Identifier, pass it to the script as a parameter (`./build.win.ps1 win-x64`)
|
||||
You must have Visual Studio 2017, cmake, and the Windows SDK 8.1 installed to run this script.
|
||||
|
||||
* `build.linux.sh`
|
||||
* A [Bash](https://www.gnu.org/software/bash/) script to build libraries for a generic Linux distribution. The [Runtime Identifier](https://docs.microsoft.com/en-us/dotnet/core/rid-catalog) of the linux distribution must be specified as a parameter to the script.
|
||||
This generic script doesn't install any of its dependencies. As such, you must have cmake and make installed, as well as all [SFML Dependencies](https://www.sfml-dev.org/tutorials/2.5/compile-with-cmake.php#installing-dependencies) available to cmake.
|
||||
|
||||
* `build.docker.sh`, `build.docker.ps1`
|
||||
* A script to build the native libraries for a Linux distribution in a Docker container. If no RID is specified as a parameter, all supported RIDs will be built. Currently, the supported RIDs are:
|
||||
* `alpine-x64`
|
||||
* `debian-x64` (compatible with derivatives such as Ubuntu and Linux Mint)
|
||||
* `fedora-x64`
|
||||
|
||||
* `pushnuget.ps1`, `pushnuget.sh`
|
||||
* A script to automatically build and push the NuGet package to nuget.org. Make sure that all the native libraries are in `CSFML/runtimes/` before running this.
|
||||
|
||||
* Other scripts
|
||||
* Any script not mentioned here is intended for internal use by other scripts only and shouldn't be called directly.
|
||||
@@ -0,0 +1,43 @@
|
||||
Param(
|
||||
[Parameter(Position = 0)]
|
||||
[string] $RID
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
if (-not $RID ) {
|
||||
Write-Output "No RID specified, building all known RIDs"
|
||||
./build.docker.ps1 "alpine-x64"
|
||||
./build.docker.ps1 "debian-x64"
|
||||
./build.docker.ps1 "fedora-x64"
|
||||
exit
|
||||
}
|
||||
|
||||
$Image = $null
|
||||
$Shell = $null
|
||||
|
||||
switch ($RID) {
|
||||
'alpine-x64' {
|
||||
$Image = 'alpine'
|
||||
$Shell = '/bin/sh'
|
||||
}
|
||||
'debian-x64' {
|
||||
$Image = 'debian'
|
||||
$Shell = '/bin/bash'
|
||||
}
|
||||
'fedora-x64' {
|
||||
$Image = 'fedora'
|
||||
$Shell = '/bin/bash'
|
||||
}
|
||||
Default {
|
||||
Write-Error "Unknown Runtime Identifier $RID"
|
||||
exit
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "Building $RID with image $Image using $Shell"
|
||||
|
||||
$RepoRoot = (Get-Item (git rev-parse --show-toplevel)).FullName
|
||||
|
||||
docker run --rm --mount "type=bind,source=$RepoRoot,destination=/csfml/" $Image $Shell -c "cd /csfml/tools/nuget/; ./docker.$RID.sh"
|
||||
exit $LastExitCode
|
||||
Executable
+44
@@ -0,0 +1,44 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Automatically exit on error
|
||||
set -e
|
||||
|
||||
if [[ -z "$1" ]]; then
|
||||
echo 'No Runtime Identifier specified, running all known RIDs'
|
||||
./build.docker.sh "alpine-x64"
|
||||
./build.docker.sh "debian-x64"
|
||||
./build.docker.sh "fedora-x64"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
RID="$1"
|
||||
|
||||
case "$RID" in
|
||||
|
||||
'alpine-x64')
|
||||
Image='alpine'
|
||||
Shell='/bin/sh'
|
||||
;;
|
||||
|
||||
'debian-x64')
|
||||
Image='debian'
|
||||
Shell='/bin/bash'
|
||||
;;
|
||||
|
||||
'fedora-x64')
|
||||
Image='fedora'
|
||||
Shell='/bin/bash'
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unknown Runtime Identifier $RID"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
echo "Building $RID using image $Image with $Shell"
|
||||
|
||||
RepoRoot="$(realpath "$(git rev-parse --show-toplevel)")"
|
||||
|
||||
docker run --rm --mount "type=bind,source=$RepoRoot,destination=/csfml/" "$Image" "$Shell" -c "cd /csfml/tools/nuget/; ./docker.$RID.sh"
|
||||
Executable
+155
@@ -0,0 +1,155 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Automatically exit on error
|
||||
set -e
|
||||
|
||||
# ========================= #
|
||||
# PRELUDE: A note on rpaths #
|
||||
# ========================= #
|
||||
|
||||
# Unlike Windows, Linux doesn't search the current directory by default when searching for shared libraries (.so)
|
||||
# It only searches the system default directories (usually /lib and /usr/lib) and the paths in LD_LIBRARY_PATH
|
||||
|
||||
# The .NET Runtime will find the CSFML library in its NuGet packages just fine, but that library will then request
|
||||
# the OS for libsfml-(module).so, and the .NET Runtime will have no say in how that SFML library is found.
|
||||
|
||||
# Without SFML installed globally on the system, this will fail, causing the loading of CSFML to fail, causing the
|
||||
# .NET Runtime to think the CSFML library doesn't exist or is invalid.
|
||||
|
||||
# And so, we need to set the rpath of the CSFML library.
|
||||
# The rpath is a special value embedded straight into a library that specifies to the OS a list of folders where
|
||||
# other libraries that it references may be found.
|
||||
# $ORIGIN, a kind-of environment variable, can be used in rpath to point to the folder where the library currently is.
|
||||
# To let the OS know that we intend to use $ORIGIN, we need to add the ORIGIN flag to our ELF with the -z origin
|
||||
# gcc linker option
|
||||
|
||||
# Since CSFML and SFML will always be deployed on the same folder by NuGet, we just need to add an rpath to CSFML
|
||||
# that points to $ORIGIN, causing the OS to search the current folder for SFML, without interference from .NET
|
||||
|
||||
# We also add the same rpath to SFML itself for future-proofing, in case we ever decide to ship some Linux SFML
|
||||
# dependencies on the Native package.
|
||||
|
||||
# =================================================== #
|
||||
# STEP 1: Setup all variables needed during the build #
|
||||
# =================================================== #
|
||||
|
||||
if [[ -z "$1" ]]; then
|
||||
echo "Please specify the platform Runtime Identifier as an argument to this script"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Please note that all SFML dependencies must be installed and available to cmake. SFML does not ship with its linux dependencies."
|
||||
|
||||
RID="$1"
|
||||
|
||||
SFMLBranch="2.5.x" # The branch or tag of the SFML repository to be cloned
|
||||
CSFMLDir="$(realpath "$(git rev-parse --show-toplevel)")" # The directory of the source code of CSFML
|
||||
|
||||
OutDir="./CSFML/runtimes/$RID/native" # The base directory of all CSFML modules, used to copy the final libraries
|
||||
mkdir -p "$OutDir"
|
||||
OutDir="$(realpath "$OutDir")"
|
||||
|
||||
echo "Building $RID"
|
||||
|
||||
mkdir -p "Build"
|
||||
pushd "Build"
|
||||
|
||||
# ================== #
|
||||
# STEP 2: Clone SFML #
|
||||
# ================== #
|
||||
|
||||
if [[ ! -d "SFML/.git" ]]; then
|
||||
echo "Cloning SFML"
|
||||
rm -rf "SFML"
|
||||
git clone --branch "$SFMLBranch" --depth 1 "git://github.com/SFML/SFML.git" "SFML"
|
||||
fi
|
||||
|
||||
SFMLDir="$(realpath SFML)"
|
||||
|
||||
# ================== #
|
||||
# STEP 3: Build SFML #
|
||||
# ================== #
|
||||
|
||||
rm -rf "$RID"
|
||||
mkdir -p "$RID"
|
||||
pushd "$RID"
|
||||
|
||||
echo "Building SFML"
|
||||
mkdir -p SFML
|
||||
pushd SFML
|
||||
|
||||
SFMLBuiltDir="$(realpath .)" # The directory where SFML was built to. Used later to direct cmake when building CSFML
|
||||
|
||||
mkdir -p lib
|
||||
# The directory that contains the final SFML libraries
|
||||
# Since linux libraries don't support static linking from a shared library, this is used to copy the
|
||||
# SFML shared libraries together with the CSFML shared libraries into SFML.Net
|
||||
SFMLLibDir="$(realpath lib)"
|
||||
|
||||
cmake -E env LDFLAGS="-z origin" \
|
||||
cmake \
|
||||
'-DBUILD_SHARED_LIBS=1' \
|
||||
'-DCMAKE_BUILD_TYPE=Release' \
|
||||
"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=$SFMLLibDir" \
|
||||
'-DCMAKE_BUILD_WITH_INSTALL_RPATH=1' \
|
||||
'-DCMAKE_INSTALL_RPATH=$ORIGIN' \
|
||||
"$SFMLDir"
|
||||
|
||||
cmake --build . --config Release
|
||||
|
||||
popd # Pop SFML
|
||||
|
||||
# =================== #
|
||||
# STEP 4: Build CSFML #
|
||||
# =================== #
|
||||
|
||||
echo "Building CSFML using SFML at $SFMLBuiltDir"
|
||||
mkdir -p CSFML
|
||||
pushd CSFML
|
||||
|
||||
mkdir -p lib
|
||||
CSFMLLibDir="$(realpath lib)" # The directory that contains the final CSFML libraries. Used to copy the result into SFML.Net
|
||||
|
||||
cmake -E env LDFLAGS="-z origin" \
|
||||
cmake \
|
||||
"-DSFML_DIR=$SFMLBuiltDir" \
|
||||
'-DBUILD_SHARED_LIBS=1' \
|
||||
'-DCMAKE_BUILD_TYPE=Release' \
|
||||
"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=$CSFMLLibDir" \
|
||||
'-DCMAKE_BUILD_WITH_INSTALL_RPATH=1' \
|
||||
'-DCMAKE_INSTALL_RPATH=$ORIGIN' \
|
||||
"$CSFMLDir"
|
||||
cmake --build . --config Release
|
||||
|
||||
# ======================================== #
|
||||
# STEP 5: Copy result to the NuGet folders #
|
||||
# ======================================== #
|
||||
|
||||
# Copies one SFML and CSFML module into the NuGet package
|
||||
# The module name must be passed to this function as an argument, in lowercase
|
||||
# This function then copies $SFMLLibDir/libsfml-(module).so and
|
||||
# $CSFMLLibDir/libcsfml-(module).so into $OutDir
|
||||
copymodule()
|
||||
{
|
||||
MODULE="$1"
|
||||
|
||||
mkdir -p "$OutDir"
|
||||
|
||||
# Note the wildcard at the end of the first argument
|
||||
# We are copying every versioned file here, not just the .so
|
||||
# (libsfml-audio.so, libsfml-audio.so.2, libsfml-audio.so.2.5, etc)
|
||||
# This is needed because of the way linux searches for libraries based
|
||||
# one their SONAME
|
||||
cp "$SFMLLibDir/libsfml-$MODULE.so"* "$OutDir"
|
||||
|
||||
cp "$CSFMLLibDir/libcsfml-$MODULE.so" "$OutDir"
|
||||
}
|
||||
|
||||
copymodule audio
|
||||
copymodule graphics
|
||||
copymodule system
|
||||
copymodule window
|
||||
|
||||
popd # Pop CSFML
|
||||
popd # Pop $RID
|
||||
popd # Pop Build
|
||||
@@ -0,0 +1,204 @@
|
||||
Param(
|
||||
[Parameter(Position = 0)]
|
||||
[string] $RID
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# =================================================== #
|
||||
# STEP 1: Setup all variables needed during the build #
|
||||
# =================================================== #
|
||||
|
||||
if (-not $RID) {
|
||||
Write-Output "No RID specified, building all known RIDs"
|
||||
./build.win.ps1 "win-x86"
|
||||
./build.win.ps1 "win-x64"
|
||||
exit
|
||||
}
|
||||
|
||||
$Generator = 'Visual Studio 15 2017'
|
||||
|
||||
switch ($RID) {
|
||||
'win-x86' {
|
||||
$Architecture = 'Win32'
|
||||
}
|
||||
'win-x64' {
|
||||
$Architecture = 'x64'
|
||||
}
|
||||
Default {
|
||||
Write-Error "Unknown RID '$RID'"
|
||||
exit
|
||||
}
|
||||
}
|
||||
|
||||
Write-Output "Building $RID"
|
||||
Write-Output "Using $Generator as the cmake generator"
|
||||
Write-Output "Using architecture $Architecture"
|
||||
|
||||
$SFMLBranch = "2.5.x" # The branch or tag of the SFML repository to be cloned
|
||||
$CSFMLDir = (Get-Item (git rev-parse --show-toplevel)).FullName # The directory of the source code of CSFML
|
||||
$OutDir = (Get-Item ./CSFML/runtimes/$RID/native).FullName # The directory of all CSFML modules, used to copy the final dlls
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Ensures that the last command run was a success, checking its exit code.
|
||||
#>
|
||||
function Ensure-Success() {
|
||||
if ($LastExitCode -ne 0) {
|
||||
exit
|
||||
}
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Creates a new subdirectory of the current working directory and pushes it into the directory
|
||||
stack with Push-Location, so that it can be reverted with Pop-Location.
|
||||
|
||||
.PARAMETER path
|
||||
The path to create and push.
|
||||
#>
|
||||
function New-Push($path) {
|
||||
New-Item -ItemType Directory -ErrorAction Ignore $path > $null
|
||||
Push-Location $path > $null
|
||||
}
|
||||
|
||||
New-Push "Build"
|
||||
|
||||
# ================== #
|
||||
# STEP 2: Clone SFML #
|
||||
# ================== #
|
||||
|
||||
If (-not (Test-Path "SFML/.git")) {
|
||||
Write-Output "Cloning SFML"
|
||||
Remove-Item -Recurse -Force -ErrorAction Ignore "SFML" > $null
|
||||
|
||||
git clone --branch "$SFMLBranch" --depth 1 "git://github.com/SFML/SFML.git" "SFML"
|
||||
Ensure-Success
|
||||
}
|
||||
|
||||
Push-Location "SFML"
|
||||
|
||||
$SFMLDir = (Get-Item .).FullName
|
||||
|
||||
switch ($RID) {
|
||||
'win-x86' {
|
||||
$SFMLExtLibs = (Get-Item ./extlibs/libs-msvc-universal/x86).FullName
|
||||
$SFMLAudioExtras = (Get-Item ./extlibs/bin/x86).FullName
|
||||
}
|
||||
'win-x64' {
|
||||
$SFMLExtLibs = (Get-Item ./extlibs/libs-msvc-universal/x64).FullName
|
||||
$SFMLAudioExtras = (Get-Item ./extlibs/bin/x64).FullName
|
||||
}
|
||||
Default {
|
||||
Write-Error "Unknown RID '$RID'"
|
||||
exit
|
||||
}
|
||||
}
|
||||
|
||||
Pop-Location # Pop SFML
|
||||
|
||||
# ================== #
|
||||
# STEP 3: Build SFML #
|
||||
# ================== #
|
||||
|
||||
Remove-Item -Recurse -Force -ErrorAction Ignore "$RID"
|
||||
New-Push "$RID"
|
||||
|
||||
|
||||
|
||||
Write-Output "Building SFML"
|
||||
New-Push SFML
|
||||
|
||||
$SFMLBuiltDir = Get-Location # The directory where SFML was built to. Used later to direct cmake when building CSFML
|
||||
|
||||
cmake `
|
||||
'-DBUILD_SHARED_LIBS=0' `
|
||||
'-DCMAKE_BUILD_TYPE=Release' `
|
||||
'-DCMAKE_SYSTEM_VERSION=8.1' `
|
||||
'-DSFML_USE_STATIC_STD_LIBS=1' `
|
||||
"-G$Generator" `
|
||||
"-A$Architecture" `
|
||||
$SFMLDir
|
||||
Ensure-Success
|
||||
|
||||
cmake --build . --config Release -- '-verbosity:minimal'
|
||||
Ensure-Success
|
||||
|
||||
Pop-Location # Pop SFML
|
||||
|
||||
# =================== #
|
||||
# STEP 4: Build CSFML #
|
||||
# =================== #
|
||||
|
||||
Write-Output "Building CSFML using SFML at $SFMLBuiltDir"
|
||||
New-Push CSFML
|
||||
|
||||
New-Item -ItemType Directory lib > $null
|
||||
$CSFMLLibDir = (Get-Item lib).FullName; # The directory where the final CSFML dlls are located
|
||||
|
||||
cmake `
|
||||
"-DSFML_DIR=$SFMLBuiltDir" `
|
||||
'-DCSFML_LINK_SFML_STATICALLY=1' `
|
||||
"-DCMAKE_LIBRARY_PATH=$SFMLExtLibs" `
|
||||
`
|
||||
"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=$CSFMLLibDir" `
|
||||
"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=$CSFMLLibDir" `
|
||||
`
|
||||
"-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY=$CSFMLLibDir" `
|
||||
"-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE=$CSFMLLibDir" `
|
||||
`
|
||||
"-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=$CSFMLLibDir" `
|
||||
"-DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=$CSFMLLibDir" `
|
||||
`
|
||||
'-DCMAKE_SYSTEM_VERSION=8.1' `
|
||||
'-DSTATIC_STD_LIBS=1' `
|
||||
`
|
||||
"-DBUILD_SHARED_LIBS=1" `
|
||||
'-DCMAKE_BUILD_TYPE=Release' `
|
||||
`
|
||||
"-G$generator" `
|
||||
"-A$Architecture" `
|
||||
`
|
||||
$CSFMLDir
|
||||
Ensure-Success
|
||||
|
||||
cmake --build . --config Release -- '-verbosity:minimal'
|
||||
Ensure-Success
|
||||
|
||||
# ======================================== #
|
||||
# STEP 5: Copy result to the NuGet folders #
|
||||
# ======================================== #
|
||||
|
||||
Write-Output "Copying CSFML modules"
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Copies a specific CSFML module into its proper NuGet project
|
||||
|
||||
.DESCRIPTION
|
||||
This function locates a file named csfml-(module)-2.dll inside of the
|
||||
folder specified by $CSFMLLibDir and copies it to $OutDir/CSFML/runtimes/(RID)/native/csfml-(module).dll.
|
||||
|
||||
Notice how it removes the "-2" at the end, to make the name compatible with other platforms.
|
||||
|
||||
.PARAMETER module
|
||||
The case-insensitive name of the module to copy.
|
||||
#>
|
||||
function Copy-Module($module) {
|
||||
Write-Output "Copying CSFML $module"
|
||||
|
||||
New-Item -ItemType Directory $OutDir -ErrorAction Ignore > $null
|
||||
Copy-Item "$CSFMLLibDir/csfml-$module-2.dll" "$OutDir/csfml-$module.dll" -Force > $null
|
||||
}
|
||||
|
||||
Copy-Module 'Audio'
|
||||
Copy-Module 'Graphics'
|
||||
Copy-Module 'System'
|
||||
Copy-Module 'Window'
|
||||
|
||||
Write-Output "Copying Audio module extra files"
|
||||
Copy-Item "$SFMLAudioExtras/*" "$OutDir/CSFML/runtimes/$RID/native"
|
||||
|
||||
Pop-Location # Pop CSFML
|
||||
Pop-Location # Pop $RID
|
||||
Pop-Location # Pop Build
|
||||
Executable
+24
@@ -0,0 +1,24 @@
|
||||
#!/bin/sh
|
||||
# Alpine Linux doesn't come with bash by default, so we need to bootstrap everything with sh
|
||||
|
||||
# Automatically exit on error
|
||||
set -e
|
||||
|
||||
apk add \
|
||||
bash \
|
||||
git \
|
||||
freetype-dev \
|
||||
libx11-dev \
|
||||
libxrandr-dev \
|
||||
eudev-dev \
|
||||
mesa-dev \
|
||||
flac-dev \
|
||||
libogg-dev \
|
||||
libvorbis-dev \
|
||||
openal-soft-dev \
|
||||
libpthread-stubs \
|
||||
cmake \
|
||||
make \
|
||||
g++
|
||||
|
||||
./build.linux.sh alpine-x64
|
||||
Executable
+25
@@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Automatically exit on error
|
||||
set -e
|
||||
|
||||
apt-get update
|
||||
|
||||
apt-get install -y \
|
||||
git \
|
||||
libfreetype6-dev \
|
||||
xorg-dev \
|
||||
libxrandr-dev \
|
||||
libudev-dev \
|
||||
libgl1-mesa-dev \
|
||||
libflac-dev \
|
||||
libogg-dev \
|
||||
libvorbis-dev \
|
||||
libvorbisenc2 \
|
||||
libvorbisfile3 \
|
||||
libopenal-dev \
|
||||
libpthread-stubs0-dev \
|
||||
cmake \
|
||||
g++
|
||||
|
||||
./build.linux.sh debian-x64
|
||||
Executable
+21
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Automatically exit on error
|
||||
set -e
|
||||
|
||||
dnf install -y \
|
||||
git \
|
||||
freetype-devel \
|
||||
xorg-x11-server-devel \
|
||||
libXrandr-devel \
|
||||
systemd-devel \
|
||||
mesa-libEGL-devel \
|
||||
flac-devel \
|
||||
libogg-devel \
|
||||
libvorbis-devel \
|
||||
openal-soft-devel \
|
||||
gcc-c++ \
|
||||
cmake \
|
||||
make
|
||||
|
||||
./build.linux.sh fedora-x64
|
||||
@@ -0,0 +1,34 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.26124.0
|
||||
MinimumVisualStudioVersion = 15.0.26124.0
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSFML", "CSFML\CSFML.csproj", "{A0261C3A-E44E-40E3-8030-C14E3272B720}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A0261C3A-E44E-40E3-8030-C14E3272B720}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A0261C3A-E44E-40E3-8030-C14E3272B720}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A0261C3A-E44E-40E3-8030-C14E3272B720}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{A0261C3A-E44E-40E3-8030-C14E3272B720}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{A0261C3A-E44E-40E3-8030-C14E3272B720}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{A0261C3A-E44E-40E3-8030-C14E3272B720}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{A0261C3A-E44E-40E3-8030-C14E3272B720}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A0261C3A-E44E-40E3-8030-C14E3272B720}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A0261C3A-E44E-40E3-8030-C14E3272B720}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{A0261C3A-E44E-40E3-8030-C14E3272B720}.Release|x64.Build.0 = Release|Any CPU
|
||||
{A0261C3A-E44E-40E3-8030-C14E3272B720}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{A0261C3A-E44E-40E3-8030-C14E3272B720}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,28 @@
|
||||
Param(
|
||||
[Parameter(Mandatory, Position = 0)]
|
||||
[string]$APIKey
|
||||
)
|
||||
|
||||
dotnet build -c Release
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Error "Build failed"
|
||||
exit 1
|
||||
}
|
||||
|
||||
$count = 0
|
||||
$packages = (Get-ChildItem */bin/Release/*.nupkg)
|
||||
foreach ($package in $packages) {
|
||||
Write-Progress "Pushing packages" -CurrentOperation "Pushing $($package.Name)" -PercentComplete (($count * 100.0) / $packages.Length)
|
||||
|
||||
dotnet nuget push -k $APIKey -s https://api.nuget.org/v3/index.json $package.FullName
|
||||
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Error "Unable to push $($package.Name)"
|
||||
exit 1
|
||||
}
|
||||
|
||||
$count++
|
||||
}
|
||||
|
||||
Write-Progress "Done" -Completed
|
||||
Write-Output "Successfully pushed $count packages"
|
||||
Executable
+21
@@ -0,0 +1,21 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Automatically exit on error
|
||||
set -e
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "Specify the NuGet API Key as a parameter to this script"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dotnet build -c Release
|
||||
|
||||
# Find every file that matches the glob ./*/bin/Release/*.nupkg
|
||||
# and push it to nuget.org using the key specified as a parameter
|
||||
# to this script
|
||||
|
||||
find \
|
||||
-type f \
|
||||
-regex "\./\w+/bin/Release/[^/]+\.nupkg" \
|
||||
-exec dotnet nuget push -k "$1" -s "https://api.nuget.org/v3/index.json" "{}" ";"
|
||||
|
||||
Reference in new issue
Block a user