Commit Graph

171 Commits

Author SHA1 Message Date
Sergey Bogolepov 72637f19dc [K/N][cinterop] Generate members of included categories as class members
This way inheritors of such class would be able to override category
members the same way they can in Objective-C. Also, API surface of
interop libraries should become a little more stable.
2023-01-16 13:26:07 +00:00
Sergey Bogolepov 898dd02d29 [K/N][cinterop] Indexer unit-tests of objcClassesIncludingCategories 2023-01-16 13:26:07 +00:00
Sergey Bogolepov eded880225 [K/N][cinterop] Add location to ObjCCategory
To avoid adding unnecessary included categories to index, we need
to track their location. Also, we can't just implement TypeDeclaration
interface because category is not a type. Thus, we extract `location`
property from TypeDeclaration to LocatableDeclaration and implement it
in ObjCCategory.
2023-01-16 13:26:06 +00:00
Sergey Bogolepov fe8e18cb33 [K/N][cinterop] Improve Imports interface
Extracting `isImported(headerId: HeaderId): Boolean` method allows
mocking this interface in tests
2023-01-16 13:26:06 +00:00
Sergey Bogolepov 2f0bdfc5e2 [K/N] Add objcClassesIncludingCategories cinterop property
It allows to list Objective-C classes that should include
corresponding categories from the same file.
The current implementation is super-simple and slow, but
it is OK since it is not intended to be a general-purpose
solution for now.
2023-01-16 13:26:05 +00:00
Vladimir Sukharev 45de88abae [K/N][KT-39120] Build platform libraries with -fmodules
Merge-request: KT-MR-8175
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
2023-01-13 07:33:42 +00:00
Igor Chevdar 73e10b17c6 [K/N][gradle] Set klib version from gradle 2023-01-11 14:13:02 +00:00
Alexander Udalov 3c4b5529af Update year to 2023 in COPYRIGHT_HEADER.txt
This commit is the result of changing the year to 2023 in
COPYRIGHT_HEADER.txt and running all `generate*` tasks in
`generators/build.gradle.kts`.
2023-01-02 22:52:15 +01:00
Sergey Bogolepov 233b01f341 [K/N] CInterop ExceptionPrettifier
Add a wrapper around cinterop invocation that tracks exceptions.
Wrapper has a set of handlers. Each handler checks exception for some
pattern and if it matches, throws another exception with a more
user-friendly message.
The first such case is compilation error due to missing -fmodules flag.
2022-12-21 13:28:17 +00:00
Sergej Jaskiewicz 1539d7ef1a [klib] Bring package names in sync with the directory layout
Basically, some package names were Native-specific, whilst the packages
themselves were not Native-specific at all. This was already reflected
in the directory layout, but not in the package names.
This is fixed here.

