@@ -158,7 +158,7 @@ include("` + toolchainConfig + `")
158158func (c * Cbuild ) CMakeCreateGroups (contextDir string ) error {
159159 content := "# groups.cmake\n "
160160 abstractions := CompilerAbstractions {c .BuildDescType .Debug , c .BuildDescType .Optimize , c .BuildDescType .Warnings , c .BuildDescType .LanguageC , c .BuildDescType .LanguageCpp }
161- content += c .CMakeCreateGroupRecursively ("" , c .BuildDescType .Groups , abstractions , c .BuildDescType .Misc .ASM )
161+ content += c .CMakeCreateGroupRecursively ("" , c .BuildDescType .Groups , abstractions , c .BuildDescType .DefineAsm , c . BuildDescType . Misc .ASM )
162162 filename := path .Join (contextDir , "groups.cmake" )
163163 err := utils .UpdateFile (filename , content )
164164 if err != nil {
@@ -169,7 +169,7 @@ func (c *Cbuild) CMakeCreateGroups(contextDir string) error {
169169}
170170
171171func (c * Cbuild ) CMakeCreateGroupRecursively (parent string , groups []Groups ,
172- parentAbstractions CompilerAbstractions , parentMiscAsm []string ) string {
172+ parentAbstractions CompilerAbstractions , parentDefineAsm [] interface {}, parentMiscAsm []string ) string {
173173 var content string
174174 for _ , group := range groups {
175175 miscAsm := utils .AppendUniquely (parentMiscAsm , group .Misc .ASM ... )
@@ -201,6 +201,7 @@ func (c *Cbuild) CMakeCreateGroupRecursively(parent string, groups []Groups,
201201 content += CMakeTargetIncludeDirectories (name , c .MergeIncludes (buildFiles .Include , scope , parentName , group .AddPath , group .DelPath ))
202202 // target_compile_definitions
203203 content += CMakeTargetCompileDefinitions (name , parentName , scope , group .Define , group .Undefine )
204+ group .DefineAsm = utils .AppendDefines (group .DefineAsm , parentDefineAsm )
204205 // compiler abstractions
205206 hasFileAbstractions := HasFileAbstractions (group .Files )
206207 groupAbstractions := CompilerAbstractions {group .Debug , group .Optimize , group .Warnings , group .LanguageC , group .LanguageCpp }
@@ -241,24 +242,32 @@ func (c *Cbuild) CMakeCreateGroupRecursively(parent string, groups []Groups,
241242 content += c .CMakeAddLibraryCustomFile (fileTargetName , file )
242243 // target_include_directories
243244 content += CMakeTargetIncludeDirectories (fileTargetName , c .MergeIncludes (ScopeMap {}, "PUBLIC" , name , file .AddPath , file .DelPath ))
244- // target_compile_definitions
245- content += CMakeTargetCompileDefinitions (fileTargetName , name , "PUBLIC" , file .Define , file .Undefine )
245+ // target_compile_definitions (except asm)
246+ if GetLanguage (file ) != "ASM" {
247+ content += CMakeTargetCompileDefinitions (fileTargetName , name , "PUBLIC" , file .Define , file .Undefine )
248+ }
246249 // target_compile_options
247250 content += c .CMakeTargetCompileOptions (fileTargetName , "PUBLIC" , Misc {}, []string {}, name )
248251 }
249- // file properties
252+ // asm defines are set in file properties
253+ if GetLanguage (file ) == "ASM" {
254+ file .DefineAsm = utils .AppendDefines (file .DefineAsm , group .DefineAsm )
255+ file .DefineAsm = utils .AppendDefines (file .Define , file .DefineAsm )
256+ content += c .SetFileAsmDefines (file , miscAsm )
257+ }
258+ // file compile options and abstractions
250259 fileAbstractions := CompilerAbstractions {file .Debug , file .Optimize , file .Warnings , file .LanguageC , file .LanguageCpp }
251260 if hasFileAbstractions {
252261 fileAbstractions = InheritCompilerAbstractions (abstractions , fileAbstractions )
253262 }
254- content += c .CMakeSetFileProperties (file , fileAbstractions , miscAsm )
263+ content += c .CMakeSetFileProperties (file , fileAbstractions )
255264 }
256265 }
257266 content += "\n "
258267
259268 // create children groups recursively
260269 if hasChildren {
261- content += c .CMakeCreateGroupRecursively (name , group .Groups , abstractions , miscAsm )
270+ content += c .CMakeCreateGroupRecursively (name , group .Groups , abstractions , group . DefineAsm , miscAsm )
262271 }
263272 c .BuildGroups = append (c .BuildGroups , name )
264273 }
@@ -285,6 +294,7 @@ func (c *Cbuild) CMakeCreateComponents(contextDir string) error {
285294 content += CMakeTargetIncludeDirectories (name , c .MergeIncludes (buildFiles .Include , scope , "${CONTEXT}" , component .AddPath , component .DelPath ))
286295 // target_compile_definitions
287296 content += CMakeTargetCompileDefinitions (name , "${CONTEXT}" , scope , component .Define , component .Undefine )
297+ component .DefineAsm = utils .AppendDefines (component .DefineAsm , c .BuildDescType .DefineAsm )
288298 // compiler abstractions
289299 var libraries []string
290300 componentAbstractions := CompilerAbstractions {component .Debug , component .Optimize , component .Warnings , component .LanguageC , component .LanguageCpp }
@@ -307,7 +317,13 @@ func (c *Cbuild) CMakeCreateComponents(contextDir string) error {
307317 if len (libraries ) > 0 {
308318 content += c .CMakeTargetLinkLibraries (name , scope , libraries ... )
309319 }
310-
320+ // asm defines are set in file properties
321+ for _ , file := range component .Files {
322+ if strings .Contains (file .Category , "source" ) && GetLanguage (file ) == "ASM" {
323+ file .DefineAsm = utils .AppendDefines (file .DefineAsm , component .DefineAsm )
324+ content += c .SetFileAsmDefines (file , utils .AppendUniquely (c .BuildDescType .Misc .ASM , component .Misc .ASM ... ))
325+ }
326+ }
311327 content += "\n "
312328 }
313329
0 commit comments