This repository has been archived by the owner on Aug 24, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 242
Use Protobuild for project definitions and package management #739
Open
hach-que
wants to merge
12
commits into
sq:master
Choose a base branch
from
RedpointArchive:master
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Is I correct, that main benefit for JSIL itself for now from using Protobuild is support of Xamarin Studio as development IDE? What other benefits will JSIL have from this PR? |
That, the submodule caching and that it also makes it extremely easy for people to start using JSIL. |
kg
force-pushed
the
master
branch
17 times, most recently
from
August 31, 2015 10:37
333b078
to
89e3560
Compare
hach-que
force-pushed
the
master
branch
7 times, most recently
from
September 19, 2016 12:21
8193a6c
to
ec48d23
Compare
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Protobuild is a project generator for cross-platform projects. It is used by MonoGame and other projects to support cross-platform code.
This pull request replaces the C# solution and project files currently residing in the JSIL repository with a Protobuild module. JSIL can then be targeted to various desktop platforms with
Protobuild.exe --generate Linux
(or by double-clicking the executable on Windows).Why do this?
Initial cross-platform support for JSIL
Prior to this you could not build JSIL out of the box on Linux, because of various projects containing Windows-specific build steps. Because Protobuild is a project generator targeting a specific platform, projects no longer contain platform-specific build steps.
This also means that the XNA projects are only generated and included in the solution when targeting Windows; there is no longer any need for the JSIL_NoXNA.sln file.
There's still more we could do here though, with regards to changing some of the code when JSIL is built for Mac OS / Linux (there are some things such as concurrency which Mono doesn't handle very well).
Submodule caching
By specifying the Git submodules as Protobuild packages (as shown in https://github.com/hach-que/JSIL/blob/master/Build/Module.xml), they are locally cached on the developer's computer when Protobuild is run. This means that if you clone JSIL multiple times, which is common on build servers, the submodules are not cloned for each build. Instead the submodule will be cloned from a local cache (which has
git fetch
called on it first).Simplification for the Web platform in Protobuild itself
One of the platforms Protobuild targets is the Web platform, and it uses JSIL to do this. Previously Protobuild downloaded and compiled JSIL locally on the developer's computer when they first targeted the Web platform, but this was always kind of kludgy and had various workarounds (such as the need to patch project files so things would build on Linux). Since that was originally implemented, Protobuild now supports packages, which is a far better way of including JSIL as a tool for use during builds.
This makes using JSIL in Protobuild extremely fast and easy. This is now what happens when you target the Web platform without having JSIL installed on a machine when you start:
By merging this PR into upstream, it means that my build server can just point at the upstream repository to build and publish the JSIL compiler package, which means the latest version will always be available (in binary form) to everyone.