Template.models.nmake.pp 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749
  1. //
  2. // Template.models.nmake.pp
  3. //
  4. // This file defines the Makefiles that will be built to generate
  5. // models (egg, bam models computed from flt, soft, alias,
  6. // etc. sources). This Template file is derived from
  7. // Template.models.pp, but uses windows specific conventions,
  8. // rather than unix specific conventions.
  9. //
  10. #if $[< $[PPREMAKE_VERSION],0.57]
  11. #error You need at least ppremake version 0.58 to build models.
  12. #endif
  13. // Search for the texattrib dir definition. This will be in the
  14. // models_topdir directory.
  15. #define texattrib_dir $[dir_type $[TEXATTRIB_DIR],models_toplevel]
  16. // Prefix $[TOPDIR]. If it wasn't defined, make a default.
  17. #if $[texattrib_dir]
  18. #define texattrib_dir $[TOPDIR]/$[texattrib_dir]
  19. #else
  20. #define texattrib_dir $[TOPDIR]/src/maps
  21. #endif
  22. #define texattrib_file $[texattrib_dir]/textures.txa
  23. //////////////////////////////////////////////////////////////////////
  24. #if $[eq $[DIR_TYPE], models]
  25. //////////////////////////////////////////////////////////////////////
  26. #define pal_egg_dir pal_egg
  27. #define bam_dir bams
  28. #defer phase_prefix $[if $[PHASE],phase_$[PHASE]/]
  29. #defer install_model_dir $[install_dir]/$[phase_prefix]$[INSTALL_TO]
  30. #define filter_dirs $[sort $[TARGET_DIR(filter_egg filter_char_egg optchar_egg)]]
  31. #defer source_prefix $[SOURCE_DIR:%=%/]
  32. #if $[LANGUAGES]
  33. #define exlanguage_sources $[notdir $[filter %.flt %.mb %.ma %.lwo %.LWO %.egg,$[wildcard $[TOPDIR]/$[DIRPREFIX]*_$[LANGUAGE].*]]]
  34. #defun lang_add_files sources, src_ext, local_extra
  35. #define default_filter
  36. #define local_filter
  37. #foreach ext $[src_ext]
  38. #set default_filter $[default_filter] %_$[DEFAULT_LANGUAGE].$[ext]
  39. #set local_filter $[local_filter] %_$[LANGUAGE].$[ext]
  40. #end ext
  41. #define default_langlist $[filter $[default_filter],$[sources]]
  42. #define locallist $[filter $[local_filter],$[local_extra] $[exlanguage_sources]]
  43. #define havelist
  44. #foreach file $[default_langlist]
  45. #foreach ext $[src_ext]
  46. #define wantfile $[file:%_$[DEFAULT_LANGUAGE].$[ext]=%_$[LANGUAGE].$[ext]]
  47. #set havelist $[havelist] $[filter $[wantfile],$[locallist]]
  48. #end ext
  49. #end file
  50. $[havelist]
  51. #end lang_add_files
  52. #forscopes flt_egg
  53. #if $[SOURCES]
  54. #set SOURCES $[sort $[SOURCES] $[lang_add_files $[SOURCES], flt, ]]
  55. #endif
  56. #end flt_egg
  57. #forscopes lwo_egg
  58. #if $[SOURCES]
  59. #set SOURCES $[sort $[SOURCES] $[lang_add_files $[SOURCES], lwo LWO, ]]
  60. #endif
  61. #end lwo_egg
  62. #forscopes maya_egg
  63. #if $[SOURCES]
  64. #set SOURCES $[sort $[SOURCES] $[lang_add_files $[SOURCES], lwo LWO, ]]
  65. #endif
  66. #end maya_egg
  67. #endif
  68. #define build_flt_eggs \
  69. $[forscopes flt_egg,$[patsubst %.flt,%$[EGG_SUFFIX].egg,$[SOURCES]]]
  70. #define build_lwo_eggs \
  71. $[forscopes lwo_egg,$[patsubst %.lwo %.LWO,%$[EGG_SUFFIX].egg,$[SOURCES]]]
  72. #define build_maya_eggs \
  73. $[forscopes maya_egg,$[patsubst %$[MODEL].ma %$[MODEL].mb ,$[EGG_PREFIX]%$[EGG_SUFFIX].egg,$[SOURCES]]] \
  74. $[forscopes maya_char_egg,$[POLY_MODEL:%=$[EGG_PREFIX]%$[EGG_SUFFIX].egg] $[NURBS_MODEL:%=$[EGG_PREFIX]%$[EGG_SUFFIX].egg]] \
  75. $[forscopes maya_char_egg,$[ANIMS:%=$[EGG_PREFIX]%$[CHAN_SUFFIX].egg]]
  76. #define build_soft_eggs \
  77. $[forscopes soft_char_egg,$[POLY_MODEL:%=$[EGG_PREFIX]%$[EGG_SUFFIX].egg] $[NURBS_MODEL:%=$[EGG_PREFIX]%$[EGG_SUFFIX].egg]] \
  78. $[forscopes soft_char_egg,$[ANIMS:%=$[EGG_PREFIX]%$[CHAN_SUFFIX].egg]]
  79. #define build_eggs \
  80. $[sort \
  81. $[build_flt_eggs] \
  82. $[build_lwo_eggs] \
  83. $[build_maya_eggs] \
  84. $[build_soft_eggs]]
  85. #if $[LANGUAGES]
  86. #forscopes install_egg filter_egg
  87. #if $[SOURCES]
  88. #set SOURCES $[sort $[SOURCES] $[lang_add_files $[SOURCES], egg, $[build_eggs]]]
  89. #endif
  90. #end install_egg filter_egg
  91. #endif
  92. // Get the list of egg files that are to be installed
  93. #define install_pal_eggs
  94. #define install_unpal_eggs
  95. #forscopes install_egg
  96. #define egglist $[notdir $[SOURCES]]
  97. #set install_pal_eggs $[install_pal_eggs] $[filter-out $[language_egg_filters],$[egglist]]
  98. #if $[LANGUAGES]
  99. // Now look for the eggs of the current language.
  100. #foreach egg $[filter %_$[DEFAULT_LANGUAGE].egg,$[egglist]]
  101. #define wantegg $[egg:%_$[DEFAULT_LANGUAGE].egg=%_$[LANGUAGE].egg]
  102. #if $[filter $[wantegg],$[egglist]]
  103. // The current language file exists.
  104. #set install_pal_eggs $[install_pal_eggs] $[wantegg]
  105. #else
  106. #set install_pal_eggs $[install_pal_eggs] $[egg]
  107. #endif
  108. #end egg
  109. #endif
  110. #define egglist $[notdir $[UNPAL_SOURCES] $[UNPAL_SOURCES_NC]]
  111. #set install_unpal_eggs $[install_unpal_eggs] $[filter-out $[language_egg_filters],$[egglist]]
  112. #if $[LANGUAGES]
  113. // Now look for the eggs of the current language.
  114. #foreach egg $[filter %_$[DEFAULT_LANGUAGE].egg,$[egglist]]
  115. #define wantegg $[egg:%_$[DEFAULT_LANGUAGE].egg=%_$[LANGUAGE].egg]
  116. #if $[filter $[wantegg],$[egglist]]
  117. // The current language file exists.
  118. #set install_unpal_eggs $[install_unpal_eggs] $[wantegg]
  119. #else
  120. #set install_unpal_eggs $[install_unpal_eggs] $[egg]
  121. #endif
  122. #end egg
  123. #endif
  124. #end install_egg
  125. #define install_eggs $[install_pal_eggs] $[install_unpal_eggs]
  126. // Get the list of bam files in the install directories
  127. #define install_egg_dirs $[sort $[forscopes install_egg,$[install_model_dir]]]
  128. #define installed_generic_bams $[sort $[forscopes install_egg,$[patsubst %.egg,$[install_model_dir]/%.bam,$[filter-out $[language_egg_filters],$[notdir $[SOURCES] $[UNPAL_SOURCES] $[UNPAL_SOURCES_NC]]]]]]
  129. #if $[LANGUAGES]
  130. #define installed_language_bams $[sort $[forscopes install_egg,$[patsubst %.egg,$[install_model_dir]/%.bam,$[patsubst %_$[DEFAULT_LANGUAGE].egg,%.egg,%,,$[notdir $[SOURCES] $[UNPAL_SOURCES] $[UNPAL_SOURCES_NC]]]]]]
  131. #endif
  132. // And the list of dna files in the install directories.
  133. #define install_dna_dirs $[sort $[forscopes install_dna,$[install_model_dir]]]
  134. #define installed_generic_dna $[sort $[forscopes install_dna,$[patsubst %,$[install_model_dir]/%,$[filter-out $[language_dna_filters],$[notdir $[SOURCES]]]]]]
  135. #if $[LANGUAGES]
  136. #define installed_language_dna $[sort $[forscopes install_dna,$[patsubst %,$[install_model_dir]/%,$[patsubst %_$[DEFAULT_LANGUAGE].dna,%.dna,%,,$[notdir $[SOURCES]]]]]]
  137. #endif
  138. #define install_other_dirs $[sort $[forscopes install_audio install_icons install_shader install_misc,$[install_model_dir]]]
  139. #define installed_other $[sort $[forscopes install_audio install_icons install_shader install_misc,$[SOURCES:%=$[install_model_dir]/%]]]
  140. #define pal_egg_targets $[sort $[patsubst %,$[pal_egg_dir]/%,$[notdir $[install_pal_eggs]]]]
  141. #define bam_targets $[install_eggs:%.egg=$[bam_dir]/%.bam]
  142. #output Makefile
  143. #format makefile
  144. #### Generated automatically by $[PPREMAKE] $[PPREMAKE_VERSION] from $[SOURCEFILE].
  145. ################################# DO NOT EDIT ###########################
  146. #define all_targets \
  147. Makefile \
  148. $[texattrib_dir] \
  149. $[filter_dirs] \
  150. $[optchar_dirs] \
  151. egg bam
  152. all : $[all_targets]
  153. egg : $[build_eggs]
  154. flt : $[build_flt_eggs]
  155. lwo : $[build_lwo_eggs]
  156. maya : $[build_maya_eggs]
  157. soft : $[build_soft_eggs]
  158. pal : $[if $[pal_egg_targets],$[pal_egg_dir]] $[pal_egg_targets]
  159. bam : pal $[if $[bam_targets],$[bam_dir]] $[bam_targets]
  160. #map soft_scenes soft_scene_files(soft_char_egg)
  161. unpack-soft : $[soft_scenes]
  162. #define install_bam_targets \
  163. $[install_egg_dirs] \
  164. $[installed_generic_bams] $[installed_language_bams]
  165. install-bam : $[install_bam_targets]
  166. #define install_other_targets \
  167. $[install_dna_dirs] \
  168. $[installed_generic_dna] $[installed_language_dna] \
  169. $[install_other_dirs] \
  170. $[installed_other]
  171. install-other : $[install_other_targets]
  172. install : all install-other install-bam
  173. uninstall : uninstall-other uninstall-bam
  174. clean-bam :
  175. #if $[bam_targets]
  176. $[TAB]del /f/q $[osfilename $[bam_dir]]
  177. #endif
  178. clean-pal : clean-bam
  179. #if $[pal_egg_targets]
  180. $[TAB]del /f/q $[osfilename $[pal_egg_dir]]
  181. #endif
  182. clean-flt :
  183. #if $[build_flt_eggs]
  184. $[TAB]del /f/q $[osfilename $[build_flt_eggs]]
  185. #endif
  186. clean-lwo :
  187. #if $[build_lwo_eggs]
  188. $[TAB]del /f/q $[osfilename $[build_lwo_eggs]]
  189. #endif
  190. clean-maya :
  191. #if $[build_maya_eggs]
  192. $[TAB]del /f/q $[osfilename $[build_maya_eggs]]
  193. #endif
  194. clean-soft :
  195. #if $[build_soft_eggs]
  196. $[TAB]del /f/q $[osfilename $[build_soft_eggs]]
  197. #endif
  198. clean : clean-pal
  199. #if $[build_eggs]
  200. $[TAB]del /f/q $[osfilename $[build_eggs]] *.pt
  201. $[TAB]del /f/q $[osfilename $[build_eggs]] *.pt
  202. #endif
  203. #if $[filter_dirs]
  204. $[TAB]del /f/q $[osfilename $[filter_dirs]]
  205. #endif
  206. // We need a rule for each directory we might need to make. This
  207. // loops through the full set of directories and creates a rule to
  208. // make each one, as needed.
  209. #foreach directory $[sort \
  210. $[filter_dirs] \
  211. $[if $[pal_egg_targets],$[pal_egg_dir]] \
  212. $[if $[bam_targets],$[bam_dir]] \
  213. $[TARGET_DIR(filter_char_egg)] \
  214. $[texattrib_dir] \
  215. $[install_egg_dirs] \
  216. $[install_dna_dirs] \
  217. $[install_other_dirs] \
  218. ]
  219. $[directory] :
  220. $[TAB]@if not exist $[osfilename $[directory]] mkdir $[osfilename $[directory]]
  221. // Sometimes we need a target to depend on the directory existing, without
  222. // being fooled by the directory's modification times. We use this
  223. // phony timestamp file to achieve that.
  224. $[directory]/stamp :
  225. $[TAB]@if not exist $[osfilename $[directory]] mkdir $[osfilename $[directory]]
  226. $[TAB]@echo. > $[osfilename $[directory]/stamp]
  227. #end directory
  228. // Decompressing compressed files.
  229. #forscopes gz
  230. #foreach gz $[SOURCES]
  231. #define target $[gz:%.gz=%]
  232. #define source $[gz]
  233. $[target] : $[source]
  234. $[TAB]del /f/q $[osfilename $[target]]
  235. $[TAB]gunzip $[GUNZIP_OPTS] < $[osfilename $[source]] > $[osfilename $[target]]
  236. #end gz
  237. #end gz
  238. // Egg file generation from Flt files.
  239. #forscopes flt_egg
  240. #foreach flt $[SOURCES]
  241. #define target $[or $[TARGET],$[patsubst %.flt %.FLT,$[EGG_PREFIX]%$[EGG_SUFFIX].egg,$[flt]]]
  242. #define source $[flt]
  243. $[target] : $[source]
  244. $[TAB]flt2egg $[FLT2EGG_OPTS] -o $[osfilename $[target]] $[osfilename $[source]]
  245. #end flt
  246. #end flt_egg
  247. // Egg file generation from Lightwave files.
  248. #forscopes lwo_egg
  249. #foreach lwo $[SOURCES]
  250. #define target $[or $[TARGET],$[patsubst %.lwo %.LWO,$[EGG_PREFIX]%$[EGG_SUFFIX].egg,$[lwo]]]
  251. #define source $[lwo]
  252. $[target] : $[source]
  253. $[TAB]lwo2egg $[LWO2EGG_OPTS] -o $[osfilename $[target]] $[osfilename $[source]]
  254. #end lwo
  255. #end lwo_egg
  256. // Egg file generation from Maya files (for unanimated models).
  257. #forscopes maya_egg
  258. #foreach maya $[SOURCES]
  259. #define target $[or $[TARGET],$[patsubst %$[MODEL].ma %$[MODEL].mb,$[EGG_PREFIX]%$[EGG_SUFFIX].egg,$[maya]]]
  260. #define source $[maya]
  261. $[target] : $[source]
  262. $[TAB]maya2egg $[MAYA2EGG_OPTS] -o $[osfilename $[target]] $[osfilename $[source]]
  263. #end maya
  264. #end maya_egg
  265. // Egg character model generation from Maya files.
  266. #forscopes maya_char_egg
  267. #if $[POLY_MODEL]
  268. #define target $[EGG_PREFIX]$[POLY_MODEL].egg
  269. #define source $[MAYA_PREFIX]$[or $[MODEL],$[POLY_MODEL]].mb
  270. $[target] : $[source]
  271. $[TAB]maya2egg $[MAYA2EGG_OPTS] -p -a model -cn "$[CHAR_NAME]" -o $[osfilename $[target]] $[osfilename $[source]]
  272. #endif
  273. #if $[NURBS_MODEL]
  274. #define target $[EGG_PREFIX]$[NURBS_MODEL].egg
  275. #define source $[MAYA_PREFIX]$[or $[MODEL],$[NURBS_MODEL]].mb
  276. $[target] : $[source]
  277. $[TAB]maya2egg $[MAYA2EGG_OPTS] -a model -cn "$[CHAR_NAME]" -o $[osfilename $[target]] $[osfilename $[source]]
  278. #endif
  279. #end maya_char_egg
  280. // Egg animation generation from Maya files.
  281. #forscopes maya_char_egg
  282. #foreach anim $[ANIMS]
  283. #define target $[EGG_PREFIX]$[anim]$[CHAN_SUFFIX].egg
  284. #define source $[MAYA_PREFIX]$[anim].mb
  285. #define begin 0
  286. #define end
  287. #if $[$[anim]_frames]
  288. #set begin $[word 1,$[$[anim]_frames]]
  289. #set end $[word 2,$[$[anim]_frames]]
  290. #endif
  291. $[target] : $[source]
  292. $[TAB]maya2egg $[MAYA2EGG_OPTS] -a chan -cn "$[CHAR_NAME]" -o $[osfilename $[target]] -sf $[begin] $[if $[end],-ef $[end]] $[osfilename $[source]]
  293. #end anim
  294. #end maya_char_egg
  295. // Unpack the Soft scene database from its multifile.
  296. #formap scene_file soft_scenes
  297. #define target $[scene_file]
  298. #define source $[scene_file:$[DATABASE]/SCENES/%.1-0.dsc=$[DATABASE]/%.mf]
  299. $[target] : $[source]
  300. $[TAB]multify xf $[osfilename $[source]] -C $[DATABASE]
  301. #end scene_file
  302. // Egg character model generation from Soft databases.
  303. #forscopes soft_char_egg
  304. #if $[POLY_MODEL]
  305. #define target $[EGG_PREFIX]$[POLY_MODEL].egg
  306. #define scene $[SCENE_PREFIX]$[MODEL].1-0.dsc
  307. #define source $[DATABASE]/SCENES/$[scene]
  308. $[target] : $[source]
  309. $[TAB]$[SOFT2EGG] $[SOFT2EGG_OPTS] $[if $[SOFTIMAGE_RSRC],-r "$[osfilename $[SOFTIMAGE_RSRC]]"] -p -M $[osfilename $[target]] -N $[CHAR_NAME] -d $[DATABASE] -t $[DATABASE]/PICTURES -s $[scene]
  310. #endif
  311. #if $[NURBS_MODEL]
  312. #define target $[EGG_PREFIX]$[NURBS_MODEL].egg
  313. #define scene $[SCENE_PREFIX]$[MODEL].1-0.dsc
  314. #define source $[DATABASE]/SCENES/$[scene]
  315. $[target] : $[source]
  316. $[TAB]$[SOFT2EGG] $[SOFT2EGG_OPTS] $[if $[SOFTIMAGE_RSRC],-r "$[osfilename $[SOFTIMAGE_RSRC]]"] -n -M $[osfilename $[target]] -N $[CHAR_NAME] -d $[DATABASE] -t $[DATABASE]/PICTURES -s $[scene]
  317. #endif
  318. #end soft_char_egg
  319. // Egg animation generation from Soft database.
  320. #forscopes soft_char_egg
  321. #foreach anim $[ANIMS]
  322. #define target $[EGG_PREFIX]$[anim]$[CHAN_SUFFIX].egg
  323. #define scene $[SCENE_PREFIX]$[anim].1-0.dsc
  324. #define source $[DATABASE]/SCENES/$[scene]
  325. #define begin 1
  326. #define end
  327. #if $[$[anim]_frames]
  328. #set begin $[word 1,$[$[anim]_frames]]
  329. #set end $[word 2,$[$[anim]_frames]]
  330. #endif
  331. $[target] : $[source]
  332. $[TAB]$[SOFT2EGG] $[SOFT2EGG_OPTS] $[if $[SOFTIMAGE_RSRC],-r "$[osfilename $[SOFTIMAGE_RSRC]]"] -a -A $[osfilename $[target]] -N $[CHAR_NAME] -d $[DATABASE] -s $[scene] $[begin:%=-b%] $[end:%=-e%]
  333. #end anim
  334. #end soft_char_egg
  335. // Copying egg files from A to B.
  336. #forscopes copy_egg
  337. #for i 1,$[words $[SOURCES]]
  338. #define source $[word $[i],$[SOURCES]]
  339. #define target $[word $[i],$[TARGETS]]
  340. $[target] : $[source]
  341. $[TAB]copy $[osfilename $[source]] $[osfilename $[target]]
  342. #end i
  343. #end copy_egg
  344. // Generic egg filters.
  345. #forscopes filter_egg
  346. #foreach egg $[SOURCES]
  347. #define source $[source_prefix]$[egg]
  348. #define target $[TARGET_DIR]/$[notdir $[egg]]
  349. $[target] : $[source] $[pt] $[TARGET_DIR]/stamp
  350. $[TAB]$[COMMAND]
  351. #end egg
  352. #end filter_egg
  353. // Generic character egg filter; applies an effect to all models and
  354. // animations of a particular character.
  355. #forscopes filter_char_egg
  356. #define sources $[SOURCES:%=$[source_prefix]%]
  357. #define target $[TARGET_DIR]/$[notdir $[firstword $[SOURCES]]]
  358. // A bunch of rules to make each generated egg file depend on the
  359. // first one.
  360. #foreach egg $[notdir $[wordlist 2,9999,$[SOURCES]]]
  361. $[TARGET_DIR]/$[egg] : $[target] $[TARGET_DIR]/stamp
  362. $[TAB]touch $[osfilename $[TARGET_DIR]/$[egg]]
  363. #end egg
  364. // And this is the actual optchar pass.
  365. $[target] : $[sources] $[TARGET_DIR]/stamp
  366. $[TAB]$[COMMAND]
  367. #end filter_char_egg
  368. // Character optimization.
  369. #forscopes optchar_egg
  370. #define sources $[SOURCES:%=$[source_prefix]%]
  371. #define target $[TARGET_DIR]/$[notdir $[firstword $[SOURCES]]]
  372. // A bunch of rules to make each generated egg file depend on the
  373. // first one.
  374. #foreach egg $[notdir $[wordlist 2,9999,$[SOURCES]]]
  375. $[TARGET_DIR]/$[egg] : $[target] $[TARGET_DIR]/stamp
  376. $[TAB]touch $[osfilename $[TARGET_DIR]/$[egg]]
  377. #end egg
  378. // And this is the actual optchar pass.
  379. $[target] : $[sources] $[TARGET_DIR]/stamp
  380. $[TAB]egg-optchar $[OPTCHAR_OPTS] -d $[osfilename $[TARGET_DIR]] $[osfilename $[sources]]
  381. #end optchar_egg
  382. // Palettization rules.
  383. #forscopes install_egg
  384. #foreach egg $[SOURCES]
  385. #define pt $[egg:%.egg=$[source_prefix]%.pt]
  386. #define source $[source_prefix]$[egg]
  387. #define target $[pal_egg_dir]/$[notdir $[egg]]
  388. $[target] : $[source] $[pt] $[pal_egg_dir]/stamp
  389. #if $[PHASE]
  390. $[TAB]egg-palettize $[PALETTIZE_OPTS] -af $[osfilename $[texattrib_file]] -dr $[osfilename $[install_dir]] -dm $[osfilename $[install_dir]/%g] -ds $[osfilename $[install_dir]/textures/shadow_pal] -g phase_$[PHASE] -gdir phase_$[PHASE] -o $[osfilename $[target]] $[osfilename $[source]]
  391. #else
  392. $[TAB]egg-palettize $[PALETTIZE_OPTS] -af $[osfilename $[texattrib_file]] -dr $[osfilename $[install_dir]] -dm $[osfilename $[install_dir]/%g] -ds $[osfilename $[install_dir]/textures/shadow_pal] -o $[osfilename $[target]] $[osfilename $[source]]
  393. #endif
  394. $[pt] :
  395. $[TAB]@echo. > $[osfilename $[pt]]
  396. #end egg
  397. #end install_egg
  398. // Bam file creation.
  399. #forscopes install_egg
  400. #foreach egg $[SOURCES]
  401. #define source $[pal_egg_dir]/$[notdir $[egg]]
  402. #define target $[bam_dir]/$[notdir $[egg:%.egg=%.bam]]
  403. $[target] : $[source] $[bam_dir]/stamp
  404. $[TAB]egg2bam -pp $[osfilename $[install_dir]] -ps rel -pd $[osfilename $[install_dir]] $[EGG2BAM_OPTS] -o $[osfilename $[target]] $[osfilename $[source]]
  405. #end egg
  406. #foreach egg $[UNPAL_SOURCES]
  407. #define source $[source_prefix]$[egg]
  408. #define target $[bam_dir]/$[notdir $[egg:%.egg=%.bam]]
  409. $[target] : $[source] $[bam_dir]/stamp
  410. $[TAB]egg2bam $[EGG2BAM_OPTS] -o $[osfilename $[target]] $[osfilename $[source]]
  411. #end egg
  412. #foreach egg $[UNPAL_SOURCES_NC]
  413. #define source $[source_prefix]$[egg]
  414. #define target $[bam_dir]/$[notdir $[egg:%.egg=%.bam]]
  415. $[target] : $[source] $[bam_dir]/stamp
  416. $[TAB]egg2bam $[EGG2BAM_OPTS] -NC -o $[osfilename $[target]] $[osfilename $[source]]
  417. #end egg
  418. #end install_egg
  419. // Bam file installation.
  420. #forscopes install_egg
  421. #define egglist $[notdir $[SOURCES] $[UNPAL_SOURCES] $[UNPAL_SOURCES_NC]]
  422. #foreach egg $[filter-out $[language_egg_filters],$[egglist]]
  423. #define local $[egg:%.egg=%.bam]
  424. #define sourcedir $[bam_dir]
  425. #define dest $[install_model_dir]
  426. $[dest]/$[local] : $[sourcedir]/$[local]
  427. // cd ./$[sourcedir] && $[INSTALL]
  428. $[TAB]copy /y $[osfilename $[sourcedir]/$[local]] $[osfilename $[dest]]
  429. #end egg
  430. #if $[LANGUAGES]
  431. // Now look for the eggs of the current language.
  432. #foreach egg $[filter %_$[DEFAULT_LANGUAGE].egg,$[egglist]]
  433. #define wantegg $[egg:%_$[DEFAULT_LANGUAGE].egg=%_$[LANGUAGE].egg]
  434. #if $[filter $[wantegg],$[egglist]]
  435. // The current language file exists.
  436. #define local $[wantegg:%.egg=%.bam]
  437. #else
  438. //#print Warning: $[wantegg] not listed, using $[egg]
  439. #define local $[egg:%.egg=%.bam]
  440. #endif
  441. #define remote $[egg:%_$[DEFAULT_LANGUAGE].egg=%.bam]
  442. #define sourcedir $[bam_dir]
  443. #define dest $[install_model_dir]
  444. $[dest]/$[remote] : $[sourcedir]/$[local]
  445. // cd ./$[sourcedir] && $[INSTALL]
  446. $[TAB]copy /y $[osfilename $[sourcedir]/$[local]] $[osfilename $[dest]/$[remote]]
  447. #end egg
  448. #endif
  449. #end install_egg
  450. // Bam file uninstallation.
  451. uninstall-bam :
  452. #forscopes install_egg
  453. #define egglist $[notdir $[SOURCES] $[UNPAL_SOURCES] $[UNPAL_SOURCES_NC]]
  454. #define generic_egglist $[filter-out $[language_egg_filters],$[egglist]]
  455. #if $[LANGUAGES]
  456. #define language_egglist $[patsubst %_$[DEFAULT_LANGUAGE].egg,%.egg,%,,$[egglist]]
  457. #endif
  458. #define files $[patsubst %.egg,$[install_model_dir]/%.bam,$[generic_egglist] $[language_egglist]]
  459. #if $[files]
  460. $[TAB]del /f/q $[osfilename $[files]]
  461. #endif
  462. #end install_egg
  463. // DNA file installation.
  464. #forscopes install_dna
  465. #foreach file $[filter-out $[language_dna_filters],$[SOURCES]]
  466. #define local $[file]
  467. #define remote $[notdir $[file]]
  468. #define dest $[install_model_dir]
  469. $[dest]/$[remote] : $[local]
  470. // $[INSTALL]
  471. $[TAB]copy /y $[osfilename $[local]] $[osfilename $[dest]]
  472. #end file
  473. #if $[LANGUAGES]
  474. // Now files of the current langauge.
  475. #foreach file $[filter %_$[DEFAULT_LANGUAGE].dna,$[SOURCES]]
  476. #define wantfile $[file:%_$[DEFAULT_LANGUAGE].dna=%_$[LANGUAGE].dna]
  477. #if $[filter $[wantfile],$[SOURCES]]
  478. // The current language file exists.
  479. #define local $[wantfile]
  480. #else
  481. //#print Warning: $[wantfile] not listed, using $[file]
  482. #define local $[file]
  483. #endif
  484. #define remote $[notdir $[file:%_$[DEFAULT_LANGUAGE].dna=%.dna]]
  485. #define dest $[install_model_dir]
  486. $[dest]/$[remote] : $[local]
  487. // cd ./$[sourcedir] && $[INSTALL]
  488. $[TAB]copy /y $[osfilename $[local]] $[osfilename $[dest]/$[remote]]
  489. #end file
  490. #endif
  491. #end install_dna
  492. // DNA file uninstallation.
  493. uninstall-other:
  494. #forscopes install_dna
  495. #define sources $[notdir $[SOURCES]]
  496. #define generic_sources $[filter-out $[language_dna_filters],$[sources]]
  497. #if $[LANGUAGES]
  498. #define language_sources $[patsubst %_$[DEFAULT_LANGUAGE].dna,%.dna,%,,$[sources]]
  499. #endif
  500. #define files $[patsubst %,$[install_model_dir]/%,$[generic_sources] $[language_sources]]
  501. #if $[files]
  502. $[TAB]del /f/q $[osfilename $[files]]
  503. #endif
  504. #end install_dna
  505. // Miscellaneous file installation.
  506. #forscopes install_audio install_icons install_shader install_misc
  507. #foreach file $[SOURCES]
  508. #define local $[file]
  509. #define remote $[notdir $[file]]
  510. #define dest $[install_model_dir]
  511. $[dest]/$[remote] : $[local]
  512. // $[INSTALL]
  513. $[TAB]copy /y $[osfilename $[local]] $[osfilename $[dest]]
  514. #end file
  515. #end install_audio install_icons install_shader install_misc
  516. // Miscellaneous file uninstallation.
  517. uninstall-other:
  518. #forscopes install_audio install_icons install_shader install_misc
  519. #define files $[patsubst %,$[install_model_dir]/%,$[SOURCES]]
  520. #if $[files]
  521. $[TAB]del /f/q $[osfilename $[files]]
  522. #endif
  523. #end install_audio install_icons install_shader install_misc
  524. #end Makefile
  525. //////////////////////////////////////////////////////////////////////
  526. #elif $[eq $[DIR_TYPE], models_group]
  527. //////////////////////////////////////////////////////////////////////
  528. // This is a group directory: a directory above a collection of source
  529. // directories, e.g. $DTOOL/src. We don't need to output anything in
  530. // this directory.
  531. //////////////////////////////////////////////////////////////////////
  532. #elif $[eq $[DIR_TYPE], models_toplevel]
  533. //////////////////////////////////////////////////////////////////////
  534. // This is the toplevel directory for a models tree, e.g. $TTMODELS.
  535. // Here we build the root makefile.
  536. #map subdirs
  537. // Iterate through all of our known source files. Each models type
  538. // file gets its corresponding Makefile listed here.
  539. #forscopes */
  540. #if $[eq $[DIR_TYPE], models]
  541. #if $[build_directory]
  542. #addmap subdirs $[DIRNAME]
  543. #endif
  544. #endif
  545. #end */
  546. #output Makefile
  547. #format makefile
  548. #### Generated automatically by $[PPREMAKE] $[PPREMAKE_VERSION] from $[SOURCEFILE].
  549. ################################# DO NOT EDIT ###########################
  550. all : egg pal repal $[subdirs]
  551. install : all $[subdirs:%=install-%]
  552. #define sub_targets egg flt lwo maya soft bam pal clean-bam clean-pal clean-flt clean-lwo clean-maya clean-soft clean cleanall unpack-soft install-bam install-other uninstall-bam uninstall-other uninstall
  553. // Define the rules to propogate these targets to the Makefile within
  554. // each directory.
  555. #foreach target $[sub_targets]
  556. $[target] : $[subdirs:%=$[target]-%]
  557. #end target
  558. #
  559. # opt-pal : reorder and resize the palettes to be as optimal as
  560. # possible. This forces a rebuild of all the egg files.
  561. #
  562. opt-pal : pal do-opt-pal install
  563. optimize-palettes : opt-pal
  564. do-opt-pal :
  565. $[TAB]egg-palettize $[PALETTIZE_OPTS] -af $[osfilename $[texattrib_file]] -dm $[osfilename $[install_dir]/%g] -opt -egg
  566. #
  567. # repal : reexamine the textures.txa file and do whatever needs to be
  568. # done to bring everything up to sync with it. Also make sure all egg
  569. # files are up-to-date.
  570. #
  571. repal :
  572. $[TAB]egg-palettize $[PALETTIZE_OPTS] -af $[osfilename $[texattrib_file]] -dm $[osfilename $[install_dir]/%g] -all -egg
  573. re-pal : repal
  574. #
  575. # fix-pal : something has gone wrong with the palettes; rebuild all
  576. # palette images to fix it.
  577. #
  578. fix-pal :
  579. $[TAB]egg-palettize $[PALETTIZE_OPTS] -af $[osfilename $[texattrib_file]] -dm $[osfilename $[install_dir]/%g] -redo -all -egg
  580. #
  581. # undo-pal : blow away all the palettization information and start fresh.
  582. #
  583. undo-pal : clean-pal
  584. $[TAB]del /f/q $[osfilename $[texattrib_file:%.txa=%.boo]]
  585. #
  586. # pi : report the palettization information to standard output for the
  587. # user's perusal.
  588. #
  589. pi :
  590. $[TAB]egg-palettize $[PALETTIZE_OPTS] -af $[osfilename $[texattrib_file]] -dm $[osfilename $[install_dir]/%g] -pi
  591. .PHONY: pi.txt
  592. pi.txt :
  593. $[TAB]egg-palettize $[PALETTIZE_OPTS] -af $[osfilename $[texattrib_file]] -dm $[osfilename $[install_dir]/%g] -pi >pi.txt
  594. #
  595. # pal-stats : report palettization statistics to standard output for the
  596. # user's perusal.
  597. #
  598. pal-stats :
  599. $[TAB]egg-palettize $[PALETTIZE_OPTS] -af $[osfilename $[texattrib_file]] -dm $[osfilename $[install_dir]/%g] -s
  600. stats-pal : pal-stats
  601. // Somehow, something in the cttools confuses some shells, so that
  602. // when we are attached, 'cd foo' doesn't work, but 'cd ./foo' does.
  603. // Weird. We get around this by putting a ./ in front of each cd
  604. // target below.
  605. #formap dirname subdirs
  606. $[dirname] : $[dirnames $[if $[build_directory],$[DIRNAME]],$[DEPEND_DIRS]]
  607. $[TAB]cd $[osfilename ./$[RELDIR]] && $(MAKE) all
  608. #end dirname
  609. // Define the rules to propogate these targets to the Makefile within
  610. // each directory.
  611. #foreach target install $[sub_targets]
  612. #formap dirname subdirs
  613. $[target]-$[dirname] :
  614. $[TAB]cd $[osfilename ./$[RELDIR]] && $(MAKE) $[target]
  615. #end dirname
  616. #end target
  617. #end Makefile
  618. //////////////////////////////////////////////////////////////////////
  619. #endif // DIR_TYPE