SUBDIRS	= browser desktop
TARGETS	= $(OBJDIR)copy$(EXEEXT) $(OBJDIR)delete$(EXEEXT) $(OBJDIR)move$(EXEEXT) $(OBJDIR)open$(EXEEXT) $(OBJDIR)properties$(EXEEXT) $(OBJDIR)view$(EXEEXT)
OBJDIR	=
PREFIX	= /usr/local
DESTDIR	=
BINDIR	= $(PREFIX)/bin
SBINDIR	= $(PREFIX)/sbin
CC	= cc
CPPFLAGSF= -I../include
CPPFLAGS=
CFLAGSF	= `pkg-config --cflags libDesktop`
CFLAGS	= -W -Wall -g -O2 -fPIE -D_FORTIFY_SOURCE=2 -fstack-protector
LDFLAGSF= `pkg-config --libs libDesktop` 
LDFLAGS	= -pie -Wl,-z,relro -Wl,-z,now
EXEEXT	=
RM	= rm -f
LN	= ln -f
MKDIR	= mkdir -m 0755 -p
INSTALL	= install


all: subdirs $(TARGETS)

subdirs:
	@for i in $(SUBDIRS); do (cd "$$i" && \
		if [ -n "$(OBJDIR)" ]; then \
		([ -d "$(OBJDIR)$$i" ] || $(MKDIR) -- "$(OBJDIR)$$i") && \
		$(MAKE) OBJDIR="$(OBJDIR)$$i/"; \
		else $(MAKE); fi) || exit; done

copy_OBJS = $(OBJDIR)copy.o
copy_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) -I../include $(CFLAGSF) $(CFLAGS)
copy_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -L$(OBJDIR)lib -Wl,-rpath,$(PREFIX)/lib -lBrowser

$(OBJDIR)copy$(EXEEXT): $(copy_OBJS) $(OBJDIR)lib/libBrowser.a
	$(CC) -o $(OBJDIR)copy$(EXEEXT) $(copy_OBJS) $(copy_LDFLAGS)

delete_OBJS = $(OBJDIR)delete.o
delete_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) -I../include $(CFLAGSF) $(CFLAGS)
delete_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -L$(OBJDIR)lib -Wl,-rpath,$(PREFIX)/lib -lBrowser

$(OBJDIR)delete$(EXEEXT): $(delete_OBJS) $(OBJDIR)lib/libBrowser.a
	$(CC) -o $(OBJDIR)delete$(EXEEXT) $(delete_OBJS) $(delete_LDFLAGS)

move_OBJS = $(OBJDIR)move.o
move_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) -I../include $(CFLAGSF) $(CFLAGS)
move_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -L$(OBJDIR)lib -Wl,-rpath,$(PREFIX)/lib -lBrowser

$(OBJDIR)move$(EXEEXT): $(move_OBJS) $(OBJDIR)lib/libBrowser.a
	$(CC) -o $(OBJDIR)move$(EXEEXT) $(move_OBJS) $(move_LDFLAGS)

open_OBJS = $(OBJDIR)open.o
open_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
open_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)open$(EXEEXT): $(open_OBJS)
	$(CC) -o $(OBJDIR)open$(EXEEXT) $(open_OBJS) $(open_LDFLAGS)

properties_OBJS = $(OBJDIR)properties.o
properties_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
properties_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -L$(OBJDIR)lib -Wl,-rpath,$(PREFIX)/lib -lBrowser

$(OBJDIR)properties$(EXEEXT): $(properties_OBJS) $(OBJDIR)lib/libBrowser.a
	$(CC) -o $(OBJDIR)properties$(EXEEXT) $(properties_OBJS) $(properties_LDFLAGS)

view_OBJS = $(OBJDIR)view.o
view_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
view_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -L$(OBJDIR)lib -Wl,-rpath,$(PREFIX)/lib -lBrowser

$(OBJDIR)view$(EXEEXT): $(view_OBJS) $(OBJDIR)lib/libBrowser.a
	$(CC) -o $(OBJDIR)view$(EXEEXT) $(view_OBJS) $(view_LDFLAGS)

$(OBJDIR)copy.o: copy.c ../include/Browser/vfs.h
	$(CC) $(copy_CFLAGS) -o $(OBJDIR)copy.o -c copy.c

