Can I precompile adv3 library?

Sorry if this is a really basic question! Is there a way to modify my .t3m file and/or compiling options so that I don’t need to rebuild the adv3 library files on every single build?
Revealing my ignorance of how the underlying data works, if the adv3 library can be precompiled, will ‘modify’ and ‘replace’ within my own source files still have the normal effects?


Unless you have used that specific parameter to always rebuild object files (-a I believe), this should happen per default.

But I have had the issue (and several others in this forum) where the compiler (t3make) on a Mac always rebuilds all files anyway. In my case it only helped to reinstall the os unfortunately.

Have you set the -Fo parameter and created an obj directory by the way? It might help if you provide your current t3m file.

Something like this:

-o game.t3
-Fy obj
-Fo obj

-lib system
-lib adv3/adv3
-source game.t

Tomas, thanks for weighing in. I’ve been typing this command line:

t3make -d -v -f game.t3m

And here’s my makefile:

-Fy obj 
-Fo obj
-o Game.t3
-lib system
-lib adv3/adv3
-source game.t

If it is supposed to only compile changed files by default, I’m pretty definitely sure that’s not what it’s doing right now, the compiler takes several seconds per build and scrolls through a long list of files. Thanks for any help!

Here is the build output:

Last login: Mon Aug 3 09:43:06 on ttys000

/Users/johnrebekah/Programming/TADS/PrinceQ/princeq.command ; exit;

Johns-MacBook-Air:~ johnrebekah$ /Users/johnrebekah/Programming/TADS/PrinceQ/princeq.command ; exit;

TADS Compiler 3.1.3 Copyright 1999, 2012 Michael J. Roberts

Files to build: 121

symbol_export /usr/local/share/frobtads/tads3/lib/_main.t -> obj/_main.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/file.t -> obj/file.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/tok.t -> obj/tok.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/gramprod.t -> obj/gramprod.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/multmeth.t -> obj/multmeth.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/action.t -> obj/action.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/actions.t -> obj/actions.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/actor.t -> obj/actor.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/banner.t -> obj/banner.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/console.t -> obj/console.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/disambig.t -> obj/disambig.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/events.t -> obj/events.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/exec.t -> obj/exec.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/exits.t -> obj/exits.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/extras.t -> obj/extras.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/footnote.t -> obj/footnote.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/hintsys.t -> obj/hintsys.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/input.t -> obj/input.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/lister.t -> obj/lister.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/menusys.t -> obj/menusys.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/menucon.t -> obj/menucon.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/misc.t -> obj/misc.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/modid.t -> obj/modid.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/numbers.t -> obj/numbers.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/objects.t -> obj/objects.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/output.t -> obj/output.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/parser.t -> obj/parser.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/pov.t -> obj/pov.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/precond.t -> obj/precond.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/report.t -> obj/report.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/resolver.t -> obj/resolver.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/score.t -> obj/score.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/sense.t -> obj/sense.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/settings.t -> obj/settings.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/status.t -> obj/status.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/tips.t -> obj/tips.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/thing.t -> obj/thing.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/travel.t -> obj/travel.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/verify.t -> obj/verify.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/en_us/en_us.t -> obj/en_us.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/en_us/instruct.t -> obj/instruct.t3s

symbol_export /usr/local/share/frobtads/tads3/lib/adv3/en_us/msg_neu.t -> obj/msg_neu.t3s

symbol_export SimpleAttachable.t -> obj/SimpleAttachable.t3s

symbol_export TCommand.t -> obj/TCommand.t3s

symbol_export GiveToAskFor.t -> obj/GiveToAskFor.t3s

symbol_export princeq.t -> obj/princeq.t3s

symbol_export testing.t -> obj/testing.t3s

symbol_export verbs.t -> obj/verbs.t3s

symbol_export quisborne.t -> obj/quisborne.t3s

symbol_export characters.t -> obj/characters.t3s

symbol_export portables.t -> obj/portables.t3s

symbol_export warmup.t -> obj/warmup.t3s

symbol_export frapunzel.t -> obj/frapunzel.t3s

symbol_export monast-fast.t -> obj/monast-fast.t3s

symbol_export princeq2.t -> obj/princeq2.t3s

symbol_export princeq3.t -> obj/princeq3.t3s

symbol_export princeq4.t -> obj/princeq4.t3s

symbol_export princeq5.t -> obj/princeq5.t3s

symbol_export princeq6.t -> obj/princeq6.t3s

symbol_export princeq7.t -> obj/princeq7.t3s

