Commit Graph

89 Commits

Author SHA1 Message Date
Pavel Kirpichenkov 6674c3f482 [MPP] Apply @UnsafeNumber to functions and properties
KT-51224
KT-51215
2022-02-17 13:17:13 +03:00
Pavel Kirpichenkov f8a1395a03 [MPP] allow function and property targets for @UnsafeNumber annotation
KT-51224
KT-51215
2022-02-17 13:17:13 +03:00
Svyatoslav Scherbina d8b1992fde Native: fix cinterop for Swift-produced Objective-C categories
For some reason, libclang's indexer doesn't index categories with
__attribute__((external_source_symbol(language="Swift",...))),
so we have to additionally enumerate them explicitly.

^KT-49455 Fixed
2022-02-11 12:45:39 +00:00
Svyatoslav Scherbina 149e596bef Native: support -Xoverride-konan-properties in generatePlatformLibraries 2022-01-26 12:43:41 +00:00
Igor Chevdar f724b5c29d [K/N][gradle][interop] Workaround for loading readonly native libs 2022-01-14 10:29:12 +05:00
Igor Chevdar bd6ea71ead [K/N][gradle][interop] Refactored ToolConfig
Added possibility to create different strategies for loading libclang
2022-01-14 10:29:10 +05:00
Igor Chevdar 650d4c78e9 [K/N][interop] A small optimization 2022-01-14 10:29:08 +05:00
Igor Chevdar 993816a400 [K/N][runtime][interop] Refactoring to run cinterop in daemon 2022-01-14 10:29:05 +05:00
Igor Chevdar 41e1fbe971 [K/N][gradle][interop] Arg to specify relative dir for libraryPath 2022-01-14 10:29:04 +05:00
Vyacheslav Gerasimov bc2f0936bd Build: Rename commonDep -> commonDependency 2021-12-16 21:48:19 +03:00
Sergey Bogolepov b0077dce88 [K/N] Speedup defFileDependencies by running it in parallel 2021-11-30 13:02:01 +00:00
Igor Chevdar 353f82f9e6 Revert "[K/N][runtime][interop] Refactoring to run cinterop in daemon"
This reverts commit 47858126da.
2021-11-26 14:05:59 +05:00
Igor Chevdar 07adab561c Revert "[K/N][interop] A small optimization"
This reverts commit 2cbe946331.
2021-11-26 14:02:43 +05:00
Igor Chevdar 4b53a8e3c7 Revert "[K/N][gradle][interop] Refactored ToolConfig"
This reverts commit d9c1b1f6f7.
2021-11-26 14:01:40 +05:00
Igor Chevdar d9c1b1f6f7 [K/N][gradle][interop] Refactored ToolConfig
Added possibility to create different strategies for loading libclang
2021-11-25 23:42:10 +05:00
Igor Chevdar 2cbe946331 [K/N][interop] A small optimization 2021-11-25 23:42:10 +05:00
Igor Chevdar 47858126da [K/N][runtime][interop] Refactoring to run cinterop in daemon 2021-11-25 23:42:09 +05:00
Nikolay Krasko af8faadca5 Update internal project junit dependency 4.12 -> 4.13.2 2021-11-24 19:35:31 +03:00
Svyatoslav Scherbina 6e0a152f39 Revert "[K/N] Replace SymbolName with GCUnsafeCall in interop"
This reverts commit ca9ec76c08.
2021-11-23 08:09:43 +00:00
Martin Petrov aedcfe78e1 [Native] Add -Xoverride-konan-properties to cinterop.
This aligns with the flag added to kotlinc in:
https://youtrack.jetbrains.com/issue/KT-40670

Hermetic builds would benefit from being able to override dependency paths or airplaneMode using this mechanism:

```
$ bin/cinterop -Xoverride-konan-properties "apple-llvm-20200714-macos-x64-essentials.default=/tmp/llvm;airplaneMode=true" -def baz.def
```
2021-11-18 13:18:14 +03:00
Pavel Punegov 76d9692c4d [K/N][build] Fix for Class.newInstance is deprecated in Java 2021-11-15 09:04:52 +00:00
Sergey Bogolepov 742c65a26b [K/N] Fix StubIr tests 2021-10-06 04:40:06 +00:00
Sergey Bogolepov 2f6a9519c0 [K/N] Don't check UniqId because it is an obsolete extension 2021-10-06 04:40:06 +00:00
Sergey Bogolepov ed4fa2c391 [K/N] Fix for KT-48807
Make NS_FORMAT_ARGUMENT(A) a no-op in cinterop because our
Clang doesn't support it for NSAttributedString.
2021-09-27 09:38:02 +00:00
Sergey Bogolepov fd71520d6e Add test for KT-48807 2021-09-27 09:38:01 +00:00
Vyacheslav Gerasimov ab146bd6d4 Build: Fix deprecated Gradle configurations usages
for migration to Gradle 7+ #KTI-559
2021-09-26 18:28:44 +03:00
Svyatoslav Scherbina c9348b3512 Native: improve "could not build module" cinterop error message
Extract diagnostics from imported modules by instructing libclang to
serialize diagnostics to file. Then deserialize this file and use
first compilation errors in the error message.