$(OBJDIR)delete.o: delete.c ../include/Browser/vfs.h
	$(CC) $(delete_CFLAGS) -o $(OBJDIR)delete.o -c delete.c

$(OBJDIR)move.o: move.c ../include/Browser/vfs.h
	$(CC) $(move_CFLAGS) -o $(OBJDIR)move.o -c move.c

$(OBJDIR)open.o: open.c
	$(CC) $(open_CFLAGS) -o $(OBJDIR)open.o -c open.c

$(OBJDIR)properties.o: properties.c ../include/Browser.h browser/browser.h common.c
	$(CC) -D PREFIX=\"$(PREFIX)\" $(properties_CFLAGS) -o $(OBJDIR)properties.o -c properties.c

$(OBJDIR)view.o: view.c browser/browser.h common.c
	$(CC) $(view_CFLAGS) -o $(OBJDIR)view.o -c view.c

clean:
	@for i in $(SUBDIRS); do (cd "$$i" && \
		if [ -n "$(OBJDIR)" ]; then \
		$(MAKE) OBJDIR="$(OBJDIR)$$i/" clean; \
		else $(MAKE) clean; fi) || exit; done
	$(RM) -- $(copy_OBJS) $(delete_OBJS) $(move_OBJS) $(open_OBJS) $(properties_OBJS) $(view_OBJS)

distclean:
	@for i in $(SUBDIRS); do (cd "$$i" && \
		if [ -n "$(OBJDIR)" ]; then \
		$(MAKE) OBJDIR="$(OBJDIR)$$i/" distclean; \
		else $(MAKE) distclean; fi) || exit; done
	$(RM) -- $(copy_OBJS) $(delete_OBJS) $(move_OBJS) $(open_OBJS) $(properties_OBJS) $(view_OBJS)
	$(RM) -- $(TARGETS)

install: all
	@for i in $(SUBDIRS); do (cd "$$i" && \
		if [ -n "$(OBJDIR)" ]; then \
		$(MAKE) OBJDIR="$(OBJDIR)$$i/" install; \
		else $(MAKE) install; fi) || exit; done
	$(MKDIR) $(DESTDIR)$(BINDIR)
	$(INSTALL) -m 0755 $(OBJDIR)copy$(EXEEXT) $(DESTDIR)$(BINDIR)/copy$(EXEEXT)
	$(MKDIR) $(DESTDIR)$(BINDIR)
	$(INSTALL) -m 0755 $(OBJDIR)delete$(EXEEXT) $(DESTDIR)$(BINDIR)/delete$(EXEEXT)
	$(MKDIR) $(DESTDIR)$(BINDIR)
	$(INSTALL) -m 0755 $(OBJDIR)move$(EXEEXT) $(DESTDIR)$(BINDIR)/move$(EXEEXT)
	$(MKDIR) $(DESTDIR)$(BINDIR)
	$(INSTALL) -m 0755 $(OBJDIR)open$(EXEEXT) $(DESTDIR)$(BINDIR)/open$(EXEEXT)
	$(MKDIR) $(DESTDIR)$(BINDIR)
	$(INSTALL) -m 0755 $(OBJDIR)properties$(EXEEXT) $(DESTDIR)$(BINDIR)/properties$(EXEEXT)
	$(MKDIR) $(DESTDIR)$(BINDIR)
	$(INSTALL) -m 0755 $(OBJDIR)view$(EXEEXT) $(DESTDIR)$(BINDIR)/view$(EXEEXT)

uninstall:
	@for i in $(SUBDIRS); do (cd "$$i" && \
		if [ -n "$(OBJDIR)" ]; then \
		$(MAKE) OBJDIR="$(OBJDIR)$$i/" uninstall; \
		else $(MAKE) uninstall; fi) || exit; done
	$(RM) -- $(DESTDIR)$(BINDIR)/copy$(EXEEXT)
	$(RM) -- $(DESTDIR)$(BINDIR)/delete$(EXEEXT)
	$(RM) -- $(DESTDIR)$(BINDIR)/move$(EXEEXT)
	$(RM) -- $(DESTDIR)$(BINDIR)/open$(EXEEXT)
	$(RM) -- $(DESTDIR)$(BINDIR)/properties$(EXEEXT)
	$(RM) -- $(DESTDIR)$(BINDIR)/view$(EXEEXT)

.PHONY: all subdirs clean distclean install uninstall
