#Compilers
CC = gcc -Wno-deprecated  -Wno-deprecated-declarations -Wunused -fcommon
CXX = g++
FC = gfortran
#Compiler flags
GTKC = `pkg-config --cflags gtk+-2.0`
FORC = -ffree-form
ROOTC = `root-config --cflags`
#Linker flags
GTKL = `pkg-config --libs gtk+-2.0 gthread-2.0` 
MATHL = -lm
ROOTL = `root-config --libs`
#Directories
EXEDIR = ../
all: batch.o bulk_calib.o calib.o check_setup.o control.o create_dir.o exogam.o feedback.o fit.o \
freedom.o help.o init.o iospec.o macro.o main.o main_menu.o offline.o open.o \
parse.o plot1.o plot2.o postscript.o prefs.o radware_io.o readfile.o rewrite.o \
root_io.o rw_setup.o safety.o scalers.o screen.o setup.o simulate.o themes.o \
user.o useful.o util.o viewlog.o zlsgls.o ascii2d.o crash.o mkword.o \
zmass.o $(EXEDIR)lamps $(EXEDIR)ascii2d $(EXEDIR)crash \
$(EXEDIR)mkword $(EXEDIR)zmass
#Compilation of all lamps source
batch.o: batch.c lamps.h
	$(CC) -c $(GTKC) batch.c
bulk_calib.o: bulk_calib.c lamps.h common.h
	$(CC) -c $(GTKC) bulk_calib.c
calib.o: calib.c lamps.h
	$(CC) -c $(GTKC) calib.c
check_setup.o: check_setup.c lamps.h
	$(CC) -c $(GTKC) check_setup.c	
control.o: control.c lamps.h common.h
	$(CC) -c $(GTKC) control.c
create_dir.o: create_dir.c lamps.h
	$(CC) -c $(GTKC) create_dir.c
exogam.o: exogam.c lamps.h
	$(CC) -c $(GTKC) exogam.c
feedback.o: feedback.c lamps.h
	$(CC) -c $(GTKC) feedback.c
fit.o: fit.c lamps.h
	$(CC) -c $(GTKC) fit.c
freedom.o: freedom.c lamps.h
	$(CC) -c $(GTKC) freedom.c
help.o: help.c
	$(CC) -c $(GTKC) help.c
init.o: init.c lamps.h
	$(CC) -c $(GTKC) init.c
iospec.o: iospec.c lamps.h
	$(CC) -c $(GTKC) iospec.c 
macro.o: macro.c lamps.h
	$(CC) -c $(GTKC) macro.c
main.o: main.c lamps.h common.h
	$(CC) -c $(GTKC) main.c
main_menu.o: main_menu.c lamps.h
	$(CC) -c $(GTKC) main_menu.c
offline.o: offline.c lamps.h
	$(CC) -c $(GTKC) offline.c
open.o: open.c lamps.h
	$(CC) -c $(GTKC) open.c
parse.o: parse.c lamps.h
	$(CC) -c $(GTKC) parse.c
plot1.o: plot1.c lamps.h
	$(CC) -c $(GTKC) plot1.c
plot2.o: plot2.c lamps.h
	$(CC) -c $(GTKC) plot2.c
postscript.o: postscript.c lamps.h
	$(CC) -c $(GTKC) postscript.c
prefs.o: prefs.c lamps.h
	$(CC) -c $(GTKC) prefs.c
radware_io.o: radware_io.F constants.h
	$(FC) -c $(FORC) radware_io.F
readfile.o: readfile.c lamps.h
	$(CC) -c $(GTKC) readfile.c
rewrite.o: rewrite.c lamps.h common.h
	$(CC) -c $(GTKC) rewrite.c
root_io.o: root_io.cc
#	$(CXX) -c $(ROOTC) -std=c++11 root_io.cc
#	$(CXX) -c $(ROOTC) -std=c++17 root_io.cc
	$(CXX) -c $(ROOTC) root_io.cc
root_setup.o: root_setup.c lamps.h
	$(CC) -c $(GTKC) root_setup.c
rw_setup.o: rw_setup.c lamps.h
	$(CC) -c $(GTKC) rw_setup.c
safety.o: safety.c lamps.h
	$(CC) -c $(GTKC) safety.c
scalers.o: scalers.c lamps.h
	$(CC) -c $(GTKC) scalers.c
screen.o: screen.c lamps.h
	$(CC) -c $(GTKC) screen.c
setup.o: setup.c lamps.h
	$(CC) -c $(GTKC) setup.c
simulate.o: simulate.c lamps.h
	$(CC) -c $(GTKC) simulate.c
themes.o: themes.c lamps.h
	$(CC) -c $(GTKC) themes.c
user.o: user.F constants.h
	$(FC) -c $(FORC) user.F
useful.o: useful.c lamps.h
	$(CC) -c $(GTKC) useful.c
util.o: util.c lamps.h
	$(CC) -c $(GTKC) util.c
viewlog.o: viewlog.c lamps.h
	$(CC) -c $(GTKC) viewlog.c
zlsgls.o: zlsgls.c lamps.h
	$(CC) -c $(GTKC) zlsgls.c
#Compilation for executables other than lamps
ascii2d.o: ascii2d.c useful.c lamps.h
	$(CC) -c $(GTKC) ascii2d.c
vmetest.o: vmetest.c lamps.h
	$(CC) -c $(GTKC) vmetest.c
crash.o: crash.c 
	$(CC) -c $(GTKC) crash.c
mkword.o: mkword.c
	$(CC) -c $(GTKC) mkword.c
zmass.o: zmass.c useful.c lamps.h
	$(CC) -c $(GTKC) zmass.c
#Link-build of executables
$(EXEDIR)lamps: batch.o bulk_calib.o calib.o check_setup.o control.o create_dir.o exogam.o \
feedback.o fit.o freedom.o help.o init.o iospec.o macro.o main.o main_menu.o \
offline.o open.o parse.o plot1.o plot2.o postscript.o prefs.o radware_io.o \
readfile.o rewrite.o root_io.o root_setup.o rw_setup.o safety.o scalers.o screen.o setup.o \
simulate.o themes.o user.o useful.o util.o viewlog.o zlsgls.o
	$(FC) batch.o bulk_calib.o calib.o check_setup.o control.o create_dir.o exogam.o feedback.o fit.o freedom.o \
help.o init.o iospec.o macro.o main.o main_menu.o offline.o open.o parse.o \
plot1.o plot2.o postscript.o prefs.o radware_io.o readfile.o rewrite.o \
root_io.o root_setup.o rw_setup.o safety.o scalers.o screen.o setup.o simulate.o themes.o \
user.o useful.o util.o viewlog.o zlsgls.o $(GTKL) $(MATHL) $(ROOTL) -lstdc++ -lc -o $(EXEDIR)lamps
$(EXEDIR)ascii2d: ascii2d.o useful.o open.o
	$(CC) ascii2d.o useful.o open.o $(GTKL) -o $(EXEDIR)ascii2d
$(EXEDIR)crash: crash.o
	$(CC) crash.o $(GTKL) -o $(EXEDIR)crash
$(EXEDIR)mkword: mkword.o useful.o
	$(CC) mkword.o useful.o $(GTKL) -o $(EXEDIR)mkword
$(EXEDIR)zmass: zmass.o useful.o open.o
	$(CC) zmass.o useful.o open.o $(GTKL) $(MATHL) -o $(EXEDIR)zmass

