tty-solitaire/Makefile
David Seguin b93fe31f7e
Integrate version number into makefile (fixes #6)
Running with --version relied on having a VERSION file in current
directory. Having the version number in the makefile ensures it
is built into the binary so that --version works all the time.
2018-06-17 21:19:28 -04:00

62 lines
1.8 KiB
Makefile

VERSION = 1.0.0
CC = gcc
CFLAGS = -W -Wall -pedantic -ansi -std=c99 -g -DTS_VERSION=\"$(VERSION)\"
LDFLAGS = -lncursesw
# OS X installs ncurses with wide character support, but not as "libncurses"
ifeq ($(shell uname -s),Darwin)
LDFLAGS = -lncurses
endif
PREFIX = /usr/local
EXECUTABLE = ttysolitaire
SRC_DIR = src
SRC = $(SRC_DIR)/ttysolitaire.c
SRC_OBJECTS = $(SRC_DIR)/common.o \
$(SRC_DIR)/frame.o \
$(SRC_DIR)/card.o \
$(SRC_DIR)/stack.o \
$(SRC_DIR)/deck.o \
$(SRC_DIR)/cursor.o \
$(SRC_DIR)/keyboard.o \
$(SRC_DIR)/gui.o \
$(SRC_DIR)/game.o \
TESTS_EXECUTABLE = ttysolitaire_test
TESTS_DIR = tests
TESTS_SRC = $(TESTS_DIR)/ttysolitaire_test.c
TESTS_OBJECTS = $(TESTS_DIR)/frame_test.o \
$(TESTS_DIR)/card_test.o \
$(TESTS_DIR)/stack_test.o \
$(TESTS_DIR)/deck_test.o \
$(TESTS_DIR)/cursor_test.o \
$(TESTS_DIR)/keyboard_test.o \
$(TESTS_DIR)/gui_test.o \
$(TESTS_DIR)/game_test.o \
$(TESTS_DIR)/test_helper.o \
$(TESTS_DIR)/test_helper_test.o \
.PHONY: test clean install uninstall
all: ${EXECUTABLE}
ttysolitaire: $(SRC_OBJECTS)
$(CC) $(CFLAGS) $(SRC) -o $(EXECUTABLE) $(SRC_OBJECTS) $(LDFLAGS)
test: $(SRC_OBJECTS) $(TESTS_OBJECTS)
@$(CC) $(CFLAGS) $(TESTS_SRC) -o $(TESTS_EXECUTABLE) $(TESTS_OBJECTS) $(SRC_OBJECTS) $(LDFLAGS)
@./$(TESTS_EXECUTABLE)
clean:
@rm -rf {$(SRC_DIR),$(TESTS_DIR)}/*.o $(EXECUTABLE) $(TESTS_EXECUTABLE)
install:
@install -d $(DESTDIR)$(PREFIX)/bin
@install -m755 $(EXECUTABLE) $(DESTDIR)$(PREFIX)/bin/$(EXECUTABLE)
uninstall:
@rm -f $(PREFIX)/bin/$(EXECUTABLE)