#
# Atol file manager plugin (Linux/Gtk makefile)
#
# USAGE:
# 1. type "make" to create program binary
#

# check these defines

#
# other settings
#

#DEBUG=-g
CXX=gcc
CFLAGS= -I ../
FLAGS= $(CFLAGS)

# define compile/link command line with flags
CC=$(CXX) $(DEBUG) -fPIC -O2 -MMD -pthread -Wall -D_REENTRANT
LD=$(CXX) $(DEBUG) -fPIC

#
# define default project to build
#
.PHONY: all

all: arjlib

#
# list of all objects to build (atol dependency)
#

SRCPATH=.

OBJS= ArjLib.o ArchiveInfo.o ArjUnpack.o unarj.o environ.o decode.o

# link program binary
# mark symbols with dllexport in source, or try -Wl,--export-all
arjlib: $(OBJS)
	$(LD) $(OBJS) -o ArjLib.atp $(FLAGS) $(LDFLAGS) -shared -fpic --export-all --enable-auto-import

# compile individual objects
# TOFIX?: use pattern rules (how to adjust for possible multiple source directories?)

environ.o: $(SRCPATH)/environ.cpp
	$(CC) $(FLAGS) -c $(SRCPATH)/environ.cpp -o environ.o

decode.o: $(SRCPATH)/decode.cpp
	$(CC) $(FLAGS) -c $(SRCPATH)/decode.cpp -o decode.o

unarj.o: $(SRCPATH)/unarj.cpp $(SRCPATH)/unarj.h
	$(CC) $(FLAGS) -c $(SRCPATH)/unarj.cpp -o unarj.o

ArjUnpack.o: $(SRCPATH)/ArjUnpack.cpp $(SRCPATH)/ArjUnpack.h
	$(CC) $(FLAGS) -c $(SRCPATH)/ArjUnpack.cpp -o ArjUnpack.o

ArchiveInfo.o: $(SRCPATH)/ArchiveInfo.cpp $(SRCPATH)/ArchiveInfo.h
	$(CC) $(FLAGS) -c $(SRCPATH)/ArchiveInfo.cpp -o ArchiveInfo.o

ArjLib.o: $(SRCPATH)/ArjLib.cpp $(SRCPATH)/ArjLib.h
	$(CC) $(FLAGS) -c $(SRCPATH)/ArjLib.cpp -o ArjLib.o

#
# clean up the mess
#
.PHONY : clean

clean:
	@echo cleaning up
	rm -f *.o *.d *.atp

#
# help printout
#
.PHONY : help

help:
	@echo Usage:
	@echo make           - builds application binaries
	@echo make help      - prints this help

