def setup(self, func): """ setup all nodes create c file for externs create ll file for c file create codewriter """ if self.standalone: func = augment_entrypoint(self.translator, func) # XXX please dont ask! from pypy.translator.c.genc import CStandaloneBuilder cbuild = CStandaloneBuilder(self.translator, func, config=self.config) c_db = cbuild.generate_graphs_for_llinterp() self.db = Database(self, self.translator) self.db.gcpolicy = GcPolicy.new(self.db, self.config) self.db.gctransformer = c_db.gctransformer # get entry point entry_point = self.get_entry_point(func) self._checkpoint('get_entry_point') # set up all nodes self.db.setup_all() self.entrynode = self.db.set_entrynode(entry_point) self._checkpoint('setup_all all nodes') # set up externs nodes self.setup_externs(c_db, self.db) self.db.setup_all() self._checkpoint('setup_all externs') self._print_node_stats() # open file & create codewriter codewriter, self.filename = self.create_codewriter() self._checkpoint('open file and create codewriter') # create ll file from c code self.generate_ll_externs(codewriter) return codewriter