blob: 64361e6a5ed8139d7a03ca3228333b3e3a52f1a9 [file] [log] [blame]
{{- Eval "Includes" $}}
{{- Eval "TargetIfNotEmpty" ($.Project.Target $ "lib")}}
{{- Eval "TargetIfNotEmpty" ($.Project.Target $ "cmd")}}
{{- Eval "TargetIfNotEmpty" ($.Project.Target $ "test_cmd")}}
{{- Eval "TargetIfNotEmpty" ($.Project.Target $ "bench_cmd")}}
{{- Eval "TargetIfNotEmpty" ($.Project.Target $ "test")}}
{{- Eval "TargetIfNotEmpty" ($.Project.Target $ "bench")}}
{{- /*
--------------------------------------------------------------------------------
-- Emits a CMake target if it contains any files
--------------------------------------------------------------------------------
*/ -}}
{{- define "Includes"}}
{{- if $.Subdirectories}}
{{- range $subdir := $.Subdirectories }}
include({{$subdir.Path}}/BUILD.cmake)
{{- end }}
{{/* newline */}}
{{- end }}
{{- end}}
{{- /*
--------------------------------------------------------------------------------
-- Emits a CMake target if it contains any files
--------------------------------------------------------------------------------
*/ -}}
{{- define "TargetIfNotEmpty"}}
{{- if $}}
{{- if len $.SourceFiles}}{{Eval "Target" $}}{{end}}
{{- end}}
{{- end}}
{{- /*
--------------------------------------------------------------------------------
-- Emits a CMake target
--------------------------------------------------------------------------------
*/ -}}
{{- define "Target"}}
{{- if $.Condition}}
if({{Eval "Expression" $.Condition}})
{{- end}}
################################################################################
# CMake target: 'tint_{{Replace (print $.Name) "/" "_" ":" "_"}}'
################################################################################
tint_add_target("{{$.Name}}"
{{- /* Emit unconditional files */}}
{{- $UnconditionalSourceFiles := $.UnconditionalSourceFiles}}
{{- if $UnconditionalSourceFiles }}
{{- range $File := $UnconditionalSourceFiles}}
{{$File.Path}}
{{- end}}
{{- end}}
)
{{- /* Emit unconditional internal dependencies */}}
{{- $UnconditionalDeps := $.Dependencies.UnconditionalInternal }}
{{- if $UnconditionalDeps}}
{{/* newline */}}
tint_target_add_dependencies("{{$.Name}}"
{{- range $Dep := $UnconditionalDeps}}
"{{$Dep.Name}}"
{{- end}}
)
{{- end}}
{{- /* Emit unconditional external dependencies */}}
{{- $UnconditionalExtDeps := $.Dependencies.UnconditionalExternal }}
{{- if $UnconditionalExtDeps}}
{{/* newline */}}
tint_target_add_external_dependencies("{{$.Name}}"
{{- range $Dep := $UnconditionalExtDeps}}
"{{$Dep.Name}}"
{{- end}}
)
{{- end}}
{{- /* Emit conditional source files and dependencies */}}
{{- range $Cond := $.Conditionals}}
{{/* newline */}}
if ({{Eval "Expression" $Cond.Condition}})
{{- if $Cond.SourceFiles}}
tint_target_add_sources("{{$.Name}}"
{{- range $File := $Cond.SourceFiles}}
"{{$File.Path}}"
{{- end}}
)
{{- end}}
{{- if $Cond.InternalDependencies}}
tint_target_add_dependencies("{{$.Name}}"
{{- range $Dep := $Cond.InternalDependencies}}
"{{$Dep.Name}}"
{{- end}}
)
{{- end}}
{{- if $Cond.ExternalDependencies}}
tint_target_add_external_dependencies("{{$.Name}}"
{{- range $Dep := $Cond.ExternalDependencies}}
"{{$Dep.Name}}"
{{- end}}
)
{{- end}}
endif({{Eval "Expression" $Cond.Condition}})
{{- end}}
{{- if $.OutputName}}
{{/* newline */}}
tint_target_set_output_name("{{$.Name}}" "{{$.OutputName}}")
{{- end}}
{{/* newline */}}
{{- if $.Condition}}
endif({{Eval "Expression" $.Condition}})
{{- end}}
{{- end}}
{{- /*
--------------------------------------------------------------------------------
-- Emits a CMake conditional expression
--------------------------------------------------------------------------------
*/ -}}
{{- define "Expression"}}
{{- $expr := $ }}
{{- $expr = Replace $expr "!" "NOT "}}
{{- $expr = Replace $expr "&&" " AND "}}
{{- $expr = Replace $expr "||" " OR "}}
{{- ToUpper $expr}}
{{- end}}
{{- /* eat newlines */ -}}