CnC_Red_Alert/WIN32LIB/MAKEFILE.BOR

267 lines
9.2 KiB
Plaintext
Raw Normal View History

#
# 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 : Jan 26, 1995 *
#* *
#* *
#*-------------------------------------------------------------------------*
#* *
#* Required environment variables: *
#* WIN32LIB = your root WWFLAT path *
#* WIN32VCS = root directory for wwlib version control archive *
#* COMPILER = 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 WIN32LIB
!error WIN32LIB Environment var not configured.
!endif
!ifndef WIN32VCS
!error WIN32VCS Environment var not configured.
!endif
!ifndef COMPILER
!error COMPILER 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 = win32lib
LIB_DIR = $(WIN32LIB)\lib
!include $(WIN32LIB)\\project.cfg
#---------------------------------------------------------------------------
# LIBS macro: a list of all component libraries
# "make LIBS=xxxx.lib [target]" makes/installs/updates only that library
#---------------------------------------------------------------------------
LIBS = \
audio.lib \
dipthong.lib \
drawbuff.lib \
font.lib \
iff.lib \
keyboard.lib \
mem.lib \
misc.lib \
mono.lib \
palette.lib \
rawfile.lib \
tile.lib \
timer.lib \
ww_win.lib \
wsa.lib
LIB_INSTALL = \
audio.ins \
dipthong.ins \
drawbuff.ins \
font.ins \
iff.ins \
keyboard.ins \
mem.ins \
misc.ins \
mono.ins \
palette.ins \
rawfile.ins \
tile.ins \
timer.ins \
ww_win.ins \
wsa.ins
LIB_UPDATE = \
audio.upd \
dipthong.upd \
drawbuff.upd \
font.upd \
iff.upd \
keyboard.upd \
mem.upd \
misc.upd \
mono.upd \
palette.upd \
rawfile.upd \
tile.upd \
timer.upd \
ww_win.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.
#---------------------------------------------------------------------------
.path.lib = $(WIN32LIB)\\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
#---------------------------------------------------------------------------
LIB_CMD = tlib
VCS_UPDATE = update
#---------------------------------------------------------------------------
# Default target
#---------------------------------------------------------------------------
all: $(LIB_NAME).lib
#---------------------------------------------------------------------------
# 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_NAME).lib: $(LIBS)
del $<
$(LIB_CMD) $< $(LIB_CFG) @&&|
+$(WIN32LIB)\\lib\\audio.lib &
+$(WIN32LIB)\\lib\\dipthong.lib &
+$(WIN32LIB)\\lib\\drawbuff.lib &
+$(WIN32LIB)\\lib\\font.lib &
+$(WIN32LIB)\\lib\\iff.lib &
+$(WIN32LIB)\\lib\\keyboard.lib &
+$(WIN32LIB)\\lib\\mem.lib &
+$(WIN32LIB)\\lib\\misc.lib &
+$(WIN32LIB)\\lib\\mono.lib &
+$(WIN32LIB)\\lib\\palette.lib &
+$(WIN32LIB)\\lib\\rawfile.lib &
+$(WIN32LIB)\\lib\\tile.lib &
+$(WIN32LIB)\\lib\\timer.lib &
+$(WIN32LIB)\\lib\\ww_win.lib &
+$(WIN32LIB)\\lib\\wsa.lib
|
#---------------------------------------------------------------------------
# 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 $^&
make
cd ..
#---------------------------------------------------------------------------
# "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 ..