CXX = $(EXTRA) $(shell wx-config --cxx)
WXFL = -lwx_gtk_xrc-2.4 $(shell wx-config --libs)
WXFC = $(shell wx-config --cxxflags)
OBJ = main.o maindlg.o pkginfo.o pkgprop.o pkgtool.o intcheck.o workdlg.o helpdlg.o about.o
ifneq ($(SLACKGRADE),no)
	SLGR_DIR = ../util/slackgrade
	SLGR_SRC = ../util/slackgrade/src
	SLGR_H = $(SLGR_SRC)/slackgrade.h
	SLGR_RULE = slackgrade.o svrconf.o sgabout.o sgproxy.o sgblist.o
	SLGR_OBJ = $(SLGR_RULE)
	SLGR_FLAG = -D_SLACKGRADE_EMBEDDED_ -D_XPKGTOOL_HOST_
endif

xpkgtool: $(OBJ) $(SLGR_RULE)
ifeq ($(SHARED),yes)
	$(CXX) -Wall -o ../bin/xpkgtool $(WXFL) $(OBJ) $(SLGR_OBJ)
else
	$(CXX) -Wall -o ../bin/xpkgtool $(OBJ) $(SLGR_OBJ) $(WXFL)
endif
	
main.o: main.cpp main.h maindlg.h common.h
	$(CXX) -Wall -O2 -pthread $(SLGR_FLAG) $(WXFC) -o main.o -c main.cpp

maindlg.o: maindlg.cpp maindlg.h pkginfo.h pkgprop.h pkgtool.h intcheck.h workdlg.h helpdlg.h common.h $(SLGR_H)
	$(CXX) -Wall -O2 -pthread $(SLGR_FLAG) $(WXFC) -o maindlg.o -c maindlg.cpp

pkginfo.o: pkginfo.cpp pkginfo.h common.h
	$(CXX) -Wall -O2 -pthread $(SLGR_FLAG) $(WXFC) -o pkginfo.o -c pkginfo.cpp

pkgprop.o: pkgprop.cpp pkgprop.h pkginfo.h common.h
	$(CXX) -Wall -O2 -pthread $(SLGR_FLAG) $(WXFC) -o pkgprop.o -c pkgprop.cpp
	
pkgtool.o: pkgtool.cpp pkgtool.h common.h
	$(CXX) -Wall -O2 -pthread $(SLGR_FLAG) $(WXFC) -o pkgtool.o -c pkgtool.cpp

intcheck.o: intcheck.cpp intcheck.h
	$(CXX) -Wall -O2 -pthread $(SLGR_FLAG) $(WXFC) -o intcheck.o -c intcheck.cpp

workdlg.o: workdlg.cpp workdlg.h
	$(CXX) -Wall -O2 -pthread $(SLGR_FLAG) $(WXFC) -o workdlg.o -c workdlg.cpp

helpdlg.o: helpdlg.cpp helpdlg.h
	$(CXX) -Wall -O2 -pthread $(SLGR_FLAG) $(WXFC) -o helpdlg.o -c helpdlg.cpp
	
about.o: about.cpp about.h
	$(CXX) -Wall -O2 -pthread $(SLGR_FLAG) $(WXFC) -o about.o -c about.cpp

slackgrade.o: $(SLGR_SRC)/slackgrade.cpp $(SLGR_SRC)/slackgrade.h $(SLGR_SRC)/svrconf.h $(SLGR_SRC)/common.h pkginfo.h
	$(CXX) -Wall -O2 -pthread $(SLGR_FLAG) $(WXFC) -o slackgrade.o -c $(SLGR_SRC)/slackgrade.cpp

svrconf.o: $(SLGR_SRC)/svrconf.cpp $(SLGR_SRC)/svrconf.h $(SLGR_SRC)/common.h
	$(CXX) -Wall -O2 -pthread $(SLGR_FLAG) $(WXFC) -o svrconf.o -c $(SLGR_SRC)/svrconf.cpp

sgabout.o: $(SLGR_SRC)/sgabout.cpp $(SLGR_SRC)/sgabout.h
	$(CXX) -Wall -O2 -pthread $(SLGR_FLAG) $(WXFC) -o sgabout.o -c $(SLGR_SRC)/sgabout.cpp

sgproxy.o: $(SLGR_SRC)/sgproxy.cpp $(SLGR_SRC)/sgproxy.h $(SLGR_SRC)/common.h
	$(CXX) -Wall -O2 -pthread $(SLGR_FLAG) $(WXFC) -o sgproxy.o -c $(SLGR_SRC)/sgproxy.cpp

sgblist.o: $(SLGR_SRC)/sgblist.cpp $(SLGR_SRC)/sgblist.h $(SLGR_SRC)/common.h
	$(CXX) -Wall -O2 -pthread $(SLGR_FLAG) $(WXFC) -o sgblist.o -c $(SLGR_SRC)/sgblist.cpp

install:
	cp ../bin/xpkgtool /usr/local/bin
	cp -r ../share/xpkgtool /usr/local/share
ifneq ($(SLACKGRADE),no)
	cp -r $(SLGR_DIR)/share/slackgrade /usr/local/share/xpkgtool
	rm /usr/local/share/xpkgtool/slackgrade/about/index.html
endif
	chown root /usr/local/share/xpkgtool/*

uninstall:
	rm -f /usr/local/bin/xpkgtool
	rm -rf /usr/local/share/xpkgtool

clean:
	rm -f *.o

cleanall:
	rm -f *.o ../bin/xpkgtool

pack:
	strip ../bin/xpkgtool
	upx -9 ../bin/xpkgtool
