descrip_mkdeps.mms 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. # 1 February 2008. SMS.
  2. #
  3. # Zip 3.0 for VMS - MMS Dependency Description File.
  4. #
  5. # MMS /EXTENDED_SYNTAX description file to generate a C source
  6. # dependencies file. Unsightly errors result when /EXTENDED_SYNTAX
  7. # is not specified. Typical usage:
  8. #
  9. # $ MMS /EXTEND /DESCRIP = [.VMS]DESCRIP_MKDEPS.MMS /SKIP
  10. #
  11. # Note that this description file must be used from the main
  12. # distribution directory, not from the [.VMS] subdirectory.
  13. #
  14. # This description file uses these command procedures:
  15. #
  16. # [.VMS]MOD_DEP.COM
  17. # [.VMS]COLLECT_DEPS.COM
  18. #
  19. # MMK users without MMS will be unable to generate the dependencies file
  20. # using this description file, however there should be one supplied in
  21. # the kit. If this file has been deleted, users in this predicament
  22. # will need to recover it from the original distribution kit.
  23. #
  24. # Note: This dependency generation scheme assumes that the dependencies
  25. # do not depend on host architecture type or other such variables.
  26. # Therefore, no "#include" directive in the C source itself should be
  27. # conditional on such variables.
  28. #
  29. # The default target is the comprehensive source dependency file,
  30. # DEPS_FILE = [.VMS]DESCRIP_DEPS.MMS.
  31. #
  32. # Other targets:
  33. #
  34. # CLEAN deletes the individual source dependency files,
  35. # *.MMSD;*, but leaves the comprehensive source dependency
  36. # file.
  37. #
  38. # CLEAN_ALL deletes all source dependency files, including the
  39. # individual *.MMSD;* files and the comprehensive file,
  40. # DESCRIP_DEPS.MMS.*.
  41. #
  42. # Required command procedures.
  43. COMS = [.VMS]MOD_DEP.COM [.VMS]COLLECT_DEPS.COM
  44. # Include the source file lists (among other data).
  45. INCL_DESCRIP_SRC = 1
  46. .INCLUDE [.VMS]DESCRIP_SRC.MMS
  47. # The ultimate product, a comprehensive dependency list.
  48. DEPS_FILE = [.VMS]DESCRIP_DEPS.MMS
  49. # Detect valid qualifier and/or macro options.
  50. .IF $(FINDSTRING Skip, $(MMSQUALIFIERS)) .eq Skip
  51. DELETE_MMSD = 1
  52. .ELSIF NOSKIP
  53. PURGE_MMSD = 1
  54. .ELSE
  55. UNK_MMSD = 1
  56. .ENDIF
  57. # Dependency suffixes and rules.
  58. #
  59. # .FIRST is assumed to be used already, so the MMS qualifier/macro check
  60. # is included in each rule (one way or another).
  61. .SUFFIXES_BEFORE .C .MMSD
  62. .C.MMSD :
  63. .IF UNK_MMSD
  64. @ write sys$output -
  65. " /SKIP_INTERMEDIATES is expected on the MMS command line."
  66. @ write sys$output -
  67. " For normal behavior (delete .MMSD files), specify ""/SKIP""."
  68. @ write sys$output -
  69. " To retain the .MMSD files, specify ""/MACRO = NOSKIP=1""."
  70. @ exit %x00000004
  71. .ENDIF
  72. $(CC) $(CFLAGS_INCL) $(MMS$SOURCE) /NOLIST /NOOBJECT -
  73. /MMS_DEPENDENCIES = (FILE = $(MMS$TARGET), NOSYSTEM_INCLUDE_FILES)
  74. # List of MMS dependency files.
  75. # In case it's not obvious...
  76. # To extract module name lists from object library module=object lists:
  77. # 1. Transform "module=[.dest]name.OBJ" into "module=[.dest] name".
  78. # 2. For [.VMS], add [.VMS] to name.
  79. # 3. Delete "*]" words.
  80. #
  81. # A similar scheme works for executable lists.
  82. MODS_LIB_ZIP_N = $(FILTER-OUT *], \
  83. $(PATSUBST *]*.OBJ, *] *, $(MODS_OBJS_LIB_ZIP_N)))
  84. MODS_LIB_ZIP_V = $(FILTER-OUT *], \
  85. $(PATSUBST *]*.OBJ, *] [.VMS]*, $(MODS_OBJS_LIB_ZIP_V)))
  86. MODS_LIB_ZIPUTILS_N = $(FILTER-OUT *], \
  87. $(PATSUBST *]*.OBJ, *] *, $(MODS_OBJS_LIB_ZIPUTILS_N)))
  88. MODS_LIB_ZIPUTILS_N_V = $(FILTER-OUT *], \
  89. $(PATSUBST *]*.OBJ, *] [.VMS]*, $(MODS_OBJS_LIB_ZIPUTILS_N_V)))
  90. MODS_LIB_ZIPUTILS_U = $(FILTER-OUT *], \
  91. $(PATSUBST *]*.OBJ, *] *, $(MODS_OBJS_LIB_ZIPUTILS_U)))
  92. MODS_LIB_ZIPUTILS_U_V = $(FILTER-OUT *], \
  93. $(PATSUBST *]*.OBJ, *] [.VMS]*, $(MODS_OBJS_LIB_ZIPUTILS_U_V)))
  94. MODS_LIB_ZIPCLI_V = $(FILTER-OUT *], \
  95. $(PATSUBST *]*.OBJ, *] [.VMS]*, $(MODS_OBJS_LIB_ZIPCLI_C_V)))
  96. MODS_ZIP = $(FILTER-OUT *], \
  97. $(PATSUBST *]*.EXE, *] *, $(ZIP)))
  98. MODS_ZIPUTILS = $(FILTER-OUT *], \
  99. $(PATSUBST *]*.EXE, *] *, $(ZIPUTILS)))
  100. # Complete list of C object dependency file names.
  101. # Note that the CLI Zip main program object file is a special case.
  102. DEPS = $(FOREACH NAME, \
  103. $(MODS_LIB_ZIP_N) $(MODS_LIB_ZIP_V) \
  104. $(MODS_ZIPUTILS_N) $(MODS_ZIPUTILS_N_V) \
  105. $(MODS_LIB_ZIPUTILS_U) $(MODS_LIB_ZIPUTILS_U_V) \
  106. $(MODS_LIB_ZIPCLI_V) \
  107. $(MODS_ZIP) ZIPCLI $(MODS_ZIPUTILS), \
  108. $(NAME).MMSD)
  109. # Default target is the comprehensive dependency list.
  110. $(DEPS_FILE) : $(DEPS) $(COMS)
  111. .IF UNK_MMSD
  112. @ write sys$output -
  113. " /SKIP_INTERMEDIATES is expected on the MMS command line."
  114. @ write sys$output -
  115. " For normal behavior (delete individual .MMSD files), specify ""/SKIP""."
  116. @ write sys$output -
  117. " To retain the individual .MMSD files, specify ""/MACRO = NOSKIP=1""."
  118. @ exit %x00000004
  119. .ENDIF
  120. #
  121. # Note that the space in P3, which prevents immediate macro
  122. # expansion, is removed by COLLECT_DEPS.COM.
  123. #
  124. @[.VMS]COLLECT_DEPS.COM "Zip" -
  125. "$(MMS$TARGET)" "[...]*.MMSD" "[.$ (DEST)]" $(MMSDESCRIPTION_FILE)
  126. @ write sys$output -
  127. "Created a new dependency file: $(MMS$TARGET)"
  128. .IF DELETE_MMSD
  129. @ write sys$output -
  130. "Deleting intermediate .MMSD files..."
  131. delete /log *.MMSD;*, [.VMS]*.MMSD;*
  132. .ELSE
  133. @ write sys$output -
  134. "Purging intermediate .MMSD files..."
  135. purge /log *.MMSD, [.VMS]*.MMSD
  136. .ENDIF
  137. # CLEAN target. Delete the individual C dependency files.
  138. CLEAN :
  139. if (f$search( "*.MMSD") .nes. "") then -
  140. delete /log *.MMSD;*
  141. if (f$search( "[.VMS]*.MMSD") .nes. "") then -
  142. delete /log [.VMS]*.MMSD;*
  143. # CLEAN_ALL target. Delete:
  144. # The individual C dependency files.
  145. # The collected source dependency file.
  146. CLEAN_ALL :
  147. if (f$search( "*.MMSD") .nes. "") then -
  148. delete /log *.MMSD;*
  149. if (f$search( "[.VMS]*.MMSD") .nes. "") then -
  150. delete /log [.VMS]*.MMSD;*
  151. if (f$search( "[.VMS]DESCRIP_DEPS.MMS") .nes. "") then -
  152. delete /log [.VMS]DESCRIP_DEPS.MMS;*
  153. # Explicit dependencies and rules for utility variant modules.
  154. #
  155. # The extra dependency on the normal dependency file obviates including
  156. # the /SKIP warning code in each rule here.
  157. CRC32_.MMSD : CRC32.C CRC32.MMSD
  158. $(CC) $(CFLAGS_INCL) $(CFLAGS_CLI) $(MMS$SOURCE) -
  159. /NOLIST /NOOBJECT /MMS_DEPENDENCIES = -
  160. (FILE = $(MMS$TARGET), NOSYSTEM_INCLUDE_FILES)
  161. @[.VMS]MOD_DEP.COM $(MMS$TARGET) $(MMS$TARGET_NAME).OBJ $(MMS$TARGET)
  162. CRYPT_.MMSD : CRYPT.C CRYPT.MMSD
  163. $(CC) $(CFLAGS_INCL) $(CFLAGS_CLI) $(MMS$SOURCE) -
  164. /NOLIST /NOOBJECT /MMS_DEPENDENCIES = -
  165. (FILE = $(MMS$TARGET), NOSYSTEM_INCLUDE_FILES)
  166. @[.VMS]MOD_DEP.COM $(MMS$TARGET) $(MMS$TARGET_NAME).OBJ $(MMS$TARGET)
  167. FILEIO_.MMSD : FILEIO.C FILEIO.MMSD
  168. $(CC) $(CFLAGS_INCL) $(CFLAGS_CLI) $(MMS$SOURCE) -
  169. /NOLIST /NOOBJECT /MMS_DEPENDENCIES = -
  170. (FILE = $(MMS$TARGET), NOSYSTEM_INCLUDE_FILES)
  171. @[.VMS]MOD_DEP.COM $(MMS$TARGET) $(MMS$TARGET_NAME).OBJ $(MMS$TARGET)
  172. UTIL_.MMSD : UTIL.C UTIL.MMSD
  173. $(CC) $(CFLAGS_INCL) $(CFLAGS_CLI) $(MMS$SOURCE) -
  174. /NOLIST /NOOBJECT /MMS_DEPENDENCIES = -
  175. (FILE = $(MMS$TARGET), NOSYSTEM_INCLUDE_FILES)
  176. @[.VMS]MOD_DEP.COM $(MMS$TARGET) $(MMS$TARGET_NAME).OBJ $(MMS$TARGET)
  177. ZIPFILE_.MMSD : ZIPFILE.C ZIPFILE.MMSD
  178. $(CC) $(CFLAGS_INCL) $(CFLAGS_CLI) $(MMS$SOURCE) -
  179. /NOLIST /NOOBJECT /MMS_DEPENDENCIES = -
  180. (FILE = $(MMS$TARGET), NOSYSTEM_INCLUDE_FILES)
  181. @[.VMS]MOD_DEP.COM $(MMS$TARGET) $(MMS$TARGET_NAME).OBJ $(MMS$TARGET)
  182. [.VMS]VMS_.MMSD : [.VMS]VMS.C [.VMS]VMS.MMSD
  183. $(CC) $(CFLAGS_INCL) $(CFLAGS_CLI) $(MMS$SOURCE) -
  184. /NOLIST /NOOBJECT /MMS_DEPENDENCIES = -
  185. (FILE = $(MMS$TARGET), NOSYSTEM_INCLUDE_FILES)
  186. @[.VMS]MOD_DEP.COM $(MMS$TARGET) $(MMS$TARGET_NAME).OBJ $(MMS$TARGET)
  187. ZIPCLI.MMSD : ZIP.C ZIP.MMSD
  188. $(CC) $(CFLAGS_INCL) $(CFLAGS_CLI) $(MMS$SOURCE) -
  189. /NOLIST /NOOBJECT /MMS_DEPENDENCIES = -
  190. (FILE = $(MMS$TARGET), NOSYSTEM_INCLUDE_FILES)
  191. @[.VMS]MOD_DEP.COM $(MMS$TARGET) $(MMS$TARGET_NAME).OBJ $(MMS$TARGET)
  192. # Special case. No normal (non-CLI) version.
  193. [.VMS]CMDLINE.MMSD : [.VMS]CMDLINE.C
  194. .IF UNK_MMSD
  195. @ write sys$output -
  196. " /SKIP_INTERMEDIATES is expected on the MMS command line."
  197. @ write sys$output -
  198. " For normal behavior (delete .MMSD files), specify ""/SKIP""."
  199. @ write sys$output -
  200. " To retain the .MMSD files, specify ""/MACRO = NOSKIP=1""."
  201. @ exit %x00000004
  202. .ENDIF
  203. $(CC) $(CFLAGS_INCL) $(CFLAGS_CLI) $(MMS$SOURCE) -
  204. /NOLIST /NOOBJECT /MMS_DEPENDENCIES = -
  205. (FILE = $(MMS$TARGET), NOSYSTEM_INCLUDE_FILES)
  206. @[.VMS]MOD_DEP.COM $(MMS$TARGET) $(MMS$TARGET_NAME).OBJ $(MMS$TARGET)