# Makefile for 3pp/klibc

REQUIRES = base/c

### Component specification

COMPONENT_IS_3PP  = true

COMPONENT_TARGETS = $(TARGET_NAME_VIP1900)
NEEDS_ABS_PATHS = true


### Tar archive

tar_archive    = klibc-1.2.tar.gz
src_dir        = klibc-1.2
src_done       = $(src_dir)/.source_done


### Targets

klibc_base_src         = $(src_dir)/klibc/arch/sh/crt0.o
klibc_base_target      = $(TARGET)/klibcbase.o
klibc_static_src       = $(src_dir)/klibc/libc.a
klibc_static_target    = $(TARGET)/libkc.a
ipconfig_static_src    = $(src_dir)/usr/kinit/ipconfig/static/ipconfig
ipconfig_static_target = $(TARGET)/ipconfig
mount_static_src       = $(src_dir)/utils/static/mount
mount_static_target    = $(TARGET)/mount
insmod_static_src      = $(src_dir)/utils/static/insmod
insmod_static_target   = $(TARGET)/insmod
gunzip_static_src      = $(src_dir)/gzip/gunzip
gunzip_static_target   = $(TARGET)/gunzip
nuke_static_src        = $(src_dir)/utils/static/nuke
nuke_static_target     = $(TARGET)/nuke

LIB_TARGETS += $(klibc_base_target) $(klibc_static_target)
BIN_TARGETS += $(ipconfig_static_target)
BIN_TARGETS += $(mount_static_target)
BIN_TARGETS += $(insmod_static_target)
BIN_TARGETS += $(gunzip_static_target)
BIN_TARGETS += $(nuke_static_target)
OTHER_TARGETS = $(TARGET_3PP_DIST_DIR)/include/klibc


### Extra cleanup

CLEANUP_FILES += $(src_dir)


### Common.mk

include ../../../makesystem/common.mk

CFLAGS += -O2

### Dependencies

LMAKE := $(BSG_DEVSETUP) BSG_INCLUDE=$(dist_include) \
         $(MAKE) -C $(src_dir) ARCH=sh CROSS_COMPILE="$(CROSS_PREFIX)"

$(src_done): $(tar_archive)
	@tar xzf $^
	@cd $(src_dir) && patch -p1 < ../klibc.patch && \
	patch -p1 < ../ipconfig.patch && patch -p1 < ../packet.patch
	@touch $@

$(LIB_TARGETS): $(src_done)
	$(LMAKE)
	@cp $(klibc_base_src) $(klibc_base_target)
	@cp $(klibc_static_src) $(klibc_static_target)

$(BIN_TARGETS): $(src_done)
	$(LMAKE)
	@cp $(ipconfig_static_src) $(ipconfig_static_target)
	@$(STRIP) -R .comment $(ipconfig_static_target)
	@$(STRIP) -R .got $(ipconfig_static_target)
	@$(STRIP) -R .eh_frame $(ipconfig_static_target)
	@cp $(mount_static_src) $(mount_static_target)
	@$(STRIP) -R .comment $(mount_static_target)
	@$(STRIP) -R .got $(mount_static_target)
	@$(STRIP) -R .eh_frame $(mount_static_target)
	@cp $(insmod_static_src) $(insmod_static_target)
	@$(STRIP) -R .comment $(insmod_static_target)
	@$(STRIP) -R .got $(insmod_static_target)
	@$(STRIP) -R .eh_frame $(insmod_static_target)
	@cp $(gunzip_static_src) $(gunzip_static_target)
	@$(STRIP) -R .comment $(gunzip_static_target)
	@$(STRIP) -R .got $(gunzip_static_target)
	@$(STRIP) -R .eh_frame $(gunzip_static_target)
	@cp $(nuke_static_src) $(nuke_static_target)
	@$(STRIP) -R .comment $(nuke_static_target)
	@$(STRIP) -R .got $(nuke_static_target)
	@$(STRIP) -R .eh_frame $(nuke_static_target)

$(OTHER_TARGETS): $(src_done)
	@mkdir -p $@
	@cp -r $(src_dir)/include/* $@
