Skip to content

Commit

Permalink
KSP2: support KMP w. the current processing model
Browse files Browse the repository at this point in the history
  • Loading branch information
ting-yuan committed Dec 7, 2023
1 parent 81c17b5 commit 73557b9
Show file tree
Hide file tree
Showing 7 changed files with 580 additions and 161 deletions.
281 changes: 281 additions & 0 deletions common-deps/src/main/kotlin/com/google/devtools/ksp/KSPConfig.kt
Original file line number Diff line number Diff line change
Expand Up @@ -165,3 +165,284 @@ class KSPJvmConfig(
}
}
}

class KSPNativeConfig(
val targetName: String,
moduleName: String,
sourceRoots: List<File>,
commonSourceRoots: List<File>,
libraries: List<File>,

processorOptions: Map<String, String>,

projectBaseDir: File,
outputBaseDir: File,
cachesDir: File,

classOutputDir: File,
kotlinOutputDir: File,
resourceOutputDir: File,

incremental: Boolean,
incrementalLog: Boolean,
modifiedSources: List<File>,
removedSources: List<File>,
changedClasses: List<String>,

languageVersion: String,
apiVersion: String,

allWarningsAsErrors: Boolean,
mapAnnotationArgumentsInJava: Boolean,
) : KSPConfig(
moduleName,
sourceRoots,
commonSourceRoots,
libraries,

processorOptions,

projectBaseDir,
outputBaseDir,
cachesDir,

classOutputDir,
kotlinOutputDir,
resourceOutputDir,

incremental,
incrementalLog,
modifiedSources,
removedSources,
changedClasses,

languageVersion,
apiVersion,

allWarningsAsErrors,
mapAnnotationArgumentsInJava,
) {
class Builder : KSPConfig.Builder(), Serializable {
lateinit var target: String

fun build(): KSPNativeConfig {
return KSPNativeConfig(
target,
moduleName,
sourceRoots,
commonSourceRoots,
libraries,

processorOptions,

projectBaseDir,
outputBaseDir,
cachesDir,
classOutputDir,
kotlinOutputDir,
resourceOutputDir,

incremental,
incrementalLog,
modifiedSources,
removedSources,
changedClasses,

languageVersion,
apiVersion,

allWarningsAsErrors,
mapAnnotationArgumentsInJava
)
}
}
}

class KSPJsConfig(
val backend: String,
moduleName: String,
sourceRoots: List<File>,
commonSourceRoots: List<File>,
libraries: List<File>,

processorOptions: Map<String, String>,

projectBaseDir: File,
outputBaseDir: File,
cachesDir: File,

classOutputDir: File,
kotlinOutputDir: File,
resourceOutputDir: File,

incremental: Boolean,
incrementalLog: Boolean,
modifiedSources: List<File>,
removedSources: List<File>,
changedClasses: List<String>,

languageVersion: String,
apiVersion: String,

allWarningsAsErrors: Boolean,
mapAnnotationArgumentsInJava: Boolean,
) : KSPConfig(
moduleName,
sourceRoots,
commonSourceRoots,
libraries,

processorOptions,

projectBaseDir,
outputBaseDir,
cachesDir,

classOutputDir,
kotlinOutputDir,
resourceOutputDir,

incremental,
incrementalLog,
modifiedSources,
removedSources,
changedClasses,

languageVersion,
apiVersion,

allWarningsAsErrors,
mapAnnotationArgumentsInJava,
) {
class Builder : KSPConfig.Builder(), Serializable {
lateinit var backend: String

fun build(): KSPJsConfig {
return KSPJsConfig(
backend,
moduleName,
sourceRoots,
commonSourceRoots,
libraries,

processorOptions,

projectBaseDir,
outputBaseDir,
cachesDir,
classOutputDir,
kotlinOutputDir,
resourceOutputDir,

incremental,
incrementalLog,
modifiedSources,
removedSources,
changedClasses,

languageVersion,
apiVersion,

allWarningsAsErrors,
mapAnnotationArgumentsInJava
)
}
}
}

data class Target(
val platform: String,
val args: Map<String, String>
)

class KSPCommonConfig(
val targets: List<Target>,
moduleName: String,
sourceRoots: List<File>,
commonSourceRoots: List<File>,
libraries: List<File>,

processorOptions: Map<String, String>,

projectBaseDir: File,
outputBaseDir: File,
cachesDir: File,

classOutputDir: File,
kotlinOutputDir: File,
resourceOutputDir: File,

incremental: Boolean,
incrementalLog: Boolean,
modifiedSources: List<File>,
removedSources: List<File>,
changedClasses: List<String>,

languageVersion: String,
apiVersion: String,

allWarningsAsErrors: Boolean,
mapAnnotationArgumentsInJava: Boolean,
) : KSPConfig(
moduleName,
sourceRoots,
commonSourceRoots,
libraries,

processorOptions,

projectBaseDir,
outputBaseDir,
cachesDir,

classOutputDir,
kotlinOutputDir,
resourceOutputDir,

incremental,
incrementalLog,
modifiedSources,
removedSources,
changedClasses,

languageVersion,
apiVersion,

allWarningsAsErrors,
mapAnnotationArgumentsInJava,
) {
class Builder : KSPConfig.Builder(), Serializable {
lateinit var targets: List<Target>

fun build(): KSPCommonConfig {
return KSPCommonConfig(
targets,
moduleName,
sourceRoots,
commonSourceRoots,
libraries,

processorOptions,

projectBaseDir,
outputBaseDir,
cachesDir,
classOutputDir,
kotlinOutputDir,
resourceOutputDir,

incremental,
incrementalLog,
modifiedSources,
removedSources,
changedClasses,

languageVersion,
apiVersion,

allWarningsAsErrors,
mapAnnotationArgumentsInJava
)
}
}
}
Loading

0 comments on commit 73557b9

Please sign in to comment.