# atari/Makefile.in, the source file for atari/Makefile, is
#
# Copyright (c) 2019-2023 Thorsten Otto

CROSS_PREFIX=m68k-atari-mint-

CC = $(CROSS_PREFIX)gcc

AR = $(CROSS_PREFIX)ar
RANLIB = $(CROSS_PREFIX)ranlib
STRIP = $(CROSS_PREFIX)strip
AWK = awk

srcdir = .
top_srcdir = ..

CPU_CFLAGS=-m68020-60
CFLAGS=-O2 -Wall -W -fomit-frame-pointer -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wdeclaration-after-statement -Werror $(CPU_CFLAGS)
CPPFLAGS = -I. -I.. -I$(srcdir)/..
CPPFLAGS += -DHAVE_CONFIG_H -I$(top_srcdir)/libexif
SFLAGS = $(CFLAGS) -DEXIF_SLB -DBUILDING_LIBEXIF
# slbexec.S must also be compilabe by pure-c, so we cannot preprocess it
# figure out the symbol prefix here
USER_LABEL_PREFIX := $(shell echo '__USER_LABEL_PREFIX__' | $(CC) -E -P - 2>/dev/null)
ASFLAGS = -D_BasPag=$(USER_LABEL_PREFIX)_base -Wa,--register-prefix-optional

LDFLAGS= -s
LDSHARED=$(CC) -s -nostartfiles -Wl,--mprg-flags,0x0f

STATICLIB=libexif.a
SHAREDLIB=exif.slb
IMPORTLIB=libexif.slb.a
ALLLIBS=$(STATICLIB) $(SHAREDLIB) $(IMPORTLIB)

ARFLAGS=rcs
LDSHAREDLIBC= -nostdlib -lgcc
TAR=tar
SHELL=/bin/sh
EXE=

prefix = /usr
exec_prefix = ${prefix}
libdir = ${exec_prefix}/lib
bindir = ${exec_prefix}/bin
sharedlibdir = ${prefix}/../mint/slb
includedir = ${prefix}/include
libexifincludedir = ${includedir}/libexif

VPATH += $(top_srcdir)/libexif
VPATH += $(top_srcdir)/libexif/canon
VPATH += $(top_srcdir)/libexif/fuji
VPATH += $(top_srcdir)/libexif/olympus
VPATH += $(top_srcdir)/libexif/pentax


OBJS = \
	exifbyte.o	\
	exifcont.o		\
	exifdata.o		\
	exifent.o		\
	exifform.o		\
	exififd.o		\
	exifload.o		\
	exiflog.o		\
	exifmem.o		\
	exifnote.o	\
	exiftag.o		\
	exifutil.o \
	candata.o \
	canent.o \
	cantag.o \
	fujient.o \
	fujidata.o \
	fujitag.o \
	olyment.o \
	olymdata.o \
	olymtag.o \
	pentent.o \
	pentdata.o \
	penttag.o \
	$(empty)

PIC_OBJS = header.lao libinit.lao $(OBJS:.o=.lao)

GEN_IMP_OBJS = $(foreach num,$(shell seq 0 113),imp_$(num).o)

IMP_OBJS = libptr.o libopen.o libclose.o slbload.o slbexec.o slbids.o $(GEN_IMP_OBJS)

all: static shared

static: $(STATICLIB) 

SHARED_EXES = ../exif/exif

shared: .genimpsources $(SHAREDLIB) $(IMPORTLIB)

.genimpsources: $(srcdir)/genimp.awk $(srcdir)/exports.h
	$(AWK) -f $(srcdir)/genimp.awk $(srcdir)/exports.h
	touch $@

$(GEN_IMP_OBJS:.o=.c): .genimpsources

%.o: %.c
	$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@

%.lao: %.c
	$(CC) $(SFLAGS) $(CPPFLAGS) -c $< -o $@

slbexec.o: slbexec.S
	$(CC) $(CFLAGS) $(CPPFLAGS) $(ASFLAGS) -c -o $@ $<

check: test

test: all teststatic testshared

teststatic: static

testshared: shared

$(STATICLIB): $(OBJS)
	$(RM) $@
	$(AR) $(ARFLAGS) $@ $^

$(IMPORTLIB): $(IMP_OBJS)
	$(RM) $@
	$(AR) $(ARFLAGS) $@ $^

$(IMP_OBJS): lib_imp.h exports.h .genimpsources
libopen.o libclose.o: libstrct.h vernum.h

OTHER_SHAREDLIBS =

