fix makefile make GameState static
This commit is contained in:
parent
150182d09f
commit
ed13cf62d1
220
MAKEFILE.DOS
220
MAKEFILE.DOS
@ -1,105 +1,115 @@
|
||||
# MAKEFILE.DOS - Borland Turbo C/C++ Makefile for Cordle
|
||||
# Usage: make -f makefile.dos
|
||||
#
|
||||
# Requirements:
|
||||
# - Borland Turbo C++ 3.x or compatible
|
||||
# - PDCurses library for DOS (PDCURSES.LIB)
|
||||
#
|
||||
# Memory Model: Small (default) or Medium for larger word lists
|
||||
# Adjust TC_DIR and PDCURSES_DIR to match your installation paths
|
||||
|
||||
# Turbo C installation directory
|
||||
TC_DIR = C:\TC
|
||||
|
||||
# PDCurses installation directory
|
||||
PDCURSES_DIR = C:\PDCURSES
|
||||
|
||||
# Compiler and linker
|
||||
CC = $(TC_DIR)\BIN\TCC
|
||||
LINK = $(TC_DIR)\BIN\TLINK
|
||||
|
||||
# Memory model: s=small, m=medium, c=compact, l=large, h=huge
|
||||
MODEL = h
|
||||
|
||||
# Compiler flags
|
||||
# -m$(MODEL) = memory model
|
||||
# -w = enable warnings
|
||||
# -N = check stack overflow
|
||||
# -I = include paths
|
||||
# -D__MSDOS__ = define DOS platform
|
||||
CFLAGS = -m$(MODEL) -w -N -I$(TC_DIR)\INCLUDE -IINCLUDE -I$(PDCURSES_DIR) -D__MSDOS__
|
||||
|
||||
# Linker flags
|
||||
LIBS = $(PDCURSES_DIR)\PDCURSES.LIB
|
||||
STARTUP = $(TC_DIR)\LIB\C0$(MODEL).OBJ
|
||||
STDLIBS = $(TC_DIR)\LIB\C$(MODEL).LIB
|
||||
|
||||
# Directories
|
||||
SRC_DIR = SRC
|
||||
BUILD_DIR = BUILD
|
||||
|
||||
# Object files
|
||||
OBJS = $(BUILD_DIR)\MAIN.OBJ $(BUILD_DIR)\GAME.OBJ $(BUILD_DIR)\UI.OBJ $(BUILD_DIR)\WORDS.OBJ
|
||||
|
||||
# Target executable
|
||||
TARGET = $(BUILD_DIR)\CORDLE.EXE
|
||||
|
||||
# Default target
|
||||
all: dirs $(TARGET) copywords
|
||||
|
||||
# Create build directory
|
||||
dirs:
|
||||
IF NOT EXIST $(BUILD_DIR) MD $(BUILD_DIR)
|
||||
|
||||
# Compile individual source files
|
||||
$(BUILD_DIR)\MAIN.OBJ: $(SRC_DIR)\MAIN.C
|
||||
$(CC) $(CFLAGS) -c -o$(BUILD_DIR)\MAIN.OBJ $(SRC_DIR)\MAIN.C
|
||||
|
||||
$(BUILD_DIR)\GAME.OBJ: $(SRC_DIR)\GAME.C
|
||||
$(CC) $(CFLAGS) -c -o$(BUILD_DIR)\GAME.OBJ $(SRC_DIR)\GAME.C
|
||||
|
||||
$(BUILD_DIR)\UI.OBJ: $(SRC_DIR)\UI.C
|
||||
$(CC) $(CFLAGS) -c -o$(BUILD_DIR)\UI.OBJ $(SRC_DIR)\UI.C
|
||||
|
||||
$(BUILD_DIR)\WORDS.OBJ: $(SRC_DIR)\WORDS.C
|
||||
$(CC) $(CFLAGS) -c -o$(BUILD_DIR)\WORDS.OBJ $(SRC_DIR)\WORDS.C
|
||||
|
||||
# Link executable
|
||||
$(TARGET): $(OBJS)
|
||||
$(LINK) /x /c $(STARTUP) $(OBJS),$(TARGET),,$(LIBS) $(STDLIBS)
|
||||
|
||||
# Copy word lists to build directory
|
||||
copywords:
|
||||
IF NOT EXIST $(BUILD_DIR)\WORDS MD $(BUILD_DIR)\WORDS
|
||||
COPY WORDS\*.TXT $(BUILD_DIR)\WORDS
|
||||
|
||||
# Clean build artifacts
|
||||
clean:
|
||||
IF EXIST $(BUILD_DIR)\*.OBJ DEL $(BUILD_DIR)\*.OBJ
|
||||
IF EXIST $(BUILD_DIR)\*.EXE DEL $(BUILD_DIR)\*.EXE
|
||||
IF EXIST $(BUILD_DIR)\*.MAP DEL $(BUILD_DIR)\*.MAP
|
||||
IF EXIST $(BUILD_DIR)\WORDS\*.TXT DEL $(BUILD_DIR)\WORDS\*.TXT
|
||||
IF EXIST $(BUILD_DIR)\WORDS RD $(BUILD_DIR)\WORDS
|
||||
IF EXIST $(BUILD_DIR) RD $(BUILD_DIR)
|
||||
|
||||
# Rebuild everything
|
||||
rebuild: clean all
|
||||
|
||||
# Help
|
||||
help:
|
||||
@ECHO Cordle DOS Makefile - Borland Turbo C++
|
||||
@ECHO ========================================
|
||||
@ECHO.
|
||||
@ECHO Targets:
|
||||
@ECHO all - Build the game (default)
|
||||
@ECHO clean - Remove build artifacts
|
||||
@ECHO rebuild - Clean and rebuild
|
||||
@ECHO help - Show this help
|
||||
@ECHO.
|
||||
@ECHO Configuration:
|
||||
@ECHO Edit TC_DIR and PDCURSES_DIR paths at top of makefile
|
||||
@ECHO Change MODEL for different memory models (s/m/c/l)
|
||||
@ECHO.
|
||||
@ECHO Requirements:
|
||||
@ECHO - Borland Turbo C++ 3.x
|
||||
@ECHO - PDCurses library for DOS
|
||||
# MAKEFILE.DOS - Borland Turbo C/C++ Makefile for Cordle
|
||||
# Usage: make -f makefile.dos
|
||||
#
|
||||
# Requirements:
|
||||
# - Borland Turbo C++ 3.x or compatible
|
||||
# - PDCurses library for DOS (PDCURSES.LIB)
|
||||
#
|
||||
# Memory Model: Small (default) or Medium for larger word lists
|
||||
# Adjust TC_DIR and PDCURSES_DIR to match your installation paths
|
||||
|
||||
# Turbo C installation directory
|
||||
TC_DIR = C:\TC
|
||||
|
||||
# PDCurses installation directory
|
||||
PDCURSES_DIR = D:\PDC39\DOS
|
||||
|
||||
# Compiler and linker
|
||||
CC = $(TC_DIR)\BIN\TCC
|
||||
LINK = $(TC_DIR)\BIN\TLINK
|
||||
|
||||
# Memory model: s=small, m=medium, c=compact, l=large, h=huge
|
||||
MODEL = h
|
||||
|
||||
# Compiler flags
|
||||
# -m$(MODEL) = memory model
|
||||
# -w = enable warnings
|
||||
# -N = check stack overflow
|
||||
# -I = include paths
|
||||
# -D__MSDOS__ = define DOS platform
|
||||
CFLAGS = -m$(MODEL) -w -N -I$(TC_DIR)\INCLUDE -IINCLUDE -I$(PDCURSES_DIR) -D__MSDOS__
|
||||
|
||||
# Linker flags
|
||||
LIBS = $(PDCURSES_DIR)\PDCURSES.LIB
|
||||
STARTUP = $(TC_DIR)\LIB\C0$(MODEL).OBJ
|
||||
STDLIBS = $(TC_DIR)\LIB\C$(MODEL).LIB
|
||||
|
||||
# Directories
|
||||
SRC_DIR = SRC
|
||||
BUILD_DIR = BUILD
|
||||
|
||||
# Object files
|
||||
OBJS = $(BUILD_DIR)\MAIN.OBJ $(BUILD_DIR)\GAME.OBJ $(BUILD_DIR)\UI.OBJ $(BUILD_DIR)\WORDS.OBJ
|
||||
|
||||
# Target executable
|
||||
TARGET = $(BUILD_DIR)\CORDLE.EXE
|
||||
|
||||
# Default target
|
||||
all: dirs $(TARGET) copywords
|
||||
|
||||
# Create build directory
|
||||
dirs:
|
||||
IF NOT EXIST $(BUILD_DIR) MD $(BUILD_DIR)
|
||||
|
||||
# Compile individual source files
|
||||
$(BUILD_DIR)\MAIN.OBJ: $(SRC_DIR)\MAIN.C
|
||||
$(CC) $(CFLAGS) -c -o$(BUILD_DIR)\MAIN.OBJ $(SRC_DIR)\MAIN.C
|
||||
|
||||
$(BUILD_DIR)\GAME.OBJ: $(SRC_DIR)\GAME.C
|
||||
$(CC) $(CFLAGS) -c -o$(BUILD_DIR)\GAME.OBJ $(SRC_DIR)\GAME.C
|
||||
|
||||
$(BUILD_DIR)\UI.OBJ: $(SRC_DIR)\UI.C
|
||||
$(CC) $(CFLAGS) -c -o$(BUILD_DIR)\UI.OBJ $(SRC_DIR)\UI.C
|
||||
|
||||
$(BUILD_DIR)\WORDS.OBJ: $(SRC_DIR)\WORDS.C
|
||||
$(CC) $(CFLAGS) -c -o$(BUILD_DIR)\WORDS.OBJ $(SRC_DIR)\WORDS.C
|
||||
|
||||
# Link executable using response file to avoid command line length limits
|
||||
$(TARGET): $(OBJS)
|
||||
@ECHO $(STARTUP) + > $(BUILD_DIR)\LINK.RSP
|
||||
@ECHO $(BUILD_DIR)\MAIN.OBJ + >> $(BUILD_DIR)\LINK.RSP
|
||||
@ECHO $(BUILD_DIR)\GAME.OBJ + >> $(BUILD_DIR)\LINK.RSP
|
||||
@ECHO $(BUILD_DIR)\UI.OBJ + >> $(BUILD_DIR)\LINK.RSP
|
||||
@ECHO $(BUILD_DIR)\WORDS.OBJ >> $(BUILD_DIR)\LINK.RSP
|
||||
@ECHO $(TARGET) >> $(BUILD_DIR)\LINK.RSP
|
||||
@ECHO. >> $(BUILD_DIR)\LINK.RSP
|
||||
@ECHO $(LIBS) + >> $(BUILD_DIR)\LINK.RSP
|
||||
@ECHO $(STDLIBS) >> $(BUILD_DIR)\LINK.RSP
|
||||
$(LINK) /x /c @$(BUILD_DIR)\LINK.RSP
|
||||
|
||||
# Copy word lists to build directory
|
||||
copywords:
|
||||
IF NOT EXIST $(BUILD_DIR)\WORDS MD $(BUILD_DIR)\WORDS
|
||||
COPY WORDS\*.TXT $(BUILD_DIR)\WORDS
|
||||
|
||||
# Clean build artifacts
|
||||
clean:
|
||||
IF EXIST $(BUILD_DIR)\*.OBJ DEL $(BUILD_DIR)\*.OBJ
|
||||
IF EXIST $(BUILD_DIR)\*.EXE DEL $(BUILD_DIR)\*.EXE
|
||||
IF EXIST $(BUILD_DIR)\*.MAP DEL $(BUILD_DIR)\*.MAP
|
||||
IF EXIST $(BUILD_DIR)\*.RSP DEL $(BUILD_DIR)\*.RSP
|
||||
IF EXIST $(BUILD_DIR)\WORDS\*.TXT DEL $(BUILD_DIR)\WORDS\*.TXT
|
||||
IF EXIST $(BUILD_DIR)\WORDS RD $(BUILD_DIR)\WORDS
|
||||
IF EXIST $(BUILD_DIR) RD $(BUILD_DIR)
|
||||
|
||||
# Rebuild everything
|
||||
rebuild: clean all
|
||||
|
||||
# Help
|
||||
help:
|
||||
@ECHO Cordle DOS Makefile - Borland Turbo C++
|
||||
@ECHO ========================================
|
||||
@ECHO.
|
||||
@ECHO Targets:
|
||||
@ECHO all - Build the game (default)
|
||||
@ECHO clean - Remove build artifacts
|
||||
@ECHO rebuild - Clean and rebuild
|
||||
@ECHO help - Show this help
|
||||
@ECHO.
|
||||
@ECHO Configuration:
|
||||
@ECHO Edit TC_DIR and PDCURSES_DIR paths at top of makefile
|
||||
@ECHO Change MODEL for different memory models (s/m/c/l)
|
||||
@ECHO.
|
||||
@ECHO Requirements:
|
||||
@ECHO - Borland Turbo C++ 3.x
|
||||
@ECHO - PDCurses library for DOS
|
||||
|
||||
@ -55,7 +55,7 @@ static void parse_arguments(int argc, char **argv, char *filename, char *difficu
|
||||
/* Main game loop */
|
||||
static int main_game_loop(int argc, char *argv[]) {
|
||||
WINDOW *stdscr;
|
||||
GameState game;
|
||||
static GameState game;
|
||||
char filename[MAX_FILENAME];
|
||||
char difficulty[32];
|
||||
char message[MAX_MESSAGE] = "";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user