Lines Matching refs:ctx
331 #define CC(ctx) \ argument
332 (((ctx)->i_flags & CW_F_SHADOW) ? \
333 ((ctx)->i_compiler == CW_C_CC ? CW_C_GCC : CW_C_CC) : \
334 (ctx)->i_compiler)
505 cw_ictx_t *ctx = calloc(sizeof (cw_ictx_t), 1); in newictx() local
506 if (ctx) in newictx()
507 if ((ctx->i_ae = calloc(sizeof (struct aelist), 1)) == NULL) { in newictx()
508 free(ctx); in newictx()
512 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, "-fdiagnostics-show-option"); in do_gcc()
659 newae(ctx->i_ae, "-nodefaultlibs"); in do_gcc()
669 newae(ctx->i_ae, "-mno-integer-ldd-std"); in do_gcc()
680 newae(ctx->i_ae, "-D__sun"); in do_gcc()
686 while (--ctx->i_oldargc > 0) { in do_gcc()
687 char *arg = *++ctx->i_oldargv; in do_gcc()
712 if ((ctx->i_flags & CW_F_SHADOW) && in_output) in do_gcc()
713 newae(ctx->i_ae, ctx->i_discard); in do_gcc()
715 newae(ctx->i_ae, arg); in do_gcc()
720 if (ctx->i_flags & CW_F_CXX) { in do_gcc()
727 if (ctx->i_oldargc < 3) in do_gcc()
729 ctx->i_oldargc -= 2; in do_gcc()
730 ctx->i_oldargv += 2; in do_gcc()
735 newae(ctx->i_ae, "-Werror"); in do_gcc()
740 newae(ctx->i_ae, "-fno-exceptions"); in do_gcc()
742 newae(ctx->i_ae, "-fno-rtti"); in do_gcc()
746 newae(ctx->i_ae, "-fpic"); in do_gcc()
751 newae(ctx->i_ae, "-fPIC"); in do_gcc()
766 mflag |= xlate_xtb(ctx->i_ae, "v8"); in do_gcc()
767 xlate(ctx->i_ae, "super", xchip_tbl); in do_gcc()
776 ctx->i_flags &= ~CW_F_ECHO; in do_gcc()
782 newae(ctx->i_ae, arg + 6); in do_gcc()
788 newae(ctx->i_ae, "-v"); in do_gcc()
794 newae(ctx->i_ae, "-gdwarf-2"); in do_gcc()
798 newae(ctx->i_ae, "-xc"); in do_gcc()
799 newae(ctx->i_ae, arg); in do_gcc()
817 newae(ctx->i_ae, arg); in do_gcc()
832 newae(ctx->i_ae, arg); in do_gcc()
838 newae(ctx->i_ae, arg); in do_gcc()
839 } else if (ctx->i_flags & CW_F_SHADOW) { in do_gcc()
840 newae(ctx->i_ae, "-o"); in do_gcc()
841 newae(ctx->i_ae, ctx->i_discard); in do_gcc()
843 newae(ctx->i_ae, arg); in do_gcc()
847 newae(ctx->i_ae, arg); in do_gcc()
853 newae(ctx->i_ae, "-ffreestanding"); in do_gcc()
858 newae(ctx->i_ae, "-Wl,-dy"); in do_gcc()
862 newae(ctx->i_ae, "-Wl,-dn"); in do_gcc()
889 warnings(ctx->i_ae); in do_gcc()
893 newae(ctx->i_ae, "-Werror"); in do_gcc()
900 newae(ctx->i_ae, "--help"); in do_gcc()
913 newae(ctx->i_ae, "-shared"); in do_gcc()
918 newae(ctx->i_ae, "-save-temps"); in do_gcc()
925 if ((arg = *++ctx->i_oldargv) == NULL || in do_gcc()
928 ctx->i_oldargc--; in do_gcc()
933 newae(ctx->i_ae, "-fpic"); in do_gcc()
938 newae(ctx->i_ae, "-fPIC"); in do_gcc()
946 newae(ctx->i_ae, "-D_REENTRANT"); in do_gcc()
950 newae(ctx->i_ae, "-m64"); in do_gcc()
952 newae(ctx->i_ae, "-mtune=opteron"); in do_gcc()
958 newae(ctx->i_ae, "-m32"); in do_gcc()
973 opt = *++ctx->i_oldargv; in do_gcc()
976 ctx->i_oldargc--; in do_gcc()
984 newae(ctx->i_ae, s); in do_gcc()
999 newae(ctx->i_ae, "-O"); in do_gcc()
1012 newae(ctx->i_ae, "-E"); in do_gcc()
1018 newae(ctx->i_ae, "-p"); in do_gcc()
1025 newae(ctx->i_ae, "-Wl,-s"); in do_gcc()
1032 newae(ctx->i_ae, "-Wl,-t"); in do_gcc()
1039 ctx->i_flags &= ~CW_F_ECHO; in do_gcc()
1040 newae(ctx->i_ae, "--version"); in do_gcc()
1047 warnings(ctx->i_ae); in do_gcc()
1063 newae(ctx->i_ae, arg); in do_gcc()
1094 newae(ctx->i_ae, in do_gcc()
1096 newae(ctx->i_ae, in do_gcc()
1124 xlate(ctx->i_ae, arg + 11, xcode_tbl); in do_gcc()
1145 newae(ctx->i_ae, "-ffreestanding"); in do_gcc()
1146 newae(ctx->i_ae, "-mno-red-zone"); in do_gcc()
1152 newae(ctx->i_ae, "-msave-args"); in do_gcc()
1161 Xamode(ctx->i_ae); in do_gcc()
1165 Xcmode(ctx->i_ae); in do_gcc()
1169 Xsmode(ctx->i_ae); in do_gcc()
1181 newae(ctx->i_ae, "-march=i386"); in do_gcc()
1188 newae(ctx->i_ae, "-march=i486"); in do_gcc()
1196 mflag |= xlate_xtb(ctx->i_ae, arg + 7); in do_gcc()
1204 newae(ctx->i_ae, "-fbuiltin"); in do_gcc()
1217 newae(ctx->i_ae, "-std=gnu99"); in do_gcc()
1221 newae(ctx->i_ae, "-std=gnu89"); in do_gcc()
1225 xlate(ctx->i_ae, arg + 7, xchip_tbl); in do_gcc()
1229 xlate(ctx->i_ae, arg + 7, xcode_tbl); in do_gcc()
1270 newae(ctx->i_ae, "-ffreestanding"); in do_gcc()
1271 newae(ctx->i_ae, "-mno-red-zone"); in do_gcc()
1281 newae(ctx->i_ae, "-M"); in do_gcc()
1285 newae(ctx->i_ae, "-MM"); in do_gcc()
1319 optim_disable(ctx->i_ae, level); in do_gcc()
1326 newae(ctx->i_ae, s); in do_gcc()
1334 newae(ctx->i_ae, "-march=pentium"); in do_gcc()
1338 newae(ctx->i_ae, "-pg"); in do_gcc()
1345 xlate(ctx->i_ae, arg + 7, xregs_tbl); in do_gcc()
1359 newae(ctx->i_ae, "-Wtransition"); in do_gcc()
1363 newae(ctx->i_ae, "-trigraphs"); in do_gcc()
1367 newae(ctx->i_ae, "-notrigraphs"); in do_gcc()
1371 xlate(ctx->i_ae, arg + 9, xtarget_tbl); in do_gcc()
1386 if ((arg = *++ctx->i_oldargv) == NULL || in do_gcc()
1389 ctx->i_oldargc--; in do_gcc()
1401 newae(ctx->i_ae, s); in do_gcc()
1409 newae(ctx->i_ae, "-nostdinc"); in do_gcc()
1410 newae(ctx->i_ae, s); in do_gcc()
1426 if (c_files > 1 && (ctx->i_flags & CW_F_SHADOW) && in do_gcc()
1453 newae(ctx->i_ae, "-mcpu=v8"); in do_gcc()
1454 newae(ctx->i_ae, "-mno-v8plus"); in do_gcc()
1463 newae(ctx->i_ae, "-mcpu=v9"); in do_gcc()
1486 newae(ctx->i_ae, "-mv8plus"); in do_gcc()
1496 if (op == CW_O_LINK && (ctx->i_flags & CW_F_SHADOW)) in do_gcc()
1500 newae(ctx->i_ae, model); in do_gcc()
1502 newae(ctx->i_ae, "-lc"); in do_gcc()
1503 if (!seen_o && (ctx->i_flags & CW_F_SHADOW)) { in do_gcc()
1504 newae(ctx->i_ae, "-o"); in do_gcc()
1505 newae(ctx->i_ae, ctx->i_discard); in do_gcc()
1510 do_cc(cw_ictx_t *ctx) in do_cc() argument
1515 if (ctx->i_flags & CW_F_PROG) { in do_cc()
1516 newae(ctx->i_ae, "-V"); in do_cc()
1520 while (--ctx->i_oldargc > 0) { in do_cc()
1521 char *arg = *++ctx->i_oldargv; in do_cc()
1524 if (in_output == 0 || !(ctx->i_flags & CW_F_SHADOW)) { in do_cc()
1525 newae(ctx->i_ae, arg); in do_cc()
1528 newae(ctx->i_ae, ctx->i_discard); in do_cc()
1535 ctx->i_flags &= ~CW_F_ECHO; in do_cc()
1538 newae(ctx->i_ae, arg + 5); in do_cc()
1548 ctx->i_flags &= ~CW_F_ECHO; in do_cc()
1549 newae(ctx->i_ae, arg); in do_cc()
1555 newae(ctx->i_ae, arg); in do_cc()
1556 } else if (ctx->i_flags & CW_F_SHADOW) { in do_cc()
1557 newae(ctx->i_ae, "-o"); in do_cc()
1558 newae(ctx->i_ae, ctx->i_discard); in do_cc()
1560 newae(ctx->i_ae, arg); in do_cc()
1567 newae(ctx->i_ae, arg); in do_cc()
1575 newae(ctx->i_ae, arg); in do_cc()
1580 (ctx->i_flags & CW_F_SHADOW)) in do_cc()
1583 if (!seen_o && (ctx->i_flags & CW_F_SHADOW)) { in do_cc()
1584 newae(ctx->i_ae, "-o"); in do_cc()
1585 newae(ctx->i_ae, ctx->i_discard); in do_cc()
1590 prepctx(cw_ictx_t *ctx) in prepctx() argument
1596 switch (CIDX(CC(ctx), ctx->i_flags)) { in prepctx()
1617 dir = default_dir[CC(ctx)]; in prepctx()
1618 cmd = cmds[CIDX(CC(ctx), ctx->i_flags)]; in prepctx()
1625 newae(ctx->i_ae, program); in prepctx()
1627 if (ctx->i_flags & CW_F_PROG) { in prepctx()
1628 (void) printf("%s: %s\n", (ctx->i_flags & CW_F_SHADOW) ? in prepctx()
1633 if (!(ctx->i_flags & CW_F_XLATE)) in prepctx()
1636 switch (CC(ctx)) { in prepctx()
1638 do_cc(ctx); in prepctx()
1641 do_gcc(ctx); in prepctx()
1647 invoke(cw_ictx_t *ctx) in invoke() argument
1653 if ((newargv = calloc(sizeof (*newargv), ctx->i_ae->ael_argc + 1)) == in invoke()
1657 if (ctx->i_flags & CW_F_ECHO) in invoke()
1660 for (ac = 0, a = ctx->i_ae->ael_head; a; a = a->ae_next, ac++) { in invoke()
1662 if (ctx->i_flags & CW_F_ECHO) in invoke()
1664 if (a == ctx->i_ae->ael_tail) in invoke()
1668 if (ctx->i_flags & CW_F_ECHO) { in invoke()
1673 if (!(ctx->i_flags & CW_F_EXEC)) in invoke()
1680 if ((ctx->i_flags & CW_F_SHADOW) && in invoke()
1695 reap(cw_ictx_t *ctx) in reap() argument
1704 if (ctx->i_pid <= 0) in reap()
1708 if (waitpid(ctx->i_pid, &status, 0) < 0) { in reap()
1723 (void) unlink(ctx->i_discard); in reap()
1725 if (stat(ctx->i_stderr, &s) < 0) { in reap()
1732 if ((f = fopen(ctx->i_stderr, "r")) != NULL) { in reap()
1739 (void) unlink(ctx->i_stderr); in reap()
1740 free(ctx->i_stderr); in reap()
1745 if (ctx->i_flags & CW_F_PROG) in reap()
1752 exec_ctx(cw_ictx_t *ctx, int block) in exec_ctx() argument
1764 (void) strlcpy(ctx->i_discard, file, MAXPATHLEN); in exec_ctx()
1765 (void) strlcat(ctx->i_discard, ".o", MAXPATHLEN); in exec_ctx()
1768 if ((ctx->i_stderr = tempnam(NULL, ".cw")) == NULL) { in exec_ctx()
1773 if ((ctx->i_pid = fork()) == 0) { in exec_ctx()
1777 if ((fd = open(ctx->i_stderr, O_WRONLY | O_CREAT | O_EXCL, in exec_ctx()
1792 prepctx(ctx); in exec_ctx()
1793 exit(invoke(ctx)); in exec_ctx()
1796 if (ctx->i_pid < 0) { in exec_ctx()
1802 return (reap(ctx)); in exec_ctx()
1810 cw_ictx_t *ctx = newictx(); in main() local
1821 if (ctx == NULL || ctx_shadow == NULL) in main()
1824 ctx->i_flags = CW_F_ECHO|CW_F_XLATE; in main()
1850 ctx->i_flags |= CW_F_EXEC; in main()
1860 ctx->i_compiler = CW_C_CC; in main()
1862 ctx->i_compiler = CW_C_GCC; in main()
1864 ctx->i_compiler = CW_C_CC; in main()
1865 ctx->i_flags |= CW_F_CXX; in main()
1867 ctx->i_compiler = CW_C_GCC; in main()
1868 ctx->i_flags |= CW_F_CXX; in main()
1873 ctx->i_compiler = CW_C_GCC; in main()
1880 ctx->i_flags &= ~CW_F_XLATE; in main()
1881 prepctx(ctx); in main()
1882 (void) printf("%s\n", ctx->i_ae->ael_head->ae_arg); in main()
1896 ctx->i_flags &= ~CW_F_ECHO; in main()
1897 ctx->i_flags |= CW_F_PROG|CW_F_EXEC; in main()
1903 ctx->i_oldargc = argc; in main()
1904 ctx->i_oldargv = argv; in main()
1906 ret |= exec_ctx(ctx, do_serial); in main()
1909 (void) memcpy(ctx_shadow, ctx, sizeof (cw_ictx_t)); in main()
1915 ret |= reap(ctx); in main()