/* compile - compile src into dst, return status */ static int compile(char *src, char *dst) { compose(com, clist, append(src, 0), append(dst, 0)); return callsys(av); }
static int asm_exec(const char *infile, const char *outfile) { list_t *l; const char *file; int rv; if (opt.prog_asm == NULL) error("No assembler is defined"); l = list_alloc(); list_add_file(l, opt.prog_asm, &progdirs, X_OK); Wflag_add(l, W_ASM); list_add_list(l, opt.Wa); { -p gnu -f <type> #if defined(USE_YASM) av[na++] = "-p"; av[na++] = "gnu"; av[na++] = "-f"; #if defined(os_win32) av[na++] = "win32"; #elif defined(os_darwin) av[na++] = "macho"; #else av[na++] = "elf"; #endif #endif #if defined(os_sunos) && defined(mach_sparc64) av[na++] = "-m64"; #endif #if defined(os_darwin) if (Bstatic) av[na++] = "-static"; #endif #if !defined(USE_YASM) if (vflag) av[na++] = "-v"; #endif if (kflag) av[na++] = "-k"; #ifdef os_darwin av[na++] = "-arch"; #if mach_amd64 av[na++] = amd64_i386 ? "i386" : "x86_64"; #else av[na++] = "i386"; #endif #else #ifdef mach_amd64 if (amd64_i386) av[na++] = "--32"; #endif #endif av[na++] = "-o"; if (outfile && cflag) ermfile = av[na++] = outfile; else if (cflag) ermfile = av[na++] = olist[i] = setsuf(clist[i], 'o'); else ermfile = av[na++] = olist[i] = gettmp(); av[na++] = assource; av[na++] = 0; if (callsys(as, av)) { cflag++; eflag++; cunlink(tmp4); continue; } } if (infile != NULL) list_add(l, infile); else if (outfile != NULL) list_add(l, "-"); if (outfile != NULL) { list_add(l, "-o"); list_add(l, outfile); } rv = list_exec(l); list_free(l); return rv; }