^KT-35059 Fixed
2021-09-22 07:31:23 +00:00
Svyatoslav Scherbina 12f4cd5aa1 Native: add unit tests for modules support in Interop/Indexer 2021-09-22 07:31:22 +00:00
Svyatoslav Scherbina fb81ae0cd1 Native: fix deadlock in kotlinx.cinterop.typeOf impl for JVM
Don't use ConcurrentHashMap.computeIfAbsent for typeOf cache,
because the computation may call typeOf recursively for different type
(e.g. C enum var type computation calls typeOf for enum base integer type),
which might cause a deadlock in computeIfAbsent.
2021-09-22 07:31:22 +00:00
Svyatoslav Scherbina ae349846e1 Native: support writing unit tests for Interop/Indexer 2021-09-14 10:42:16 +00:00
Pavel Kunyavskiy ca9ec76c08 [K/N] Replace SymbolName with GCUnsafeCall in interop 2021-09-10 07:46:39 +00:00
Pavel Kunyavskiy 91c6ee1ebb [K/N] Replace SymbolName with GCUnsafeCall in stdlib 2021-09-10 07:46:39 +00:00
Vladimir Ivanov 8ba164163c [K/N] cinterop: ignore CXIdxEntity_CXXClass in ObjC header
Unexpected behavior is caused by `@class` declaration in ObjC context.
This entity is not used in CPP context either.
2021-09-09 09:37:05 +00:00
Mikhail Glukhikh ffbd574a08 Use -opt-in instead of -Xopt-in in comments and scripts 2021-09-08 23:43:55 +03:00
Mikhail Glukhikh ed035d99ab Migrate -Xopt-in to -opt-in in Gradle Kotlin scripts 2021-09-03 15:40:47 +03:00
sebastian.sellmair bff62aba5f [Native] Implement 'kotlinx.cinterop.UnsafeNumber' interface
^KT-48459
2021-08-30 19:25:41 +00:00
Dmitriy Novozhilov ca9cbf7eb7 Fix warnings in K/Native code 2021-08-03 07:40:57 +00:00
Sergey Bogolepov 6e093b0beb [K/N] Update libffi for Windows
MinGW and MSVC are hardly compatible in case of static linkage, so we
need to use a native libffi.
2021-08-03 05:42:06 +00:00
Sergey Bogolepov 66ddd15798 [K/N] Support compiler compilation in MSVC environment
The right way is to add something like KonanTarget.MSVC_X64, but doing
so requires changes throughout whole compiler. It would be especially
painful in HostManager, where we would need to deprecate
KonanTarget.MINGW_X64 as host. Instead we "hack" ClangArgs to compile
for x86_64-pc-windows-msvc instead of x86_64-pc-windows-gnu in JNI case.

CI may contain custom MSVC and Windows Kit installation path, so we
should support it. Things might break when machine has several MSVC
installed (at custom and default path), but it sounds more like
incorrect environment setup problem than ours.
2021-08-03 05:42:05 +00:00
Sergey Bogolepov a78fcd6b64 [K/N] Separate ClangArgs for jni and native
Since LLVM for Windows is now native instead on MinGW, we have to
compile code in a different environment in case of JNI. This commits
just separates ClangArgs into two subclasses without actual behavior
changes.
2021-08-03 05:42:05 +00:00
Sergey Bogolepov 493fa1c1e3 [K/N] Update Clang stubs for 11.1.0
Removed hacks for CXType_ExtVector type because now it is included in
Clang C API.
2021-08-03 05:42:01 +00:00
Alexander Gorshenev 9148094bbd Garbage collection capable wrappers for skia interop 2021-07-30 12:54:51 +03:00
Pavel Kunyavskiy d18ade088d [K/N] Help message for disabling quarantine flag on dylibs in distribution 2021-07-30 08:17:45 +00:00
Alexander Udalov 91c39ed01c Build: remove obsolete compiler arguments
These compiler arguments enable features which are enabled by default in
the current Kotlin anyway.

The only exception is in :compiler:cli which uses an old language
version.
2021-07-27 13:35:38 +02:00
Mikhail Glukhikh 47c8bab48e Replace -Xuse-experimental with -Xopt-in in codebase 2021-07-12 21:26:17 +03:00
Ilya Matveev dc8186cb83 [K/N][Interop] Fix throwing exceptions through bridges in opt mode
By default, C functions compiled to bitcode by clang have the
nounwind attribute. If such functions throws an exception, the
behaviour is undefined.

Our interop machinery can process foreign exceptions on call sites
(terminate or wrap them in Kotlin exceptions). But if the interop
bridges have the nounwind attribute, LLVM optimizations (particularly
inlining) may lead to the situation when a foreign exception is ignored by
our foreign exception handler.

This patch fixes the issue by compiling bridges with -fexceptions flag.
This flag makes clang to not set the nounwind attribute, so exceptions
can be thrown through C frames.
2021-07-02 11:51:06 +00:00
Svyatoslav Scherbina 2865d8bd45 Deprecate Obj-C 'alloc' and 'allocWithZone:' methods in Kotlin
Using these methods in Kotlin is usually a mistake.
2021-07-01 12:20:24 +00:00
Sergey Bogolepov 36386de9a2 [Native] Drop explicit -fPIC flag setup
We don't need to explicitly set -fPIC flag everywhere
because since d82109cc92
it is set by default for all ClangArgs users.
2021-06-11 12:18:14 +00:00
Svyatoslav Scherbina dc8934ab22 Native: fix crash in custom LLVM diagnostics handler
48a684c0 added custom LLVM diagnostic handler, using JvmCallbacks machinery,
thus triggered a bug in the latter: callbacks are cached and outlive the compilation session,
but rely on memory that is reclaimed at the end of the compilation session.
So during a subsequent compilation in the same process (e.g. when the compiler runs in the
Gradle daemon process), LLVM might call the callback which accesses the reclaimed memory, 
which in turn causes the crash.

Fix this by forcing JvmCallbacks to allocate memory that doesn't "expire" at the end of the compilation session.
2021-05-21 07:34:34 +00:00
Vladimir Ivanov 5a0f113e6d [cinterop] Fix type annotation for struct containing anonymous union … (#4289) 2021-05-18 14:34:56 +03:00