# TODO(5.2.2): add missing test to build all samples from installation folder:
#       /opt/limes/flam/sample/c
#       to verify this Makefile

FLAMDIR = /opt/limes/flam

CFLAGS = -g -Wall -I $(FLAMDIR)/include -I . -I $(FLAMDIR)/include/curl
LDFLAGS = -L $(FLAMDIR)/lib -pthread
CPP=g++
CC=gcc

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

%.o: %.cpp
	$(CPP) -c -D_GLIBCXX_USE_CXX11_ABI=0 $(CFLAGS) -o $@ $<

TARGETS = libfobjcld.so libfsegodb.so
ifeq ($(shell uname -s),OS/390)
TARGETS += cun4sis scflmusg
endif
TARGETS += flcurl fliconv flpgpkey scfcbcpy scfcbbfc scfcbdom scfcbelm
TARGETS += scfcrcpy scfcucnv scfcudif scfcugzp scfculst scfcurem
TARGETS += scfmrput scfmurun sflamupc

LIBS = -lfl5core -lssh -ldl

all: $(TARGETS)

libfobjcld.so: FOBJCLD.o
	$(CC) -shared $(LDFLAGS) -o $@ $< $(LIBS)

libfsegodb.so: FSEGODB.o
	$(CC) -shared $(LDFLAGS) -o $@ $< $(LIBS)

ifeq ($(shell uname -s),OS/390)
cun4sis: cun4sis.o
	$(CC) $(LDFLAGS) -o $@ $<

scflmusg: SCFLMUSG.o
	$(CC) $(LDFLAGS) -o $@ $< -lflm5up $(LIBS)
endif

flcurl: FLCURL.o
	$(CC) $(LDFLAGS) -o $@ $< -lflcbyt $(LIBS)

fliconv: FLICONV.o
	$(CC) $(LDFLAGS) -o $@ $< -lflcicv $(LIBS)

flpgpkey: FLPGPKEY.o
	$(CC) $(LDFLAGS) -o $@ $< -lflucup $(LIBS)

scfcbcpy: SCFCBCPY.o
	$(CC) $(LDFLAGS) -o $@ $< -lflcbyt $(LIBS)

scfcbdom: SCFCBDOM.o
	$(CC) $(LDFLAGS) -o $@ $< -lflcbyt $(LIBS)

scfcbelm: SCFCBELM.o
	$(CC) $(LDFLAGS) -o $@ $< -lflcbyt $(LIBS)

scfcrcpy: SCFCRCPY.o
	$(CC) $(LDFLAGS) -o $@ $< -lflcreclb -lflcbyt $(LIBS)

scfcucnv: SCFCUCNV.o
	$(CC) $(LDFLAGS) -o $@ $< -lflucup $(LIBS)

scfcudif: SCFCUDIF.o
	$(CC) $(LDFLAGS) -o $@ $< -lflucup $(LIBS)

scfcugzp: SCFCUGZP.o
	$(CC) $(LDFLAGS) -o $@ $< -lflucup $(LIBS)

scfculst: SCFCULST.o
	$(CC) $(LDFLAGS) -o $@ $< -lflucup $(LIBS)

scfcurem: SCFCUREM.o
	$(CC) $(LDFLAGS) -o $@ $< -lflucup $(LIBS)

scfmrput: SCFMRPUT.o
	$(CC) $(LDFLAGS) -o $@ $< -lflmrec -lflcbyt $(LIBS)

scfmurun: SCFMURUN.o
	$(CC) $(LDFLAGS) -o $@ $< -lflm5up $(LIBS)

sflamupc: SFLAMUPC.o
	$(CC) $(LDFLAGS) -o $@ $< -lflm4up -lflucup $(LIBS)

scfcbbfc: SCFCBBFC.o
	$(CPP) $(LDFLAGS) -o $@ $< -lflcbytbf -lflcbyt $(LIBS)

clean:
	rm -f *.o $(TARGETS)
