summaryrefslogtreecommitdiff
path: root/menuselect/Makefile
blob: c2c9373f4f37ae50e9605e211e70d35c6493f99a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#
# Asterisk -- A telephony toolkit for Linux.
#
# Makefile for Menuselect
#
# Copyright (C) 2005-2008, Digium, Inc.
#
# Russell Bryant <russell@digium.com>
#
# This program is free software, distributed under the terms of
# the GNU General Public License
#

# even though we could use '-include makeopts' here, use a wildcard
# lookup anyway, so that make won't try to build makeopts if it doesn't
# exist (other rules will force it to be built if needed)
ifneq ($(wildcard makeopts),)
  include makeopts
endif

.PHONY: clean dist-clean distclean test ntest ctest gtest

# Basic set of sources and flags/libraries/includes
OBJS:=menuselect.o strcompat.o
CFLAGS+=-g -D_GNU_SOURCE -Wall

ifeq ($(MENUSELECT_DEBUG),yes)
  CFLAGS += -DMENUSELECT_DEBUG
endif

ifdef NCURSES_LIB
  C_OBJS += menuselect_curses.o
  C_LIBS +=$(NCURSES_LIB)
  C_INCLUDE += $(NCURSES_INCLUDE)
  ALL_TGTS += cmenuselect
else
  ifdef CURSES_LIB
    C_OBJS += menuselect_curses.o
    C_LIBS +=$(CURSES_LIB)
    C_INCLUDE += $(CURSES_INCLUDE)
    ALL_TGTS += cmenuselect
  endif
endif

ifdef GTK2_LIB
  G_OBJS += menuselect_gtk.o
  G_LIBS += $(GTK2_LIB)
  G_INCLUDE += $(GTK2_INCLUDE)
  ALL_TGTS += gmenuselect
endif

ifdef NEWT_LIB
  N_OBJS += menuselect_newt.o
  N_LIBS += $(NEWT_LIB)
  N_INCLUDE += $(NEWT_INCLUDE)
  ALL_TGTS += nmenuselect
endif

M_OBJS += menuselect_stub.o
M_LIBS += $(LIBXML2_LIB)
ALL_TGTS += menuselect

all: $(ALL_TGTS)

$(OBJS) $(C_OBJS) $(N_OBJS) $(G_OBJS) $(M_OBJS): autoconfig.h menuselect.h

makeopts: configure
	@./configure $(CONFIGURE_SILENT)
	@echo "****"
	@echo "**** The configure script was just executed, so 'make' needs to be"
	@echo "**** restarted."
	@echo "****"
	@exit 1

ifdef C_OBJS
menuselect_curses.o: CFLAGS+=$(C_INCLUDE)
cmenuselect: $(OBJS) $(C_OBJS)
	$(CC) $(LDFLAGS) -o $@ $^ $(C_LIBS) $(LIBXML2_LIB)
else
cmenuselect:
endif

ifdef G_OBJS
menuselect_gtk.o: CFLAGS+=$(G_INCLUDE)
gmenuselect: $(OBJS) $(G_OBJS)
	$(CC) $(LDFLAGS) -o $@ $^ $(G_LIBS) $(LIBXML2_LIB)
else
gmenuselect:
endif

ifdef N_OBJS
menuselect_newt.o: CFLAGS+=$(N_INCLUDE)
nmenuselect: $(OBJS) $(N_OBJS)
	$(CC) $(LDFLAGS) -o $@ $^ $(N_LIBS) $(LIBXML2_LIB)
else
nmenuselect:
endif

menuselect.o: CFLAGS+=$(LIBXML2_INCLUDE)

menuselect: $(OBJS) $(M_OBJS)
	$(CC) $(LDFLAGS) -o $@ $^ $(M_LIBS)

test: menuselect
	(cd test; ../$< menuselect.makeopts)

ctest: cmenuselect
	(cd test; ../$< menuselect.makeopts)

gtest: gmenuselect
	(cd test; ../$< menuselect.makeopts)

ntest: nmenuselect
	(cd test; ../$< menuselect.makeopts)

clean:
	rm -f menuselect cmenuselect gmenuselect nmenuselect $(OBJS) $(M_OBJS) $(C_OBJS) $(G_OBJS) $(N_OBJS)

dist-clean: distclean

distclean: clean
	rm -f autoconfig.h config.status config.log makeopts
	rm -rf autom4te.cache