# $Id: makefile.src,v 1.7 1997/07/31 09:43:28 digulla Exp $
TOP=../../..
CURDIR=workbench/libs/gadtools

USER_INCLUDES = -I..

include $(TOP)/config/make.cfg

# Main function for gadtools.library. Need this apart as an anchor for the link:
INIT_FILE = gadtools_init

FILES = gadtools_functable basicfuncs classes gadgets

# Guarantee that this will go at the end of the file:
END_FILE = gadtools_endtag

FUNCTIONS = \
	createcontext \
	creategadgeta \
	createmenusa \
	drawbevelboxa \
	freegadgets \
	freevisualinfo \
	getvisualinfoa \
	gt_beginrefresh \
	gt_endrefresh \
	gt_filterimsg \
	gt_getgadgetattrsa \
	gt_getimsg \
	gt_postfilterimsg \
	gt_refreshwindow \
	gt_replyimsg \
	gt_setgadgetattrsa \
	layoutmenuitemsa \
	layoutmenusa

OBJDIR=$(GENDIR)/workbench/libs/gadtools

OBJS = $(foreach f,$(FILES) $(FUNCTIONS),$(OBJDIR)/$(f).o)

# The init and endskip object filenames
INITFUNC = $(OBJDIR)/$(INIT_FILE).o
ENDFUNC = $(OBJDIR)/$(END_FILE).o

all: setup $(SLIBDIR)/gadtools.library

# ***** Native ***************
ifeq ($(FLAVOUR),native)

# Generate a map file
MAPGEN = -Xlinker -M

# Strip resulting binary
STRIP = strip

# ***** Not Native ***************
else

MAPGEN =
STRIP = true

# ***** END ***************
endif

%define_libs prelibs=-lgadtools

# The filename of the linklib
LIB=$(LIBDIR)/libgadtools.a

$(SLIBDIR)/gadtools.library: $(LIB) $(DEPLIBS) $(OBJS) $(INITFUNC) $(ENDFUNC)
	@echo "Building $(notdir $@) ..."
	@$(CC) $(ILDFLAGS) $(MAPGEN) $(INITFUNC) $(LIBS) $(ENDFUNC) -o $@ 2>&1|tee gadtoolslib.map
	@if test ! -s gadtoolslib.map; then rm gadtoolslib.map ; else true ; fi
	@$(STRIP) $@

# Collect all functions in a linklib for fast linking:
$(LIB): $(OBJS)
	@echo "Adding functions to $(notdir $@) ..."
	@$(AR) $@ $?
	@$(RANLIB) $@

setup :
	%mkdirs_q $(OBJDIR) $(SLIBDIR)

clean::
	$(RM) $(OBJDIR) *.err

$(OBJDIR)/%.o: %.c
	%compile_q

gadtools_functable.c : $(foreach f,$(FUNCTIONS),$(f).c) \
	    $(TOP)/scripts/makefunctable.awk
	%mkfunctable_q GadTools

gadtools_endtag.c: $(TOP)/scripts/makeendtag.awk
	%mkendtag_q GadTools

$(OBJDIR)/gadtools_init.o: libdefs.h

%libdefs_rule

$(OBJDIR)/%.d: %.c
	%mkdepend_q

%common
%include_deps $(foreach f,$(INIT_FILE) $(END_FILE) $(FILES) $(FUNCTIONS),$(OBJDIR)/$(f).d)