header.lao libinit.lao: $(srcdir)/header.S vernum.h exports.h symbols.h .genimpsources

vernum.h: $(top_srcdir)/config.h
	echo "#define EXIF_VERSION "`sed -n 's/.*define VERSION "\([0-9]*\).\([0-9]*\).\([0-9]*\)".*/\3 \2 \1 1000 * + 1000 * + p/p' $< | dc` > $@

$(SHAREDLIB): $(PIC_OBJS)
	$(LDSHARED) $(SFLAGS) $(CFLAGS) $^ -o $@ $(OTHER_SHAREDLIBS) -lm $(LDSHAREDLIBC) $(LDFLAGS)
	stripex $@


$(PIC_OBJS): libslb.h libstrct.h


header.lao: header.S
	$(CC) $(SFLAGS) $(CPPFLAGS) -DSHAREDLIB=\"$(SHAREDLIB)\" -c -o $@ $<

libinit.lao: libinit.c
	$(CC) $(SFLAGS) $(CPPFLAGS) -c -o $@ $<



install-libs: all
	mkdir -p $(DESTDIR)$(exec_prefix)
	mkdir -p $(DESTDIR)$(libdir)
	mkdir -p $(DESTDIR)$(sharedlibdir)
	$(RM) $(DESTDIR)$(libdir)/$(STATICLIB)
	$(RM) $(DESTDIR)$(libdir)/$(IMPORTLIB)
	install -m 644 $(STATICLIB) $(IMPORTLIB) $(DESTDIR)$(libdir)
	$(RM) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIB)
	echo "install $(SHAREDLIB) $(DESTDIR)$(sharedlibdir)"
	install -m 755 $(SHAREDLIB) $(DESTDIR)$(sharedlibdir)

install: install-libs $(SHARED_EXES)
	@mkdir -p $(DESTDIR)$(libexifincludedir)
	@mkdir -p $(DESTDIR)$(includedir)/slb
	@mkdir -p $(DESTDIR)$(exec_prefix)/bin
	for i in exifbyte.h exifcont.h exiftype.h exifdata.h exifent.h exifform.h \
		exififd.h exifload.h exiflog.h exifmem.h exifnote.h exiftag.h exifutil.h; do \
		install -m 644 $(top_srcdir)/libexif/$$i $(DESTDIR)$(libexifincludedir); \
	done
	install -m 644 $(srcdir)/slb/exif.h $(srcdir)/slb/slbids.h $(DESTDIR)$(includedir)/slb
	install -m 755 $(SHARED_EXES) $(DESTDIR)$(exec_prefix)/bin

install-links:
	ln -s exifbyte.h $(DESTDIR)$(libexifincludedir)/exif-byte-order.h
	ln -s exifcont.h $(DESTDIR)$(libexifincludedir)/exif-content.h
	ln -s exifdata.h $(DESTDIR)$(libexifincludedir)/exif-data.h
	ln -s exiftype.h $(DESTDIR)$(libexifincludedir)/exif-data-type.h
	ln -s exifent.h  $(DESTDIR)$(libexifincludedir)/exif-entry.h
	ln -s exifform.h $(DESTDIR)$(libexifincludedir)/exif-format.h
	ln -s exififd.h  $(DESTDIR)$(libexifincludedir)/exif-ifd.h
	ln -s exifload.h $(DESTDIR)$(libexifincludedir)/exif-loader.h
	ln -s exiflog.h  $(DESTDIR)$(libexifincludedir)/exif-log.h
	ln -s exifmem.h  $(DESTDIR)$(libexifincludedir)/exif-mem.h
	ln -s exifnote.h $(DESTDIR)$(libexifincludedir)/exif-mnote-data.h
	ln -s exiftag.h  $(DESTDIR)$(libexifincludedir)/exif-tag.h
	ln -s exifutil.h $(DESTDIR)$(libexifincludedir)/exif-utils.h

install-strip: install
	$(STRIP) -g -x $(DESTDIR)$(libdir)/$(STATICLIB)
	$(RANLIB) $(DESTDIR)$(libdir)/$(STATICLIB)
	$(STRIP) -g -x $(DESTDIR)$(libdir)/$(IMPORTLIB)
	$(RANLIB) $(DESTDIR)$(libdir)/$(IMPORTLIB)
	$(STRIP) $(DESTDIR)$(exec_prefix)/bin/exif$(EXE)

