Skip to content

[jcw-gen] Build jcw-gen.exe into $(UtilityOutputFullPath) #145

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 26, 2017

Conversation

jonpryor
Copy link
Member

Context: https://github.com/mono/Embeddinator-4000
Context: b6431ac

Embeddinator-4000 is an in-progress utility to easily allow
Java/C/Objective-C/etc. to consume .NET CIL. For example, it would be
desirable to be able to "export" a .dll into an Android .aar file,
so that Java developers using Android Studio can consume and use
managed assemblies in a straightforward manner.

Part of making this work will be to generate Java "bindings" of an
assembly.

"Funny" thing: we already partially have that: jcw-gen.exe will take
an assembly and generate Java Callable Wrappers for Java.Lang.Object
subclasses from that assembly. Aside from the base class requirement,
this is (more or less) what Embeddinator-4000 requires...except that
Embeddinator-4000 wants to handle all managed types, not just
Java.Lang.Object subclasses.

That said, at some point it will be desirable for "transparent" use of
Java.Lang.Object subclasses; Embeddinator-4000 can't (reasonably or
sanely) use it's "normal" non-Java.Lang.Object-aware generator to
bind Java.Lang.Object subclasses; for starters, the base class will
be completely wrong (Java.Lang.Object instead of
java.lang.Object!).

Embeddinator-4000 could use the
Java.Interop.Tools.JavaCallableWrappers assembly in order to perform
this work, but that would require that Embeddinator-4000 reference
Java.Interop or otherwise "obtain" an assembly to build against,
complicating bootstrapping and ongoing maintenance.

Instead, Embeddinator-4000 can use our existing command-line code
generation interface, jcw-gen.exe. This simplifies the build --
at the expense of runtime, as now you need to specify where
jcw-gen.exe is -- and provides a "break" between repositories.

Update jcw-gen.csproj so that it's $(OutputPath) is
$(UtilityOutputFullPath), as is the case for class-parse,
generator, and logcat-parse, so that jcw-gen.exe can be
distributed as part of Xamarin.Android.

Context: https://github.com/mono/Embeddinator-4000
Context: dotnet@b6431ac

Embeddinator-4000 is an in-progress utility to easily allow
Java/C/Objective-C/etc. to consume .NET CIL. For example, it would be
desirable to be able to "export" a `.dll` into an Android `.aar` file,
so that Java developers using Android Studio can consume and use
managed assemblies in a straightforward manner.

Part of making this work will be to generate Java "bindings" of an
assembly.

"Funny" thing: we already partially have that: `jcw-gen.exe` will take
an assembly and generate Java Callable Wrappers for `Java.Lang.Object`
subclasses from that assembly. Aside from the base class requirement,
this is (more or less) what Embeddinator-4000 requires...except that
Embeddinator-4000 wants to handle *all* managed types, not just
`Java.Lang.Object` subclasses.

That said, at some point it will be desirable for "transparent" use of
`Java.Lang.Object` subclasses; Embeddinator-4000 can't (reasonably or
sanely) use it's "normal" non-`Java.Lang.Object`-aware generator to
bind `Java.Lang.Object` subclasses; for starters, the base class will
be completely wrong (`Java.Lang.Object` instead of
`java.lang.Object`!).

Embeddinator-4000 *could* use the
`Java.Interop.Tools.JavaCallableWrappers` assembly in order to perform
this work, but that would require that Embeddinator-4000 reference
Java.Interop or otherwise "obtain" an assembly to build against,
complicating bootstrapping and ongoing maintenance.

Instead, Embeddinator-4000 can use our existing command-line code
generation interface, `jcw-gen.exe`. This simplifies the build --
at the expense of runtime, as now you need to specify where
`jcw-gen.exe` is -- and provides a "break" between repositories.

