971 |
971 |
972 # Generate main |
972 # Generate main |
973 locstrs = map(lambda x:"_".join(map(str,x)), [loc for loc,Cfiles,DoCalls in LocationCFilesAndCFLAGS if loc and DoCalls]) |
973 locstrs = map(lambda x:"_".join(map(str,x)), [loc for loc,Cfiles,DoCalls in LocationCFilesAndCFLAGS if loc and DoCalls]) |
974 plc_main = runtime.code("plc_common_main") % { |
974 plc_main = runtime.code("plc_common_main") % { |
975 "calls_prototypes":"\n".join( |
975 "calls_prototypes":"\n".join( |
976 ["int __init_%(s)s(int argc,char **argv);\nvoid __cleanup_%(s)s();\nvoid __retrive_%(s)s();\nvoid __publish_%(s)s();"% |
976 ["int __init_%(s)s(int argc,char **argv);\nvoid __cleanup_%(s)s();\nvoid __retrieve_%(s)s();\nvoid __publish_%(s)s();"% |
977 {'s':locstr} for locstr in locstrs]), |
977 {'s':locstr} for locstr in locstrs]), |
978 "retrive_calls":" \n".join(["__retrive_%(s)s();"%{'s':locstr} for locstr in locstrs]), |
978 "retrieve_calls":"\n ".join(["__retrieve_%(s)s();"%{'s':locstr} for locstr in locstrs]), |
979 "publish_calls":" \n".join(["__publish_%(s)s();"%{'s':locstr} for locstr in locstrs]), |
979 "publish_calls":"\n ".join(["__publish_%(s)s();"%{'s':locstr} for locstr in locstrs]), |
980 "init_calls":" \n".join(["init_level++; if(res = __init_%(s)s(argc,argv)) return res;"%{'s':locstr} for locstr in locstrs]), |
980 "init_calls":"\n ".join(["init_level++; if(res = __init_%(s)s(argc,argv)) return res;"%{'s':locstr} for locstr in locstrs]), |
981 "cleanup_calls":" \n".join(["if(init_level-- > 0) __cleanup_%(s)s();"%{'s':locstr} for locstr in locstrs])} |
981 "cleanup_calls":"\n ".join(["if(init_level-- > 0) __cleanup_%(s)s();"%{'s':locstr} for locstr in locstrs])} |
982 target_name = self.BeremizRoot.TargetType.content["name"] |
982 target_name = self.BeremizRoot.TargetType.content["name"] |
983 plc_main += runtime.code("plc_%s_main"%target_name) |
983 plc_main += runtime.code("plc_%s_main"%target_name) |
984 |
984 |
985 main_path = os.path.join(buildpath, "main.c" ) |
985 main_path = os.path.join(buildpath, "main.c" ) |
986 f = open(main_path,'w') |
986 f = open(main_path,'w') |