This repository has been archived on 2025-02-27. You can view files and clone it, but cannot push or open issues or pull requests.
CnC_Tiberian_Dawn/RULES.MAK

423 lines
14 KiB
Makefile

#
# Command & Conquer(tm)
# Copyright 2025 Electronic Arts Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Size of the program shape buffer (passed to MAKESHPS.EXE)
SHAPEBUFFSIZE = 20000
# Assign the paths
#
!if$d(DAVID)
ROOTDIR = f:\projects\c&c\\
MAPDIR = f:\projects\c&c\\
ROOTCODEDIR = f:\projects\c&c\code\david
ROOTCDDIR = f:\projects\c&c\cddavid\\
ROOTCDSDIR = f:\projects\c&c\cddavid\\
ABSROOT = ..\\
WAVDIR = f:\projects\c&c\audio\ingame\\
#WAVDIR = r:\\
LANGDIR =
INGAMEDIR =ingame
VQADIR = f:\projects\c&c\art\\
!else
!if$d(BARRY)
ROOTDIR = f:\projects\c&c\\
MAPDIR = c:\projects\c&c\\
ROOTCODEDIR = f:\projects\c&c\code\barry
ROOTCDDIR = s:\\
ROOTCDSDIR = s:\\
ABSROOT = ..\\
#WAVDIR = f:\projects\c&c\audio\ingame\\
WAVDIR = r:\\
LANGDIR=\german
INGAMEDIR=german
VQADIR = f:\projects\c&c\art\\
!else
ROOTDIR = ..\\
MAPDIR = ..\\
ROOTCODEDIR = .\\
#ROOTCDDIR = f:\projects\c&c95\cd\\
#ROOTCDSDIR = f:\projects\c&c95\cd\\
#ROOTCDDIR = f:\projects\c&c95\cd\japanese\\
#ROOTCDSDIR = f:\projects\c&c95\cd\japanese\\
#ROOTCDSDIR = v:\projects\c&c95\cdjapan\\
ROOTCDDIR = ..\cd\\
ROOTCDSDIR = ..\\
!if$d(SLAVE)
ABSROOT = $(SLAVE)
WAVDIR = $(SLAVE)
VQADIR = $(SLAVE)
!else
ABSROOT = ..\\
WAVDIR = ..\audio\ingame\\ #..\\
VQADIR = f:\projects\c&c\art\\
VQADIR = f:\projects\c&c95\art\\
#VQADIR = d:\\
!endif
LANGDIR = \\japan\\
#LANGDIR =
INGAMEDIR =ingame
!endif
!endif
.path.a6 = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.a60 = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.a61 = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.a62 = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.a63 = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.a64 = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.a6a = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.a6j = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.a8 = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.a80 = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.a81 = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.a82 = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.a83 = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.a84 = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.a8a = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.a8j = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.anm = $(ROOTDIR)art\$(INGAMEDIR)\\ # Raw animation file
.path.ash = .\\ # Autogenerated assembly header file
.path.asm = .\\ # Raw assembly file
.path.aud = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.bin = $(MAPDIR)maps\\ # Scenario map data files.
.path.c = .\\ # Raw C file
.path.dmo = $(ROOTCDSDIR)DEMO\\ # CD for Demo Version
.path.dm2 = $(ROOTCDSDIR)DEMO2\\ # CD for Demo Version
.path.exp = $(ROOTCDSDIR)COVERT\\ # CD #1 expansion missions
.path.cpp = .\\ # Raw C++ file
.path.cps = $(ROOTCODEDIR)cps\\ # Compressed art
.path.dat = $(ROOTCODEDIR)cps\\ # Generic data
.path.des = $(ROOTCODEDIR)cps\\ # Desert icons
.path.dip = $(ROOTCODEDIR)cps\\ # Generic compressed text (obsolete)
.path.eng = $(ROOTCODEDIR)cps\\ # English compressed text
.path.exe = $(ROOTDIR)run\\ # Executable (relative path from OBJ directory)
.path.fin = $(ROOTDIR)art\$(INGAMEDIR)\fin\\ # Finale source animation
.path.fnt = $(ROOTCODEDIR)cps\\ # Font (compressed)
.path.foc = $(ROOTDIR)audio\french\\ # French digitized voices
.path.fre = $(ROOTCODEDIR)cps\\ # French compressed text
.path.gdi = $(ROOTCODEDIR)cps\\ # Good guy compressed files
.path.ger = $(ROOTCODEDIR)cps\\ # German compressed text
.path.goc = $(ROOTDIR)audio\german\\ # German digitized voices
.path.h = .\\ # C header file
.path.i = .\\ # Assembly header
.path.icn = $(ROOTCODEDIR)cps\\ # Icon file (compressed)
.path.ini = $(MAPDIR)maps\\ # INI control files
.path.jp = $(ROOTCODEDIR)cps\\ # Dinosaur compressed files
.path.jun = $(ROOTCODEDIR)cps\\ # Jungle icons
.path.juv = $(ABSROOT)code\cps\\ # Juvenile sound effects.
.path.lbm = $(ROOTDIR)art\$(INGAMEDIR)\\ # Source art (uncompressed)
.path.mak = .\\ # Shape making control file
.path.map = $(ROOTCODEDIR)cps\\ # Icon map data file
.path.mid = $(ROOTDIR)audio\mid\\ # Midi file
.path.cd1 = $(ROOTCDSDIR)CD1\\ # CD #1 (GDI)
.path.cd2 = $(ROOTCDSDIR)CD2\\ # CD #2 (NOD)
.path.mix = $(ROOTCDDIR) # Mix-file location.
.path.mrf = $(ROOTCODEDIR)cps\\ # Palette morph data files
.path.nod = $(ROOTCODEDIR)cps\\ # Bad guy compressed files
.path.o = obj\\ # Overlay object file
.path.obj = obj\\ # Object file
.path.out = .\\ # Temporary parser file.
.path.pak = $(ROOTDIR)run\\ # Packed file
.path.pal = $(ROOTCODEDIR)cps\\ # Palette file (processed)
.path.shp = $(ROOTCODEDIR)cps\\ # Shape file (processed)
.path.sym = .\\ # Precompiled header symbol file.
.path.tbl = $(ROOTCODEDIR)cps\\ # Remap table file.
.path.tem = $(ROOTCODEDIR)cps\\ # Temperate icons
.path.txt = $(ROOTDIR)eng\\ # Default location for text files.
.path.v00 = $(ABSROOT)code\cps\\ # Infantry response.
.path.v01 = $(ABSROOT)code\cps\\ # Infantry response.
.path.v02 = $(ABSROOT)code\cps\\ # Infantry response.
.path.v03 = $(ABSROOT)code\cps\\ # Infantry response.
.path.v04 = $(ABSROOT)code\cps\\ # Infantry response.
.path.v16 = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.v8 = $(ABSROOT)code\cps\\ # Game formatted audio data
.path.vqa = $(VQADIR)movies$(LANGDIR)\\ # VQA movie files location.
.path.vqp = $(ABSROOT)code\cps\\ # VQA Movie Interpolated palette files
.path.wav = $(WAVDIR) # Digitized sample file (generic)
.path.win = $(ROOTCODEDIR)cps\\ # Winter icons
.path.wsa = $(ROOTCODEDIR)cps\\ # Processed animation file
.path.wv = $(ROOTDIR)audio\wv\\ # Digitized sample file (generic)
.path.xmi = $(ROOTDIR)audio\xmi\\ # MT-32 midi scores
.path.pcx = $(ROOTCODEDIR)cps\\ #.pcx files
##########################################################################
# Rules
#
# Rule for converting anim files.
#
.anm.wsa:
utils\animate $*.anm $(.path.anm)$&.lbm $(.path.wsa)$&.wsa -l -f -p
#
# Rule for converting art files.
#
.lbm.cps:
utils\wwcomp $*.lbm $(.path.cps)$&.cps -ex -i
#
# Rule for converting outtake first frame art files.
#
{$(.path.lbm)outtake}.lbm.cps:
utils\wwcomp $*.lbm $(.path.cps)$&.cps -ex
{$(.path.anm)outtake}.anm.wsa:
utils\animate $*.anm $(.path.anm)outtake\$&.lbm $(.path.wsa)$&.wsa -l -f -p
{$(.path.anm)score}.anm.wsa:
utils\animate $*.anm $(.path.wsa)$&.wsa -p
{$(.path.anm)score\\$(LANGDIR)\\}.anm.wsa:
utils\animate $*.anm $(.path.wsa)$&.wsa -p
#########################################################
# Rule for creating palette files.
#
{$(.path.lbm)palettes}.lbm.pal:
utils\wwcomp $*.lbm -ppal
copy $&.pal $(.path.pal)$&.pal
del $&.pal
{$(.path.lbm)score}.lbm.pal:
utils\wwcomp $*.lbm -ppal
copy $&.pal $(.path.pal)$&.pal
del $&.pal
#########################################################
# Rule for creating vehicles.
{$(.path.anm)units}.anm.shp:
utils\keyframe $*.anm $(.path.shp)$&.shp -l
#########################################################
# Rule for creating buildings.
{$(.path.anm)building}.anm.shp:
utils\keyframe $*.anm $(.path.shp)$&.shp -l
#########################################################
# Rule for creating misc shape animations.
{$(.path.anm)anim}.anm.shp:
utils\keyframe $*.anm $(.path.shp)$&.shp -l
#########################################################
# Rule for converting font files.
{$(.path.lbm)fonts}.lbm.fnt:
echo Creating font file "$&.fnt".
utils\fontmake $*.lbm -o$(.path.fnt)$&.fnt
#########################################################
# Rules for creating overlay files.
{$(.path.lbm)overlay}.lbm.cps:
utils\wwcomp $*.lbm $(.path.cps)$&.cps
{$(.path.anm)overlay}.anm.shp:
utils\keyframe $*.anm $(.path.shp)$&.shp -l
#########################################################
# Rules for creating temperate files.
{$(.path.lbm)temperat\\$(LANGDIR)\\}.lbm.tem:
utils\iconmap -r -w3 -o$(.path.tem)$&.tem $*.lbm
{$(.path.anm)temperat\\$(LANGDIR)\\}.anm.tem:
utils\keyframe $*.anm $(.path.tem)$&.tem -l
#########################################################
# Rules for creating winter files.
{$(.path.lbm)winter\\$(LANGDIR)\\}.lbm.win:
utils\iconmap -r -w3 -o$(.path.win)$&.win $*.lbm
{$(.path.anm)winter\\$(LANGDIR)\\}.anm.win:
utils\keyframe $*.anm $(.path.win)$&.win -l
#########################################################
# Rules for creating desert files.
{$(.path.lbm)desert\\$(LANGDIR)\\}.lbm.des:
utils\iconmap -r -w3 -o$(.path.des)$&.des $*.lbm
{$(.path.anm)desert\\$(LANGDIR)\\}.anm.des:
utils\keyframe $*.anm $(.path.des)$&.des -l
#########################################################
# Rules for creating jungle files.
{$(.path.lbm)jungle}.lbm.jun:
utils\iconmap -r -w3 -o$(.path.jun)$&.jun $*.lbm
{$(.path.anm)jungle}.anm.jun:
utils\keyframe $*.anm $(.path.jun)$&.jun -l
#########################################################
# Generic icon file creation.
.lbm.icn:
utils\iconmap -r -w3 -o$(.path.icn)$&.icn $*.lbm
#########################################################
# Text files.
{eng}.txt.eng:
utils\textmake $*.txt $(.path.eng)$&.eng $&.h
{ger}.txt.ger:
utils\textmake $*.txt $(.path.ger)$&.ger $&.h
{fre}.txt.fre:
utils\textmake $*.txt $(.path.fre)$&.fre $&.h
#########################################################
# Score/mapsel files.
{$(.path.anm)score}.anm.shp:
utils\keyframe $*.anm $(.path.shp)$&.shp -l
{$(.path.lbm)score}.lbm.cps:
utils\wwcomp $*.lbm $(.path.cps)$&.cps -ex -i
#########################################################
# Generic shape files.
#.lbm.shp:
# utils\makeshps -q $*.lbm $&.mak $(.path.cps)$&.shp $(SHAPEBUFFSIZE)
{$(.path.anm)generic}.anm.shp:
utils\keyframe $*.anm $(.path.shp)$&.shp -l
.c.lob:
utils\LINT -ml -si2 -sl4 +v $(WWLIB)WWLIB.LNT $*.c >$&.err
# Generic shape file creation.
{$(.path.anm)}.anm.shp:
utils\keyframe $*.anm $(.path.shp)$&.shp -l
{$(.path.lbm)units}.lbm.cps:
utils\wwcomp $*.lbm $(.path.cps)$&.cps -ex -i
##########################################################
# Hi-res shape files
#
{$(.path.anm)hires}.anm.shp:
utils\keyframe $*.anm $(.path.shp)$&.shp -l
# Hi-res font files
{$(.path.lbm)hires}.lbm.fnt:
echo Creating font file "$&.fnt".
utils\fontmake $*.lbm -o$(.path.fnt)$&.fnt
###################################
# NOD data file creation rules.
{$(.path.anm)nod}.anm.nod:
utils\keyframe $*.anm $(.path.nod)$&.nod -l
{$(.path.lbm)nod}.lbm.nod:
utils\wwcomp $*.lbm $(.path.nod)$&.nod -ex -i
###################################
# GDI data file creation rules.
{$(.path.anm)gdi}.anm.gdi:
utils\keyframe $*.anm $(.path.gdi)$&.gdi -l
{$(.path.lbm)gdi}.lbm.gdi:
utils\wwcomp $*.lbm $(.path.gdi)$&.gdi -ex -i
###################################
# Dino data file creation rules.
{$(.path.anm)jp}.anm.jp:
utils\keyframe $*.anm $(.path.jp)$&.jp -l
{$(.path.lbm)jp}.lbm.jp:
utils\wwcomp $*.lbm $(.path.jp)$&.jp -ex -i
#######################################
# Rules to convert 8 bit audio files.
{$(.path.wav)audio8\scores\mono}.wav.a8:
utils\audiomak $(.path.wav)audio8\scores\mono\$&.wav $(.path.aud)$&.a8
{$(.path.wav)audio8\scores\mono\olf}.wav.v8:
utils\audiomak $(.path.wav)audio8\scores\mono\old\$&.wav $(.path.aud)$&.v8
{$(.path.wav)audio8\speech}.wav.a8:
utils\audiomak $(.path.wav)audio8\speech\$&.wav $(.path.aud)$&.a8
{$(.path.wav)audio8\sfx\juvenile}.wav.a8j:
utils\audiomak $(.path.wav)audio8\sfx\juvenile\$&.wav $(.path.juv)$&.a8j
{$(.path.wav)audio8\sfx\adult}.wav.a8a:
utils\audiomak $(.path.wav)audio8\sfx\adult\$&.wav $(.path.aud)$&.a8a
{$(.path.wav)audio8\sfx\generic}.wav.a8:
utils\audiomak $(.path.wav)audio8\sfx\generic\$&.wav $(.path.aud)$&.a8
{$(.path.wav)audio8\sfx\b&b}.wav.a8:
utils\audiomak $(.path.wav)audio8\sfx\b&b\$&.wav $(.path.aud)$&.a8
{$(.path.wav)audio8\sfx\v00}.wav.a80:
utils\audiomak $(.path.wav)audio8\sfx\v00\$&.wav $(.path.aud)$&.a80
{$(.path.wav)audio8\sfx\v01}.wav.a81:
utils\audiomak $(.path.wav)audio8\sfx\v01\$&.wav $(.path.aud)$&.a81
{$(.path.wav)audio8\sfx\v02}.wav.a82:
utils\audiomak $(.path.wav)audio8\sfx\v02\$&.wav $(.path.aud)$&.a82
{$(.path.wav)audio8\sfx\v03}.wav.a83:
utils\audiomak $(.path.wav)audio8\sfx\v03\$&.wav $(.path.aud)$&.a83
{$(.path.wav)audio8\sfx\v04}.wav.a84:
utils\audiomak $(.path.wav)audio8\sfx\v04\$&.wav $(.path.aud)$&.a84
#######################################
# Rules to convert 16 bit audio files.
{$(.path.wav)audio16\sfx\mobius$(LANGDIR)}.wav.a6:
utils\audiomak $(.path.wav)audio16\sfx\mobius$(LANGDIR)\$&.wav $(.path.aud)$&.a6
{$(.path.wav)audio16\scores\mono}.wav.a6:
utils\audiomak $(.path.wav)audio16\scores\mono\$&.wav $(.path.aud)$&.a6
{$(.path.wav)audio16\scores\mono\old}.wav.v16:
utils\audiomak $(.path.wav)audio16\scores\mono\old\$&.wav $(.path.aud)$&.v16
{$(.path.wav)audio16\speech$(LANGDIR)}.wav.a6:
utils\audiomak $(.path.wav)audio16\speech$(LANGDIR)\$&.wav $(.path.aud)$&.a6
{$(.path.wav)audio16\sfx\juvenile}.wav.a6j:
utils\audiomak $(.path.wav)audio16\sfx\juvenile\$&.wav $(.path.juv)$&.a6j
{$(.path.wav)audio16\sfx\adult$(LANGDIR)}.wav.a6a:
utils\audiomak $(.path.wav)audio16\sfx\adult$(LANGDIR)\$&.wav $(.path.aud)$&.a6a
{$(.path.wav)audio16\sfx\generic$(LANGDIR)}.wav.a6:
utils\audiomak $(.path.wav)audio16\sfx\generic$(LANGDIR)\$&.wav $(.path.aud)$&.a6
{$(.path.wav)audio16\sfx\b&b$(LANGDIR)}.wav.a6:
utils\audiomak $(.path.wav)audio16\sfx\b&b$(LANGDIR)\$&.wav $(.path.aud)$&.a6
{$(.path.wav)audio16\sfx\v00$(LANGDIR)}.wav.a60:
utils\audiomak $(.path.wav)audio16\sfx\v00$(LANGDIR)\$&.wav $(.path.aud)$&.a60
{$(.path.wav)audio16\sfx\v01$(LANGDIR)}.wav.a61:
utils\audiomak $(.path.wav)audio16\sfx\v01$(LANGDIR)\$&.wav $(.path.aud)$&.a61
{$(.path.wav)audio16\sfx\v02$(LANGDIR)}.wav.a62:
utils\audiomak $(.path.wav)audio16\sfx\v02$(LANGDIR)\$&.wav $(.path.aud)$&.a62
{$(.path.wav)audio16\sfx\v03$(LANGDIR)}.wav.a63:
utils\audiomak $(.path.wav)audio16\sfx\v03$(LANGDIR)\$&.wav $(.path.aud)$&.a63
{$(.path.wav)audio16\sfx\v04}.wav.a64:
utils\audiomak $(.path.wav)audio16\sfx\v04\$&.wav $(.path.aud)$&.a64