From: Miro Jurisic Date: Thu, 27 May 1999 00:38:02 +0000 (+0000) Subject: Completely redone Makefile X-Git-Tag: krb5-1.1-beta1~136 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=ddfbac98b5cf707c8a7b1e3b527d1bbb92f712f2;p=krb5.git Completely redone Makefile git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@11468 dc483132-0cff-0310-8789-dd5450dbe970 --- diff --git a/src/mac/FragmentAlias.mpw b/src/mac/FragmentAlias.mpw index c3307cd6f..ff8689097 100644 --- a/src/mac/FragmentAlias.mpw +++ b/src/mac/FragmentAlias.mpw @@ -11,12 +11,12 @@ /¶/¶* ¶[[0-9]*¶] ¶*¶// Set FragEntry "" -/GSSLibrary/ - Print "¶t¶t¶"MIT Kerberos¥GSSLib¶",¶t¶t" +/¶"MIT_¥GSSLib¶"/ + Print "¶t¶t¶"GSSLibrary¶",¶t¶t" Print FragEntry -/K5Library/ - Print "¶t¶t¶"MIT Kerberos¥Kerberos5Lib¶",¶t¶t" +/¶"MIT_¥Kerberos5Lib¶"/ + Print "¶t¶t¶"K5Library¶",¶t¶t" Print FragEntry /Å/ diff --git a/src/mac/Makefile b/src/mac/Makefile new file mode 100644 index 000000000..e570b148c --- /dev/null +++ b/src/mac/Makefile @@ -0,0 +1,955 @@ +############################################################################################################## +### Important global constants +############################################################################################################## + +root-folder = :: +makefile-name = {root-folder}mac:Makefile + +library-output-folder = {root-folder}bin: + +gss-krb5-library-name = ¶"MIT GSS/Kerberos library¶" +gss-krb5-library-output-folder = {library-output-folder} +gss-krb5-library-debug = {gss-krb5-library-output-folder}{gss-krb5-library-name}{library-kind-debug} +gss-krb5-library-final = {gss-krb5-library-output-folder}{gss-krb5-library-name}{library-kind-final} + +library-platform-68K = .68K +library-platform-PPC = .PPC + +library-kind-debug = .debug +library-kind-final = + +############################################################################################################## +### Top-level targets -- abstract targets for convinient grouping +############################################################################################################## + +# Everything +all Ä glue gss-krb5-library-debug gss-krb5-library-final + +# Debugging versions +all-debug Ä ppc-debug 68k-debug + +# Final versions +all-final Ä ppc-final 68k-final + +# Clasic 68K glue +glue Ä glue-gss glue-krb5 + +############################################################################################################## +### More global constants +############################################################################################################## + +krb5-globals-root-folder = {root-folder}¶"mac:libraries:Kerberos v5 Globals:¶" + +gss-library-output-folder = {root-folder}:GSSLib:Binaries: +krb5-library-output-folder = {root-folder}:Kerberos5Lib:Binaries: +krb5-globals-library-output-folder = {root-folder}:Kerberos5GlobalsLib:Binaries: +krb5-globals-data-library-output-folder = {krb5-globals-library-output-folder} + +gss-library-name = GSSLib +krb5-library-name = Kerberos5Lib +krb5-globals-library-name = Krb5GlobalsLib +krb5-globals-data-library-name = Krb5GlobalsDataLib + +gss-library-export = {root-folder}mac:GSSLibrary.exp +krb5-library-export = {root-folder}mac:K5Library.exp +krb5-globals-library-export = {krb5-globals-root-folder}Krb5Globals.exp +krb5-globals-data-library-export = {krb5-globals-root-folder}Krb5GlobalsData.exp + +gss-library-fragment-name = MIT_¥GSSLib +krb5-library-fragment-name = MIT_¥Kerberos5Lib +krb5-globals-library-fragment-name = MIT_¥Kerberos5GlobalsLib +krb5-globals-data-library-fragment-name = MIT_¥Kerberos5GlobalsDataLib + +gss-library-main = ¶"¶" +krb5-library-main = ¶"¶" +krb5-globals-library-main = ¶"¶" +krb5-globals-data-library-main = ¶"¶" + +gss-library-init = __initializeGSS +krb5-library-init = __initializeK5 +krb5-globals-library-init = __initialize_Kerberos5GlobalsLib +krb5-globals-data-library-init = __initialize + +gss-library-term = __terminateGSS +krb5-library-term = __terminateK5 +krb5-globals-library-term = __terminate_Kerberos5GlobalsLib +krb5-globals-data-library-term = __terminate + +gss-library-current-version = 1 +gss-library-definition-version = 1 +gss-library-implementation-version = 0 + +krb5-library-current-version = 1 +krb5-library-definition-version = 1 +krb5-library-implementation-version = 0 + +krb5-globals-library-current-version = 0 +krb5-globals-library-definition-version = 0 +krb5-globals-library-implementation-version = 0 + +krb5-globals-data-library-current-version = 0 +krb5-globals-data-library-definition-version = 0 +krb5-globals-data-library-implementation-version = 0 + +############################################################################################################## +### Generation of file lists +############################################################################################################## + +list-generation-script = ":macfile_gen.pl" +list-generation-script-root = ".." +list-generation-script-prefix = ":" + +all-files-list = {root-folder}"All files.list" +all-sources-list = {root-folder}"All sources.list" +all-folders-list = {root-folder}"All folders.list" +include-folders-list = {root-folder}"Include folders.list" + +gss-sources-list = {root-folder}"GSS sources.list" +krb5-sources-list = {root-folder}"Krb5 sources.list" + +gss-objects-ppc-debug-list = {root-folder}"GSS objects PPC debug.list" +gss-objects-68k-debug-list = {root-folder}"GSS objects 68K debug.list" +gss-objects-ppc-final-list = {root-folder}"GSS objects PPC final.list" +gss-objects-68k-final-list = {root-folder}"GSS objects 68K final.list" + +krb5-objects-ppc-debug-list = {root-folder}"Krb5 objects PPC debug.list" +krb5-objects-68k-debug-list = {root-folder}"Krb5 objects 68K debug.list" +krb5-objects-ppc-final-list = {root-folder}"Krb5 objects PPC final.list" +krb5-objects-68k-final-list = {root-folder}"Krb5 objects 68K final.list" + +all-lists = ¶ + {all-files-list} ¶ + {all-sources-list} ¶ + {all-folders-list} ¶ + {include-folders-list} ¶ + {gss-sources-list} ¶ + {krb5-sources-list} ¶ + {gss-objects-ppc-debug-list} ¶ + {gss-objects-68k-debug-list} ¶ + {gss-objects-ppc-final-list} ¶ + {gss-objects-68k-final-list} ¶ + {krb5-objects-ppc-debug-list} ¶ + {krb5-objects-68k-debug-list} ¶ + {krb5-objects-ppc-final-list} ¶ + {krb5-objects-68k-final-list} + +file-lists Ä {all-lists} + +{all-files-list} Ä {list-generation-script} {makefile-name} + perl {list-generation-script} all-files {list-generation-script-root} {list-generation-script-prefix} ¶ + > {Targ} + +{all-sources-list} Ä {all-files-list} {list-generation-script} {makefile-name} + perl {list-generation-script} all-sources {list-generation-script-root} {list-generation-script-prefix} ¶ + < {all-files-list} > {Targ} + +{all-folders-list} Ä {all-files-list} {list-generation-script} {makefile-name} + perl {list-generation-script} all-folders {list-generation-script-root} {list-generation-script-prefix} ¶ + < {all-files-list} > {Targ} + +{include-folders-list} Ä {all-files-list} {list-generation-script} {makefile-name} + perl {list-generation-script} include-folders {list-generation-script-root} {list-generation-script-prefix} ¶ + < {all-files-list} > {Targ} + +{gss-sources-list} Ä {all-files-list} {list-generation-script} {makefile-name} + perl {list-generation-script} gss-sources {list-generation-script-root} {list-generation-script-prefix} ¶ + < {all-files-list} > {Targ} + +{krb5-sources-list} Ä {all-files-list} {list-generation-script} {makefile-name} + perl {list-generation-script} krb5-sources {list-generation-script-root} {list-generation-script-prefix} ¶ + < {all-files-list} > {Targ} + +{gss-objects-ppc-debug-list} Ä {all-files-list} {list-generation-script} {makefile-name} + perl {list-generation-script} gss-objects-ppc-debug {list-generation-script-root} {list-generation-script-prefix} ¶ + < {all-files-list} > {Targ} + +{gss-objects-68k-debug-list} Ä {all-files-list} {list-generation-script} {makefile-name} + perl {list-generation-script} gss-objects-68k-debug {list-generation-script-root} {list-generation-script-prefix} ¶ + < {all-files-list} > {Targ} + +{gss-objects-ppc-final-list} Ä {all-files-list} {list-generation-script} {makefile-name} + perl {list-generation-script} gss-objects-ppc-final {list-generation-script-root} {list-generation-script-prefix} ¶ + < {all-files-list} > {Targ} + +{gss-objects-68k-final-list} Ä {all-files-list} {list-generation-script} {makefile-name} + perl {list-generation-script} gss-objects-68k-final {list-generation-script-root} {list-generation-script-prefix} ¶ + < {all-files-list} > {Targ} + +{krb5-objects-ppc-debug-list} Ä {all-files-list} {list-generation-script} {makefile-name} + perl {list-generation-script} krb5-objects-ppc-debug {list-generation-script-root} {list-generation-script-prefix} ¶ + < {all-files-list} > {Targ} + +{krb5-objects-68k-debug-list} Ä {all-files-list} {list-generation-script} {makefile-name} + perl {list-generation-script} krb5-objects-68k-debug {list-generation-script-root} {list-generation-script-prefix} ¶ + < {all-files-list} > {Targ} + +{krb5-objects-ppc-final-list} Ä {all-files-list} {list-generation-script} {makefile-name} + perl {list-generation-script} krb5-objects-ppc-final {list-generation-script-root} {list-generation-script-prefix} ¶ + < {all-files-list} > {Targ} + +{krb5-objects-68k-final-list} Ä {all-files-list} {list-generation-script} {makefile-name} + perl {list-generation-script} krb5-objects-68k-final {list-generation-script-root} {list-generation-script-prefix} ¶ + < {all-files-list} > {Targ} + +############################################################################################################## +### Autogenerated files +############################################################################################################## + +autogeneration-h-script = {root-folder}util:et:et_h.perl +autogeneration-c-script = {root-folder}util:et:et_c.perl + +autogenerated-files = ¶ + {root-folder}include:asn1_err.h ¶ + {root-folder}include:kdb5_err.h ¶ + {root-folder}include:krb5_err.h ¶ + {root-folder}include:kv5m_err.h ¶ + {root-folder}include:adm_err.h ¶ + {root-folder}lib:gssapi:generic:gssapi_err_generic.h ¶ + {root-folder}lib:gssapi:krb5:gssapi_err_krb5.h ¶ + {root-folder}util:profile:prof_err.c ¶ + {root-folder}lib:krb5:error_tables:asn1_err.c ¶ + {root-folder}lib:krb5:error_tables:kdb5_err.c ¶ + {root-folder}lib:krb5:error_tables:krb5_err.c ¶ + {root-folder}lib:krb5:error_tables:kv5m_err.c ¶ + {root-folder}lib:krb5:error_tables:adm_err.c ¶ + {root-folder}lib:gssapi:generic:gssapi_err_generic.c ¶ + {root-folder}lib:gssapi:krb5:gssapi_err_krb5.c ¶ + {root-folder}util:profile:prof_err.h ¶ + {root-folder}include:krb5.h ¶ + {root-folder}util:profile:profile.h ¶ + {root-folder}include:profile.h ¶ + {root-folder}include:krb5:osconf.h ¶ + {root-folder}lib:gssapi:generic:gssapi.h ¶ + {root-folder}include:autoconf.h + +### error table headers + +{root-folder}include:asn1_err.h Ä {root-folder}lib:krb5:error_tables:asn1_err.et {makefile-name} {autogeneration-h-script} + perl {autogeneration-h-script} outfile="{root-folder}include:asn1_err.h" < "{root-folder}lib:krb5:error_tables:asn1_err.et" + +{root-folder}include:kdb5_err.h Ä {root-folder}lib:krb5:error_tables:kdb5_err.et {makefile-name} {autogeneration-h-script} + perl {autogeneration-h-script} outfile="{root-folder}include:kdb5_err.h" < "{root-folder}lib:krb5:error_tables:kdb5_err.et" + +{root-folder}include:krb5_err.h Ä {root-folder}lib:krb5:error_tables:krb5_err.et {makefile-name} {autogeneration-h-script} + perl {autogeneration-h-script} outfile="{root-folder}include:krb5_err.h" < "{root-folder}lib:krb5:error_tables:krb5_err.et" + +{root-folder}include:kv5m_err.h Ä {root-folder}lib:krb5:error_tables:kv5m_err.et {makefile-name} {autogeneration-h-script} + perl {autogeneration-h-script} outfile="{root-folder}include:kv5m_err.h" < "{root-folder}lib:krb5:error_tables:kv5m_err.et" + +{root-folder}include:adm_err.h Ä {root-folder}lib:krb5:error_tables:adm_err.et {makefile-name} {autogeneration-h-script} + perl {autogeneration-h-script} outfile="{root-folder}include:adm_err.h" < "{root-folder}lib:krb5:error_tables:adm_err.et" + +{root-folder}lib:gssapi:generic:gssapi_err_generic.h Ä {root-folder}lib:gssapi:generic:gssapi_err_generic.et {makefile-name} {autogeneration-h-script} + perl {autogeneration-h-script} outfile="{root-folder}lib:gssapi:generic:gssapi_err_generic.h" < "{root-folder}lib:gssapi:generic:gssapi_err_generic.et" + +{root-folder}lib:gssapi:krb5:gssapi_err_krb5.h Ä {root-folder}lib:gssapi:krb5:gssapi_err_krb5.et {makefile-name} {autogeneration-h-script} + perl {autogeneration-h-script} outfile="{root-folder}lib:gssapi:krb5:gssapi_err_krb5.h" < "{root-folder}lib:gssapi:krb5:gssapi_err_krb5.et" + +{root-folder}util:profile:prof_err.h Ä {root-folder}util:profile:prof_err.et {makefile-name} {autogeneration-h-script} + perl {autogeneration-h-script} outfile="{root-folder}util:profile:prof_err.h" < "{root-folder}util:profile:prof_err.et" + +### error table sources + +{root-folder}lib:krb5:error_tables:asn1_err.c Ä {root-folder}lib:krb5:error_tables:asn1_err.et {makefile-name} {autogeneration-c-script} + perl {autogeneration-c-script} outfile="{root-folder}lib:krb5:error_tables:asn1_err.c" < "{root-folder}lib:krb5:error_tables:asn1_err.et" + +{root-folder}lib:krb5:error_tables:kdb5_err.c Ä {root-folder}lib:krb5:error_tables:kdb5_err.et {makefile-name} {autogeneration-c-script} + perl {autogeneration-c-script} outfile="{root-folder}lib:krb5:error_tables:kdb5_err.c" < "{root-folder}lib:krb5:error_tables:kdb5_err.et" + +{root-folder}lib:krb5:error_tables:krb5_err.c Ä {root-folder}lib:krb5:error_tables:krb5_err.et {makefile-name} {autogeneration-c-script} + perl {autogeneration-c-script} outfile="{root-folder}lib:krb5:error_tables:krb5_err.c" < "{root-folder}lib:krb5:error_tables:krb5_err.et" + +{root-folder}lib:krb5:error_tables:kv5m_err.c Ä {root-folder}lib:krb5:error_tables:kv5m_err.et {makefile-name} {autogeneration-c-script} + perl {autogeneration-c-script} outfile="{root-folder}lib:krb5:error_tables:kv5m_err.c" < "{root-folder}lib:krb5:error_tables:kv5m_err.et" + +{root-folder}lib:krb5:error_tables:adm_err.c Ä {root-folder}lib:krb5:error_tables:adm_err.et {makefile-name} {autogeneration-c-script} + perl {autogeneration-c-script} outfile="{root-folder}lib:krb5:error_tables:adm_err.c" < "{root-folder}lib:krb5:error_tables:adm_err.et" + +{root-folder}lib:gssapi:generic:gssapi_err_generic.c Ä {root-folder}lib:gssapi:generic:gssapi_err_generic.et {makefile-name} {autogeneration-c-script} + perl {autogeneration-c-script} outfile="{root-folder}lib:gssapi:generic:gssapi_err_generic.c" < "{root-folder}lib:gssapi:generic:gssapi_err_generic.et" + +{root-folder}lib:gssapi:krb5:gssapi_err_krb5.c Ä {root-folder}lib:gssapi:krb5:gssapi_err_krb5.et {makefile-name} {autogeneration-c-script} + perl {autogeneration-c-script} outfile="{root-folder}lib:gssapi:krb5:gssapi_err_krb5.c" < "{root-folder}lib:gssapi:krb5:gssapi_err_krb5.et" + +{root-folder}util:profile:prof_err.c Ä {root-folder}util:profile:prof_err.et {makefile-name} {autogeneration-c-script} + perl {autogeneration-c-script} outfile="{root-folder}util:profile:prof_err.c" < "{root-folder}util:profile:prof_err.et" + +### other autogenerated files + +{root-folder}include:krb5.h Ä {root-folder}include:krb5.hin {root-folder}include:krb5_err.h ¶ + {root-folder}include:kdb5_err.h {root-folder}include:kv5m_err.h {root-folder}include:asn1_err.h + Catenate {root-folder}include:krb5.hin {root-folder}include:krb5_err.h {root-folder}include:kdb5_err.h ¶ + {root-folder}include:kv5m_err.h {root-folder}include:asn1_err.h > {root-folder}include:krb5.h + +{root-folder}util:profile:profile.h Ä {root-folder}util:profile:profile.hin {root-folder}util:profile:prof_err.h + Catenate {root-folder}util:profile:profile.hin {root-folder}util:profile:prof_err.h > {root-folder}util:profile:profile.h + +{root-folder}include:profile.h Ä {root-folder}util:profile:profile.h + Duplicate -y {root-folder}util:profile:profile.h {root-folder}include:profile.h + +{root-folder}include:krb5:osconf.h Ä {root-folder}include:krb5:stock:osconf.h + Duplicate -y {root-folder}include:krb5:stock:osconf.h {root-folder}include:krb5:osconf.h + +{root-folder}lib:gssapi:generic:gssapi.h Ä {root-folder}lib:gssapi:generic:gssapi.hin + Duplicate -y {root-folder}lib:gssapi:generic:gssapi.hin {root-folder}lib:gssapi:generic:gssapi.h + +{root-folder}include:autoconf.h Ä {root-folder}mac:libraries:autoconf.h + Duplicate -y {root-folder}libraries:autoconf.h {root-folder}include:autoconf.h + +############################################################################################################## +### High-level abstract targets -- this is where we decide on options +############################################################################################################## +### We need to generate the following Make variables to pass to the Makefile: +### For GSS library +### gss-library-output-folder -- destination of GSS library output +### gss-library-name -- name of the GSS library +### gss-library-export -- name of gss GSS library export file +### gss-library-libraries -- list of libraries GSS library links against +### gss-library-objects -- list of object files GSS library links +### gss-library-fragment-name -- name of GSS library fragment +### gss-library-main -- name of GSS library main entry point +### gss-library-init -- name of GSS library initialization routine +### gss-library-term -- name of GSS library termination routine +### gss-library-linker-options -- all other GSS library linker options +### For Krb5 library +### krb5-library-output-folder -- destination of Krb5 library output +### krb5-library-name -- name of the Krb5 library +### krb5-library-export -- name of gss Krb5 library export file +### krb5-library-libraries -- list of libraries Krb5 library links against +### krb5-library-objects -- list of object files Krb5 library links +### krb5-library-fragment-name -- name of Krb5 library fragment +### krb5-library-main -- name of Krb5 library main entry point +### krb5-library-init -- name of Krb5 library initialization routine +### krb5-library-term -- name of Krb5 library termination routine +### krb5-library-linker-options -- all other Krb5 library linker options +### For Krb5 globals library +### krb5-globals-library-output-folder -- destination of Krb5 globals library output +### krb5-globals-library-name -- name of the Krb5 globals library +### krb5-globals-library-export -- name of gss Krb5 globals library export file +### krb5-globals-library-libraries -- list of libraries Krb5 globals library links against +### krb5-globals-library-objects -- list of object files Krb5 globals library links +### krb5-globals-library-fragment-name -- name of Krb5 globals library fragment +### krb5-globals-library-main -- name of Krb5 globals library main entry point +### krb5-globals-library-init -- name of Krb5 globals library initialization routine +### krb5-globals-library-term -- name of Krb5 globals library termination routine +### krb5-globals-library-linker-options -- all other Krb5 globals library linker options +### General +### library-linker -- linker to use +### autogenerated-files -- list of autogenerated files +### library-platform -- platform name (68K or PPC) +### library-kind -- library kind (".debug" or "") +### object-suffix -- object file suffix (.ppcf.o, .ppcd.o, .68kf.o, .68kd.o) +### object-suffix-data -- object file suffix fdor data libraries (.ppc.o, .68k.o) + + +### The following variables are platform- or kind-specific, but constant + +standard-libraries-ppc-debug = ¶ + ¶"{root-folder}bin:MIT CLib.PPC.debug¶" ¶ + ¶"{root-folder}bin:MIT RuntimeLib.PPC.debug¶" ¶ + ¶"{MWPPCLibraries}MSL ShLibRuntime.Lib¶" ¶ + ¶"{SharedLibraries}InterfaceLib¶" ¶ + ¶"{SharedLibraries}MathLib¶" +standard-libraries-68k-debug = ¶ + ¶"{root-folder}bin:MIT CLib.68K.debug¶" ¶ + ¶"{root-folder}bin:MIT RuntimeLib.68K.debug¶" ¶ + ¶"{MW68KLibraries}MSL ShLibRuntimeCFM68K.Lib¶" ¶ + ¶"{SharedLibraries}InterfaceLib¶" ¶ + ¶"{MW68KLibraries}MathLibCFM68K (4i_8d).Lib¶" +standard-libraries-ppc-final = ¶ + ¶"{root-folder}bin:MIT CLib.PPC¶" ¶ + ¶"{root-folder}bin:MIT RuntimeLib.PPC¶" ¶ + ¶"{MWPPCLibraries}MSL ShLibRuntime.Lib¶" ¶ + ¶"{SharedLibraries}InterfaceLib¶" ¶ + ¶"{SharedLibraries}MathLib¶" +standard-libraries-68k-final = ¶ + ¶"{root-folder}bin:MIT CLib.68K¶" ¶ + ¶"{root-folder}bin:MIT RuntimeLib.68K¶" ¶ + ¶"{MW68KLibraries}MSL ShLibRuntimeCFM68K.Lib¶" ¶ + ¶"{SharedLibraries}InterfaceLib¶" ¶ + ¶"{MW68KLibraries}MathLibCFM68K (4i_8d).Lib¶" + +ccache-ppc-debug = {root-folder}¶"mac:libraries:CCache API:bin:CCacheLib.PPC.debug¶" +ccache-68k-debug = {root-folder}¶"mac:libraries:CCache API:bin:CCacheLib.68K.debug¶" +ccache-ppc-final = {root-folder}¶"mac:libraries:CCache API:bin:CCacheLib.PPC¶" +ccache-68k-final = {root-folder}¶"mac:libraries:CCache API:bin:CCacheLib.68K¶" + +object-suffix-ppc-debug = .ppcd.o +object-suffix-68k-debug = .68kd.o +object-suffix-ppc-final = .ppcf.o +object-suffix-68k-final = .68kf.o +object-suffix-ppc-data = .ppc.o +object-suffix-68k-data = .68k.o + +gss-library-libraries-ppc-debug = ¶ + {standard-libraries-ppc-debug} ¶ + {krb5-library-output-folder}{krb5-library-name}{library-platform-ppc}{library-kind-debug} +gss-library-libraries-68k-debug = ¶ + {standard-libraries-68k-debug} ¶ + {krb5-library-output-folder}{krb5-library-name}{library-platform-68k}{library-kind-debug} +gss-library-libraries-ppc-final = ¶ + {standard-libraries-ppc-final} ¶ + {krb5-library-output-folder}{krb5-library-name}{library-platform-ppc}{library-kind-final} +gss-library-libraries-68k-final = ¶ + {standard-libraries-68k-final} ¶ + {krb5-library-output-folder}{krb5-library-name}{library-platform-68k}{library-kind-final} + +krb5-library-libraries-ppc-debug = ¶ + {standard-libraries-ppc-debug} ¶ + {ccache-ppc-debug} ¶ + {krb5-globals-library-output-folder}{krb5-globals-library-name}{library-platform-ppc}{library-kind-debug} +krb5-library-libraries-68k-debug = ¶ + {standard-libraries-68k-debug} ¶ + {ccache-68k-debug} ¶ + {krb5-globals-library-output-folder}{krb5-globals-library-name}{library-platform-68k}{library-kind-debug} +krb5-library-libraries-ppc-final = ¶ + {standard-libraries-ppc-final} ¶ + {ccache-ppc-final} ¶ + {krb5-globals-library-output-folder}{krb5-globals-library-name}{library-platform-ppc}{library-kind-final} +krb5-library-libraries-68k-final = ¶ + {standard-libraries-68k-final} ¶ + {ccache-68k-final} ¶ + {krb5-globals-library-output-folder}{krb5-globals-library-name}{library-platform-68k}{library-kind-final} + +krb5-globals-library-libraries-ppc-debug = ¶ + {standard-libraries-ppc-debug} ¶ + {ccache-ppc-debug} ¶ + {krb5-globals-data-library-output-folder}{krb5-globals-data-library-name}{library-platform-ppc} +krb5-globals-library-libraries-68k-debug = ¶ + {standard-libraries-68k-debug} ¶ + {ccache-68k-debug} ¶ + {krb5-globals-data-library-output-folder}{krb5-globals-data-library-name}{library-platform-68k} +krb5-globals-library-libraries-ppc-final = ¶ + {standard-libraries-ppc-final} ¶ + {ccache-ppc-final} ¶ + {krb5-globals-data-library-output-folder}{krb5-globals-data-library-name}{library-platform-ppc} +krb5-globals-library-libraries-68k-final = ¶ + {standard-libraries-68k-final} ¶ + {ccache-68k-final} ¶ + {krb5-globals-data-library-output-folder}{krb5-globals-data-library-name}{library-platform-68k} + +krb5-globals-data-library-libraries-ppc = ¶"{MWPPCLibraries}MSL RuntimePPC.Lib¶" +krb5-globals-data-library-libraries-68k = ¶"{MW68KLibraries}MSL MWCFM68KRuntime.Lib¶" + +### Construct linker options. + +common-linker-options = -sharedlibrary +common-linker-options-debug = {common-linker-options} -sym on +common-linker-options-final = {common-linker-options} -sym off + +gss-library-common-linker-options = ¶ + -cv {gss-library-current-version} ¶ + -dv {gss-library-definition-version} ¶ + -uv {gss-library-implementation-version} + +gss-library-linker-options-ppc-debug = {common-linker-options-debug} {gss-library-common-linker-options} +gss-library-linker-options-68k-debug = {common-linker-options-debug} {gss-library-common-linker-options} +gss-library-linker-options-ppc-final = {common-linker-options-final} {gss-library-common-linker-options} +gss-library-linker-options-68k-final = {common-linker-options-final} {gss-library-common-linker-options} + +krb5-library-common-linker-options = ¶ + -cv {krb5-library-current-version} ¶ + -dv {krb5-library-definition-version} ¶ + -uv {krb5-library-implementation-version} + +krb5-library-linker-options-ppc-debug = {common-linker-options-debug} {krb5-library-common-linker-options} +krb5-library-linker-options-68k-debug = {common-linker-options-debug} {krb5-library-common-linker-options} +krb5-library-linker-options-ppc-final = {common-linker-options-final} {krb5-library-common-linker-options} +krb5-library-linker-options-68k-final = {common-linker-options-final} {krb5-library-common-linker-options} + +krb5-globals-library-common-linker-options = ¶ + -cv {krb5-globals-library-current-version} ¶ + -dv {krb5-globals-library-definition-version} ¶ + -uv {krb5-globals-library-implementation-version} + +krb5-globals-library-linker-options-ppc-debug = {common-linker-options-debug} {krb5-globals-library-common-linker-options} +krb5-globals-library-linker-options-68k-debug = {common-linker-options-debug} {krb5-globals-library-common-linker-options} +krb5-globals-library-linker-options-ppc-final = {common-linker-options-final} {krb5-globals-library-common-linker-options} +krb5-globals-library-linker-options-68k-final = {common-linker-options-final} {krb5-globals-library-common-linker-options} + +krb5-globals-data-library-common-linker-options = ¶ + -cv {krb5-globals-data-library-current-version} ¶ + -dv {krb5-globals-data-library-definition-version} ¶ + -uv {krb5-globals-data-library-implementation-version} ¶ + -sharedata + +krb5-globals-data-library-linker-options-ppc = {common-linker-options-debug} {krb5-globals-data-library-common-linker-options} +krb5-globals-data-library-linker-options-68k = {common-linker-options-debug} {krb5-globals-data-library-common-linker-options} + +gss-library-objects-ppc-debug = `catenate {gss-objects-ppc-debug-list}` {root-folder}mac:GSS.CFM{object-suffix-ppc-debug} +gss-library-objects-68k-debug = `catenate {gss-objects-68k-debug-list}` {root-folder}mac:GSS.CFM{object-suffix-68k-debug} +gss-library-objects-ppc-final = `catenate {gss-objects-ppc-final-list}` {root-folder}mac:GSS.CFM{object-suffix-ppc-final} +gss-library-objects-68k-final = `catenate {gss-objects-68k-final-list}` {root-folder}mac:GSS.CFM{object-suffix-68k-final} + +krb5-library-objects-ppc-debug = `catenate {krb5-objects-ppc-debug-list}` {root-folder}mac:K5.CFM{object-suffix-ppc-debug} +krb5-library-objects-68k-debug = `catenate {krb5-objects-68k-debug-list}` {root-folder}mac:K5.CFM{object-suffix-68k-debug} +krb5-library-objects-ppc-final = `catenate {krb5-objects-ppc-final-list}` {root-folder}mac:K5.CFM{object-suffix-ppc-final} +krb5-library-objects-68k-final = `catenate {krb5-objects-68k-final-list}` {root-folder}mac:K5.CFM{object-suffix-68k-debug} + +krb5-globals-library-objects-ppc-debug = ¶ + {krb5-globals-root-folder}Krb5Globals{object-suffix-ppc-debug} ¶ + {krb5-globals-root-folder}Krb5Globals.CFM{object-suffix-ppc-debug} +krb5-globals-library-objects-68k-debug = ¶ + {krb5-globals-root-folder}Krb5Globals{object-suffix-68k-debug} ¶ + {krb5-globals-root-folder}Krb5Globals.CFM{object-suffix-68k-debug} +krb5-globals-library-objects-ppc-final = ¶ + {krb5-globals-root-folder}Krb5Globals{object-suffix-ppc-final} ¶ + {krb5-globals-root-folder}Krb5Globals.CFM{object-suffix-ppc-final} +krb5-globals-library-objects-68k-final = ¶ + {krb5-globals-root-folder}Krb5Globals{object-suffix-68k-debug} ¶ + {krb5-globals-root-folder}Krb5Globals.CFM{object-suffix-68k-debug} + +krb5-globals-data-library-objects-ppc = {krb5-globals-root-folder}Krb5GlobalsData{object-suffix-ppc-data} +krb5-globals-data-library-objects-68k = {krb5-globals-root-folder}Krb5GlobalsData{object-suffix-68k-data} + +library-linker-ppc = MWLinkPPC +library-linker-68K = MWLink68K + +### Construct compiler options. + +common-compiler-options = ¶ + -enum int -opt all -strings pool -mapcr ¶ + -mpw_pointers -warnings off -fatext -nosyspath -maxerrors 1000 ¶ + -align mac68k -opt off -toc_data on -fp_contract on ¶ + -model farData + +# Don't put the prefix file in these options because they are used to precompile the prefix file +ppc-compiler-options = +68k-compiler-options = -model cfmflat +debug-compiler-options = -sym on +final-compiler-options = -sym off + +include-paths = `catenate {include-folders-list}` ¶ + -i {root-folder}mac:libraries:¶"CCache API¶":include ¶ + -i {krb5-globals-root-folder} + +compiler-options-ppc-debug = {include-paths} {common-compiler-options} {ppc-compiler-options} ¶ + {debug-compiler-options} -prefix {precompiled-headers-ppc} +compiler-options-68k-debug = {include-paths} {common-compiler-options} {68k-compiler-options} ¶ + {debug-compiler-options} -prefix {precompiled-headers-68k} +compiler-options-ppc-final = {include-paths} {common-compiler-options} {ppc-compiler-options} ¶ + {final-compiler-options} -prefix {precompiled-headers-ppc} +compiler-options-68k-final = {include-paths} {common-compiler-options} {68k-compiler-options} ¶ + {final-compiler-options} -prefix {precompiled-headers-68k} + +compiler-ppc = MWCPPC +compiler-68k = MWC68K + +### Precompiled headers + +precompiled-headers-folder = {root-folder}mac:libraries: + +precompiled-headers-ppc = {precompiled-headers-folder}KerberosHeaders.PPC +precompiled-headers-68k = {precompiled-headers-folder}KerberosHeaders.68K + +precompiled-headers-source = {precompiled-headers-folder}mac:KerberosHeaders.pch + +{precompiled-headers-ppc} Ä {precompiled-headers-source} {precompiled-headers-folder}KerberosHeaders.h + {compiler-ppc} {precompiled-headers-source} {common-compiler-options} {ppc-compiler-options} ¶ + -precompile {Targ} -i {precompiled-headers-folder} + +{precompiled-headers-68k} Ä {precompiled-headers-source} {precompiled-headers-folder}KerberosHeaders.h + {compiler-68k} {precompiled-headers-source} {common-compiler-options} {68k-compiler-options} ¶ + -precompile {Targ} -i {precompiled-headers-folder} + +make-options-common = ¶ + -f {makefile-name} ¶ + -d autogenerated-files="{autogenerated-files}" ¶ + -d gss-library-output-folder="{gss-library-output-folder}" ¶ + -d gss-library-name="{gss-library-name}" ¶ + -d gss-library-export="{gss-library-export}" ¶ + -d gss-library-fragment-name="{gss-library-fragment-name}" ¶ + -d gss-library-main="{gss-library-main}" ¶ + -d gss-library-init="{gss-library-init}" ¶ + -d gss-library-term="{gss-library-term}" ¶ + -d krb5-library-output-folder="{krb5-library-output-folder}" ¶ + -d krb5-library-name="{krb5-library-name}" ¶ + -d krb5-library-export="{krb5-library-export}" ¶ + -d krb5-library-fragment-name="{krb5-library-fragment-name}" ¶ + -d krb5-library-main="{krb5-library-main}" ¶ + -d krb5-library-init="{krb5-library-init}" ¶ + -d krb5-library-term="{krb5-library-term}" ¶ + -d krb5-globals-library-output-folder="{krb5-globals-library-output-folder}" ¶ + -d krb5-globals-library-name="{krb5-globals-library-name}" ¶ + -d krb5-globals-library-export="{krb5-globals-library-export}" ¶ + -d krb5-globals-library-fragment-name="{krb5-globals-library-fragment-name}" ¶ + -d krb5-globals-library-main="{krb5-globals-library-main}" ¶ + -d krb5-globals-library-init="{krb5-globals-library-init}" ¶ + -d krb5-globals-data-library-term="{krb5-globals-data-library-term}" ¶ + -d krb5-globals-data-library-output-folder="{krb5-globals-data-library-output-folder}" ¶ + -d krb5-globals-data-library-name="{krb5-globals-data-library-name}" ¶ + -d krb5-globals-data-library-export="{krb5-globals-data-library-export}" ¶ + -d krb5-globals-data-library-fragment-name="{krb5-globals-data-library-fragment-name}" ¶ + -d krb5-globals-data-library-main="{krb5-globals-data-library-main}" ¶ + -d krb5-globals-data-library-init="{krb5-globals-data-library-init}" ¶ + -d krb5-globals-data-library-term="{krb5-globals-data-library-term}" + +make-options-ppc-debug = ¶ + -d library-linker="{library-linker-ppc}" ¶ + -d library-platform="{library-platform-ppc}" ¶ + -d library-kind="{library-kind-debug}" ¶ + -d gss-library-libraries="{gss-library-libraries-ppc-debug}" ¶ + -d gss-library-objects="{gss-library-objects-ppc-debug}" ¶ + -d gss-library-linker-options="{gss-library-linker-options-ppc-debug}" ¶ + -d krb5-library-libraries="{krb5-library-libraries-ppc-debug}" ¶ + -d krb5-library-objects="{krb5-library-objects-ppc-debug}" ¶ + -d krb5-library-linker-options="{krb5-library-linker-options-ppc-debug}" ¶ + -d krb5-globals-library-libraries="{krb5-globals-library-libraries-ppc-debug}" ¶ + -d krb5-globals-library-objects="{krb5-globals-library-objects-ppc-debug}" ¶ + -d krb5-globals-library-linker-options="{krb5-globals-library-linker-options-ppc-debug}" ¶ + -d krb5-globals-data-library-libraries="{krb5-globals-data-library-libraries-ppc}" ¶ + -d krb5-globals-data-library-objects="{krb5-globals-data-library-objects-ppc}" ¶ + -d krb5-globals-data-library-linker-options="{krb5-globals-data-library-linker-options-ppc}" ¶ + -d object-suffix="{object-suffix-ppc-debug}" ¶ + -d object-suffix-data="{object-suffix-ppc-data}" ¶ + -d compiler-options="{compiler-options-ppc-debug}" ¶ + -d compiler="{compiler-ppc}" ¶ + -d precompiled-headers="{precompiled-headers-ppc}" + +make-options-68k-debug = ¶ + -d library-linker="{library-linker-68k}" ¶ + -d library-platform="{library-platform-68k}" ¶ + -d library-kind="{library-kind-debug}" ¶ + -d gss-library-libraries="{gss-library-libraries-68k-debug}" ¶ + -d gss-library-objects="{gss-library-objects-68k-debug}" ¶ + -d gss-library-linker-options="{gss-library-linker-options-68k-debug}" ¶ + -d krb5-library-libraries="{krb5-library-libraries-68k-debug}" ¶ + -d krb5-library-objects="{krb5-library-objects-68k-debug}" ¶ + -d krb5-library-linker-options="{krb5-library-linker-options-68k-debug}" ¶ + -d krb5-globals-library-libraries="{krb5-globals-library-libraries-68k-debug}" ¶ + -d krb5-globals-library-objects="{krb5-globals-library-objects-68k-debug}" ¶ + -d krb5-globals-library-linker-options="{krb5-globals-library-linker-options-68k-debug}" ¶ + -d krb5-globals-data-library-libraries="{krb5-globals-data-library-libraries-68k}" ¶ + -d krb5-globals-data-library-objects="{krb5-globals-data-library-objects-68k}" ¶ + -d krb5-globals-data-library-linker-options="{krb5-globals-data-library-linker-options-68k}" ¶ + -d object-suffix="{object-suffix-68k-debug}" ¶ + -d object-suffix-data="{object-suffix-68k-data}" ¶ + -d compiler-options="{compiler-options-68k-debug}" ¶ + -d compiler="{compiler-68k}" ¶ + -d precompiled-headers="{precompiled-headers-68k}" + + +make-options-ppc-final = ¶ + -d library-linker="{library-linker-ppc}" ¶ + -d library-platform="{library-platform-ppc}" ¶ + -d library-kind="{library-kind-final}" ¶ + -d gss-library-libraries="{gss-library-libraries-ppc-final}" ¶ + -d gss-library-objects="{gss-library-objects-ppc-final}" ¶ + -d gss-library-linker-options="{gss-library-linker-options-ppc-final}" ¶ + -d krb5-library-libraries="{krb5-library-libraries-ppc-final}" ¶ + -d krb5-library-objects="{krb5-library-objects-ppc-final}" ¶ + -d krb5-library-linker-options="{krb5-library-linker-options-ppc-final}" ¶ + -d krb5-globals-library-libraries="{krb5-globals-library-libraries-ppc-final}" ¶ + -d krb5-globals-library-objects="{krb5-globals-library-objects-ppc-final}" ¶ + -d krb5-globals-library-linker-options="{krb5-globals-library-linker-options-ppc-final}" ¶ + -d krb5-globals-data-library-libraries="{krb5-globals-data-library-libraries-ppc}" ¶ + -d krb5-globals-data-library-objects="{krb5-globals-data-library-objects-ppc}" ¶ + -d krb5-globals-data-library-linker-options="{krb5-globals-data-library-linker-options-ppc}" ¶ + -d object-suffix="{object-suffix-ppc-final}" ¶ + -d object-suffix-data="{object-suffix-ppc-data}" ¶ + -d compiler-options="{compiler-options-ppc-final}" ¶ + -d compiler="{compiler-ppc}" ¶ + -d precompiled-headers="{precompiled-headers-ppc}" + +make-options-68k-final = ¶ + -d library-linker="{library-linker-68k}" ¶ + -d library-platform="{library-platform-68k}" ¶ + -d library-kind="{library-kind-final}" ¶ + -d gss-library-libraries="{gss-library-libraries-68k-final}" ¶ + -d gss-library-objects="{gss-library-objects-68k-final}" ¶ + -d gss-library-linker-options="{gss-library-linker-options-68k-final}" ¶ + -d krb5-library-libraries="{krb5-library-libraries-68k-final}" ¶ + -d krb5-library-objects="{krb5-library-objects-68k-final}" ¶ + -d krb5-library-linker-options="{krb5-library-linker-options-68k-final}" ¶ + -d krb5-globals-library-libraries="{krb5-globals-library-libraries-68k-final}" ¶ + -d krb5-globals-library-objects="{krb5-globals-library-objects-68k-final}" ¶ + -d krb5-globals-library-linker-options="{krb5-globals-library-linker-options-68k-final}" ¶ + -d krb5-globals-data-library-libraries="{krb5-globals-data-library-libraries-68k}" ¶ + -d krb5-globals-data-library-objects="{krb5-globals-data-library-objects-68k}" ¶ + -d krb5-globals-data-library-linker-options="{krb5-globals-data-library-linker-options-68k}" ¶ + -d object-suffix="{object-suffix-68k-final}" ¶ + -d object-suffix-data="{object-suffix-68k-data}" ¶ + -d compiler-options="{compiler-options-68k-final}" ¶ + -d compiler="{compiler-68k}" ¶ + -d precompiled-headers="{precompiled-headers-68k}" + +make-output = "{TempFolder}GSS/Kerberos Makefile script" +submakefile-target = gss-library + +ppc-debug Ä {makefile-name} {gss-objects-ppc-debug-list} {krb5-objects-ppc-debug-list} {include-folders-list} + Make {make-options-common} {make-options-ppc-debug} {submakefile-target} > {make-output} + {make-output} + +68k-debug Ä {makefile-name} {gss-objects-68k-debug-list} {krb5-objects-68k-debug-list} {include-folders-list} + Make {make-options-common} {make-options-68k-debug} {submakefile-target} > {make-output} + {make-output} + +ppc-final Ä {makefile-name} {gss-objects-ppc-final-list} {krb5-objects-ppc-final-list} {include-folders-list} + Make {make-options-common} {make-options-ppc-final} {submakefile-target} > {make-output} + {make-output} + +68k-final Ä {makefile-name} {gss-objects-68k-final-list} {krb5-objects-68k-final-list} {include-folders-list} + Make {make-options-common} {make-options-68k-final} {submakefile-target} > {make-output} + {make-output} + + +############################################################################################################## +### Variable targets -- these depend on which target we select in the above make invocations +############################################################################################################## +### We want the following to be defined in order for these targets to work: +### For GSS library +### gss-library-output-folder -- destination of GSS library output +### gss-library-name -- name of the GSS library +### gss-library-export -- name of gss GSS library export file +### gss-library-libraries -- list of libraries GSS library links against +### gss-library-objects -- list of object files GSS library links +### gss-library-fragment-name -- name of GSS library fragment +### gss-library-main -- name of GSS library main entry point +### gss-library-init -- name of GSS library initialization routine +### gss-library-term -- name of GSS library termination routine +### gss-library-linker-options -- all other GSS library linker options +### For Krb5 library +### krb5-library-output-folder -- destination of Krb5 library output +### krb5-library-name -- name of the Krb5 library +### krb5-library-export -- name of gss Krb5 library export file +### krb5-library-libraries -- list of libraries Krb5 library links against +### krb5-library-objects -- list of object files Krb5 library links +### krb5-library-fragment-name -- name of Krb5 library fragment +### krb5-library-main -- name of Krb5 library main entry point +### krb5-library-init -- name of Krb5 library initialization routine +### krb5-library-term -- name of Krb5 library termination routine +### krb5-library-linker-options -- all other Krb5 library linker options +### For Krb5 globals library +### krb5-globals-library-output-folder -- destination of Krb5 globals library output +### krb5-globals-library-name -- name of the Krb5 globals library +### krb5-globals-library-export -- name of gss Krb5 globals library export file +### krb5-globals-library-libraries -- list of libraries Krb5 globals library links against +### krb5-globals-library-objects -- list of object files Krb5 globals library links +### krb5-globals-library-fragment-name -- name of Krb5 globals library fragment +### krb5-globals-library-main -- name of Krb5 globals library main entry point +### krb5-globals-library-init -- name of Krb5 globals library initialization routine +### krb5-globals-library-term -- name of Krb5 globals library termination routine +### krb5-globals-library-linker-options -- all other Krb5 globals library linker options +### For Krb5 globals data library +### krb5-globals-data-library-output-folder -- destination of Krb5 globals library output +### krb5-globals-data-library-name -- name of the Krb5 globals library +### krb5-globals-data-library-export -- name of gss Krb5 globals library export file +### krb5-globals-data-library-libraries -- list of libraries Krb5 globals library links against +### krb5-globals-data-library-objects -- list of object files Krb5 globals library links +### krb5-globals-data-library-fragment-name -- name of Krb5 globals library fragment +### krb5-globals-data-library-main -- name of Krb5 globals library main entry point +### krb5-globals-data-library-init -- name of Krb5 globals library initialization routine +### krb5-globals-data-library-term -- name of Krb5 globals library termination routine +### krb5-globals-data-library-linker-options -- all other Krb5 globals library linker options +### General +### library-linker -- linker to use +### autogenerated-files -- list of autogenerated files +### library-platform -- platform name (68K or PPC) +### library-kind -- library kind (".debug" or "") + + +### script to create a folder if it does not exist +create-folder = {root-folder}mac:create-folder.mpw + + +### defaults, will be set to something better by the make commands above +library-linker = +library-platform = +library-kind = +gss-library-libraries = +gss-library-objects = +gss-library-linker-options = +krb5-library-libraries = +krb5-library-objects = +krb5-library-linker-options = +krb5-globals-library-libraries = +krb5-globals-library-objects = +krb5-globals-library-linker-options = +krb5-globals-data-library-libraries = +krb5-globals-data-library-objects = +krb5-globals-data-library-linker-options = +precompiled-headers = +object-suffix = .ignore.me +object-suffix-data = .ignore.me.too + +### Generate various major components of build commands from the above variables +gss-library-output-files = ¶ + {gss-library-output-folder}{gss-library-name}{library-platform}{library-kind} +gss-library-dependencies = ¶ + {autogenerated-files} {gss-library-export} {gss-library-libraries} {gss-library-objects} +gss-library-build-command = ¶ + {library-linker} ¶ + -name {gss-library-fragment-name}{library-kind} ¶ + -main {gss-library-main} ¶ + -init {gss-library-init} ¶ + -term {gss-library-term} ¶ + -@export {gss-library-export} ¶ + -map {gss-library-output-folder}{gss-library-name}{library-platform}{library-kind}.MAP ¶ + -o {gss-library-output-folder}{gss-library-name}{library-platform}{library-kind} ¶ + {gss-library-linker-options} ¶ + {gss-library-objects} {gss-library-libraries} + +krb5-library-output-files = ¶ + {krb5-library-output-folder}{krb5-library-name}{library-platform}{library-kind} +krb5-library-dependencies = ¶ + {autogenerated-files} {krb5-library-export} {krb5-library-libraries} {krb5-library-objects} +krb5-library-build-command = ¶ + {library-linker} ¶ + -name {krb5-library-fragment-name}{library-kind} ¶ + -main {krb5-library-main} ¶ + -init {krb5-library-init} ¶ + -term {krb5-library-term} ¶ + -@export {krb5-library-export} ¶ + -map {krb5-library-output-folder}{krb5-library-name}{library-platform}{library-kind}.MAP ¶ + -o {krb5-library-output-folder}{krb5-library-name}{library-platform}{library-kind} ¶ + {krb5-library-linker-options} ¶ + {krb5-library-objects} {krb5-library-libraries} + +krb5-globals-library-output-files = ¶ + {krb5-globals-library-output-folder}{krb5-globals-library-name}{library-platform}{library-kind} +krb5-globals-library-dependencies = ¶ + {autogenerated-files} {krb5-globals-library-export} {krb5-globals-library-libraries} {krb5-globals-library-objects} +krb5-globals-library-build-command = ¶ + {library-linker} ¶ + -name {krb5-globals-library-fragment-name}{library-kind} ¶ + -main {krb5-globals-library-main} ¶ + -init {krb5-globals-library-init} ¶ + -term {krb5-globals-library-term} ¶ + -@export {krb5-globals-library-export} ¶ + -map {krb5-globals-library-output-folder}{krb5-globals-library-name}{library-platform}{library-kind}.MAP ¶ + -o {krb5-globals-library-output-folder}{krb5-globals-library-name}{library-platform}{library-kind} ¶ + {krb5-globals-library-linker-options} ¶ + {krb5-globals-library-objects} {krb5-globals-library-libraries} + +krb5-globals-data-library-output-files = ¶ + {krb5-globals-data-library-output-folder}{krb5-globals-data-library-name}{library-platform} +krb5-globals-data-library-dependencies = ¶ + {autogenerated-files} {krb5-globals-data-library-export} {krb5-globals-data-library-libraries} {krb5-globals-data-library-objects} +krb5-globals-data-library-build-command = ¶ + {library-linker} ¶ + -name {krb5-globals-data-library-fragment-name} ¶ + -main {krb5-globals-data-library-main} ¶ + -init {krb5-globals-data-library-init} ¶ + -term {krb5-globals-data-library-term} ¶ + -@export {krb5-globals-data-library-export} ¶ + -map {krb5-globals-data-library-output-folder}{krb5-globals-data-library-name}{library-platform}.MAP ¶ + -o {krb5-globals-data-library-output-folder}{krb5-globals-data-library-name}{library-platform} ¶ + {krb5-globals-data-library-linker-options} ¶ + {krb5-globals-data-library-objects} {krb5-globals-data-library-libraries} + +### Build commands + +gss-library Ä {gss-library-output-files} +krb5-library Ä {krb5-library-output-files} +krb5-globals-library Ä {krb5-globals-library-output-files} +krb5-globals-data-library Ä {krb5-globals-data-library-output-files} + +{gss-library-output-files} ÄÄ {gss-library-dependencies} {makefile-name} + {create-folder} {gss-library-output-folder} + {gss-library-build-command} + +{krb5-library-output-files} ÄÄ {krb5-library-dependencies} {makefile-name} + {create-folder} {krb5-library-output-folder} + {krb5-library-build-command} + +{krb5-globals-library-output-files} ÄÄ {krb5-globals-library-dependencies} {makefile-name} + {create-folder} {krb5-globals-library-output-folder} + {krb5-globals-library-build-command} + +{krb5-globals-data-library-output-files} ÄÄ {krb5-globals-data-library-dependencies} {makefile-name} + {create-folder} {krb5-globals-data-library-output-folder} + {krb5-globals-data-library-build-command} + +############################################################################################################## +### Default compilation rules +############################################################################################################## + +{object-suffix} Ä .c {autogenerated-files} {makefile-name} {precompiled-headers} + {compiler} {DepDir}{Default}.c -o {DepDir}{Default}{object-suffix} {compiler-options} + +{object-suffix-data} Ä .c {autogenerated-files} {makefile-name} {precompiled-headers} + {compiler} {DepDir}{Default}.c -o {DepDir}{Default}{object-suffix-data} {compiler-options} + +############################################################################################################## +### Autogenerating classic 68K glue files +############################################################################################################## + +classic-glue-generation-script = {root-folder}CFMGlue.pl + +classic-glue-output = ¶ + {root-folder}K5.CFMglue.c ¶ + {root-folder}GSS.CFMglue.c + +glue Ä {classic-glue-output} + +glue-gss Ä {root-folder}K5.CFMglue.c +glue-krb5 Ä {root-folder}GSS.CFMglue.c + +{root-folder}mac:K5.CFMglue.c Ä {root-folder}mac:K5.CFMglue.cin {root-folder}mac:K5.CFMglue.proto.h ¶ + {root-folder}mac:CFMglue.c {root-folder}mac:K5.moreCFMglue.cin {classic-glue-generation-script} + perl {classic-glue-generation-script} < {root-folder}mac:K5.CFMglue.proto.h > {root-folder}mac:K5.CFMglue.c + Catenate {root-folder}mac:K5.CFMglue.cin {root-folder}mac:CFMglue.c {root-folder}mac:K5.CFMglue.c ¶ + {root-folder}mac:K5.moreCFMglue.cin | Catenate > {root-folder}mac:K5.CFMglue.c + +{root-folder}mac:GSS.CFMglue.c Ä {root-folder}mac:GSS.CFMglue.cin {root-folder}mac:GSS.CFMglue.proto.h ¶ + {root-folder}mac:CFMglue.c {root-folder}mac:GSS.moreCFMglue.cin {classic-glue-generation-script} + perl {classic-glue-generation-script} < {root-folder}mac:GSS.CFMglue.proto.h > {root-folder}mac:GSS.CFMglue.c + Catenate {root-folder}mac:GSS.CFMglue.cin {root-folder}mac:CFMglue.c {root-folder}mac:GSS.CFMglue.c ¶ + {root-folder}mac:GSS.moreCFMglue.cin | Catenate > {root-folder}mac:GSS.CFMglue.c + +############################################################################################################## +### Building the library files from multiple fragments +############################################################################################################## + +gss-krb5-library-final-fragment-list = ¶ + {gss-library-output-folder}{gss-library-name}{library-platform-ppc}{library-kind-final} ¶ + {gss-library-output-folder}{gss-library-name}{library-platform-68k}{library-kind-final} ¶ + {krb5-library-output-folder}{krb5-library-name}{library-platform-ppc}{library-kind-final} ¶ + {krb5-library-output-folder}{krb5-library-name}{library-platform-68k}{library-kind-final} ¶ + {krb5-globals-library-output-folder}{krb5-globals-library-name}{library-platform-ppc}{library-kind-final} ¶ + {krb5-globals-library-output-folder}{krb5-globals-library-name}{library-platform-68k}{library-kind-final} ¶ + {krb5-globals-data-library-output-folder}{krb5-globals-data-library-name}{library-platform-ppc} ¶ + {krb5-globals-data-library-output-folder}{krb5-globals-data-library-name}{library-platform-68k} ¶ + {ccache-ppc-final} ¶ + {ccache-68k-final} + +gss-krb5-library-debug-fragment-list = ¶ + {gss-library-output-folder}{gss-library-name}{library-platform-ppc}{library-kind-debug} ¶ + {gss-library-output-folder}{gss-library-name}{library-platform-68k}{library-kind-debug} ¶ + {krb5-library-output-folder}{krb5-library-name}{library-platform-ppc}{library-kind-debug} ¶ + {krb5-library-output-folder}{krb5-library-name}{library-platform-68k}{library-kind-debug} ¶ + {krb5-globals-library-output-folder}{krb5-globals-library-name}{library-platform-ppc}{library-kind-debug} ¶ + {krb5-globals-library-output-folder}{krb5-globals-library-name}{library-platform-68k}{library-kind-debug} ¶ + {krb5-globals-data-library-output-folder}{krb5-globals-data-library-name}{library-platform-ppc} ¶ + {krb5-globals-data-library-output-folder}{krb5-globals-data-library-name}{library-platform-68k} ¶ + {ccache-ppc-debug} ¶ + {ccache-68k-debug} + +gss-krb5-library-final Ä all-final + Make -d fragments="{gss-krb5-library-final-fragment-list}" -d target="{gss-krb5-library-final}" gss-krb5-library > {make-output} + {make-output} + +gss-krb5-library-debug Ä all-debug + Make -d fragments="{gss-krb5-library-debug-fragment-list}" -d target="{gss-krb5-library-debug}" gss-krb5-library > {make-output} + {make-output} + +gss-krb5-library Ä + Delete -i {target} + Rez {root-folder}"version.r" -a -o {target} + MergeFragment -x -z {fragments} {target} + SetFile {target} -c gss-krb5-library-creator -t 'shlb' + DeRez -only "'cfrg'(0)" {target} "{RIncludes}"CodeFragments.r | StreamEdit -s {root-folder}FragmentAlias.mpw | Rez -a -o {target} -i "{RIncludes}" + +############################################################################################################## +### Clean target deletes all generated files +############################################################################################################## + +clean Ä + # Need a dummy invalid name at the end to cover the case when nothing is found + Delete -i `files -r -s -o -f "{root-folder}" | StreamEdit -d -e "/Å{object-suffix-ppc-debug}/ Print"` supercalifragilisticexpialidoucious + Delete -i `files -r -s -o -f "{root-folder}" | StreamEdit -d -e "/Å{object-suffix-68k-debug}/ Print"` supercalifragilisticexpialidoucious + Delete -i `files -r -s -o -f "{root-folder}" | StreamEdit -d -e "/Å{object-suffix-ppc-final}/ Print"` supercalifragilisticexpialidoucious + Delete -i `files -r -s -o -f "{root-folder}" | StreamEdit -d -e "/Å{object-suffix-68k-final}/ Print"` supercalifragilisticexpialidoucious + Delete -i `files -r -s -o -f "{root-folder}" | StreamEdit -d -e "/Å{object-suffix-ppc-data}/ Print"` supercalifragilisticexpialidoucious + Delete -i `files -r -s -o -f "{root-folder}" | StreamEdit -d -e "/Å{object-suffix-68k-data}/ Print"` supercalifragilisticexpialidoucious + Delete -i {all-lists} \ No newline at end of file diff --git a/src/mac/create-folder.mpw b/src/mac/create-folder.mpw new file mode 100644 index 000000000..159eb1297 --- /dev/null +++ b/src/mac/create-folder.mpw @@ -0,0 +1,27 @@ +### usage: create-folder path +### +### path must be path to a folder (can be relative path) +### creates the folder and its parents if necessary + +### Create path components of path one at a time +set left-part "" +set right-part "{1}" + +loop + if "{right-part}" == "" + break + end + + (evaluate "{right-part}" =~ /([Â:]*:)¨1Å/) > Dev:Null + set car "{¨1}" + (evaluate "{right-part}" =~ /[Â:]*:(Å)¨1/) > Dev:Null + set cdr "{¨1}" + + set left-part "{left-part}{car}" + set right-part "{cdr}" + + if not (`Exists "{left-part}"`) + NewFolder "{left-part}" + end +end + \ No newline at end of file diff --git a/src/mac/macfile_gen.pl b/src/mac/macfile_gen.pl index fc5a620e7..1183321de 100644 --- a/src/mac/macfile_gen.pl +++ b/src/mac/macfile_gen.pl @@ -1,87 +1,162 @@ #!/usr/athena/bin/perl -w -if (defined ($ENV{'KERBSRCROOT'})) -{ - $ROOT=$ENV{'KERBSRCROOT'}; +# Usage: +# macfile_gen.pl list-type start-path prefix +# list-type is one of: +# all-files -- complete list of mac sources, relative to root +# all-folders -- complete list of mac directories, relative to root +# gss-sources -- complete list of mac GSS sources, relative to root +# krb5-sources -- complete list of mac Krb5 sources, relative to root +# gss-objects-ppc-debug -- complete list of mac GSS PPC debug objects, relative to root +# gss-objects-68k-debug -- complete list of mac GSS 68K debug objects, relative to root +# gss-objects-ppc-final -- complete list of mac GSS PPC final objects, relative to root +# gss-objects-68k-final -- complete list of mac GSS 68K final objects, relative to root +# krb5-objects-ppc-debug -- complete list of mac Kerberos v5 PPC debug objects, relative to root +# krb5-objects-68k-debug -- complete list of mac Kerberos v5 68K debug objects, relative to root +# krb5-objects-ppc-final -- complete list of mac Kerberos v5 PPC final objects, relative to root +# krb5-objects-68k-final -- complete list of mac Kerberos v5 68K final objects, relative to root +# include-folders -- complete list of include paths, relative to root +# +# input on stdin +# output on stdout + +# Check number of arguments +if (scalar @ARGV != 3) { + print (STDERR "Got " . scalar @ARGV . " arguments, expected 2"); + &usage; + exit; +} + +# Parse arguments +$action = $ARGV [0]; +$ROOT = $ARGV [1]; +$prefix = $ARGV [2]; + +# Read source list +if ($action ne "all-files") { + + @sourceList = ; + grep (s/\n$//, @sourceList); + } else { - $ROOT='.'; + + @sourceList = &make_macfile_maclist (&make_macfile_list ()); + @sourceList = map { $prefix . $_;} @sourceList; + } -# if we get "maclist" as a command line argument, print out a -# list of files we need. -if (defined($ARGV[0]) && $ARGV[0] eq "maclist") -{ - print(STDERR "Creating maclist.\n"); - print(join(" ", &make_macfile_maclist(&make_macfile_list())), "\n"); - print(STDERR "Done.\n"); - exit; -} +if ($action eq "all-folders") { -# if we get "macdirs" as a command line argument, print out a -# list of directories we need. Else, generate a makefile. + print (STDERR "# Building folder listÉ "); + @outputList = grep (s/(.*:)[^:]*\.c$/$1/, @sourceList); + @outputList = &uniq (sort (@outputList)); + + print (STDERR "Done.\n"); -if (defined($ARGV[0]) && $ARGV[0] eq "macdirs") -{ - print(STDERR "Creating macdirs.\n"); - @MFSRCD=grep(s/(.*:)[^:]*\.c$/$1/, &make_macfile_maclist(&make_macfile_list())); - @MFSRCD=&uniq(sort(@MFSRCD)); - print(join(" ", @MFSRCD), "\n"); - print(STDERR "Done.\n"); - exit; -} +} elsif ($action eq "all-files") { -print(STDERR "Creating makefile.\n"); + print (STDERR "# Building file listÉ "); + @outputList = @sourceList; + print (STDERR "Done.\n"); -@MACLIST=&make_macfile_maclist(&make_macfile_list()); -@MACSRCS=grep(/\.c$/, @MACLIST); -@MACSRCSK5=grep($_!~/:gssapi:/, @MACSRCS); -@MACSRCSGSS=grep($_=~/:gssapi:/, @MACSRCS); +} elsif ($action eq "all-sources") { -$MAKEFILE=&chew_on_filename("Makefile"); -&delete_file("Makefile") && print(STDERR "Old makefile ($MAKEFILE) deleted.\n"); -open(MF, ">".&chew_on_filename("Makefile")) || die "Can't open Makefile for writing"; -print(MF "sources = ", join(" ", @MACSRCS), "\n\n"); -@MFSRCD=grep(s/(.*:)[^:]*\.c$/$1/, ©_array(@MACLIST)); -@MFSRCD=&uniq(sort(@MFSRCD)); -print(MF "source-folders = @MFSRCD\n\n"); + print (STDERR "# Building source listÉ "); + @outputList = grep (/.c$/, @sourceList); + print (STDERR "Done.\n"); -@MACSRCSGSS=grep(s/.*://, @MACSRCSGSS); -@MACSRCSK5=grep(s/.*://, @MACSRCSK5); +} elsif ($action eq "gss-sources") { -for $A (0..1) -{ - @ARCH=('cfm68k', 'CFM68', 'CFM-68K') if $A==0; - @ARCH=('ppc', 'PPC', 'PPC') if $A==1; + print (STDERR "# Building GSS source listÉ "); + @outputList = grep (/:gssapi:/, @sourceList); + print (STDERR "Done. \n"); + +} elsif ($action eq "krb5-sources") { - print MF "gss-obj-$ARCH[0] = "; - for $SRC (@MACSRCSGSS) - { - print(MF ":bin:$ARCH[2]:$SRC.$ARCH[1].o "); - } - print(MF "\n\n"); + print (STDERR "# Building Kerberos v5 source listÉ "); + @outputList = grep (!/:gssapi:/, @sourceList); + print (STDERR "Done. \n"); - print MF "krb5-obj-$ARCH[0] = "; - for $SRC (@MACSRCSK5) - { - print(MF ":bin:$ARCH[2]:$SRC.$ARCH[1].o "); - } - print(MF "\n\n"); -} +} elsif ($action eq "gss-objects-ppc-debug") { + + print (STDERR "# Building GSS PPC debug object listÉ "); + @outputList = grep (s/\.c$/\.ppcd.o/, @sourceList); + @outputList = grep (/:gssapi:/, @outputList); + print (STDERR "Done. \n"); -@HEADERS=grep(s/(.*:)[^:]*\.h$/ -i $1/, @MACLIST); -print(MF "autogenerated-include-paths = ", &uniq(sort(@HEADERS)), "\n"); +} elsif ($action eq "gss-objects-68k-debug") { -print(MF "\n# TEMPLATE BEGINS HERE\n\n"); + print (STDERR "# Building GSS 68K debug object listÉ "); + @outputList = grep (s/\.c$/\.68kd.o/, @sourceList); + @outputList = grep (/:gssapi:/, @outputList); + print (STDERR "Done. \n"); -@TEMPLATE=&read_file("mac/Makefile.tmpl"); -$TEMPLATE=join("\n", @TEMPLATE)."\n"; -$TEMPLATE=~tr#\*/:\\#\245:\304\266#; -print MF $TEMPLATE; +} elsif ($action eq "gss-objects-ppc-final") { + + print (STDERR "# Building GSS PPC final object listÉ "); + @outputList = grep (s/\.c$/\.ppcf.o/, @sourceList); + @outputList = grep (/:gssapi:/, @outputList); + print (STDERR "Done. \n"); + +} elsif ($action eq "gss-objects-68k-final") { + + print (STDERR "# Building GSS 68K final object listÉ "); + @outputList = grep (s/\.c$/\.68kf.o/, @sourceList); + @outputList = grep (/:gssapi:/, @outputList); + print (STDERR "Done. \n"); + +} elsif ($action eq "krb5-objects-ppc-debug") { + + print (STDERR "# Building Kerberos v5 PPC debug object listÉ "); + @outputList = grep (s/\.c$/\.ppcd.o/, @sourceList); + @outputList = grep (!/:gssapi:/, @outputList); + print (STDERR "Done. \n"); + +} elsif ($action eq "krb5-objects-68k-debug") { + + print (STDERR "# Building Kerberos v5 68K debug object listÉ "); + @outputList = grep (s/\.c$/\.68kd.o/, @sourceList); + @outputList = grep (!/:gssapi:/, @outputList); + print (STDERR "Done. \n"); + +} elsif ($action eq "krb5-objects-ppc-final") { + + print (STDERR "# Building Kerberos v5 PPC final object listÉ "); + @outputList = grep (s/\.c$/\.ppcf.o/, @sourceList); + @outputList = grep (!/:gssapi:/, @outputList); + print (STDERR "Done. \n"); + +} elsif ($action eq "krb5-objects-68k-final") { + + print (STDERR "# Building Kerberos v5 68K final object listÉ "); + @outputList = grep (s/\.c$/\.68kf.o/, @sourceList); + @outputList = grep (!/:gssapi:/, @outputList); + print (STDERR "Done. \n"); + +} elsif ($action eq "include-folders") { + + print (STDERR "# Building include listÉ "); + @outputList = grep (s/(.*:)[^:]*\.h$/-i $1/, @sourceList); + @outputList = &uniq (sort (@outputList)); + print (STDERR "Done. \n"); + +} else { + + &usage; + exit; + +} + +print (join ("\n", @outputList), "\n"); -print(STDERR "$MAKEFILE successfully generated.\n"); exit; +# +# Brad wrote rest of this stuff. Bug him, not me :-) +# + + # Assuming the arguments are sorted, returns a copy with all duppliactes # removed. # @SPARSE_LIST = &uniq(@DUP_LIST);