NFC, just an automatic rename of packages with fixes of imports.
2022-12-01 21:46:43 +00:00
Vladimir Sukharev b883dc5434 [KT-39120] Add "-fmodules" argument support to Cinterop
Merge-request: KT-MR-6921
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
2022-11-30 08:46:40 +00:00
Pavel Punegov d2c58cdd27 [K/N][build] Dependencies fixes: trove4j and kotlin-compiler
* Depend on kotlin-compiler project instead of its runtimeElements only
* trove4j fixes: add as a dependency and use common version
* Strip dependencies in different projects: remove unnecessary
2022-10-21 10:33:40 +00:00
Martin Petrov 6c0b4bcfd4 [KT-54284][Native] Produce deterministic klibs from cinterop. (#4979)
Pass in temp-file C sources to clang via stdin instead of by name.
This prevents absolute paths of temp files from being encoded in bitcode.
2022-10-21 12:16:34 +02:00
Johan Bay bc13173ea9 [K/N] cinterop: Do not expand non-constant macros
Expanding macros such as __FILE__ or __TIME__ exposes
arbitrary generated filenames and timestamps from the compiler
pipeline which are not useful for interop and makes the klib
generation non-deterministic. This patch instead redefines
the macros to just map to their name in the properties
available from Kotlin.

Co-authored-by: Johan Bay <jobay@google.com>
2022-10-12 16:54:00 +00:00
Mikhail Glukhikh a22d7aea25 Native: don't set allWarningsAsErrors = true in K2 mode
Related to KT-54123
2022-09-29 15:32:01 +00:00
Alexander Udalov c410c5d3cd Do not reset freeCompilerArgs for some kotlin-native modules
Otherwise common compiler arguments which are set for all modules in the
project in `buildSrc/src/main/kotlin/common-configuration.gradle.kts`
are not applied. The most interesting of those are `-Xuse-k2` (if K2 is
enabled) and `-Xjvm-default=all`.
2022-09-27 11:04:31 +00:00
Sergey Bogolepov dde1dcc760 [K/N] Fix defFileDependencies 2022-09-17 07:51:35 +03:00
Sergey Bogolepov 3f406044a6 [K/N] Tests for DefFile.excludeFilter property 2022-09-16 19:22:38 +00:00
Sergey Bogolepov b4b27e9bc6 [K/N] KT-54001
Add a new DefFile.excludeFilter property that excludes headers
from interop library by given glob.

This change is required to properly support platform libs from Xcode 14
without breaking ABI.
2022-09-16 19:22:38 +00:00
Sergey Bogolepov a88ef04671 [K/N] Turn back red code.
For some reason build is failing during publication
with the previous change. Will deal with it later.
2022-09-16 13:25:41 +00:00
Sergey Bogolepov 6de5671db8 Revert "Revert "[K/N] Convert StubGenerator build script to Kotlin""
This reverts commit b53d6d0d7e.
2022-09-16 13:25:41 +00:00
Nikolay Krasko b53d6d0d7e Revert "[K/N] Convert StubGenerator build script to Kotlin"
This reverts commit ddc2eb79c3.
2022-09-16 11:25:18 +02:00
Sergey Bogolepov ddc2eb79c3 [K/N] Convert StubGenerator build script to Kotlin
Besides usual pros of kts, it simplifies potential reuse
of code from other build.gradle.kts (namely, Interop:Indexer).

Also, this commit fixes red code in IDE by adding proper dependencies.
2022-09-16 04:53:41 +00:00
Nikita Bobko 2a4f3f41aa 2/5 Replace source dependency on kotlin-reflect with binary dependency
Review: https://jetbrains.team/p/kt/reviews/6753

Meaningful semantic change was splitted into 5 commits to simplify the
change review. Sinle commit would be too big.

Why replace source to binary: to get rid of kotlin-reflect in Kotlin
plugin artifact KTIJ-22276

Note: Kotlin Maven artifacts (./gradlew publish) changed their
dependency on kotlin-reflect
2022-08-22 15:43:49 +02:00
Svyatoslav Scherbina 2e8c25aeff Native: rewrite Kotlin_Interop_getObjCClass in Objective-C
This allows calling it in "Native" thread state.
2022-08-02 09:24:01 +00:00
Rick Clephas 85d4e3071c Include mainFile header for modules def file 2022-07-15 19:14:11 +03:00
Yahor Berdnikau ec545f6273 Add Kotlin SourceDirectorySet as extension
KotlinSourceSet now should be accessed via Kotlin project extension.
Conventions are still available, but not used inside plugins.

^KT-47047 In Progress
2022-06-21 11:26:29 +00:00
Alexander Shabalin 29f3445721 [K/N] Deprecated freezing ^KT-50541
Starting with 1.7.20 freezing is deprecated. See https://github.com/JetBrains/kotlin/blob/master/kotlin-native/NEW_MM.md#freezing-deprecation for details.

Merge-request: KT-MR-6399
Merged-by: Alexander Shabalin <Alexander.Shabalin@jetbrains.com>
2022-06-16 09:04:14 +00:00
Diego Gomez Olvera 9a430efbe7 [KT-52681] Remove unnecessary semicolon after Objective-C @end
Objective-c `@end` doesn't need a semicolon, however KMM exported header
file, for instance:
```
__attribute__((swift_name("KotlinIterator")))
@protocol MyProjectKotlinIterator
@required
- (BOOL)hasNext __attribute__((swift_name("hasNext()")));
- (id _Nullable)next __attribute__((swift_name("next()")));
@end;
```
This creates problems with some code checkers that will not expect it
there, so it seems best to remove it.
2022-06-10 15:46:27 +03:00
Sergey Bogolepov 5a0c3920a5 [K/N] Properly support watchosArm64 2022-04-27 14:46:35 +00:00
Svyatoslav Scherbina fce5ad1358 Native: check return value of clang_saveTranslationUnit 2022-04-20 16:56:41 +00:00
Svyatoslav Scherbina 42ed0c5fe6 Native: add .alloc(value) for primitive types to interop runtime
^KT-50312 Fixed
2022-03-22 18:49:09 +03:00
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