# RDS/00008: OASIS Makefile Conventions

#for test
ifndef TOPDIR
	TOPDIR ?= $(shell cd ../../../../; pwd)
	TARGET ?= mips-linux-uclibc
	COMPO_BASE ?= ${TOPDIR}/rootfs/src
	INSTALL_ROOT ?= ${TOPDIR}/rootfs/root
ifndef TOOLPATH
	    export TOOLPATH := $(shell cat $(TOPDIR)/TOOLPATH2)
		export PATH     := $(TOOLPATH):$(PATH)
endif
endif

include rds00008.mk

# Openswan used flags
ifeq ($(TARGET), mips-linux-uclibc)
	ARCH = mips
	STRIP_TAG = MIPS
	LDFLAGS+=-L$(COMPO_BASE)/$(TARGET)-lib
endif
ifeq ($(TARGET), mipsel-linux-uclibc)
	ARCH = mips
	STRIP_TAG = MIPS
	LDFLAGS+=-L$(COMPO_BASE)/$(TARGET)-lib
endif
export LDFLAGS
export CFLAGS = -I$(COMPO_BASE)/include

KERNELSRC=${TOPDIR}/linux/src
DESTDIR=$(COMPO_BASE)/open_src/OOpenswan/dest
KERNEL_VER = `make -C ${KERNELSRC} -p help | ( sed -n -e '/^MODLIB/p' -e '/^MODLIB/q' ; cat > /dev/null ) | sed -e 's/^MODLIB[ :=]*\([^;]*\).*/\1/' | sed -e 's/\/lib\/modules\///'`

USE_KLIP=1
USE_NETKEY=0

all: precheck compile 

ifeq (${USE_NETKEY}, 1)
compile:
	make ARCH=$(ARCH) programs install -C ./src
	@echo "Minimizing size for binaryies..."
	@rm -r $(DESTDIR)/man
	@rm -f $(DESTDIR)/etc/rc.d/init.d/*.old
	@rm -f $(DESTDIR)/lib/ipsec/*.old
	@rm -f $(DESTDIR)/libexec/ipsec/*.old
	@rm -f $(DESTDIR)/sbin/*.old
	@rm -f $(DESTDIR)/share/doc/openswan/*
	@cd $(DESTDIR)/lib/ipsec && \
	for f in *; do (if file $$f | grep $(STRIP_TAG) > /dev/null; then ( $(STRIP) --strip-unneeded $$f); fi); done
	@cd $(DESTDIR)/libexec/ipsec && \
	for f in *; do (if file $$f | grep $(STRIP_TAG) > /dev/null; then ( $(STRIP) --strip-unneeded $$f); fi); done
endif

ifeq (${USE_KLIP}, 1)
compile:
	@echo "Compile setting..."
	@echo "TARGET=$(TARGET), ARCH=$(ARCH)"
	@echo "Compile setting...($(TOOLPATH))"
	make KERNELSRC=$(KERNELSRC) ARCH=$(ARCH) module -C src 
	make ARCH=$(ARCH) WERROR="" programs install -C src 
	@echo "Minimizing size for binaryies..."
	@rm -r $(DESTDIR)/man
	@rm -f $(DESTDIR)/etc/rc.d/init.d/*.old
	@rm -f $(DESTDIR)/lib/ipsec/*.old
	@rm -f $(DESTDIR)/libexec/ipsec/*.old
	@rm -f $(DESTDIR)/sbin/*.old
	@rm -f $(DESTDIR)/share/doc/openswan/*
	@cd $(DESTDIR)/lib/ipsec && \
	for f in *; do (if file $$f | grep $(STRIP_TAG) > /dev/null; then ( $(STRIP) --strip-unneeded $$f); fi); done
	@cd $(DESTDIR)/libexec/ipsec && \
	for f in *; do (if file $$f | grep $(STRIP_TAG) > /dev/null; then ( $(STRIP) --strip-unneeded $$f); fi); done
	$(STRIP) -g -S -d $(DESTDIR)/../src/modobj26/ipsec.ko
	make KERNELSRC=$(KERNELSRC) INSTALL_MOD_PATH=$(KERNELSRC)/../root ARCH=$(ARCH) -C ./src minstall
	if [ -f /sbin/depmod ]; then /sbin/depmod -a -e -F $(KERNELSRC)/System.map -b $(KERNELSRC)/../root $(KERNEL_VER); fi;

module:
	make KERNELSRC=$(KERNELSRC) ARCH=$(ARCH) module -C src 
	$(STRIP) -g -S -d $(DESTDIR)/../src/modobj26/ipsec.ko
	make KERNELSRC=$(KERNELSRC) INSTALL_MOD_PATH=$(KERNELSRC)/../root ARCH=$(ARCH) -C ./src minstall
	if [ -f /sbin/depmod ]; then /sbin/depmod -a -e -F $(KERNELSRC)/System.map -b $(KERNELSRC)/../root $(KERNEL_VER); fi;
endif

precheck:
	@echo "Build OOpenswan for $(PROJECT_NAME)"
ifeq ($(PROJECT_CUSTOMER), ) 
	@$(error You need specify PROJECT_CUSTOMER for Makefile)
endif 

postcheck:
	@echo "Install OOpenswan to $(INSTALL_ROOT)" 
ifeq ($(INSTALL_ROOT), ) 
	@$(error You need specify INSTALL_ROOT for Makefile)
endif  

depmod_post:
	sed "s/^kernel/\/lib\/modules\/$(KERNEL_VER)\/kernel/g" $(KERNEL_DIR)/../root/lib/modules/$(KERNEL_VER)/modules.dep > $(KERNEL_DIR)/../root/lib/modules/$(KERNEL_VER)/modules.dep.sed
	@mv $(KERNEL_DIR)/../root/lib/modules/$(KERNEL_VER)/modules.dep $(KERNEL_DIR)/../root/lib/modules/$(KERNEL_VER)/modules.dep.orig
	@mv $(KERNEL_DIR)/../root/lib/modules/$(KERNEL_VER)/modules.dep.sed $(KERNEL_DIR)/../root/lib/modules/$(KERNEL_VER)/modules.dep

install: postcheck
	@cp -p dest/sbin/ipsec                 $(INSTALL_ROOT)/sbin/
	@cp -a dest/lib/ipsec                  $(INSTALL_ROOT)/lib/
	@mkdir -p $(INSTALL_ROOT)/libexec 
	@cp -a dest/libexec/ipsec              $(INSTALL_ROOT)/libexec/
	@rm -f $(INSTALL_ROOT)/libexec/ipsec/verify
	@cp -a dest/etc/ipsec.d                $(INSTALL_ROOT)/usr/mv2ram/etc/

uninstall: postcheck
	@rm -f $(INSTALL_ROOT)/sbin/ipsec
	@rm -rf $(INSTALL_ROOT)/lib/ipsec
	@rm -rf $(INSTALL_ROOT)/libexec/ipsec
	@rm -rf $(INSTALL_ROOT)/usr/mv2ram/etc/ipsec.d

clean:
	@make ARCH=$(ARCH) clean -C src
	@rm -rf src/OBJ.*
	@rm -rf dest


.PHONY: all clean

