Skip to content

Commit d7417fd

Browse files
committed
9src/cc: pcc produces $O.out, keeps .6 objects; use basename for prog detection
- Use basename of argv[0] (strip path prefix) so /amd64/bin/ape/pcc is detected as "pcc" correctly - pcc output: smprint("%s.out", ot->o) e.g. "6.out" — matches Plan9 6l default and what mkmany expects - pcc keeps .6 object files after linking (Plan9 native convention); only cc mode removes the intermediate .o (APE configure-compat mode) https://claude.ai/code/session_01WGAwvvTwDg2yknFkmZ3qzs
1 parent cb5b7cc commit d7417fd

1 file changed

Lines changed: 9 additions & 6 deletions

File tree

  • sys/src/ape/9src

sys/src/ape/9src/cc.c

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,19 @@ char *searchlib(char *, char*);
6060
void
6161
main(int argc, char *argv[])
6262
{
63-
char *s, *suf, *ccpath, *lib;
63+
char *s, *suf, *ccpath, *lib, *prog;
6464
char *oname, *objext;
6565
int haveoname = 0;
6666
int i, cppn, ccn;
6767
Objtype *ot;
6868

6969
ot = findoty();
70-
oname = "a.out";
71-
/* cc produces .o (for configure compat); pcc uses arch-native .$O */
72-
objext = (strcmp(argv[0], "cc") == 0) ? "o" : ot->o;
70+
prog = utfrrune(argv[0], '/');
71+
prog = prog ? prog+1 : argv[0];
72+
/* cc: POSIX mode (.o objects, a.out output, clean up intermediates)
73+
* pcc: Plan9 native mode (.$O objects, $O.out output, keep objects) */
74+
objext = (strcmp(prog, "cc") == 0) ? "o" : ot->o;
75+
oname = (strcmp(prog, "cc") == 0) ? "a.out" : smprint("%s.out", ot->o);
7376
append(&cpp, "cpp");
7477
append(&cpp, "-D__STDC__=1"); /* ANSI says so */
7578
append(&cpp, "-D_POSIX_SOURCE=");
@@ -221,8 +224,8 @@ main(int argc, char *argv[])
221224
append(&ld, objs.strings[i]);
222225
append(&ld, smprint("/%s/lib/ape/libap.a", ot->name));
223226
doexec(smprint("/bin/%s", ot->ld), &ld);
224-
if(objs.n == 1)
225-
remove(objs.strings[0]);
227+
if(objs.n == 1 && strcmp(objext, "o") == 0)
228+
remove(objs.strings[0]); /* cc mode only: clean up .o intermediate */
226229
if(gflag) {
227230
/* post-link: convert a.out + .dwtypes sidecars to ELF64 */
228231
memset(&dw2elf_cmd, 0, sizeof dw2elf_cmd);

0 commit comments

Comments
 (0)