diff --git a/Makefile b/Makefile index 4526342..8a74b7d 100644 --- a/Makefile +++ b/Makefile @@ -3,83 +3,62 @@ #-O3 --std=c99 -lcurses -DNO_MOUSE for NetBSD curses #adding --std=c99 makes warnings in GNU, and the blame is upon glibc feature test macros. my code is correct. -GAMES_DIR?=/usr/games -SCORES_DIR?=/var/games -MAN_DIR?=/usr/share/man/man6 -CFLAGS+= -Wno-unused-result -D SCORES_DIR=\"$(SCORES_DIR)\" -PKG-CONFIG=pkg-config -LDFLAGS+= $(shell pkg-config --libs --cflags ncurses) -lm +GAMESDIR?=$(PREFIX)/usr/games +SCORESDIR?=$(PREFIX)/var/games +MANDIR?=$(PREFIX)/usr/share/man/man6 +CFLAGS+= -Wno-unused-result -DSCORES_DIR=\"$(PREFIX)$(SCORESDIR)\" +LIBS_PKG_CONFIG!=pkg-config --libs --cflags ncurses +LIBS=$(LIBS_PKG_CONFIG) -lm ALL= nbsdgames jewels sudoku mines reversi checkers battleship rabbithole sos pipes fifteen memoblocks fisher muncher miketron redsquare darrt snakeduel tugow SCORE_FILES= pipes_scores jewels_scores miketron_scores muncher_scores fisher_scores darrt_scores tugow_scores -all: $(ALL) +all: $(ALL) scorefiles: - for sf in $(SCORE_FILES); do touch $(SCORES_DIR)/$$sf ; chmod 664 $(SCORES_DIR)/$$sf; chown :games $(SCORES_DIR)/$$sf ; done; - for game in $(ALL); do chown :games $(GAMES_DIR)/$$game; chmod g $(GAMES_DIR)/$$game ; done; + for sf in $(SCORE_FILES); do touch $(DESTDIR)$(SCORESDIR)/$$sf ; chmod 664 $(DESTDIR)$(SCORESDIR)/$$sf; chown :games $(DESTDIR)$(SCORESDIR)/$$sf ; done; + for game in $(ALL); do chown :games $(DESTDIR)$(GAMESDIR)/$$game; chmod g $(DESTDIR)$(GAMESDIR)/$$game ; done; manpages: - cp man/* $(MAN_DIR) -jewels: jewels.c config.h common.h - $(CC) jewels.c $(LDFLAGS) $(CFLAGS) -o ./jewels -sudoku: sudoku.c config.h - $(CC) sudoku.c $(LDFLAGS) $(CFLAGS) -o ./sudoku -mines: mines.c config.h - $(CC) mines.c $(LDFLAGS) $(CFLAGS) -o ./mines -reversi: reversi.c config.h - $(CC) reversi.c $(LDFLAGS) $(CFLAGS) -o ./reversi -checkers: checkers.c config.h - $(CC) checkers.c $(LDFLAGS) $(CFLAGS) -o ./checkers -battleship: battleship.c config.h - $(CC) battleship.c $(LDFLAGS) $(CFLAGS) -o ./battleship -rabbithole: rabbithole.c config.h - $(CC) rabbithole.c $(LDFLAGS) $(CFLAGS) -o ./rabbithole -sos: sos.c config.h - $(CC) sos.c $(LDFLAGS) $(CFLAGS) -o ./sos -pipes: pipes.c config.h common.h - $(CC) pipes.c $(LDFLAGS) $(CFLAGS) -o ./pipes -fifteen: fifteen.c config.h - $(CC) fifteen.c $(LDFLAGS) $(CFLAGS) -o ./fifteen -memoblocks: memoblocks.c - $(CC) memoblocks.c $(LDFLAGS) $(CFLAGS) -o ./memoblocks -fisher: fisher.c config.h common.h - $(CC) fisher.c $(LDFLAGS) $(CFLAGS) -o ./fisher -muncher: muncher.c config.h common.h - $(CC) muncher.c $(LDFLAGS) $(CFLAGS) -o ./muncher -miketron: miketron.c config.h common.h - $(CC) miketron.c $(LDFLAGS) $(CFLAGS) -o ./miketron -redsquare: redsquare.c config.h - $(CC) redsquare.c $(LDFLAGS) $(CFLAGS) -o ./redsquare -darrt: darrt.c config.h common.h - $(CC) darrt.c $(LDFLAGS) $(CFLAGS) -o ./darrt -nbsdgames: nbsdgames.c - $(CC) nbsdgames.c $(LDFLAGS) $(CFLAGS) -o ./nbsdgames -snakeduel: snakeduel.c config.h - $(CC) snakeduel.c $(LDFLAGS) $(CFLAGS) -o ./snakeduel -tugow: tugow.c common.h - $(CC) tugow.c $(LDFLAGS) $(CFLAGS) -o ./tugow + cp man/* $(DESTDIR)$(MANDIR) + +# Games which only need config.h +sudoku mines reversi checkers battleship rabbithole sos fifteen redsquare snakeduel: config.h + $(CC) $(CFLAGS) $@.c $< $(LDFLAGS) $(LIBS) -o $@ + +# Games which need config.h and common.h +jewels pipes fisher muncher miketron darrt: config.h common.h + $(CC) $(CFLAGS) $@.c $< $(LDFLAGS) $(LIBS) -o $@ + +# Games which only need common.h +tugow: common.h + $(CC) $(CFLAGS) $@.c $< $(LDFLAGS) $(LIBS) -o $@ + +# Games which only need themselves +memoblocks nbsdgames: + $(CC) $(CFLAGS) $@.c $< $(LDFLAGS) $(LIBS) -o $@ + menu: - cp nbsdgames.desktop /usr/share/applications - cp nbsdgames.svg /usr/share/pixmaps + cp nbsdgames.desktop $(DESTIDR)$(PREFIX)/usr/share/applications + cp nbsdgames.svg $(DESTDIR)$(PREFIX)/usr/share/pixmaps clean: for game in $(ALL); do rm $$game; done; uninstall: - for game in $(ALL); do rm $(GAMES_DIR)/$$game; rm $(MAN_DIR)/$$game.6.gz ;done; + for game in $(ALL); do rm $(GAMESDIR)/$$game; rm $(MANDIR)/$$game.6.gz ;done; install: $(ALL) - cp $(ALL) $(GAMES_DIR) + cp $(ALL) $(DESTDIR)/$(GAMESDIR) test: for game in $(ALL); do ./$$game ;done; #######for namespacing ####### nb: - CFLAGS="$$CFLAGS -D NB=\\\"nb\\\"" make + CFLAGS="$$CFLAGS -D NB=\\\"nb\\\"" $(MAKE) for game in $(ALL); do cp $$game nb$$game ;done; for manpage in $(ls man); do cp man/$$manpage man/nb$$manpage ;done; nbinstall: nb - cp nb* $(GAMES_DIR) + cp nb* $(DESTDIR)/$(GAMESDIR) nbmanpages: nb - cp man/nb* $(MAN_DIR) + cp man/nb* $(DESTDIR)/$(MANDIR) nbclean: for game in $(ALL); do rm nb$$game; done;