# To make GKrellM for different systems, you can simply:
# For Linux:
#	make
# For FreeBSD:
#	gmake freebsd
# For NetBSD 1.5 - 1.6.X
#	make netbsd1
# For NetBSD 2.X
#	make netbsd2
# For OpenBSD
#	make openbsd
# For macOS with X11-based Gtk+
# 	make darwin
# For Mac OS X with Quartz-based Gtk+ (experimental)
# 	make macos
# For Solaris 2.x (8 tested so far):
#	make solaris
#
# Then:
#	make install
# To override default install locations /usr/local/bin and /usr/local/include
# to, for example, /usr/bin and /usr/include:
#    make install INSTALLDIR=/usr/bin INCLUDEDIR=/usr/include
#

include common.mk

OS_RELEASE=$(shell uname -r)
export OS_RELEASE

GKRELLM_PC_EXTRA=

all: gkrellm

gkrellm:
	(cd po && ${MAKE} all)
	(cd src && ${MAKE} all)
	(cd server && ${MAKE} all)

install:
	(cd po && ${MAKE} install)
	(cd src && ${MAKE} install)
	(cd server && ${MAKE} install)

install-strip:
	(cd po && ${MAKE} install)
	(cd src && ${MAKE} install-strip)
	(cd server && ${MAKE} install-strip)

uninstall:
	(cd po && ${MAKE} uninstall)
	(cd src && ${MAKE} uninstall)
	(cd server && ${MAKE} uninstall)

install_darwin install_macos install_macosx:
	(cd po && ${MAKE} install)
	(cd src && ${MAKE} install_macos)
	(cd server && ${MAKE} install_macos)

install_freebsd:
	(cd po && ${MAKE} install)
	(cd src && ${MAKE} install_freebsd)
	(cd server && ${MAKE} install_freebsd)

install_netbsd:
	(cd po && ${MAKE} install)
	(cd src && ${MAKE} install_netbsd)
	(cd server && ${MAKE} install_netbsd)

install_openbsd:
	(cd po && ${MAKE} install)
	(cd src && ${MAKE} install_openbsd)
	(cd server && ${MAKE} install_openbsd)

install_solaris:
	(cd po && ${MAKE} install)
	(cd src && ${MAKE} install_solaris)
	(cd server && ${MAKE} install_solaris)

install_windows: windows
	(cd po && ${MAKE} install)
	(cd src && ${MAKE} install_windows)
	(cd server && ${MAKE} install_windows)

uninstall_windows:
	(cd po && ${MAKE} uninstall)
	(cd src && ${MAKE} uninstall_windows)
	(cd server && ${MAKE} uninstall_windows)

clean:
	(cd po && ${MAKE} clean)
	(cd src && ${MAKE} clean)
	(cd server && ${MAKE} clean)

freebsd:
	(cd po && ${MAKE} all)
	(cd src && ${MAKE} freebsd)
	(cd server && ${MAKE} freebsd)

darwin:
	(cd po && ${MAKE} all)
	(cd src && ${MAKE} darwin)
	(cd server && ${MAKE} darwin)

macos macosx:
	(cd po && ${MAKE} all)
	(cd src && ${MAKE} macos)
	(cd server && ${MAKE} macos)

netbsd1:
	(cd po && ${MAKE} all)
	(cd src && ${MAKE} netbsd1)
	(cd server && ${MAKE} \
		EXTRAOBJS= SYS_LIBS="-lkvm" gkrellmd )

netbsd2:
	(cd po && ${MAKE} all)
	(cd src && ${MAKE} netbsd2)
	(cd server && ${MAKE} \
		EXTRAOBJS= SYS_LIBS="-lkvm -pthread" gkrellmd )

openbsd:
	(cd po && ${MAKE} all)
	(cd src && ${MAKE} \
		PTHREAD_INC=-I${PREFIX}/include EXTRAOBJS= \
		SYS_LIBS="-lkvm -pthread" gkrellm )
	(cd server && ${MAKE} \
		PTHREAD_INC=-I${PREFIX}/include EXTRAOBJS= \
		SYS_LIBS="-lkvm -pthread" gkrellmd )

solaris:
	(cd po && ${MAKE} MSGFMT_OPT="-v -o" \
		LOCALEDIR=/usr/local/share/locale all)
ifeq ($(OS_RELEASE),5.8)
	(cd src && ${MAKE} CC=gcc \
		CFLAGS="-Wno-implicit-int" \
		SYS_LIBS="-lkstat -lkvm -ldevinfo -lresolv -lsocket -lX11 -lintl" \
		LINK_FLAGS="" gkrellm )
	(cd server && ${MAKE} CC=gcc \
		CFLAGS="-Wno-implicit-int -DSOLARIS_8" \
		SYS_LIBS="-lkstat -lkvm -ldevinfo -lsocket -lnsl -lintl" \
		LINK_FLAGS="" gkrellmd )
else
	(cd src && ${MAKE} CC=gcc \
		CFLAGS="-Wno-implicit-int" \
		SYS_LIBS="-lkstat -lkvm -ldevinfo -lresolv -lsocket -lX11" LINK_FLAGS="" gkrellm )
	(cd server && ${MAKE} CC=gcc \
		CFLAGS="-Wno-implicit-int" \
		SYS_LIBS="-lkstat -lkvm -ldevinfo -lsocket -lnsl" LINK_FLAGS="" gkrellmd )
endif

windows:
	(cd po && ${MAKE} LOCALEDIR="share/locale" all)
	(cd src && ${MAKE} LOCALEDIR="share/locale" windows )
	(cd server && ${MAKE} LOCALEDIR="share/locale" windows)

msgmerge:
	(cd po && ${MAKE} messages)
	(cd po && ${MAKE} merge)

po-check:
	(cd po && $(MAKE) check)

# Create source archive
dist:
	git archive --prefix=gkrellm-$(GKRELLM_VERSION)/ -o gkrellm-$(GKRELLM_VERSION).tar.bz2 HEAD

# Create git release tag
tag:
	git tag -a -m "GKrellM $(GKRELLM_VERSION)" gkrellm-$(GKRELLM_VERSION)

release:
	! git tag -n1 gkrellm-$(GKRELLM_VERSION) 2>&1 | grep '^gkrellm-$(GKRELLM_VERSION)' > /dev/null
	$(MAKE) dist tag
