Граф коммитов

150 Коммитов

Автор SHA1 Сообщение Дата
Rolf Bjarne Kvinge 30bac18e10 [mtouch] Fix BundleId. (#1315)
The BundleId property is used by the code that generates the mSYM directory,
but its value was always the default value 'com.yourcompany.sample' instead of
looked up in the app's Info.plist.

So fix the BundleId property to do the expected.

Also fix the mSYM test (SymbolicationData) to actually test mSYM stuff (it was
partially disabled when we disabled automatic mSYM generation for C8, and
never re-enabled), and port it to the new and better test syntax, and add a
few more asserts to check the manifest.xml generation.
2016-12-08 16:05:47 +01:00
Chris Hamons c67bd9096c [XM] Add partial static registrar support (#1191) 2016-12-01 10:18:30 -06:00
Rolf Bjarne Kvinge 7c6d04f1c5 [mtouch] Simplify code a bit by reusing existing logic. (#1148) 2016-11-09 12:49:19 -05:00
Rolf Bjarne Kvinge ac98469ddd [mtouch] Run the partial static registrar separately for 32-bit and 64-bit. (#1078)
Run the partial static registrar separately for 32-bit and 64-bit, since this
is required with the upcoming changes to embed metadata tokens inside the
generated output, because the metadata tokens are different between the 32-bit
and 64-bit versions of Xamarin.iOS.dll.

Also make sure to properly resolve the 32-bit and 64-bit assemblies correctly
(by setting the ArchDirectory on the assembly resolver), so that we don't pick
up the reference assembly (which does not have the right metadata tokens).

Additionally stop running the partial static registrar for MonoTouch.Dialog-1,
since with the upcoming changes to use metadata tokens in the generated
output, we won't support registering anything more than once. This shouldn't
make much of an impact, because MonoTouch.Dialog-1 is fairly small, and
doesn't take long to register in the dynamic registrar. For device builds (or
when the static registrar is selected) this has no effect, since in that case
we're registering everythinga anyway.
2016-11-01 16:41:41 +01:00
Sebastien Pouliot 11390f119c [mtouch] Don't set Force when the cache is invalid (as it will be deleted) (#1016)
If the cache is invalid we print a warning:

> A full rebuild will be performed because the cache is either incomplete or entirely missing.

and set `Driver.Force = true;` (in Application.cs).

This later means that extracting the native code is done on each target:

```
		public static bool IsUptodate (string source, string target)
		{
			if (Driver.Force)
				return false;
```

even if this is identical between 32 and 64 bits (targets). That's
inefficient and, for large binding libraries (e.g. > 1GB), has a
noticable impact on build time (see timestamps).

Considering that the cache is cleaned (when detected as invalid) then
this Force condition is not really needed.

E.g. in `IsUptodate`
* the first time (arch) it's called will have to extract the native library;
* if a 2nd arch is built (fat) then it will be found as present and will
  not be extracted again

Removing the `Driver.Force = true;` in this condition let the `-f` option
continue to extract it twice, which can be useful in debugging and testing.
As such the check is not removed from `IsUptodate`

Timestamps (before)

		Setup: 25 ms
		Resolve References: 1605 ms
		Extracted native link info: 10465 ms
		...

Timestamps (after)
		Setup: 24 ms
		Resolve References: 1560 ms
		Extracted native link info: 5473 ms
		...

Total build times (from XS) was around 90-100 seconds so 5 seconds is
about 10%. The actual savings will depend on how much native code needs
to be extracted, but it should help most release builds (almost always
fat builds).
2016-11-01 09:10:09 -04:00
Rolf Bjarne Kvinge 1c81c8a5a8 [mtouch] Improve logging a bit. (#1071)
* Show log statements from assembly comparison.
2016-10-31 16:53:02 -04:00
Rolf Bjarne Kvinge e8789f2af6 [mtouch] Copy frameworks referenced by watch extensions to the bundle. (#1070)
Watch extensions do not have access to the containing app bundle on the phone,
so instead copy frameworks to the extension itself.
2016-10-31 17:02:37 +01:00
Rolf Bjarne Kvinge 0b3ab9cc15 [mtouch] Copy third-party frameworks from extensions to the main app's Frameworks directory. Fixes #45800. (#1069)
The container app may not reference the same third-party frameworks as
extensions, which means that we must make sure the extension's frameworks are
also included in the app bundle.

So when building extensions save a list of all third-party frameworks, and
then read that list and include those frameworks when building the main app.

https://bugzilla.xamarin.com/show_bug.cgi?id=45800
2016-10-31 12:36:06 +01:00
Rolf Bjarne Kvinge dde242c32a Allow using LinkWith attribute without a native library. (#997)
This makes it possible to set linker flags per assembly:

    [assembly: LinkWith (LinkerFlags = "-lsqlite3")]

Which is required when incremental builds is enabled and a particular assembly
needs special linker flags (because we don't propagate the global -gcc_flags
to each dylib we build when doing incremental builds).

Also add an option to set the dlsym mode for an assembly (using the LinkWith
attribute).
2016-10-28 10:50:42 -04:00
Rolf Bjarne Kvinge ea1a08785d [mtouch] Verify the correct SDK version when referencing frameworks from watchOS projects. (#1058) 2016-10-28 09:16:35 -04:00
Rolf Bjarne Kvinge c533db66bf [mtouch] Always use ordinal string comparisons. (#995) 2016-10-14 12:34:35 +02:00
Rolf Bjarne Kvinge b2634bce56 [mtouch] Set install_name for libpinvokes.dylib. Fixes #44775. (#955)
https://bugzilla.xamarin.com/show_bug.cgi?id=44775
2016-10-06 15:17:40 +02:00
Rolf Bjarne Kvinge 7e1d9820b3 [mtouch] Bundle libpinvokes.dylib in the app. (#954)
Building a dylib is somewhat useless unless it ends up in the app bundle.
2016-10-06 14:16:55 +02:00
Rolf Bjarne Kvinge 0863e412b4 Remove XI/Classic support (#926)
* [tests] Remove Classic SDK tests.

* Remove XI/Classic support.

This also means we can remove support for the legacy registrars.

* [monotouch-test] Remove legacy registrar tests.

* [tests/mtouch] Remove Classic tests (and legacy registrar logic).

* [tests/scripted] Fix tests to reference Xamarin.iOS.dll.
2016-09-30 15:02:17 -04:00
Rolf Bjarne Kvinge 4d06d05cc0 [mtouch] Add workaround for file descriptor leak in System.Diagnostics.Process. (#917) 2016-09-29 17:45:23 +02:00
Rolf Bjarne Kvinge 85cead2337 [mtouch] Don't use nested Parallel.ForEach loops. (#888)
The nested Parallel.ForEach loops don't take into account the outer
MaxDegreeOfParallelism value, causing us to spawn more concurrent tasks than
we want to.

So refactor the code to have one static list of tasks, which each subtask adds
to.
2016-09-23 16:03:23 -04:00
Rolf Bjarne Kvinge 7656a92756 Revert "[mtouch] Don't use nested Parallel.ForEach loops." (#886) 2016-09-23 14:35:43 +02:00
Rolf Bjarne Kvinge fc55e4306f [mtouch] Don't use nested Parallel.ForEach loops. (#881)
The nested Parallel.ForEach loops don't take into account the outer
MaxDegreeOfParallelism value, causing us to spawn more concurrent tasks than
we want to.

So refactor the code to have one static list of tasks, which each subtask adds
to.
2016-09-23 07:02:11 +02:00
Rolf Bjarne Kvinge 0db1fe1ff2 [mtouch] Add support for -j X to specify concurrency. (#876) 2016-09-22 09:21:20 -04:00
Rolf Bjarne Kvinge b789deaf8e [mtouch] Require deployment target to be 8+ for incremental builds. (#805)
This is something that changed with 70f1346b: our libxamarin.dylib now
requires iOS 8+, which means the app itself must require iOS 8+ when using
libxamarin.dylib.

This fixes an msbuild failure (Xamarin.iOS.Tasks.IBToolLinking("iPhone").BuildTest):

    Process exited with code 1, command:
    /Applications/Xcode73.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang  -framework Foundation -framework UIKit /Users/builder/data/lanes/1381/5f73edaa/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/MonoTouch.iphoneos.sdk/usr/lib/libmonosgen-2.0.dylib /Users/builder/data/lanes/1381/5f73edaa/source/xamarin-macios/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/SDKs/MonoTouch.iphoneos.sdk/usr/lib/libxamarin-debug.dylib -lz -isysroot /Applications/Xcode73.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk -Qunused-arguments -miphoneos-version-min=7.0 -arch armv7 -shared -read_only_relocs suppress -install_name @executable_path/libXamarin.iOS.dll.dylib -fapplication-extension -o /Users/builder/data/lanes/1381/5f73edaa/source/xamarin-macios/msbuild/tests/MyIBToolLinkTest/obj/iPhone/Debug/mtouch-cache/Xamarin.iOS.dll.armv7.dylib -x assembler /Users/builder/data/lanes/1381/5f73edaa/source/xamarin-macios/msbuild/tests/MyIBToolLinkTest/obj/iPhone/Debug/mtouch-cache/Xamarin.iOS.dll.armv7.s -DDEBUG
    ld: warning: embedded dylibs/frameworks only run on iOS 8 or later
    ld: embedded dylibs/frameworks are only supported on iOS 8.0 and later (@executable_path/libxamarin-debug.dylib) for architecture armv7
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
2016-09-08 15:01:48 +02:00
Rolf Bjarne Kvinge b54a6ed3e6 [mtouch] Fix compiler warning (unused variable). (#789) 2016-09-07 21:28:13 +02:00
Rolf Bjarne Kvinge 7a34f5e9bf [mtouch] Fix incremental builds when generating P/Invoke wrappers. Fixes #44048. (#788)
We need to compile the generated P/Invoke wrappers to a dylib, and link the
dylib for the product assembly (Xamarin.WatchOS.dll) with the generated
P/Invoke wrappers.

Since there might be P/Invokes in any assembly, just link in the P/Invoke
wrapper dylib for every assembly.

https://bugzilla.xamarin.com/show_bug.cgi?id=44048
2016-09-07 17:22:34 +02:00
Manuel de la Pena 546a2fd907 [mtouch] Fix case of the final target directory. 2016-09-06 18:19:27 +02:00
Manuel de la Pena 46e6f06919 [mtouch] MVID for symblication ought to be lower case and with no `-` (#749) 2016-09-02 16:25:12 -04:00
Manuel de la Pena 4de097effa [mtouch] Better error handling when copying the aot files. (#720) 2016-08-31 08:18:41 -04:00
Rolf Bjarne Kvinge 875afb4260 [mtouch] Do not use the process task to execute the copy of aot files. Use a normal child process that blocks. Adds very little overhead since it is similar to the copy we had in c#. (#718) 2016-08-31 11:14:30 +02:00
Manuel de la Pena dd24c96ae2 [mtouch] Do not use the process task to execute the copy of aot files. Use a normal child process that blocks. Adds very little overhead since it is similar to the copy we had in c#. 2016-08-31 10:01:18 +02:00
Rolf Bjarne Kvinge e5bdbdd1ac Allow profiling + incremental builds on bitcode-capable targets again. (#706)
Mono bug [#41428](https://bugzilla.xamarin.com/show_bug.cgi?id=41428) has been fixed now,
which means we have profiler dylibs again, so we can enable profiling + incremental builds again.
2016-08-30 11:39:29 +02:00
Manuel de la Pena 30bd2ad5b3 [mtouch] Fix NRE when we try to copy aot files. (#701) 2016-08-29 13:38:59 -04:00
Manuel de la Pena bb528f90dc [Mtouch] Use the mono tools to copy over the msym files. (#622)
* [Mtouch] Use the mono tools to copy over the msym files.

* As per review:

* Do not create a DirectoryInfo when it is not needed.
* Do not throw exceptions for values that can be null, should never
happen.
* Remove unused import.

* Undo a wrong using removal and do the right thing.

* Fix build issues.
2016-08-23 10:29:42 +02:00
Rolf Bjarne Kvinge 130d981b5b Use dlsym for user assemblies on iOS. (#488)
We tried disabling dlsym for all assemblies on iOS, but it turned
out to break a significant amount of customer code [1].

So re-enable it, but only for user assemblies (since we control
all assemblies we ship and can thus make sure those work with
dlsym disabled).

https://trello.com/c/guig1MF2/623-re-enable-dlsym-for-ios
2016-07-26 08:12:40 -04:00
Manuel de la Pena 30ae7cf5a3 [Fix] Ensure that symbolication contains the aotid subdirs that will contain the msym files. 2016-07-18 16:42:00 +02:00
Rolf Bjarne Kvinge 5e7f53ff38 [mtouch] Reword MT0094 to make it clearer it's an informational message, and no action is required on the user side. (#381) 2016-07-12 20:21:03 -04:00
Manuel de la Pena 19cceab4d5 [mtouch] Reenable the symbolication to allow debugging and update its implementation. (#284) 2016-06-28 14:35:05 -04:00
Sebastien Pouliot 67470d439c [mtouch] Quote the .dylib used for incremental builds. Fixes #42006 (#303)
Fix MT3001 AOT errors due to incorrect paths.

https://bugzilla.xamarin.com/show_bug.cgi?id=42006
2016-06-28 12:51:05 -04:00
Rolf Bjarne Kvinge f3e08d0502 [mtouch] Set the soft heap limit to 8m on watchOS. (#258) 2016-06-22 06:11:40 -07:00
Rolf Bjarne Kvinge ad88558d82 [mtouch] Tweak error message for MT0073 and MT0074. Fixes #40606. (#111)
https://bugzilla.xamarin.com/show_bug.cgi?id=40606
2016-06-01 19:18:35 +02:00
Rolf Bjarne Kvinge a35c2df3ff [mtouch] Don't bundle libmono-profiler-log.dylib unless profiling is enabled. (#113) 2016-06-01 16:58:46 +02:00
Rolf Bjarne Kvinge e578af0931 [mtouch] Disable fastdev if profiling+fastdev is enabled on a bitcode-capable platform. (#114)
This is because Mono doesn't build a libmono-profiler-log.dylib when
bitcode is enabled, so we can't support profiling + fastdev at the same
time.

Hopefully mono will fix this (see bug#41428) soon, in which case
this code can be removed.

https://bugzilla.xamarin.com/show_bug.cgi?id=41428
2016-06-01 16:29:04 +02:00
Rolf Bjarne Kvinge 00f39e4390 [mtouch] Force min deployment target to 9.0 when enabling bitcode. 2016-05-26 17:47:10 +02:00
Sebastien Pouliot 2dd895e3fe [mtouch] Set default for dlsym to false for iOS (like tvOS and watchOS) (#60)
In cycle 7 we turned off, by default, the `dlsym` option (i.e. looking
up symbols for p/invoke) for tvOS and watchOS.

However we decided to wait for iOS to see if this caused issues for
existing code base. There has not been such reports (for tvOS) so,
for cycle 8, we'll turn it off (and use direct calls) for iOS.

If problems arise during the alpha/beta of C8 then we still can
revert this change easily.
2016-05-17 18:35:31 +02:00
Rolf Bjarne Kvinge 1f1f6991a3 Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
Rolf Bjarne Kvinge 86c73f8fc0 Refactor static registrar to produce both a header and a source file.
This way we can re-use the header in other files.
2016-05-17 11:23:47 +02:00
Rolf Bjarne Kvinge b8abf3db01 Add runtime variable to specify if the Coop GC should be used, and a mmp/mtouch option to select it.
The mmp/mtouch option is hidden for now, since it's not actually possible
to select the Coop GC yet.
2016-05-17 11:20:26 +02:00
Zoltan Varga 89154c1b66 [mtouch] Add armv7k+llvm configuration for bitcode on watchos. 2016-05-09 21:03:32 -04:00
Rolf Bjarne Kvinge 57c9885ff6 [mtouch] Fix issue where we'd incorrectly compute the target executable name. (#10)
When reading a plist using NSDictionary, getting a value for a key
that doesn't exist returns null.

This changed when we switched to using our own managed plist reader,
which returns an empty string if a key doesn't exist.

Unfortunately we have code that checks if CFBundleExecutable is null,
in which case we compute the executable name using the executable
assembly, but since we started getting an empty string for
CFBundleExecutable if the key wasn't available, we now ended up wanting
to create an executable named as an empty string.

This broke our bug-13945 test case.

The fix is to continue returning null if the plist key isn't present.
2016-04-27 15:35:21 -04:00
Vincent Dondain 2145c468a0 [msbuild] Add tvOS AppExtension targets 2016-04-26 10:19:54 -04:00
Rolf Bjarne Kvinge 804dfc6343 [mtouch/runtime] Implement support for tvOS extensions. 2016-04-25 18:15:02 -04:00
Rolf Bjarne Kvinge 56308e7eb6 [mmp/mtouch] Don't mkbundle anymore.
mtouch only uses Xamarin.Mac to read plists, so change to use
our purely managed plist reader in Xamarin.MacDev instead.

That makes us able to change mtouch to be a normal command-line
executable (and project).

Which makes it logical to not mkbundle mtouch anymore,
it executes just fine with the system mono (and there's
no code to protect anymore either).

And since mmp and mtouch share some files, do the same
for mmp.
2016-04-25 18:14:56 -04:00
Rolf Bjarne Kvinge 50a8af84db Add mtouch to the build. 2016-04-24 14:47:27 -04:00