From: GER.XSE0201@AppleLink.Apple.COM (Frank Becker Computertechnik,DE,IDV)
Newsgroups: comp.sys.mac.oop.macapp3
Subject: Re: MABuild -UserAutoBuild
Date: 24 Jan 93 18:34:00 GMT
Organization: AppleLink Gateway

Hi Andrew,
 
Here're some answers from a previous link I wrote last year to this topic:
 
-------------------------------------------------------------------------------
 
Paul,
I did this by put some files in a separate folder and put all this stuff in a
library (in my example I build a library called DBApplication).
 
Now you must set MAUserAutobuild when starting MacApp
 
(In my case:
 
SET MAUserAutoBuild "{DBLibraries}DBApplication.Lib,{OWNLibraries}Ownlib.Lib"
EXPORT {MAUserAutoBuild}
 
)
 
and add a line for the dependencies in your Application.MAMake
 
(
OtherLinkFiles = x
   "{DBLibraries}{SeparateObjectsFolder}DBApplication.lib" x
)
 
with the MaMake option -nouserautobuild you only build your application and not
the Library. The option -userautobuild is the default.
 
 
Hope this helps
 
Frank Becker
-------------------------------------------------------------------------------
Tsui,
 
Question:
 
>How does the Application.MAMake know to rebuild the lib when the
-userautobuild option is used?
 
Answer:
The -userautobuild option build all things that are defined in the
MAUserAutoBuild variable
 
this example check first if the Ownlib is OK and then if DBApplication.lib
(Ownlib is used in DBApplication)
 
I defined the MAUserAutoBuild variable in my 'StartupoFrank'.
 
SET MAUserAutoBuild "{DBLibraries}DBApplication.Lib,{OWNLibraries}Ownlib.Lib"
EXPORT {MAUserAutoBuild}
 
Every MABuild look if there is something to rebuild in the things which are
defined in the MAUserAutobuild because -userautobuild is the default. If you
are sure, that nothing was changed in your library's use the -nouserautobuild
option.
 
In your Application.MAMake file you must add your library to the dependency of
the OtherLinkFiles.
 
example:
OtherLinkFiles = x
   "{DBLibraries}{SeparateObjectsFolder}DBApplication.lib" x
 
The variable DBLibraries is the path to the directory which include all sources
for the library and the DBApplication.lib.MAMake file.
 
 
I hope this helps, but if you have more questions feel free to ask me again.
 
best regards
-------------------------------------------------------------------------------
Hi Tsui,
 
>1)  How does the Application.MAMake knows that Ownlib is "OK"?
 
The Application.MAMake do not know if Ownlib is "OK" or not. MABuild does this
for you. It work like the -autobuild option. This means call Make to check if
everything is OK. (Look at the code of file MABuildTool.p line 1707 - 1724;
this file is located in {MacApp}Tools:)
 
>2)  How does Application.MAMAke knows what source files compose Ownlib?
>Similarly DAApplication.lib.
 
You must build a Ownlib.MAMake file which include this information.
 
>3) Do you some how force the Application.MAMAke to check Ownlib.lib.MAMake and
>DBApplication.lib.MAMake when the -userautobuild option is included in the
>MABuild for the Application?
 
No, a OtherApplication.MAMake check also the Ownlib and DBApplication.lib when
you set the MAUserAutoBuild variable. Look at my answer for 1)
 
 
>I already understand that you have to add the dependency for
>DBApplication.lib,
>but MABuild's default Dependency Rules does not support rebuilding of other
>libraries other than MacApp.lib.
 
Hope I get you right!
You know that you have to add the line
        "{DBLibraries}{SeparateObjectsFolder}DBApplication.lib" x
to the defination of OtherLinkFiles. This is all you need. If you want to have
a other library then MacApp.lib to build automatically change the MAAutoBuild
variable in the same way you did for the MAUserAutoBuild
 
example:
SET MAAutoBuild "{MAAutoBuild},{OWNLibraries}Ownlib.Lib"
EXPORT {MAAutoBuild}
build first the Ownlib and then the things defind before in the variable.
 
I hope I now answered your question but if not feel free to ask me again.
 
Sincerely,
 
Frank
-------------------------------------------------------------------------------