CnC_Red_Alert/WWFLAT32/MAKEFILE

287 lines
9.3 KiB
Plaintext

#
# Command & Conquer Red Alert(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/>.
#
#***************************************************************************
#** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S **
#***************************************************************************
#* *
#* Project Name : Westwood Library .LIB makefile *
#* *
#* File Name : MAKEFILE *
#* *
#* Programmer : Julio R. Jerez *
#* *
#* Start Date : April 27, 1994 *
#* *
#* Last Update : May 12, 1994 [BRR] *
#* *
#*-------------------------------------------------------------------------*
#* *
#* Required environment variables: *
#* WWFLAT = your root WWFLAT path *
#* WWVCS = root directory for wwlib version control archive *
#* WATCOM = your Watcom installation path *
#* *
#* Required changes to makefile: *
#* LIBS = list of all component libraries *
#* *
#* NOTE: For this makefile to work, each library directory MUST have the *
#* same name as its library. *
#* *
#* "make install" installs the library on your drive *
#* "make update" updates all source files in your slice *
#* *
#* To install or update just one library you may type: *
#* "make -DLIBS=misc.lib install" *
#* *
#***************************************************************************
#---------------------------------------------------------------------------
# Verify user's environment
#---------------------------------------------------------------------------
!ifndef %WWFLAT
!error WWFLAT Environment var not configured.
!endif
#===========================================================================
# User-defined section: list each library in this macro
# NOTE: These are some order dependencies:
# 1. The directory MISC must always be made first.
# 2. The directory VIDEO must be made before the SYSTEM directory.
#===========================================================================
LIB_NAME = wwflat32
LIB_DIR = $(%WWFLAT)\lib
#---------------------------------------------------------------------------
# LIBS macro: a list of all component libraries
# "make LIBS=xxxx.lib [target]" makes/installs/updates only that library
#---------------------------------------------------------------------------
LIBS = &
audio.lib &
descmgmt.lib &
dipthong.lib &
file.lib &
font.lib &
iff.lib &
keyboard.lib &
mcgaprim.lib &
mem.lib &
misc.lib &
mono.lib &
palette.lib &
playcd.lib &
shape.lib &
sosdw1ps.lib &
svgaprim.lib &
tile.lib &
timer.lib &
video.lib &
windows.lib &
wsa.lib
LIB_INSTALL = &
audio.ins &
descmgmt.ins &
dipthong.ins &
file.ins &
font.ins &
iff.ins &
keyboard.ins &
mcgaprim.ins &
mem.ins &
misc.ins &
mono.ins &
palette.ins &
playcd.ins &
shape.ins &
svgaprim.ins &
tile.ins &
timer.ins &
video.ins &
windows.ins &
wsa.ins
LIB_UPDATE = &
audio.upd &
descmgmt.upd &
dipthong.upd &
file.upd &
font.upd &
iff.upd &
keyboard.upd &
mcgaprim.upd &
mem.upd &
misc.upd &
mono.upd &
palette.upd &
playcd.upd &
shape.upd &
svgaprim.upd &
tile.upd &
timer.upd &
video.upd &
windows.upd &
wsa.upd
#===========================================================================
# Pre-defined section: there should be little need to modify this section.
#===========================================================================
#---------------------------------------------------------------------------
# Path macros: one path for each file type.
# These paths are used to tell make where to find/put each file type.
#---------------------------------------------------------------------------
.lib: $(%WWFLAT)\lib
#---------------------------------------------------------------------------
# Tools/commands
# LIB_CMD: library command
# LIB_CFG: library configuration file
# VCS_UPDATE: version control update command; this command should update
# all relevant files in a given directory with read-only
# copies from the archive
#---------------------------------------------------------------------------
!include $(%WWFLAT)\project.cfg
LIB_CMD = wlib
VCS_UPDATE = update
#---------------------------------------------------------------------------
# If you like to have this makefile switch to the mono screen automatically,
# you will need to do a "set MONO=Y" or to anything you like.
#---------------------------------------------------------------------------
!ifdef %MONO
.BEFORE
mode mono
.AFTER
mode co80
.ERROR
mode co80
!endif
#---------------------------------------------------------------------------
# Default target
#---------------------------------------------------------------------------
all: $(LIB_DIR)\$(LIB_NAME).lib .SYMBOLIC
#---------------------------------------------------------------------------
# Build the library
# The original library is deleted by the librarian
# Lib objects & -+ commands are constructed by substituting within the
# $^@ macro (which expands to all target dependents, separated with
# spaces)
# Tlib's cfg file is not invoked as a response file.
# All headers & source files are copied into WWFLAT\SRCDEBUG, for debugging
#---------------------------------------------------------------------------
$(LIB_DIR)\$(LIB_NAME).lib: $(LIBS) libs.lbc
$(LIB_CMD) $(LIB_CFG) $^@ @libs.lbc
#---------------------------------------------------------------------------
# This construct tells make how to make all component libraries
# The commands get executed for every item in the macro.
# The macro $: extracts only the directory name from the macro item.
#---------------------------------------------------------------------------
$(LIBS):
echo Making $^&...
cd $^&
wmake
cd ..
#---------------------------------------------------------------------------
# Libs is librarian response file that is only genarated if any of the
# sublibrary in the golbal variable LIBS was updated.
#---------------------------------------------------------------------------
libs.lbc : $(LIBS)
%create $^@
for %index in ($(LIBS)) do %append $^@ +$(LIB_DIR)\%index
#---------------------------------------------------------------------------
# "make install" installs the library on your drive
#---------------------------------------------------------------------------
install: install_dirs $(LIB_INSTALL) .SYMBOLIC
echo Compiling library...
wmake
echo Library installation complete.
#---------------------------------------------------------------------------
# At installation time, this target makes all non-library directories
# This is a dependency for 'install'
#---------------------------------------------------------------------------
install_dirs: .SYMBOLIC
echo Making directories...
mkdir example
mkdir include
mkdir lib
mkdir srcdebug
mkdir tools
cd tools
copy $(%WWVCS)\tools\vcs.cfg
$(VCS_UPDATE)
cd..
copy $(%WWVCS)\vcs.cfg
$(VCS_UPDATE)
cd example
copy $(%WWVCS)\example\vcs.cfg
$(VCS_UPDATE)
cd ..
#---------------------------------------------------------------------------
# This target installs all library directories
# This is a dependency for 'install'
#---------------------------------------------------------------------------
$(LIB_INSTALL): .SYMBOLIC
echo Installing $^&...
md $^&
cd $^&
copy $(%WWVCS)\$^&\vcs.cfg
$(VCS_UPDATE)
copy *.h ..\include
copy *.inc ..\include
cd ..
#---------------------------------------------------------------------------
# "make update" updates all source files in your slice
#---------------------------------------------------------------------------
update: $(LIB_UPDATE) .SYMBOLIC
echo Library updated.
#---------------------------------------------------------------------------
# This target updates all library directories
# This is a dependency for 'updates'
#---------------------------------------------------------------------------
$(LIB_UPDATE): .SYMBOLIC
echo Updating $^&...
cd $^&
$(VCS_UPDATE)
copy *.h ..\include
copy *.inc ..\include
cd ..