bindist:
	rm -rf /tmp/t/exif
	$(MAKE) -C .. clean
	$(MAKE) DESTDIR=/tmp/t/exif PUREC=/windows/c/atari/pc/lib allbindist

allbindist:
	$(MAKE) clean
	$(MAKE) -C ../exif clean
	$(MAKE) -j8 CPU_CFLAGS="-m68020-60"
	$(MAKE) libdir="$(libdir)/m68020-60" sharedlibdir=$(sharedlibdir)/020 install-strip
	mv $(DESTDIR)$(bindir)/exif $(DESTDIR)/../exif-020
	$(MAKE) clean
	$(MAKE) -C ../exif clean
	$(MAKE) -j8 CPU_CFLAGS="-mcpu=5475"
	$(MAKE) libdir="$(libdir)/m5475" sharedlibdir=$(sharedlibdir)/v4e install-strip
	mv $(DESTDIR)$(bindir)/exif $(DESTDIR)/../exif-v4e
	$(MAKE) clean
	$(MAKE) -j8 CPU_CFLAGS="-m68000"
	$(MAKE) libdir="$(libdir)" sharedlibdir=$(sharedlibdir)/000 install-strip
	install -p -m 755 $(SHAREDLIB) $(DESTDIR)$(sharedlibdir)
	mv $(DESTDIR)$(bindir)/exif $(DESTDIR)/../exif-000
	$(MAKE) clean
	$(MAKE) -C ../exif clean
	install -d $(DESTDIR)/purec/include/libexif $(DESTDIR)/purec/include/slb $(DESTDIR)/purec/lib/000 $(DESTDIR)/purec/lib/020 $(DESTDIR)/purec/bin
	install -p -m 644 $(srcdir)/slb/exif.h $(srcdir)/slb/slbids.h $(DESTDIR)/purec/include/slb
	for i in exifbyte.h exifcont.h exiftype.h exifdata.h exifent.h exifform.h \
		exififd.h exifload.h exiflog.h exifmem.h exifnote.h exiftag.h exifutil.h; do \
		install -p -m 644 $(top_srcdir)/libexif/$$i $(DESTDIR)/purec/include/libexif; \
	done
	cd $(DESTDIR)/purec/include && cr2nl -R -d .
	install -p -m 644 $(PUREC)/000/exif.lib $(PUREC)/000/exifslb.lib $(DESTDIR)/purec/lib/000
	install -p -m 644 $(PUREC)/020/exif.lib $(PUREC)/020/exifslb.lib $(DESTDIR)/purec/lib/020
	install -p -m 755 $(PUREC)/000/exif.ttp $(DESTDIR)/purec/bin
	install -p -m 644 READ_SLB.txt $(DESTDIR)
	$(MAKE) install-links
	version=`sed -n 's/.*define VERSION "\([0-9]*\).\([0-9]*\).\([0-9]*\)".*/\1.\2.\3/p' $(top_srcdir)/config.h`; \
	shortversion=`echo $$version | tr -d '.'`; \
	( cd $(DESTDIR)/..; rm -f exif$${shortversion}.zip; zip -r exif$${shortversion}.zip `basename $(DESTDIR)`; ); \
	( cd $(DESTDIR)/..; rm -f exif$${shortversion}.tar.bz2; tar cvfj exif$${shortversion}.tar.bz2 `basename $(DESTDIR)`; ); \
	( cd $(top_srcdir); git archive --prefix=exif-$${version}-slb/ HEAD | bzip2 > $(DESTDIR)/../exif-$${version}-slb.tar.bz2; ); \
	for cpu in 020 v4e 000; do mv $(DESTDIR)/../exif-$$cpu $(DESTDIR)$(bindir); done; \
	ln -s exif-000 $(DESTDIR)$(bindir)/exif; \
	( cd $(DESTDIR); rm -f ../exif$${shortversion}-bin.tar.bz2; bindir=$(bindir); tar cvfj ../exif$${shortversion}-bin.tar.bz2 $${bindir#/} ; )

../exif/exif:
	$(MAKE) -C ../exif CFLAGS="$(CFLAGS)"

mostlyclean: clean
clean:
	$(RM) *.o *.lao *.a *.slb $(top_srcdir)/libexif/*.o $(top_srcdir)/libexif/*.lo \
		$(GEN_IMP_OBJS:.o=.c) \
		$(SHARED_EXES)
	$(RM) .dirstamp .genimpsources nexports.h

distdir:

maintainer-clean: distclean
distclean: clean docs
	-@$(RM) .DS_Store
	$(RM) vernum.h
