
#                TRACE32 TCL Remote API
#      Copyright (c) 1998-2015 Lauterbach GmbH
#                All rights reserved
#
#                    GNU Makefile
#
#     This makefile needs the swig application.
#     It can be downloaded using sudo apt-get install swig
#     You may need to install TCL and adapt its include directory
#
#

CC := gcc
TCL := /usr/include/tcl8.6/
CFLAGS := -pipe -c -O2 -MMD -MP -fPIC -Wall -Wextra -g
LDFLAGS := -shared
CFLAGS32 := -m32
CFLAGS64 := -m64
RM := rm
MKDIR := mkdir
SWIG := swig
ODIR32 := linux
ODIR64 := linux64
SDIR := ../capi/src
SDIR2 := .
TARGETLIB32 := t32tclapi.so
TARGETLIB64 := t32tclapi64.so

SRCS := hremote.c hlinknet.c
SRC_SWIG := t32_wrap.c
SRCS2 := t32util.c $(SRC_SWIG)
DEPS := $(SRCS:%.c=%.d)
OBJS := $(SRCS:%.c=%.o)
DEPS2 := $(SRCS2:%.c=%.d)
OBJS2 := $(SRCS2:%.c=%.o)

OBJS32 := $(addprefix $(ODIR32)/,$(OBJS) $(OBJS2))
OBJS64 := $(addprefix $(ODIR64)/,$(OBJS) $(OBJS2))
DEPS32 := $(addprefix $(ODIR32)/,$(DEPS) $(DEPS2))
DEPS64 := $(addprefix $(ODIR64)/,$(DEPS) $(DEPS2))

.PHONY: help
help:
	@echo
	@echo make help ... show this help
	@echo make all .... same as make rel
	@echo make rel .... build t32tclapi.so and t32tclapi64.so
	@echo make rel32 .. build t32tclapi.so
	@echo make rel64 .. build t32tclapi64.so
	@echo make clean .. delete directories ./linux and ./linux64
	@echo

.PHONY: all
all: rel

rel: rel32 rel64

rel32: $(ODIR32)/$(TARGETLIB32)

rel64: $(ODIR64)/$(TARGETLIB64)

$(ODIR32)/$(SRC_SWIG:%.c=%.o) $(ODIR64)/$(SRC_SWIG:%.c=%.o): CFLAGS += -Wno-unused-but-set-parameter -Wno-missing-braces

$(SDIR2)/$(SRC_SWIG): t32.i $(SDIR)/t32.h
	$(SWIG) -tcl t32.i

$(ODIR32) $(ODIR64):
	$(MKDIR) $@

$(ODIR32)/$(TARGETLIB32): $(OBJS32)
	$(CC) $(LDFLAGS) $(CFLAGS32) -o $@ $^

$(ODIR64)/$(TARGETLIB64): $(OBJS64)
	$(CC) $(LDFLAGS) $(CFLAGS64) -o $@ $^

$(ODIR32)/%.o : $(SDIR)/%.c | $(ODIR32)
	$(CC) $(CFLAGS) $(CFLAGS32) -I$(SDIR) -o $@ $<

$(ODIR64)/%.o : $(SDIR)/%.c | $(ODIR64)
	$(CC) $(CFLAGS) $(CFLAGS64) -I$(SDIR) -o $@ $<

$(ODIR32)/%.o : $(SDIR2)/%.c | $(ODIR32)
	$(CC) $(CFLAGS) $(CFLAGS32) -I$(TCL) -o $@ $<

$(ODIR64)/%.o : $(SDIR2)/%.c | $(ODIR64)
	$(CC) $(CFLAGS) $(CFLAGS64) -I$(TCL) -o $@ $<

-include $(DEPS32) $(DEPS64)

.PHONY: clean extraclean
clean extraclean:
	-$(RM) -rf $(ODIR32) $(ODIR64) $(SRC_SWIG)
