#
# Makefile for libklib
#
# Copyright 2000 Silicon Graphics, Inc. All rights reserved.
#
DEPTH 	  = ../..
-include $(DEPTH)/.config
EXTRA_CFLAGS = -DARCH=$(ARCH) $(INCDIRS) 

# set up include directory search order
EXTRA_CFLAGS += -Iinclude -I../liballoc -I../libutil -I/usr/local/include \
	-I/usr/include/libelf

# Turn on strict protype and error checking
EXTRA_CFLAGS += -Wall -Wstrict-prototypes

LIBDIR	   = /usr/lib
LIBKLIB    = libklib.a
NAMELIST   = namelist
TARGETS    = $(LIBKLIB)

# common code
COMMON     = klib.c kl_cmp.c kl_dump.c kl_dumpaccess.c kl_dwarf.c \
	     kl_mem.c kl_nmlist.c kl_print.c  \
	     kl_signal.c kl_stabs.c kl_debug.c kl_symbol.c \
	     kl_task.c kl_typeinfo.c kl_util.c kl_kern.c kl_savedump.c \
             kl_dump_4_1.c kl_dump_SN2_24X.c kl_bfd.c kl_error.c kl_module.c \
	     kl_new_module.c

# dump architecture specific code
DUMP_ALPHA = kl_kern_alpha.c kl_dump_alpha.c kl_page_alpha.c
DUMP_I386  = kl_kern_i386.c kl_dump_i386.c kl_page_i386.c
DUMP_IA64  = kl_kern_ia64.c kl_dump_ia64.c kl_page_ia64.c
DUMP_S390  = kl_kern_s390.c kl_dump_s390.c kl_page_s390.c
DUMP_S390X = kl_kern_s390x.c kl_dump_s390x.c kl_page_s390x.c
DUMP_ARM   = kl_kern_arm.c kl_dump_arm.c kl_page_arm.c
DUMP_PPC64 = kl_kern_ppc64.c kl_dump_ppc64.c kl_page_ppc64.c
DUMP_X86_64 = kl_kern_x86_64.c kl_dump_x86_64.c kl_page_x86_64.c

ifeq ($(TARGET_ARCH_ALPHA),y)
DUMP_ARCH += $(DUMP_ALPHA)
EXTRA_CFLAGS += -DDUMP_ARCH_ALPHA
endif
ifeq ($(TARGET_ARCH_ARM),y)
DUMP_ARCH += $(DUMP_ARM)
EXTRA_CFLAGS += -DDUMP_ARCH_ARM
endif
ifeq ($(TARGET_ARCH_I386),y)
DUMP_ARCH += $(DUMP_I386)
EXTRA_CFLAGS += -DDUMP_ARCH_I386
endif
ifeq ($(TARGET_ARCH_IA64),y)
DUMP_ARCH += $(DUMP_IA64)
EXTRA_CFLAGS += -DDUMP_ARCH_IA64
endif
ifeq ($(TARGET_ARCH_S390),y)
DUMP_ARCH += $(DUMP_S390)
EXTRA_CFLAGS += -DDUMP_ARCH_S390
endif
ifeq ($(TARGET_ARCH_S390X),y)
DUMP_ARCH += $(DUMP_S390X)
EXTRA_CFLAGS += -DDUMP_ARCH_S390X
endif
ifeq ($(TARGET_ARCH_XSCALE),y)
DUMP_ARCH += $(DUMP_ARM)
EXTRA_CFLAGS += -DDUMP_ARCH_ARM -DCONFIG_CPU_XSCALE
endif
ifeq ($(TARGET_ARCH_PPC64),y)
DUMP_ARCH += $(DUMP_PPC64)
EXTRA_CFLAGS += -DDUMP_ARCH_PPC64
endif
ifeq ($(TARGET_ARCH_X86_64),y)
DUMP_ARCH += $(DUMP_X86_64)
EXTRA_CFLAGS += -DDUMP_ARCH_X86_64
endif

CFILES    = $(COMMON) $(DUMP_ARCH)
OFILES    = $(CFILES:.c=.o)

all: default

default: $(TARGETS)

clean:
	/usr/bin/find . -name ".[A-z]*.flags" -print | xargs /bin/rm -f
	/usr/bin/find . -name ".depend" -print | xargs /bin/rm -f
	/bin/rm -f include/asm
	/bin/rm -f *.o
	/bin/rm -f $(TARGETS)

mrproper clobber: clean
	/bin/rm -f $(NAMELIST) $(LIBKLIB)

$(NAMELIST): namelist.c
	$(CC) $(EXTRA_CFLAGS) -c namelist.c -o namelist

$(LIBKLIB): symlinks $(OFILES)
	$(AR) ccurl $(LIBKLIB) $(OFILES)

headers: symlinks
	(cd include && $(MAKE) ARCH=$(ARCH) headers )

exports: symlinks $(TARGETS)
	mkdir -p $(ROOT)$(LIBDIR)/lkcd
	install -m 644 $(TARGETS) $(ROOT)$(LIBDIR)/lkcd

install: headers exports

symlinks:
	/bin/rm -f include/asm
	(cd include && /bin/ln -s asm-$(ARCH) asm )

include $(DEPTH)/Rules.make
