Lines Matching refs:ctx
328 #define CC(ctx) \ argument
329 (((ctx)->i_flags & CW_F_SHADOW) ? \
330 ((ctx)->i_compiler == CW_C_CC ? CW_C_GCC : CW_C_CC) : \
331 (ctx)->i_compiler)
500 cw_ictx_t *ctx = calloc(sizeof (cw_ictx_t), 1); in newictx() local
501 if (ctx) in newictx()
502 if ((ctx->i_ae = calloc(sizeof (struct aelist), 1)) == NULL) { in newictx()
503 free(ctx); in newictx()
507 return (ctx); in newictx()
639 do_gcc(cw_ictx_t *ctx) in do_gcc() argument
648 if (ctx->i_flags & CW_F_PROG) { in do_gcc()
649 newae(ctx->i_ae, "--version"); in do_gcc()
653 newae(ctx->i_ae, "-fident"); in do_gcc()
654 newae(ctx->i_ae, "-finline"); in do_gcc()
655 newae(ctx->i_ae, "-fno-inline-functions"); in do_gcc()
656 newae(ctx->i_ae, "-fno-builtin"); in do_gcc()
657 newae(ctx->i_ae, "-fno-asm"); in do_gcc()
658 newae(ctx->i_ae, "-nodefaultlibs"); in do_gcc()
668 newae(ctx->i_ae, "-mno-integer-ldd-std"); in do_gcc()
679 newae(ctx->i_ae, "-D__sun"); in do_gcc()
685 while (--ctx->i_oldargc > 0) { in do_gcc()
686 char *arg = *++ctx->i_oldargv; in do_gcc()
711 if ((ctx->i_flags & CW_F_SHADOW) && in_output) in do_gcc()
712 newae(ctx->i_ae, ctx->i_discard); in do_gcc()
714 newae(ctx->i_ae, arg); in do_gcc()
719 if (ctx->i_flags & CW_F_CXX) { in do_gcc()
726 if (ctx->i_oldargc < 3) in do_gcc()
728 ctx->i_oldargc -= 2; in do_gcc()
729 ctx->i_oldargv += 2; in do_gcc()
734 newae(ctx->i_ae, "-Werror"); in do_gcc()
739 newae(ctx->i_ae, "-fno-exceptions"); in do_gcc()
741 newae(ctx->i_ae, "-fno-rtti"); in do_gcc()
745 newae(ctx->i_ae, "-fpic"); in do_gcc()
750 newae(ctx->i_ae, "-fPIC"); in do_gcc()
765 mflag |= xlate_xtb(ctx->i_ae, "v8"); in do_gcc()
766 xlate(ctx->i_ae, "super", xchip_tbl); in do_gcc()
775 ctx->i_flags &= ~CW_F_ECHO; in do_gcc()
781 newae(ctx->i_ae, arg + 6); in do_gcc()
787 newae(ctx->i_ae, "-v"); in do_gcc()
793 newae(ctx->i_ae, "-gdwarf-2"); in do_gcc()
797 newae(ctx->i_ae, "-xc"); in do_gcc()
798 newae(ctx->i_ae, arg); in do_gcc()
816 newae(ctx->i_ae, arg); in do_gcc()
831 newae(ctx->i_ae, arg); in do_gcc()
837 newae(ctx->i_ae, arg); in do_gcc()
838 } else if (ctx->i_flags & CW_F_SHADOW) { in do_gcc()
839 newae(ctx->i_ae, "-o"); in do_gcc()
840 newae(ctx->i_ae, ctx->i_discard); in do_gcc()
842 newae(ctx->i_ae, arg); in do_gcc()
846 newae(ctx->i_ae, arg); in do_gcc()
852 newae(ctx->i_ae, "-ffreestanding"); in do_gcc()
857 newae(ctx->i_ae, "-Wl,-dy"); in do_gcc()
861 newae(ctx->i_ae, "-Wl,-dn"); in do_gcc()
888 warnings(ctx->i_ae); in do_gcc()
892 newae(ctx->i_ae, "-Werror"); in do_gcc()
899 newae(ctx->i_ae, "--help"); in do_gcc()
912 newae(ctx->i_ae, "-shared"); in do_gcc()
917 newae(ctx->i_ae, "-save-temps"); in do_gcc()
924 if ((arg = *++ctx->i_oldargv) == NULL || in do_gcc()
927 ctx->i_oldargc--; in do_gcc()
932 newae(ctx->i_ae, "-fpic"); in do_gcc()
937 newae(ctx->i_ae, "-fPIC"); in do_gcc()
945 newae(ctx->i_ae, "-D_REENTRANT"); in do_gcc()
949 newae(ctx->i_ae, "-m64"); in do_gcc()
951 newae(ctx->i_ae, "-mtune=opteron"); in do_gcc()
957 newae(ctx->i_ae, "-m32"); in do_gcc()
972 opt = *++ctx->i_oldargv; in do_gcc()
975 ctx->i_oldargc--; in do_gcc()
983 newae(ctx->i_ae, s); in do_gcc()
998 newae(ctx->i_ae, "-O"); in do_gcc()
1011 newae(ctx->i_ae, "-E"); in do_gcc()
1017 newae(ctx->i_ae, "-p"); in do_gcc()
1024 newae(ctx->i_ae, "-Wl,-s"); in do_gcc()
1031 newae(ctx->i_ae, "-Wl,-t"); in do_gcc()
1038 ctx->i_flags &= ~CW_F_ECHO; in do_gcc()
1039 newae(ctx->i_ae, "--version"); in do_gcc()
1046 warnings(ctx->i_ae); in do_gcc()
1062 newae(ctx->i_ae, arg); in do_gcc()
1093 newae(ctx->i_ae, in do_gcc()
1095 newae(ctx->i_ae, in do_gcc()
1123 xlate(ctx->i_ae, arg + 11, xcode_tbl); in do_gcc()
1144 newae(ctx->i_ae, "-fno-jump-tables"); in do_gcc()
1145 newae(ctx->i_ae, "-fno-constant-pools"); in do_gcc()
1149 newae(ctx->i_ae, "-ffreestanding"); in do_gcc()
1150 newae(ctx->i_ae, "-mno-red-zone"); in do_gcc()
1156 newae(ctx->i_ae, "-msave-args"); in do_gcc()
1165 Xamode(ctx->i_ae); in do_gcc()
1169 Xcmode(ctx->i_ae); in do_gcc()
1173 Xsmode(ctx->i_ae); in do_gcc()
1185 newae(ctx->i_ae, "-march=i386"); in do_gcc()
1192 newae(ctx->i_ae, "-march=i486"); in do_gcc()
1200 mflag |= xlate_xtb(ctx->i_ae, arg + 7); in do_gcc()
1208 newae(ctx->i_ae, "-fbuiltin"); in do_gcc()
1221 newae(ctx->i_ae, "-std=gnu99"); in do_gcc()
1225 newae(ctx->i_ae, "-std=gnu89"); in do_gcc()
1229 xlate(ctx->i_ae, arg + 7, xchip_tbl); in do_gcc()
1233 xlate(ctx->i_ae, arg + 7, xcode_tbl); in do_gcc()
1274 newae(ctx->i_ae, "-ffreestanding"); in do_gcc()
1275 newae(ctx->i_ae, "-mno-red-zone"); in do_gcc()
1285 newae(ctx->i_ae, "-M"); in do_gcc()
1289 newae(ctx->i_ae, "-MM"); in do_gcc()
1323 optim_disable(ctx->i_ae, level); in do_gcc()
1330 newae(ctx->i_ae, s); in do_gcc()
1338 newae(ctx->i_ae, "-march=pentium"); in do_gcc()
1342 newae(ctx->i_ae, "-pg"); in do_gcc()
1349 xlate(ctx->i_ae, arg + 7, xregs_tbl); in do_gcc()
1363 newae(ctx->i_ae, "-Wtransition"); in do_gcc()
1367 newae(ctx->i_ae, "-trigraphs"); in do_gcc()
1371 newae(ctx->i_ae, "-notrigraphs"); in do_gcc()
1375 xlate(ctx->i_ae, arg + 9, xtarget_tbl); in do_gcc()
1390 if ((arg = *++ctx->i_oldargv) == NULL || in do_gcc()
1393 ctx->i_oldargc--; in do_gcc()
1405 newae(ctx->i_ae, s); in do_gcc()
1413 newae(ctx->i_ae, "-nostdinc"); in do_gcc()
1414 newae(ctx->i_ae, s); in do_gcc()
1430 if (c_files > 1 && (ctx->i_flags & CW_F_SHADOW) && in do_gcc()
1457 newae(ctx->i_ae, "-mcpu=v8"); in do_gcc()
1458 newae(ctx->i_ae, "-mno-v8plus"); in do_gcc()
1467 newae(ctx->i_ae, "-mcpu=v9"); in do_gcc()
1490 newae(ctx->i_ae, "-mv8plus"); in do_gcc()
1500 if (op == CW_O_LINK && (ctx->i_flags & CW_F_SHADOW)) in do_gcc()
1504 newae(ctx->i_ae, model); in do_gcc()
1506 newae(ctx->i_ae, "-lc"); in do_gcc()
1507 if (!seen_o && (ctx->i_flags & CW_F_SHADOW)) { in do_gcc()
1508 newae(ctx->i_ae, "-o"); in do_gcc()
1509 newae(ctx->i_ae, ctx->i_discard); in do_gcc()
1514 do_cc(cw_ictx_t *ctx) in do_cc() argument
1519 if (ctx->i_flags & CW_F_PROG) { in do_cc()
1520 newae(ctx->i_ae, "-V"); in do_cc()
1524 while (--ctx->i_oldargc > 0) { in do_cc()
1525 char *arg = *++ctx->i_oldargv; in do_cc()
1528 if (in_output == 0 || !(ctx->i_flags & CW_F_SHADOW)) { in do_cc()
1529 newae(ctx->i_ae, arg); in do_cc()
1532 newae(ctx->i_ae, ctx->i_discard); in do_cc()
1539 ctx->i_flags &= ~CW_F_ECHO; in do_cc()
1542 newae(ctx->i_ae, arg + 5); in do_cc()
1552 ctx->i_flags &= ~CW_F_ECHO; in do_cc()
1553 newae(ctx->i_ae, arg); in do_cc()
1559 newae(ctx->i_ae, arg); in do_cc()
1560 } else if (ctx->i_flags & CW_F_SHADOW) { in do_cc()
1561 newae(ctx->i_ae, "-o"); in do_cc()
1562 newae(ctx->i_ae, ctx->i_discard); in do_cc()
1564 newae(ctx->i_ae, arg); in do_cc()
1571 newae(ctx->i_ae, arg); in do_cc()
1579 newae(ctx->i_ae, arg); in do_cc()
1584 (ctx->i_flags & CW_F_SHADOW)) in do_cc()
1587 if (!seen_o && (ctx->i_flags & CW_F_SHADOW)) { in do_cc()
1588 newae(ctx->i_ae, "-o"); in do_cc()
1589 newae(ctx->i_ae, ctx->i_discard); in do_cc()
1594 prepctx(cw_ictx_t *ctx) in prepctx() argument
1600 switch (CIDX(CC(ctx), ctx->i_flags)) { in prepctx()
1621 dir = default_dir[CC(ctx)]; in prepctx()
1622 cmd = cmds[CIDX(CC(ctx), ctx->i_flags)]; in prepctx()
1629 newae(ctx->i_ae, program); in prepctx()
1631 if (ctx->i_flags & CW_F_PROG) { in prepctx()
1632 (void) printf("%s: %s\n", (ctx->i_flags & CW_F_SHADOW) ? in prepctx()
1637 if (!(ctx->i_flags & CW_F_XLATE)) in prepctx()
1640 switch (CC(ctx)) { in prepctx()
1642 do_cc(ctx); in prepctx()
1645 do_gcc(ctx); in prepctx()
1651 invoke(cw_ictx_t *ctx) in invoke() argument
1657 if ((newargv = calloc(sizeof (*newargv), ctx->i_ae->ael_argc + 1)) == in invoke()
1661 if (ctx->i_flags & CW_F_ECHO) in invoke()
1664 for (ac = 0, a = ctx->i_ae->ael_head; a; a = a->ae_next, ac++) { in invoke()
1666 if (ctx->i_flags & CW_F_ECHO) in invoke()
1668 if (a == ctx->i_ae->ael_tail) in invoke()
1672 if (ctx->i_flags & CW_F_ECHO) { in invoke()
1677 if (!(ctx->i_flags & CW_F_EXEC)) in invoke()
1684 if ((ctx->i_flags & CW_F_SHADOW) && in invoke()
1699 reap(cw_ictx_t *ctx) in reap() argument
1708 if (ctx->i_pid <= 0) in reap()
1712 if (waitpid(ctx->i_pid, &status, 0) < 0) { in reap()
1727 (void) unlink(ctx->i_discard); in reap()
1729 if (stat(ctx->i_stderr, &s) < 0) { in reap()
1736 if ((f = fopen(ctx->i_stderr, "r")) != NULL) { in reap()
1743 (void) unlink(ctx->i_stderr); in reap()
1744 free(ctx->i_stderr); in reap()
1749 if (ctx->i_flags & CW_F_PROG) in reap()
1756 exec_ctx(cw_ictx_t *ctx, int block) in exec_ctx() argument
1768 (void) strlcpy(ctx->i_discard, file, MAXPATHLEN); in exec_ctx()
1769 (void) strlcat(ctx->i_discard, ".o", MAXPATHLEN); in exec_ctx()
1772 if ((ctx->i_stderr = tempnam(NULL, ".cw")) == NULL) { in exec_ctx()
1777 if ((ctx->i_pid = fork()) == 0) { in exec_ctx()
1781 if ((fd = open(ctx->i_stderr, O_WRONLY | O_CREAT | O_EXCL, in exec_ctx()
1796 prepctx(ctx); in exec_ctx()
1797 exit(invoke(ctx)); in exec_ctx()
1800 if (ctx->i_pid < 0) { in exec_ctx()
1806 return (reap(ctx)); in exec_ctx()
1814 cw_ictx_t *ctx = newictx(); in main() local
1825 if (ctx == NULL || ctx_shadow == NULL) in main()
1828 ctx->i_flags = CW_F_ECHO|CW_F_XLATE; in main()
1854 ctx->i_flags |= CW_F_EXEC; in main()
1864 ctx->i_compiler = CW_C_CC; in main()
1866 ctx->i_compiler = CW_C_GCC; in main()
1868 ctx->i_compiler = CW_C_CC; in main()
1869 ctx->i_flags |= CW_F_CXX; in main()
1871 ctx->i_compiler = CW_C_GCC; in main()
1872 ctx->i_flags |= CW_F_CXX; in main()
1877 ctx->i_compiler = CW_C_GCC; in main()
1884 ctx->i_flags &= ~CW_F_XLATE; in main()
1885 prepctx(ctx); in main()
1886 (void) printf("%s\n", ctx->i_ae->ael_head->ae_arg); in main()
1900 ctx->i_flags &= ~CW_F_ECHO; in main()
1901 ctx->i_flags |= CW_F_PROG|CW_F_EXEC; in main()
1907 ctx->i_oldargc = argc; in main()
1908 ctx->i_oldargv = argv; in main()
1910 ret |= exec_ctx(ctx, do_serial); in main()
1913 (void) memcpy(ctx_shadow, ctx, sizeof (cw_ictx_t)); in main()
1919 ret |= reap(ctx); in main()