diff --git a/samples/multi-platform-multi-module/dinosaurs-native/build.gradle.kts b/samples/multi-platform-multi-module/dinosaurs-native/build.gradle.kts new file mode 100644 index 0000000000..426b718595 --- /dev/null +++ b/samples/multi-platform-multi-module/dinosaurs-native/build.gradle.kts @@ -0,0 +1,46 @@ +plugins { + kotlin("multiplatform") + id("com.squareup.wire") +} + +kotlin { + val hostOs = System.getProperty("os.name") + val isMingwX64 = hostOs.startsWith("Windows") + val nativeTarget = when { + hostOs == "Mac OS X" -> macosX64("native") + hostOs == "Linux" -> linuxX64("native") + isMingwX64 -> mingwX64("native") + else -> throw GradleException("Host OS is not supported in Kotlin/Native.") + } + + nativeTarget.apply { + binaries { + executable { + entryPoint = "main" + } + } + } + sourceSets { + val commonMain by getting + val nativeMain by getting + val nativeTest by getting + } +} + +dependencies { + protoPath(project(":samples:multi-platform-multi-module:geology-native")) +} + +wire { + sourcePath { + srcDir("src/main/proto") + } + + sourcePath { + srcProject(":samples:multi-platform-multi-module:location-js") + include("squareup/location/continent.proto") + } + + kotlin { + } +} diff --git a/samples/multi-platform-multi-module/dinosaurs-native/src/main/proto/squareup/dinosaurs/dinosaur.proto b/samples/multi-platform-multi-module/dinosaurs-native/src/main/proto/squareup/dinosaurs/dinosaur.proto new file mode 100644 index 0000000000..7a0ccbb9d6 --- /dev/null +++ b/samples/multi-platform-multi-module/dinosaurs-native/src/main/proto/squareup/dinosaurs/dinosaur.proto @@ -0,0 +1,21 @@ +syntax = "proto2"; + +package squareup.dinosaurs; + +option java_package = "com.squareup.dinosaurs"; + +import "squareup/geology/period.proto"; +import "squareup/location/continent.proto"; + +message Dinosaur { + /** Common name of this dinosaur, like "Stegosaurus". */ + optional string name = 1; + + /** URLs with images of this dinosaur. */ + repeated string picture_urls = 2; + + optional double length_meters = 3; + optional double mass_kilograms = 4; + optional squareup.geology.Period period = 5; + optional squareup.location.Continent continent = 6; +} diff --git a/samples/multi-platform-multi-module/geology-native/build.gradle.kts b/samples/multi-platform-multi-module/geology-native/build.gradle.kts new file mode 100644 index 0000000000..2734320c3b --- /dev/null +++ b/samples/multi-platform-multi-module/geology-native/build.gradle.kts @@ -0,0 +1,35 @@ +plugins { + kotlin("multiplatform") + id("com.squareup.wire") +} + +kotlin { + val hostOs = System.getProperty("os.name") + val isMingwX64 = hostOs.startsWith("Windows") + val nativeTarget = when { + hostOs == "Mac OS X" -> macosX64("native") + hostOs == "Linux" -> linuxX64("native") + isMingwX64 -> mingwX64("native") + else -> throw GradleException("Host OS is not supported in Kotlin/Native.") + } + + nativeTarget.apply { + binaries { + executable { + entryPoint = "main" + } + } + } + sourceSets { + val commonMain by getting + val nativeMain by getting + val nativeTest by getting + } +} + +wire { + protoLibrary = true + + kotlin { + } +} diff --git a/samples/multi-platform-multi-module/geology-native/src/main/proto/squareup/geology/period.proto b/samples/multi-platform-multi-module/geology-native/src/main/proto/squareup/geology/period.proto new file mode 100644 index 0000000000..fc96fbeb73 --- /dev/null +++ b/samples/multi-platform-multi-module/geology-native/src/main/proto/squareup/geology/period.proto @@ -0,0 +1,16 @@ +syntax = "proto2"; + +package squareup.geology; + +option java_package = "com.squareup.geology"; + +enum Period { + /** 145.5 million years ago — 66.0 million years ago. */ + CRETACEOUS = 1; + + /** 201.3 million years ago — 145.0 million years ago. */ + JURASSIC = 2; + + /** 252.17 million years ago — 201.3 million years ago. */ + TRIASSIC = 3; +} diff --git a/samples/multi-platform-multi-module/location-js/build.gradle.kts b/samples/multi-platform-multi-module/location-js/build.gradle.kts new file mode 100644 index 0000000000..8e40edfb34 --- /dev/null +++ b/samples/multi-platform-multi-module/location-js/build.gradle.kts @@ -0,0 +1,30 @@ +plugins { + kotlin("js") + id("com.squareup.wire") +} + +repositories { + mavenCentral() +} + +kotlin { + js(IR) { + binaries.executable() + browser { + commonWebpackConfig { + cssSupport { + enabled.set(true) + } + } + } + nodejs { + } + } +} + +wire { + protoLibrary = true + + kotlin { + } +} diff --git a/samples/multi-platform-multi-module/location-js/src/main/proto/squareup/location/continent.proto b/samples/multi-platform-multi-module/location-js/src/main/proto/squareup/location/continent.proto new file mode 100644 index 0000000000..9de47d2bb2 --- /dev/null +++ b/samples/multi-platform-multi-module/location-js/src/main/proto/squareup/location/continent.proto @@ -0,0 +1,14 @@ +syntax = "proto2"; + +package squareup.location; + +option java_package = "com.squareup.location"; + +enum Continent { + AFRICA = 0; + AMERICA = 1; + ANTARCTICA = 2; + ASIA = 3; + AUSTRALIA = 4; + EUROPE = 5; +} diff --git a/samples/multi-platform-multi-module/location-js/src/main/proto/squareup/location/planet.proto b/samples/multi-platform-multi-module/location-js/src/main/proto/squareup/location/planet.proto new file mode 100644 index 0000000000..6b68394cbd --- /dev/null +++ b/samples/multi-platform-multi-module/location-js/src/main/proto/squareup/location/planet.proto @@ -0,0 +1,16 @@ +syntax = "proto2"; + +package squareup.location; + +option java_package = "com.squareup.location"; + +enum Planet { + MERCURY = 0; + VENUS = 1; + EARTH = 2; + MARS = 3; + JUPITER = 4; + SATURN = 5; + URANUS = 6; + NEPTUNE = 7; +} diff --git a/settings.gradle.kts b/settings.gradle.kts index c3fbf47455..ac2831ffaa 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -42,19 +42,22 @@ includeBuild("build-logic") { } } -include(":samples:simple-sample") -include(":samples:android-app-java-sample") -include(":samples:android-app-kotlin-sample") -include(":samples:android-app-variants-sample") -include(":samples:android-lib-java-sample") -include(":samples:android-lib-kotlin-sample") -include(":samples:js") -include(":samples:native") -include(":samples:wire-codegen-sample") -include(":samples:wire-grpc-sample:client") -include(":samples:wire-grpc-sample:protos") -include(":samples:wire-grpc-sample:server") -include(":samples:wire-grpc-sample:server-plain") +// include(":samples:simple-sample") +// include(":samples:android-app-java-sample") +// include(":samples:android-app-kotlin-sample") +// include(":samples:android-app-variants-sample") +// include(":samples:android-lib-java-sample") +// include(":samples:android-lib-kotlin-sample") +// include(":samples:js") +include(":samples:multi-platform-multi-module:dinosaurs-native") +include(":samples:multi-platform-multi-module:geology-native") +include(":samples:multi-platform-multi-module:location-js") +// include(":samples:native") +// include(":samples:wire-codegen-sample") +// include(":samples:wire-grpc-sample:client") +// include(":samples:wire-grpc-sample:protos") +// include(":samples:wire-grpc-sample:server") +// include(":samples:wire-grpc-sample:server-plain") include(":wire-benchmarks") include(":wire-golden-files") include(":wire-gradle-plugin-playground")