Patrick Georgi | 3b77b72 | 2011-07-07 15:41:53 +0200 | [diff] [blame] | 1 | # GNU MAKE Makefile for PDCurses library - WIN32 Cygnus GCC |
| 2 | # |
| 3 | # Usage: make -f [path\]gccwin32.mak [DEBUG=Y] [DLL=Y] [WIDE=Y] [UTF8=Y] [tgt] |
| 4 | # |
| 5 | # where tgt can be any of: |
| 6 | # [all|demos|pdcurses.a|testcurs.exe...] |
| 7 | |
| 8 | O = o |
| 9 | |
| 10 | ifndef PDCURSES_SRCDIR |
| 11 | PDCURSES_SRCDIR = .. |
| 12 | endif |
| 13 | |
| 14 | include $(PDCURSES_SRCDIR)/version.mif |
| 15 | include $(PDCURSES_SRCDIR)/libobjs.mif |
| 16 | |
| 17 | osdir = $(PDCURSES_SRCDIR)/win32 |
| 18 | |
| 19 | PDCURSES_WIN_H = $(osdir)/pdcwin.h |
| 20 | |
| 21 | CC = gcc |
| 22 | |
| 23 | ifeq ($(DEBUG),Y) |
| 24 | CFLAGS = -g -Wall -DPDCDEBUG |
| 25 | LDFLAGS = -g |
| 26 | else |
| 27 | CFLAGS = -O2 -Wall |
| 28 | LDFLAGS = |
| 29 | endif |
| 30 | |
| 31 | CFLAGS += -I$(PDCURSES_SRCDIR) |
| 32 | |
| 33 | BASEDEF = $(PDCURSES_SRCDIR)/exp-base.def |
| 34 | WIDEDEF = $(PDCURSES_SRCDIR)/exp-wide.def |
| 35 | |
| 36 | DEFDEPS = $(BASEDEF) |
| 37 | |
| 38 | ifeq ($(WIDE),Y) |
| 39 | CFLAGS += -DPDC_WIDE |
| 40 | DEFDEPS += $(WIDEDEF) |
| 41 | endif |
| 42 | |
| 43 | ifeq ($(UTF8),Y) |
| 44 | CFLAGS += -DPDC_FORCE_UTF8 |
| 45 | endif |
| 46 | |
| 47 | DEFFILE = pdcurses.def |
| 48 | |
| 49 | LINK = gcc |
| 50 | |
| 51 | ifeq ($(DLL),Y) |
| 52 | CFLAGS += -DPDC_DLL_BUILD |
| 53 | LIBEXE = gcc $(DEFFILE) |
| 54 | LIBFLAGS = -Wl,--out-implib,pdcurses.a -shared -o |
| 55 | LIBCURSES = pdcurses.dll |
| 56 | LIBDEPS = $(LIBOBJS) $(PDCOBJS) $(DEFFILE) |
| 57 | CLEAN = $(LIBCURSES) *.a $(DEFFILE) |
| 58 | else |
| 59 | LIBEXE = ar |
| 60 | LIBFLAGS = rcv |
| 61 | LIBCURSES = pdcurses.a |
| 62 | LIBDEPS = $(LIBOBJS) $(PDCOBJS) |
| 63 | CLEAN = *.a |
| 64 | endif |
| 65 | |
| 66 | .PHONY: all libs clean demos dist |
| 67 | |
| 68 | all: libs demos |
| 69 | |
| 70 | libs: $(LIBCURSES) |
| 71 | |
| 72 | clean: |
| 73 | -rm -f *.o |
| 74 | -rm -f *.exe |
| 75 | -rm -f $(CLEAN) |
| 76 | |
| 77 | demos: $(DEMOS) |
| 78 | strip *.exe |
| 79 | |
| 80 | $(DEFFILE): $(DEFDEPS) |
| 81 | echo LIBRARY pdcurses > $@ |
| 82 | echo EXPORTS >> $@ |
| 83 | cat $(BASEDEF) >> $@ |
| 84 | ifeq ($(WIDE),Y) |
| 85 | cat $(WIDEDEF) >> $@ |
| 86 | endif |
| 87 | |
| 88 | $(LIBCURSES) : $(LIBDEPS) |
| 89 | $(LIBEXE) $(LIBFLAGS) $@ $? |
| 90 | -cp pdcurses.a panel.a |
| 91 | |
| 92 | $(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS) |
| 93 | $(PDCOBJS) : $(PDCURSES_WIN_H) |
| 94 | $(DEMOS) : $(PDCURSES_CURSES_H) $(LIBCURSES) |
| 95 | panel.o : $(PANEL_HEADER) |
| 96 | terminfo.o: $(TERM_HEADER) |
| 97 | |
| 98 | $(LIBOBJS) : %.o: $(srcdir)/%.c |
| 99 | $(CC) -c $(CFLAGS) $< |
| 100 | |
| 101 | $(PDCOBJS) : %.o: $(osdir)/%.c |
| 102 | $(CC) -c $(CFLAGS) $< |
| 103 | |
| 104 | firework.exe newdemo.exe rain.exe testcurs.exe worm.exe xmas.exe \ |
| 105 | ptest.exe: %.exe: $(demodir)/%.c |
| 106 | $(CC) $(CFLAGS) -o$@ $< $(LIBCURSES) |
| 107 | |
| 108 | tuidemo.exe: tuidemo.o tui.o |
| 109 | $(LINK) $(LDFLAGS) -o$@ tuidemo.o tui.o $(LIBCURSES) |
| 110 | |
| 111 | tui.o: $(demodir)/tui.c $(demodir)/tui.h $(PDCURSES_CURSES_H) |
| 112 | $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $< |
| 113 | |
| 114 | tuidemo.o: $(demodir)/tuidemo.c $(PDCURSES_CURSES_H) |
| 115 | $(CC) -c $(CFLAGS) -I$(demodir) -o$@ $< |
| 116 | |
| 117 | dist: $(PDCLIBS) |
| 118 | echo PDCurses $(VERDOT) for Cygnus Win32 > file_id.diz |
| 119 | echo ------------------------------------------ >> file_id.diz |
| 120 | echo Public Domain Curses library for >> file_id.diz |
| 121 | echo Cygnus GCC for Win32. >> file_id.diz |
| 122 | echo Source available in PDCURS$(VER).ZIP >> file_id.diz |
| 123 | echo Public Domain. >> file_id.diz |
| 124 | zip -9jX pdc$(VER)_cyg_w32 \ |
| 125 | $(PDCURSES_SRCDIR)/README $(PDCURSES_SRCDIR)/HISTORY \ |
| 126 | $(PDCURSES_SRCDIR)/curses.h $(PDCURSES_SRCDIR)/panel.h \ |
| 127 | $(LIBCURSES) $(LIBPANEL) file_id.diz |
| 128 | rm file_id.diz |