cordle/dosbox/CordleDosMakefile.mk

125 lines
2.9 KiB
Makefile

# Makefile for Cordle - Cross-platform C90 Wordle Game
# Supports Unix/Linux/macOS and DOS (DJGPP)
#
# Usage:
# Unix/Linux/macOS: make
# DOS (DJGPP): make
# Clean: make clean
# Compiler
CC = gcc
# Compiler flags - strict C90 compliance
CFLAGS = -std=c90 -Wall -Wextra -pedantic -O2
# Source files
SRC = cordle.c
OBJ = cordle.o
# Platform detection and configuration
# Check for DOS/Windows environment
ifdef COMSPEC
# DOS/Windows detected
PLATFORM = DOS
TARGET = cordle.exe
CURSES_LIB = -lpdcurses
RM = del /Q
RMDIR = rmdir /S /Q
PATHSEP = \\
# DOS-specific flags
CFLAGS += -DMSDOS
else
ifdef ComSpec
# Alternative Windows detection
PLATFORM = DOS
TARGET = cordle.exe
CURSES_LIB = -lpdcurses
RM = del /Q
RMDIR = rmdir /S /Q
PATHSEP = \\
CFLAGS += -DMSDOS
else
# Unix/Linux/macOS
PLATFORM = UNIX
TARGET = cordle
CURSES_LIB = -lncurses
RM = rm -f
RMDIR = rm -rf
PATHSEP = /
endif
endif
# Additional libraries
LIBS = $(CURSES_LIB)
# Phony targets
.PHONY: all clean help info
# Default target
all: info $(TARGET)
# Display build information
info:
@echo ============================================
@echo Building Cordle for $(PLATFORM)
@echo Compiler: $(CC)
@echo Flags: $(CFLAGS)
@echo Libraries: $(LIBS)
@echo ============================================
@echo
# Build target
$(TARGET): $(SRC)
$(CC) $(CFLAGS) -o $(TARGET) $(SRC) $(LIBS)
@echo
@echo ============================================
@echo Build complete: $(TARGET)
@echo ============================================
@echo
@echo To run: ./$(TARGET) --help
@echo
# Object file (alternative build method)
$(OBJ): $(SRC)
$(CC) $(CFLAGS) -c $(SRC)
# Clean build artifacts
clean:
@echo Cleaning build artifacts...
$(RM) $(TARGET) $(OBJ)
@echo Clean complete.
# Help target
help:
@echo Cordle Makefile - Build Instructions
@echo =====================================
@echo
@echo Targets:
@echo make - Build the game
@echo make clean - Remove build artifacts
@echo make help - Show this help message
@echo make info - Show build configuration
@echo
@echo Platform Detection:
@echo Current: $(PLATFORM)
@echo
@echo DOS/DJGPP Requirements:
@echo - DJGPP compiler installed
@echo - PDCurses library installed
@echo - Make utility available
@echo
@echo Unix/Linux/macOS Requirements:
@echo - GCC compiler
@echo - ncurses library
@echo - Make utility
@echo
@echo Game Options:
@echo ./$(TARGET) --easy Easy difficulty
@echo ./$(TARGET) --medium Medium difficulty
@echo ./$(TARGET) --hard Hard difficulty
@echo ./$(TARGET) --techy Technical words
@echo ./$(TARGET) --literary Literary words
@echo ./$(TARGET) --cultural Cultural words
@echo ./$(TARGET) --full Full dictionary
@echo ./$(TARGET) --help Show game help