code: def make_source(self, groups, code_opts, gen_opts):
          
          modules = self.make_modules(groups, code_opts)
          var_decls = modules.var_decls
          relocs = AttrsGetter(modules.relocs)
          x86, x64 = relocs.get_attrs('x86', 'x64')
          if code_opts.windll:
              structs, x86_reloc, x64_reloc = make_windll(
                  modules.structs
              )
              x86 += x86_reloc
              x64 += x64_reloc
          else:
              structs = ''.join(modules.structs)
          c_relocs = reloc_both(relocs.strings + x86, x64)
          data = var_decls.strip()
          c_header = make_c_header(
              gen_opts.filename, 'NOTICE',
              modules.typedefs + structs + data
          )
          c_source = make_init(
              modules.hashes + c_relocs + modules.libprocs,
              callable(code_opts.hash_func)
          )
          return [c_header, c_source]
docs: Build the final source code for all modules.