compile /usr/local/share/frobtads/tads3/lib/_main.t -> obj/_main.t3o

compile /usr/local/share/frobtads/tads3/lib/file.t -> obj/file.t3o

compile /usr/local/share/frobtads/tads3/lib/tok.t -> obj/tok.t3o

compile /usr/local/share/frobtads/tads3/lib/gramprod.t -> obj/gramprod.t3o

compile /usr/local/share/frobtads/tads3/lib/multmeth.t -> obj/multmeth.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/action.t -> obj/action.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/actions.t -> obj/actions.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/actor.t -> obj/actor.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/banner.t -> obj/banner.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/console.t -> obj/console.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/disambig.t -> obj/disambig.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/events.t -> obj/events.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/exec.t -> obj/exec.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/exits.t -> obj/exits.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/extras.t -> obj/extras.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/footnote.t -> obj/footnote.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/hintsys.t -> obj/hintsys.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/input.t -> obj/input.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/lister.t -> obj/lister.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/menusys.t -> obj/menusys.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/menucon.t -> obj/menucon.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/misc.t -> obj/misc.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/modid.t -> obj/modid.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/numbers.t -> obj/numbers.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/objects.t -> obj/objects.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/output.t -> obj/output.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/parser.t -> obj/parser.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/pov.t -> obj/pov.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/precond.t -> obj/precond.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/report.t -> obj/report.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/resolver.t -> obj/resolver.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/score.t -> obj/score.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/sense.t -> obj/sense.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/settings.t -> obj/settings.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/status.t -> obj/status.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/tips.t -> obj/tips.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/thing.t -> obj/thing.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/travel.t -> obj/travel.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/verify.t -> obj/verify.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/en_us/en_us.t -> obj/en_us.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/en_us/instruct.t -> obj/instruct.t3o

compile /usr/local/share/frobtads/tads3/lib/adv3/en_us/msg_neu.t -> obj/msg_neu.t3o

compile SimpleAttachable.t -> obj/SimpleAttachable.t3o

compile TCommand.t -> obj/TCommand.t3o

compile GiveToAskFor.t -> obj/GiveToAskFor.t3o

compile princeq.t -> obj/princeq.t3o

compile testing.t -> obj/testing.t3o

compile verbs.t -> obj/verbs.t3o

compile quisborne.t -> obj/quisborne.t3o

compile characters.t -> obj/characters.t3o

compile portables.t -> obj/portables.t3o

compile warmup.t -> obj/warmup.t3o

compile monast-fast.t -> obj/monast-fast.t3o

compile princeq2.t -> obj/princeq2.t3o

compile princeq3.t -> obj/princeq3.t3o

compile princeq4.t -> obj/princeq4.t3o

compile princeq5.t -> obj/princeq5.t3o

compile princeq6.t -> obj/princeq6.t3o

compile princeq7.t -> obj/princeq7.t3o

link -> PrinceQuisborne.t3


Saving session...

...copying shared history...

...saving history...truncating history files...


[Process completed]

Have you seen this thread? It seems related since you’re trying this on a Mac. There’s a solution there but it didn’t work for me.

I had not seen that thread, but it sounded like at the end, there was no definite solution. Maybe it’s just an unresolved issue on Mac systems? I also don’t know how to check if Endpoint is something active in my system. FileVault appears under my security settings, but it’s turned off.
Thanks for taking the time to answer…

Seems like it, my only experience of this is that worked with an older macOS but the one I had a couple of releases ago of the macOS (1-2 years ago) caused the bug, but it disappeared when I updated to the latest now some months ago (and did a complete reinstall). I hope there is someone with more insight of this that can respond. Otherwise it seems like a lead to see if the t3m file’s modification date keeps changing each build as it seems that could trigger a complete rebuild. If so, maybe you could try to write protect it… it’s an ugly workaround but maybe can make life a bit easier if it works.

I have had FileVault turned on for my Macs for the past three years or so. It definitely doesn’t affect filesystem mod dates. If it did, it would screw up Makefiles and many other sorts of build tools.

Is TADS maybe looking at the ctime (metadata change time) as well as the mtime? That would be a bizarre decision, but it might lead to this sort of problem.

EDIT-ADD: Nope, can’t see any sign of that in the source. It relies entirely on mod_time.

I tried to turn off write access to the t3m file… didn’t fix it. I guess short of trying a new operating system install I’ll just have to spend an extra half-hour or so of my life watching the compiler window scroll down… Thanks again for suggestions…