1include ../common.mk
2
3PACKAGE ?= gkrellm
4
5INSTALLDIR ?= $(INSTALLROOT)/bin
6MANDIR ?= $(INSTALLROOT)/share/man/man1
7
8X11_LIBS ?= -L/usr/X11R6/lib -lX11 -lSM -lICE
9MATH_LIB ?= -lm
10
11ifeq ($(without-gnutls),1)
12	CONFIGURE_ARGS += --without-gnutls
13endif
14ifeq ($(without-gnutls),yes)
15	CONFIGURE_ARGS += --without-gnutls
16endif
17ifeq ($(without-ssl),1)
18	CONFIGURE_ARGS += --without-ssl
19endif
20ifeq ($(without-ssl),yes)
21	CONFIGURE_ARGS += --without-ssl
22endif
23ifeq ($(without-libsensors),yes)
24	CONFIGURE_ARGS += --without-libsensors
25endif
26ifeq ($(without-libsensors),1)
27	CONFIGURE_ARGS += --without-libsensors
28endif
29ifeq ($(without-ntlm),yes)
30	CONFIGURE_ARGS += --without-ntlm
31endif
32ifeq ($(without-ntlm),1)
33	CONFIGURE_ARGS += --without-ntlm
34endif
35# run configure shell script
36DUMMY_VAR := $(shell env OPENSSLINC=$(OPENSSLINC) OPENSSLLIB=$(OPENSSLLIB) \
37		./configure $(CONFIGURE_ARGS))
38# pull in variables set by configure script
39include configure.mk
40
41# Only use own md5-code if neither OpenSSL nor GnuTLS are present
42ifneq ($(HAVE_SSL),1)
43    EXTRAOBJS += md5c.o
44endif
45
46GKRELLM_INCLUDES = gkrellm.h gkrellm-public-proto.h $(SHARED_PATH)/log.h
47
48PKG_INCLUDE := $(shell $(PKG_CONFIG) --cflags gtk+-2.0 gmodule-2.0 gmodule-2.0 gthread-2.0)
49PKG_LIB := $(shell $(PKG_CONFIG) --libs gtk+-2.0 gmodule-2.0 gmodule-2.0 gthread-2.0)
50
51FLAGS = -I.. -I$(SHARED_PATH) $(PKG_INCLUDE) $(GTOP_INCLUDE) $(PTHREAD_INC)\
52 ${SSL_INCLUDE} ${NTLM_INCLUDE} -DGKRELLM_CLIENT
53
54LIBS = $(PKG_LIB) $(GTOP_LIBS) $(X11_LIBS) $(SYS_LIBS) $(SSL_LIBS) $(SENSORS_LIBS)\
55 $(NTLM_LIBS) $(MATH_LIB)
56
57ifeq ($(debug),1)
58    FLAGS += -g
59endif
60ifeq ($(debug),yes)
61    FLAGS += -g
62endif
63
64ifeq ($(profile),1)
65    FLAGS += -g -pg
66endif
67ifeq ($(profile),yes)
68    FLAGS += -g -pg
69endif
70
71ifeq ($(enable_nls),1)
72    FLAGS += -DENABLE_NLS -DLOCALEDIR=\"$(LOCALEDIR)\"
73endif
74ifeq ($(enable_nls),yes)
75    FLAGS += -DENABLE_NLS -DLOCALEDIR=\"$(LOCALEDIR)\"
76endif
77
78ifneq ($(PACKAGE),gkrellm)
79    FLAGS += -DPACKAGE=\"$(PACKAGE)\"
80endif
81
82ifeq ($(HAVE_GETADDRINFO),1)
83    FLAGS += -DHAVE_GETADDRINFO
84endif
85
86
87OBJS =	main.o alerts.o battery.o base64.o clock.o cpu.o disk.o fs.o \
88	hostname.o inet.o mail.o mem.o net.o proc.o sensors.o uptime.o \
89	chart.o panel.o config.o gui.o krell.o plugins.o pixops.o \
90	client.o utils.o sysdeps-unix.o deprecated.o log.o
91
92UNIXOBJS = winops-x11.o
93
94all:	gkrellm$(BINEXT)
95
96gkrellm$(BINEXT): check_env $(OBJS) $(UNIXOBJS) $(EXTRAOBJS)
97	$(CC) $(OBJS) $(UNIXOBJS) $(EXTRAOBJS) -o $@ \
98		$(LDFLAGS) $(LIBS) $(LINK_FLAGS)
99
100static: check_env $(OBJS) $(UNIXOBJS) $(EXTRAOBJS)
101	$(CC) $(OBJS) $(UNIXOBJS) $(EXTRAOBJS) -o gkrellm.static -static \
102		$(LDFLAGS) $(LIBS) $(LINK_FLAGS)
103
104freebsd2:
105ifeq ($(HAVE_SSL),1)
106	$(MAKE) EXTRAOBJS= SYS_LIBS="-lkvm" gkrellm
107else
108	$(MAKE) EXTRAOBJS= SYS_LIBS="-lkvm " gkrellm
109endif
110
111freebsd3 freebsd4:
112ifeq ($(HAVE_SSL),1)
113	$(MAKE) EXTRAOBJS= SYS_LIBS="-lkvm -ldevstat" gkrellm
114else
115	$(MAKE) EXTRAOBJS= SYS_LIBS="-lkvm -ldevstat " gkrellm
116endif
117
118freebsd5 freebsd6 freebsd7 freebsd8 freebsd9 freebsd:
119ifeq ($(HAVE_SSL),1)
120	$(MAKE) EXTRAOBJS= SYS_LIBS="-ldevstat" gkrellm
121else
122	$(MAKE) EXTRAOBJS= SYS_LIBS="-ldevstat " gkrellm
123endif
124
125# Darwin target for systems that still have libkvm
126darwin:
127ifeq ($(HAVE_SSL),1)
128	$(MAKE) STRIP= HAVE_GETADDRINFO=1 \
129		EXTRAOBJS= \
130		SYS_LIBS="-framework CoreFoundation -framework IOKit -lkvm" \
131		LINK_FLAGS="-Wl,-bind_at_load" \
132		gkrellm
133else
134	$(MAKE) STRIP= HAVE_GETADDRINFO=1 \
135		EXTRAOBJS= \
136		SYS_LIBS="-framework CoreFoundation -framework IOKit -lkvm -lmd5" \
137		LINK_FLAGS="-Wl,-bind_at_load" \
138		gkrellm
139endif
140
141# Mac OS X target with X11-based Gtk+
142darwin9:
143	$(MAKE) STRIP= HAVE_GETADDRINFO=1 \
144		EXTRAOBJS= \
145		SYS_LIBS="-framework CoreFoundation -framework IOKit" \
146		LINK_FLAGS="-Wl,-bind_at_load" \
147		gkrellm
148
149# Mac OS X target with Quartz-based Gtk+ (experimental)
150macosx:
151	$(MAKE) STRIP= HAVE_GETADDRINFO=1 \
152		EXTRAOBJS="winops-gtk-mac.o" \
153		SYS_LIBS="-framework CoreFoundation -framework IOKit" \
154		LINK_FLAGS="-Wl,-bind_at_load" \
155		X11_LIBS="" \
156		UNIXOBJS="" \
157		gkrellm
158
159netbsd1:
160	$(MAKE) EXTRAOBJS= SYS_LIBS="-lkvm" \
161		X11_LIBS="-L/usr/X11R6/lib -lX11 -lSM -lICE -Wl,-R/usr/X11R6/lib" \
162		gkrellm
163netbsd2:
164	$(MAKE) EXTRAOBJS= SYS_LIBS="-lkvm -pthread" \
165		X11_LIBS="-L/usr/X11R6/lib -lX11 -lSM -lICE -R/usr/X11R6/lib" \
166		gkrellm
167
168openbsd:
169	$(MAKE) GTOP_LIBS= SYS_LIBS="-lkvm -pthread" gkrellm
170
171solaris:
172	$(MAKE) CFLAGS="-Wno-implicit-int" \
173		SYS_LIBS="-lkstat -lkvm -ldevinfo" gkrellm
174
175windows: libgkrellm.a
176	$(MAKE) \
177		BINEXT=".exe" \
178		CFLAGS="${CFLAGS} -D_WIN32_WINNT=0x0501 -DWINVER=0x0501 -DWIN32_LEAN_AND_MEAN" \
179		LINK_FLAGS="-mwindows -Wl,--dynamicbase -Wl,--nxcompat" \
180		EXTRAOBJS="${EXTRAOBJS} winops-win32.o win32-plugin.o win32-resource.o" \
181		SYS_LIBS="-lws2_32 -lwtsapi32 -lpdh -lnetapi32 -liphlpapi -lintl" \
182		X11_LIBS="" \
183		UNIXOBJS="" \
184		all
185
186install: install_bin install_inc install_man
187
188install_bin:
189	$(INSTALL) -d -m $(INSTALLDIRMODE) $(DESTDIR)$(INSTALLDIR)
190	$(INSTALL) -c $(STRIP) -m $(BINMODE) $(PACKAGE)$(BINEXT) $(DESTDIR)$(INSTALLDIR)/$(PACKAGE)$(BINEXT)
191
192install_inc:
193	$(INSTALL) -d -m $(INCLUDEDIRMODE) $(DESTDIR)$(INCLUDEDIR)/gkrellm2
194	$(INSTALL) -c -m $(INCLUDEMODE) $(GKRELLM_INCLUDES) $(DESTDIR)$(INCLUDEDIR)/gkrellm2
195
196install_man:
197	$(INSTALL) -d -m $(MANDIRMODE) $(DESTDIR)$(MANDIR)
198	$(INSTALL) -c -m $(MANMODE) ../gkrellm.1 $(DESTDIR)$(MANDIR)/$(PACKAGE).1
199
200uninstall:
201	$(RM) $(INSTALLDIR)/$(PACKAGE)
202	$(RM) -r $(INCLUDEDIR)/gkrellm2
203	$(RM) $(MANDIR)/$(PACKAGE).1
204	$(RM) $(LIBDIR)/libgkrellm.a
205
206install_darwin install_darwin9 install_macosx:
207	$(MAKE) install STRIP=
208
209install_freebsd:
210	$(MAKE) install
211	chgrp kmem $(INSTALLDIR)/$(PACKAGE)
212	chmod g+s $(INSTALLDIR)/$(PACKAGE)
213
214install_netbsd:
215	$(MAKE) MANDIR="$(INSTALLROOT)/man/man1" install
216
217install_openbsd:
218	$(MAKE) install
219	chgrp kmem $(INSTALLDIR)/$(PACKAGE)
220	chmod g+sx $(INSTALLDIR)/$(PACKAGE)
221
222install_solaris:
223	$(MAKE) install INSTALL=/usr/ucb/install
224	chgrp sys $(INSTALLDIR)/$(PACKAGE)
225	chmod g+s $(INSTALLDIR)/$(PACKAGE)
226
227install_windows: windows
228	$(MAKE) BINEXT=".exe" install_bin install_inc
229	$(INSTALL) -d -m $(LIBDIRMODE) $(LIBDIR)
230	$(INSTALL) -c -m $(BINMODE) libgkrellm.a $(LIBDIR)
231
232clean:
233	$(RM) *.o *~ *.bak configure.h configure.mk configure.log gkrellm gkrellm.exe \
234		libgkrellm.a sysdeps/*.o core
235
236IMAGES = \
237	../pixmaps/frame_top.xpm \
238	../pixmaps/frame_bottom.xpm \
239	../pixmaps/frame_left.xpm \
240	../pixmaps/frame_right.xpm \
241	\
242	../pixmaps/button_panel_out.xpm \
243	../pixmaps/button_panel_in.xpm \
244	../pixmaps/button_meter_out.xpm \
245	../pixmaps/button_meter_in.xpm \
246	\
247	../pixmaps/bg_chart.xpm \
248	../pixmaps/bg_grid.xpm  \
249	../pixmaps/bg_panel.xpm \
250	../pixmaps/bg_meter.xpm \
251	\
252	../pixmaps/data_in.xpm \
253	../pixmaps/data_in_grid.xpm \
254	../pixmaps/data_out.xpm \
255	../pixmaps/data_out_grid.xpm \
256	\
257	../pixmaps/net/decal_net_leds.xpm \
258	../pixmaps/decal_misc.xpm \
259	../pixmaps/decal_alarm.xpm \
260	../pixmaps/decal_warn.xpm \
261	\
262	../pixmaps/krell_panel.xpm \
263	../pixmaps/krell_meter.xpm \
264	../pixmaps/krell_slider.xpm \
265	../pixmaps/krell_mini.xpm \
266	../pixmaps/fs/bg_panel.xpm \
267	../pixmaps/host/bg_panel.xpm \
268	../pixmaps/mail/decal_mail.xpm \
269	../pixmaps/mail/krell_mail.xpm \
270	../pixmaps/mail/krell_mail_daemon.xpm \
271	../pixmaps/timer/bg_panel.xpm \
272	../pixmaps/timer/bg_timer.xpm \
273	../pixmaps/timer/decal_timer_button.xpm \
274	../pixmaps/uptime/bg_panel.xpm \
275	\
276	../pixmaps/gkrellmms/bg_panel.xpm \
277	../pixmaps/gkrellmms/spacer_top.xpm \
278	../pixmaps/gkrellmms/spacer_bottom.xpm \
279	../pixmaps/gkrellmms/bg_scroll.xpm \
280	../pixmaps/pmu/bg_panel.xpm \
281	../pixmaps/pmu/spacer_top.xpm \
282	../pixmaps/pmu/spacer_bottom.xpm \
283	../pixmaps/volume/bg_panel.xpm \
284	../pixmaps/volume/spacer_top.xpm \
285	../pixmaps/volume/spacer_bottom.xpm \
286	../pixmaps/bg_separator.xpm
287
288SYSDEPS_SRC = sysdeps/bsd-common.c sysdeps/bsd-net-open.c sysdeps/freebsd.c \
289	sysdeps/gtop.c sysdeps/linux.c sysdeps/netbsd.c sysdeps/openbsd.c \
290	sysdeps/solaris.c sysdeps/darwin.c sysdeps/sensors-common.c \
291	sysdeps/dragonfly.c sysdeps/win32.c sysdeps/win32-sensors.c
292
293GKRELLM_H = gkrellm.h gkrellm-private.h
294GKRELLM_H_SYS = gkrellm.h gkrellm-public-proto.h gkrellm-private.h \
295	gkrellm-sysdeps.h
296
297main.o:      main.c $(GKRELLM_H)
298alerts.o:    alerts.c $(GKRELLM_H)
299battery.o:   battery.c $(GKRELLM_H_SYS)
300base64.o:    base64.c
301clock.o:     clock.c  $(GKRELLM_H_SYS)
302cpu.o:	     cpu.c  $(GKRELLM_H_SYS)
303disk.o:      disk.c $(GKRELLM_H_SYS)
304fs.o:        fs.c $(GKRELLM_H_SYS)
305hostname.o:  hostname.c $(GKRELLM_H_SYS)
306inet.o:      inet.c $(GKRELLM_H_SYS)
307mail.o:      mail.c md5.h $(GKRELLM_H_SYS)
308md5c.o:      md5.h
309mem.o:       mem.c  $(GKRELLM_H_SYS)
310net.o:	     net.c  $(GKRELLM_H_SYS)
311proc.o:      proc.c  $(GKRELLM_H_SYS)
312sensors.o:   sensors.c $(GKRELLM_H_SYS) ../pixmaps/sensors/bg_volt.xpm
313uptime.o:    uptime.c $(GKRELLM_H_SYS)
314chart.o:     chart.c  $(GKRELLM_H)
315panel.o:     panel.c  $(GKRELLM_H)
316config.o:    config.c  $(GKRELLM_H) $(IMAGES)
317krell.o:     krell.c  $(GKRELLM_H)
318gui.o:       gui.c  $(GKRELLM_H)
319plugins.o:   plugins.c $(GKRELLM_H)
320pixops.o:    pixops.c $(GKRELLM_H)
321client.o:    client.c $(GKRELLM_H)
322utils.o:     utils.c $(GKRELLM_H)
323sysdeps-unix.o: sysdeps-unix.c $(GKRELLM_H_SYS) $(SYSDEPS_SRC)
324log.o: $(SHARED_PATH)/log.c $(SHARED_PATH)/log.h $(GKRELLM_H)
325deprecated.o: deprecated.c $(GKRELLM_H)
326
327winops-x11.o: winops-x11.c $(GKRELLM_H)
328winops-gtk-mac.o: winops-gtk-mac.c $(GKRELLM_H)
329winops-win32.o: winops-win32.c $(GKRELLM_H)
330
331win32-plugin.o: win32-plugin.c win32-plugin.h
332win32-libgkrellm.o: win32-libgkrellm.c win32-plugin.h
333win32-resource.o: win32-resource.rc win32-resource.h
334	$(WINDRES) $< -o $@
335
336libgkrellm.a: win32-libgkrellm.o
337	$(AR) -cr libgkrellm.a win32-libgkrellm.o
338
339# Checks if the build environment is ok
340check_env:
341	$(PKG_CONFIG) --atleast-version=2.32 glib-2.0
342	$(PKG_CONFIG) --atleast-version=2.4 gtk+-2.0
343