TARGET = futurerestore_tool
INSTALLTARGET = futurerestore
CXX = g++
CC = gcc
INCLUDE += -I futurerestore -I /opt/local/include -I external/idevicerestore/src -I external/tsschecker/tsschecker -I external/img4tool/img4tool
CFLAGS += $(INCLUDE) -Wall -std=c11 -D HAVE_CONFIG_H=1 
CXXFLAGS += $(INCLUDE) -Wall -std=c++11

LDFLAGS += -lirecovery -limobiledevice -lcrypto -lcurl -lplist -lc -lc++ -lzip -lpartialzip-1.0 -lz

OBJECTS += futurerestore.o
SRC_DIR = futurerestore
OBJECTS_COMBINED = $(OBJECTS:%.o=$(SRC_DIR)/%.o)

DEPOBJECTS_TSSCHECKER += tsschecker.o jsmn.o download.o tss.o
DEPOBJECTS_IMG4TOOL += img4tool.o img4.o
DEPOBJECTS_IDEVICERESTORE += common.o img3.o img4.o download.o asr.o fdr.o fls.o dfu.o ipsw.o limera1n.o locking.o mbn.o normal.o recovery.o restore.o socket.o thread.o

PATH_TSSCHECKER = external/tsschecker/tsschecker
PATH_IMG4TOOL = external/img4tool/img4tool
PATH_IDEVICERESTORE = external/idevicerestore/src

DEPOBJECTS_TSSCHECKER_COMBINED = $(DEPOBJECTS_TSSCHECKER:%.o=$(PATH_TSSCHECKER)/%.o)
DEPOBJECTS_IMG4TOOL_COMBINED = $(DEPOBJECTS_IMG4TOOL:%.o=$(PATH_IMG4TOOL)/%.o)
DEPOBJECTS_IDEVICERESTORE_COMBINED = $(DEPOBJECTS_IDEVICERESTORE:%.o=$(PATH_IDEVICERESTORE)/%.o)


all : $(TARGET)


ALLDEPS = $(DEPOBJECTS_TSSCHECKER_COMBINED) $(DEPOBJECTS_IMG4TOOL_COMBINED) $(DEPOBJECTS_IDEVICERESTORE_COMBINED) $(PATH_IDEVICERESTORE)/idevicerestore.o $(OBJECTS_COMBINED)
$(TARGET) : $(ALLDEPS)
		$(CXX) $(CXXFLAGS) $(LDFLAGS) $(ALLDEPS) $(SRC_DIR)/main.cpp -o $(TARGET)
		@echo "Successfully built $(TARGET)"

$(OBJECTS_COMBINED) : $(OBJECTS_COMBINED:%.o=%.cpp)
		$(CXX) $(CXXFLAGS)  $< -c -o $@

$(DEPOBJECTS_TSSCHECKER_COMBINED) :
		CFLAGS='-D HAVE_CONFIG_H=1 -I ../../futurerestore' make -C external/tsschecker $(DEPOBJECTS_TSSCHECKER:%.o=tsschecker/%.o)

$(DEPOBJECTS_IDEVICERESTORE_COMBINED) : $(DEPOBJECTS_IDEVICERESTORE_COMBINED:%.o=%.c)
		$(CC) $(CFLAGS)  $(@:%.o=%.c) -c -o $@

$(PATH_IDEVICERESTORE)/idevicerestore.o : $(PATH_IDEVICERESTORE)/idevicerestore.c
		$(CC) $(CFLAGS) -c $(PATH_IDEVICERESTORE)/idevicerestore.c -o $(PATH_IDEVICERESTORE)/idevicerestore.o

$(PATH_IMG4TOOL)/img4tool.o :
		CFLAGS='-D HAVE_CONFIG_H=1 -I ../../futurerestore' make -C external/img4tool objects

install :
		cp $(TARGET) /usr/local/bin/$(INSTALLTARGET)
		@echo "Installed $(INSTALLTARGET)"
clean :
		make -C external/tsschecker clean
		make -C external/img4tool clean
		rm -rf external/idevicerestore/src/*.o
		rm -rf futurerestore/*.o $(TARGET)