Update `jcw-gen.csproj` so that it's `$(OutputPath)` is
`$(UtilityOutputFullPath)`, as is the case for `class-parse`,
`generator`, and `logcat-parse`, so that `jcw-gen.exe` can be
distributed as part of Xamarin.Android.
@jonpryor jonpryor requested a review from atsushieno May 26, 2017 01:54
@jonpryor jonpryor merged commit 3ef18c5 into dotnet:master May 26, 2017
@jonpryor jonpryor removed the request for review from atsushieno May 26, 2017 02:23
jonpryor added a commit to jonpryor/java.interop that referenced this pull request Dec 16, 2021
Changes: dotnet/android-tools@34e98e2...db125a7

  * dotnet/android-tools@db125a7: [build] Add d17-* as a branch trigger
  * dotnet/android-tools@f2cbc6a: Add resource dlls to MicroBuild signing. (dotnet#145)
  * dotnet/android-tools@35c89dd: Update MaximumCompatibleNDKMajorVersion to be 23 (dotnet#144)
  * dotnet/android-tools@0a22957: [Xamarin.Android.Tools.AndroidSdk] Parse Properties after header (dotnet#143)
  * dotnet/android-tools@dac3a47: [Xamarin.Android.Tools.AndroidSdk] Add API-31 to KnownVersions (dotnet#141)
  * dotnet/android-tools@fc976d8: [Xamarin.Android.Tools.AndroidSdk] Add JdkInfo.GetSupportedJdkInfos() (dotnet#142)
jonpryor added a commit to jonpryor/java.interop that referenced this pull request Mar 14, 2022
Context: https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1397171
Context: https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1433453

Changes: http://github.com/xamarin/xamarin-android-tools/compare/34e98e2b65917d105169f868b5648f67e68b6784...f4c44e2ac2d91396226f31e8c200464ecc65f648

  * dotnet/android-tools@f4c44e2: [Xamarin.Android.Tools.AndroidSdk] Attributes can be null! (dotnet#158)
  * dotnet/android-tools@f0b3abd: Revert "[Xamarin.Android.Tools.AndroidSdk] Update SDK component for API-32 (dotnet#156)"
  * dotnet/android-tools@bbe85df: [Xamarin.Android.Tools.AndroidSdk] Update SDK component for API-32 (dotnet#156)
  * dotnet/android-tools@a7f4d30: [ci] Mention new NuGet feed and release (dotnet#153)
  * dotnet/android-tools@85ae77f: Merge pull request dotnet#152 from xamarin/dev/mattnorflus/SigningMigration
  * dotnet/android-tools@dd34e54: Adding condition to GetFilesToSign to only include files if build configuration is Release
  * dotnet/android-tools@0e80ea1: Bump LibZipSharp to 2.0.3 (dotnet#151)
  * dotnet/android-tools@d0ab6ac: Fix Typo in commit 0dcf7172 (dotnet#150)
  * dotnet/android-tools@0dcf717: Bump LibZipSharp to 2.0.2 (dotnet#149)
  * dotnet/android-tools@db125a7: [build] Add d17-* as a branch trigger
  * dotnet/android-tools@f2cbc6a: Add resource dlls to MicroBuild signing. (dotnet#145)
  * dotnet/android-tools@35c89dd: Update MaximumCompatibleNDKMajorVersion to be 23 (dotnet#144)
  * dotnet/android-tools@0a22957: [Xamarin.Android.Tools.AndroidSdk] Parse Properties after header (dotnet#143)
  * dotnet/android-tools@dac3a47: [Xamarin.Android.Tools.AndroidSdk] Add API-31 to KnownVersions (dotnet#141)
  * dotnet/android-tools@fc976d8: [Xamarin.Android.Tools.AndroidSdk] Add JdkInfo.GetSupportedJdkInfos() (dotnet#142)
jonpryor added a commit that referenced this pull request Mar 14, 2022
Context: https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1397171
Context: https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1433453

Changes: http://github.com/xamarin/xamarin-android-tools/compare/34e98e2b65917d105169f868b5648f67e68b6784...f4c44e2ac2d91396226f31e8c200464ecc65f648

  * dotnet/android-tools@f4c44e2: [Xamarin.Android.Tools.AndroidSdk] Attributes can be null! (#158)
  * dotnet/android-tools@f0b3abd: Revert "[Xamarin.Android.Tools.AndroidSdk] Update SDK component for API-32 (#156)"
  * dotnet/android-tools@bbe85df: [Xamarin.Android.Tools.AndroidSdk] Update SDK component for API-32 (#156)
  * dotnet/android-tools@a7f4d30: [ci] Mention new NuGet feed and release (#153)
  * dotnet/android-tools@85ae77f: Merge pull request #152 from xamarin/dev/mattnorflus/SigningMigration
  * dotnet/android-tools@dd34e54: Adding condition to GetFilesToSign to only include files if build configuration is Release
  * dotnet/android-tools@0e80ea1: Bump LibZipSharp to 2.0.3 (#151)
  * dotnet/android-tools@d0ab6ac: Fix Typo in commit 0dcf7172 (#150)
  * dotnet/android-tools@0dcf717: Bump LibZipSharp to 2.0.2 (#149)
  * dotnet/android-tools@db125a7: [build] Add d17-* as a branch trigger
  * dotnet/android-tools@f2cbc6a: Add resource dlls to MicroBuild signing. (#145)
  * dotnet/android-tools@35c89dd: Update MaximumCompatibleNDKMajorVersion to be 23 (#144)
  * dotnet/android-tools@0a22957: [Xamarin.Android.Tools.AndroidSdk] Parse Properties after header (#143)
  * dotnet/android-tools@dac3a47: [Xamarin.Android.Tools.AndroidSdk] Add API-31 to KnownVersions (#141)
  * dotnet/android-tools@fc976d8: [Xamarin.Android.Tools.AndroidSdk] Add JdkInfo.GetSupportedJdkInfos() (#142)
@github-actions github-actions bot locked and limited conversation to collaborators Apr 15, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants