<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic MMS object library rules in Operating System - OpenVMS</title>
    <link>https://community.hpe.com/t5/operating-system-openvms/mms-object-library-rules/m-p/3804631#M34242</link>
    <description>I'm trying to get an MMS dependency rule to allow me to put a bunch of object files into an object library.  Sounds simple, but I've got a BUNCH of object files.  So many so that when the original code ran, it would choke with an EXETOOBIG error in MMS (exceeded the length of the command line).&lt;BR /&gt;&lt;BR /&gt;I've read the docu (many times now) and scoured the web for a good example, but haven't really found one.  The closest I've come to getting it to work is shown by this example:&lt;BR /&gt;&lt;BR /&gt;=-=-=-=-=-&lt;BR /&gt;&lt;BR /&gt;lib$:oblib(after_log=obj$:after_log.obj) : obj$:after_log.obj&lt;BR /&gt;&lt;BR /&gt;lib$:oblib(ascii=obj$:ascii.obj) : obj$:ascii.obj&lt;BR /&gt;&lt;BR /&gt;lib$:oblib(c$brk=obj$:c$brk.obj) : obj$:c$brk.obj&lt;BR /&gt;&lt;BR /&gt;lib$:oblib(c$bksp=obj$:c$bksp.obj) : obj$:c$bksp.obj&lt;BR /&gt;&lt;BR /&gt;lib$:oblib(c$grep=obj$:c$grep.obj) : obj$:c$grep.obj&lt;BR /&gt;&lt;BR /&gt;(and on for many more objects...)&lt;BR /&gt;&lt;BR /&gt;=-=-=-=-=-&lt;BR /&gt;&lt;BR /&gt;(And yes, there are dependency rules further down in the file for building the OBJ files from their various sources.)&lt;BR /&gt;&lt;BR /&gt;However, when I try to run MMS with this descrip, it adds the first module (after_log) and then ends.  If I try to run it again, it says the library is up to date, even though that's the only module in the library!!!&lt;BR /&gt;&lt;BR /&gt;From what the docu said, I interpreted it to mean that such would happen if I specified the object library as the target, and I would avoid this problem if I used the above module references.&lt;BR /&gt;&lt;BR /&gt;It seems I'm not groking this properly.  Help?&lt;BR /&gt;&lt;BR /&gt;Aaron</description>
    <pubDate>Mon, 12 Jun 2006 19:01:37 GMT</pubDate>
    <dc:creator>Aaron Sakovich</dc:creator>
    <dc:date>2006-06-12T19:01:37Z</dc:date>
    <item>
      <title>MMS object library rules</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/mms-object-library-rules/m-p/3804631#M34242</link>
      <description>I'm trying to get an MMS dependency rule to allow me to put a bunch of object files into an object library.  Sounds simple, but I've got a BUNCH of object files.  So many so that when the original code ran, it would choke with an EXETOOBIG error in MMS (exceeded the length of the command line).&lt;BR /&gt;&lt;BR /&gt;I've read the docu (many times now) and scoured the web for a good example, but haven't really found one.  The closest I've come to getting it to work is shown by this example:&lt;BR /&gt;&lt;BR /&gt;=-=-=-=-=-&lt;BR /&gt;&lt;BR /&gt;lib$:oblib(after_log=obj$:after_log.obj) : obj$:after_log.obj&lt;BR /&gt;&lt;BR /&gt;lib$:oblib(ascii=obj$:ascii.obj) : obj$:ascii.obj&lt;BR /&gt;&lt;BR /&gt;lib$:oblib(c$brk=obj$:c$brk.obj) : obj$:c$brk.obj&lt;BR /&gt;&lt;BR /&gt;lib$:oblib(c$bksp=obj$:c$bksp.obj) : obj$:c$bksp.obj&lt;BR /&gt;&lt;BR /&gt;lib$:oblib(c$grep=obj$:c$grep.obj) : obj$:c$grep.obj&lt;BR /&gt;&lt;BR /&gt;(and on for many more objects...)&lt;BR /&gt;&lt;BR /&gt;=-=-=-=-=-&lt;BR /&gt;&lt;BR /&gt;(And yes, there are dependency rules further down in the file for building the OBJ files from their various sources.)&lt;BR /&gt;&lt;BR /&gt;However, when I try to run MMS with this descrip, it adds the first module (after_log) and then ends.  If I try to run it again, it says the library is up to date, even though that's the only module in the library!!!&lt;BR /&gt;&lt;BR /&gt;From what the docu said, I interpreted it to mean that such would happen if I specified the object library as the target, and I would avoid this problem if I used the above module references.&lt;BR /&gt;&lt;BR /&gt;It seems I'm not groking this properly.  Help?&lt;BR /&gt;&lt;BR /&gt;Aaron</description>
      <pubDate>Mon, 12 Jun 2006 19:01:37 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/mms-object-library-rules/m-p/3804631#M34242</guid>
      <dc:creator>Aaron Sakovich</dc:creator>
      <dc:date>2006-06-12T19:01:37Z</dc:date>
    </item>
    <item>
      <title>Re: MMS object library rules</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/mms-object-library-rules/m-p/3804632#M34243</link>
      <description>I believe that this is covered in the MMS&lt;BR /&gt;manual somewhere, but you seem to have&lt;BR /&gt;described how the modules in the library&lt;BR /&gt;depend on the individual object files, but&lt;BR /&gt;not how the library depends on its modules.&lt;BR /&gt;&lt;BR /&gt;I'd've expected a ".olb" on "oblib", but you&lt;BR /&gt;might toss in something like:&lt;BR /&gt;&lt;BR /&gt;oblib_mods = after_log=obj$:after_log.obj \&lt;BR /&gt; ascii=obj$:ascii.obj \&lt;BR /&gt; c$brk=obj$:c$brk.obj \&lt;BR /&gt; [...]&lt;BR /&gt;&lt;BR /&gt;lib$:oblib : lib$:oblib($(oblib_mods))&lt;BR /&gt;        @ write sys$output "$(MMS$TARGET) updated."&lt;BR /&gt;&lt;BR /&gt;There must be a lot of examples of this stuff&lt;BR /&gt;floating around, but the smallest one I can&lt;BR /&gt;find right now is in the Zip 3.0e BETA kit:&lt;BR /&gt;&lt;BR /&gt;&lt;A href="ftp://ftp.info-zip.org/pub/infozip/OLD/beta/zip30e.zip" target="_blank"&gt;ftp://ftp.info-zip.org/pub/infozip/OLD/beta/zip30e.zip&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;The stuff is all in [.VMS]descrip*.mms.&lt;BR /&gt;&lt;BR /&gt;It's a bit more complicated than the ideal&lt;BR /&gt;for instructional purposes, with more layers&lt;BR /&gt;of macros, but I believe that it works.&lt;BR /&gt;&lt;BR /&gt;Prompt complaints would certainly be welcome,&lt;BR /&gt;if not.</description>
      <pubDate>Mon, 12 Jun 2006 23:04:54 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/mms-object-library-rules/m-p/3804632#M34243</guid>
      <dc:creator>Steven Schweda</dc:creator>
      <dc:date>2006-06-12T23:04:54Z</dc:date>
    </item>
    <item>
      <title>Re: MMS object library rules</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/mms-object-library-rules/m-p/3804633#M34244</link>
      <description>I'm not sure this adds much to what Steven said, but what I've seen done is something like:&lt;BR /&gt;&lt;BR /&gt;mylibobjs = foo.obj, bar.obj, baz.obj&lt;BR /&gt;&lt;BR /&gt;mylib.olb : mylib.olb( $(mylibobjs) )&lt;BR /&gt;    library/compress $(MMS$TARGET)/output=$(MMS$TARGET)&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;That gets you a compressed version of the library that is better for distribution purposes.  &lt;BR /&gt;&lt;BR /&gt;If the macro mylibobjs blows up some buffer by getting too long, I think you'd just have to break it in chunks and make the library dependent on two, three, or however many lists of object files, though I'm not completely sure that would work since I've never tried it.</description>
      <pubDate>Tue, 13 Jun 2006 16:06:52 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/mms-object-library-rules/m-p/3804633#M34244</guid>
      <dc:creator>Craig A Berry</dc:creator>
      <dc:date>2006-06-13T16:06:52Z</dc:date>
    </item>
    <item>
      <title>Re: MMS object library rules</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/mms-object-library-rules/m-p/3804634#M34245</link>
      <description>There is an example in the MMS guide towards the end, it is called advanced (or complex, something to that effect), where a complete build process for a product is defined. I used it to create my MMS file and it works. Following this example, I use OBJ_LIB in the dependency rule. &lt;BR /&gt;Example:&lt;BR /&gt;.OBJ.OLB          :&lt;BR /&gt;     @ IF F$SEARCH("$(MMS$TARGET)") .eqs. "" then -&lt;BR /&gt;       $(LIBR)/CREATE/LOG $(MMS$TARGET)&lt;BR /&gt;     $(LIBR) $(LIBRFLAGS) $(MMS$TARGET) $(MMS$SOURCE)&lt;BR /&gt;&lt;BR /&gt;OLB_ELEMENTS  = -&lt;BR /&gt;A32=OBJ$:A32.OBJ      ,-&lt;BR /&gt;...&lt;BR /&gt;&lt;BR /&gt;OBJ$:XXX.EXE  : OBJ$:XXXMAIN.OBJ OBJ$:XYZ3300.OLB,SRC$:XXX.OPT&lt;BR /&gt;   LINK/map/exe=obj$:XXX.EXE OBJ$:XXXMAIN.OBJ,XYZ3300.OLB/LIB,SRC$:XXX.OPT/OPT&lt;BR /&gt;OBJ$:XXXMAIN.OBJ  : SRC$:XXXMAIN.C&lt;BR /&gt;    $(CC) $(CFLAGS) /OBJ=$(MMS$TARGET) $(MMS$SOURCE)&lt;BR /&gt;OBJ$:XYZ3300.OLB  : OBJ$:XYZ3300.OLB($(OLB_ELEMENTS))&lt;BR /&gt;    CONTINUE&lt;BR /&gt;...&lt;BR /&gt;OBJ$:A32.OBJ : SRC$:A32.C&lt;BR /&gt;                   $(CC) $(CFLAGS) /OBJ=$(MMS$TARGET) $(MMS$SOURCE)</description>
      <pubDate>Wed, 14 Jun 2006 13:14:19 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/mms-object-library-rules/m-p/3804634#M34245</guid>
      <dc:creator>Malleka Ramachandran</dc:creator>
      <dc:date>2006-06-14T13:14:19Z</dc:date>
    </item>
    <item>
      <title>Re: MMS object library rules</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/mms-object-library-rules/m-p/3804635#M34246</link>
      <description>Yup, that got it.  It didn't appear as clear as your examples to me, for some reason.  I defined a macro with the whole list of obj's, and then set the library to be dependent on the modules in the library as referenced by the macro.&lt;BR /&gt;&lt;BR /&gt;Thanks for your help.  Maintenance of someone else's code is a royal pain in the nether regions, but having your help here saved me hours of futzing around!&lt;BR /&gt;&lt;BR /&gt;Aaron</description>
      <pubDate>Wed, 14 Jun 2006 14:14:02 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/mms-object-library-rules/m-p/3804635#M34246</guid>
      <dc:creator>Aaron Sakovich</dc:creator>
      <dc:date>2006-06-14T14:14:02Z</dc:date>
    </item>
    <item>
      <title>Re: MMS object library rules</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/mms-object-library-rules/m-p/3804636#M34247</link>
      <description>&amp;gt; I defined a macro with the whole list of&lt;BR /&gt;&amp;gt; obj's, [[_not_ library modules]] and then&lt;BR /&gt;&amp;gt; set the library to be dependent on the&lt;BR /&gt;&amp;gt; modules [[no, _object files, _not_]] in the&lt;BR /&gt;&amp;gt; library as referenced by the macro.&lt;BR /&gt;&lt;BR /&gt;So, when the object files are all made, and&lt;BR /&gt;then the object library is created, it'll be&lt;BR /&gt;newer than any of the object files, so&lt;BR /&gt;there'll be no need to add them to the&lt;BR /&gt;library.&lt;BR /&gt;&lt;BR /&gt;It's critical to say that the library depends&lt;BR /&gt;on the _modules_ in the library, not on the&lt;BR /&gt;loose object files.  It's a bit quirky, but&lt;BR /&gt;that's how it's done.  And some sort of&lt;BR /&gt;null/harmless action is required for that&lt;BR /&gt;rule, to satisfy the syntax requirements.</description>
      <pubDate>Wed, 14 Jun 2006 14:29:23 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/mms-object-library-rules/m-p/3804636#M34247</guid>
      <dc:creator>Steven Schweda</dc:creator>
      <dc:date>2006-06-14T14:29:23Z</dc:date>
    </item>
    <item>
      <title>Re: MMS object library rules</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/mms-object-library-rules/m-p/3804637#M34248</link>
      <description>There seems to be proper processing of modules and libraries using the default .olb.obj rules.&lt;BR /&gt;&lt;BR /&gt;Where I'm stuck now is with one of the obj files that go into my olb; it has a module name different than the object file name.  Ordinarily, that wouldn't be a big deal, but in this case, the module name is .MAIN. and MMS is choking on the ersatz periods.  With the following in my olb dependency:&lt;BR /&gt;&lt;BR /&gt; [mumble},.MAIN.=sub.obj,{moremumble}&lt;BR /&gt;&lt;BR /&gt;I get the following error&lt;BR /&gt;&lt;BR /&gt;%MMS-F-LBRNOELEM, Illegal library element is specified in LIB$:07LIB.OLB&lt;BR /&gt;&lt;BR /&gt;I can issue the corresponding library command at the $ prompt sans err:&lt;BR /&gt;&lt;BR /&gt; $ Libr/repl ObLib.olb sub.obj/module=.MAIN./Log&lt;BR /&gt;%LIBRAR-S-REPLACED, module .MAIN. replaced in DEV:[LIB]OBLIB.OLB;1&lt;BR /&gt;&lt;BR /&gt;I've scoured the docu (again) and the web and newsgroups and ITRC and AskQ (or whatever it's called now) to no avail.&lt;BR /&gt;&lt;BR /&gt;So, how am I supposed to spec a module with periods in its name?&lt;BR /&gt;&lt;BR /&gt;Curious,&lt;BR /&gt;Aaron</description>
      <pubDate>Thu, 15 Jun 2006 14:03:50 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/mms-object-library-rules/m-p/3804637#M34248</guid>
      <dc:creator>Aaron Sakovich</dc:creator>
      <dc:date>2006-06-15T14:03:50Z</dc:date>
    </item>
  </channel>
</rss>

