#  fotocx Makefile
#
#  Following commands choose compiler and debug options
#  export CXX=g++          gnu compiler
#  export CXX=clang++      clang compiler
#  export DEBUG=x          debug build with address checking

CXXFLAGS += -fpermissive -Wno-write-strings 
CXXFLAGS += -Wno-deprecated-declarations ## champlain-tile.h broken since 2020
CXXFLAGS += -Wno-class-memaccess ## new restriction Oct 2023
CXXFLAGS += -fno-omit-frame-pointer ## for backtrace reliability

ifeq ($(CXX), clang++)                                #  CLANG
   ifdef DEBUG
      CXXFLAGS += -Wall -g -O0 -fsanitize=address -Wno-stringop-truncation
      LDFLAGS += -fsanitize=address
   else
      CXXFLAGS += -Wall -g -O2
   endif
else                                                  #  GCC
   ifdef DEBUG
      CXXFLAGS += -Wall -g2 -rdynamic -O0 -fsanitize=address            \
                  -Wno-format-truncation -Wno-stringop-truncation
      LDFLAGS += -fsanitize=address
   else
      CXXFLAGS += -Wall -g2 -rdynamic -O2                               \
                  -Wno-format-truncation -Wno-stringop-truncation
   endif
endif

PKG_CONFIG ?= pkg-config

CFLAGS = $(CXXFLAGS) $(CPPFLAGS) -c                                              \
         `$(PKG_CONFIG) --cflags gtk+-3.0 --cflags champlain-gtk-0.12`

LIBS = `$(PKG_CONFIG) --libs gtk+-3.0`                                           \
         -lrt -lpthread -ltiff -lpng -ljpeg                                      \
         -lclutter-1.0 -lclutter-gtk-1.0                                         \
         -lchamplain-0.12 -lchamplain-gtk-0.12

ALLFILES = fotocx.o f.widgets.o f.file.o f.gallery.o f.albums.o f.select.o       \
           f.meta.o f.edit.o f.repair.o f.refine.o f.effects.o f.warp.o          \
           f.combine.o f.mashup.o f.tools.o f.batch.o f.pixmap.o zfuncs.o

fotocx: $(ALLFILES)
	$(CXX) $(LDFLAGS) $(ALLFILES) $(LIBS) -o fotocx \

fotocx.o: fotocx.cc fotocx.h
	$(CXX) fotocx.cc $(CFLAGS) -o fotocx.o \

f.widgets.o: f.widgets.cc  fotocx.h
	$(CXX) f.widgets.cc $(CFLAGS) \

f.file.o: f.file.cc  fotocx.h
	$(CXX) f.file.cc $(CFLAGS) \

f.gallery.o: f.gallery.cc  fotocx.h
	$(CXX) f.gallery.cc $(CFLAGS) \

f.albums.o: f.albums.cc  fotocx.h
	$(CXX) f.albums.cc $(CFLAGS) \

f.select.o: f.select.cc  fotocx.h
	$(CXX) f.select.cc $(CFLAGS) \

f.meta.o: f.meta.cc  fotocx.h
	$(CXX) f.meta.cc $(CFLAGS) \

f.edit.o: f.edit.cc  fotocx.h
	$(CXX) f.edit.cc $(CFLAGS) \

f.repair.o: f.repair.cc  fotocx.h
	$(CXX) f.repair.cc $(CFLAGS) \

f.refine.o: f.refine.cc  fotocx.h
	$(CXX) f.refine.cc $(CFLAGS) \

f.effects.o: f.effects.cc  fotocx.h
	$(CXX) f.effects.cc $(CFLAGS) \

f.warp.o: f.warp.cc  fotocx.h
	$(CXX) f.warp.cc $(CFLAGS) \

f.combine.o: f.combine.cc  fotocx.h
	$(CXX) f.combine.cc $(CFLAGS) \

f.mashup.o: f.mashup.cc  fotocx.h
	$(CXX) f.mashup.cc $(CFLAGS) \

f.tools.o: f.tools.cc  fotocx.h
	$(CXX) f.tools.cc $(CFLAGS) \

f.batch.o: f.batch.cc  fotocx.h
	$(CXX) f.batch.cc $(CFLAGS) \

f.pixmap.o: f.pixmap.cc  fotocx.h
	$(CXX) f.pixmap.cc $(CFLAGS) \

zfuncs.o: zfuncs.cc  zfuncs.h
	$(CXX) zfuncs.cc $(CFLAGS) \

ifdef DEBUG
	@echo DEBUG BUILD
endif

# install application files in standard locations        24.21
PREFIX ?= /usr/local
BINDIR = $(PREFIX)/bin
MENUDIR = $(PREFIX)/share/applications
DOCDIR = $(PREFIX)/share/doc/fotocx
MANDIR = $(PREFIX)/share/man/man1
DATADIR = $(PREFIX)/share/fotocx
ICONDIR = $(PREFIX)/share/icons
METAINFODIR = $(PREFIX)/share/metainfo
                                         
install: fotocx uninstall
	mkdir -p  $(DESTDIR)$(BINDIR)
	mkdir -p  $(DESTDIR)$(MENUDIR)
	mkdir -p  $(DESTDIR)$(DOCDIR)
	mkdir -p  $(DESTDIR)$(MANDIR)
	mkdir -p  $(DESTDIR)$(DATADIR)
	mkdir -p  $(DESTDIR)$(ICONDIR)
	mkdir -p  $(DESTDIR)$(METAINFODIR)

	cp -f fotocx $(DESTDIR)$(BINDIR)
	cp -f fotocx.desktop $(DESTDIR)$(MENUDIR)
	cp -f -R  doc/* $(DESTDIR)$(DOCDIR)
	gzip -fk -9 man/fotocx.man
	mv -f man/fotocx.man.gz $(DESTDIR)$(MANDIR)/fotocx.1.gz
	cp -f -R  data $(DESTDIR)$(DATADIR)
	cp -f -R  images $(DESTDIR)$(DATADIR)
	cp -f fotocx.png $(DESTDIR)$(ICONDIR)
	cp -f metainfo/* $(DESTDIR)$(METAINFODIR)

uninstall:
	rm -f     $(DESTDIR)$(BINDIR)/fotocx*
	rm -f     $(DESTDIR)$(MENUDIR)/fotocx*
	rm -f -R  $(DESTDIR)$(DOCDIR)
	rm -f     $(DESTDIR)$(MANDIR)/fotocx*
	rm -f -R  $(DESTDIR)$(DATADIR)
	rm -f     $(DESTDIR)$(ICONDIR)/fotocx*
	rm -f     $(DESTDIR)$(METAINFODIR)/kornelix.fotocx*

clean:
	rm -f  fotocx
	rm -f  *.o

