make ns-3-linux independent from clone_and_compile_ns3_dce.sh of ns-3-dce
authorHajime Tazaki <tazaki@nict.go.jp>
Fri, 06 Jul 2012 15:21:40 +0900
changeset 59 13362c066a98
parent 58 e0a3fe869908
child 60 c435b32c2aa7
make ns-3-linux independent from clone_and_compile_ns3_dce.sh of ns-3-dce
Makefile
sim/defconfig
--- a/Makefile	Thu Jun 21 16:29:32 2012 +0900
+++ b/Makefile	Fri Jul 06 15:21:40 2012 +0900
@@ -1,9 +1,9 @@
 SRCDIR=$(dir $(firstword $(MAKEFILE_LIST)))
 INSTALL_DIR=/usr
-KCONFIG_CONFIG?=config
 VPATH=$(SRCDIR)
 KERNEL_DIR=net-next-2.6
 KERNEL_VERSION=fed66381d65a35198639f564365e61a7f256bf79
+KERNEL_DOWNLOAD=git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git
 
 SIM_SRC=\
 fs.c random.c sim.c softirq.c time.c \
@@ -68,20 +68,23 @@
 rwsem-spinlock.o scatterlist.o ratelimit.o hexdump.o dec_and_lock.o \
 div64.o
 
-objs.mk: Makefile.print timeconst.h
+objs.mk: Makefile.print
 	-for i in 1; do \
 	$(foreach d,$(dirs), \
            $(MAKE) -s -f $< srcdir=$(SRCDIR)$(KERNEL_DIR)/$(d) \
 	    objdir=$(KERNEL_DIR)/$(d) \
-            config=$(PWD)/$(KCONFIG_CONFIG) \
+            config=$(KERNEL_DIR)/.config \
 	    to_keep=$(subst $(space),$(colon),$($(d)_to_keep)) print;) \
 	done > $@
-$(KCONFIG_CONFIG):
-	make -C $(SRCDIR)$(KERNEL_DIR) ARCH=sim KCONFIG_CONFIG=$(PWD)/$(KCONFIG_CONFIG) defconfig 
-$(AUTOCONF): generate-autoconf.py $(KCONFIG_CONFIG)
-	./$^ > $@
-timeconst.h: $(KCONFIG_CONFIG)
-	perl $(SRCDIR)$(KERNEL_DIR)/kernel/timeconst.pl $(shell grep CONFIG_HZ= $(KCONFIG_CONFIG) | sed -e 's/CONFIG_HZ=\(\w\)/\1/g') > $@
+
+-include $(KERNEL_DIR)/.config
+$(KERNEL_DIR)/.config:
+	@make -C $(KERNEL_DIR) ARCH=sim defconfig
+
+$(AUTOCONF): generate-autoconf.py $(KERNEL_DIR)/.config timeconst.h
+	./generate-autoconf.py $(KERNEL_DIR)/.config > $@
+timeconst.h: $(KERNEL_DIR)/.config
+	perl $(SRCDIR)$(KERNEL_DIR)/kernel/timeconst.pl $(CONFIG_HZ) > $@
 linker.lds: ./generate-linker-script.py
 	ld -shared --verbose | ./$^ > $@
 
@@ -117,25 +120,30 @@
 
 install-dir:
 
-setup: .patch.ts $(KERNEL_DIR)/arch/sim
+setup: $(KERNEL_DIR) .patch.ts $(KERNEL_DIR)/arch/sim
 $(KERNEL_DIR)/arch/sim:
 	if test ! -L $@; then ln -s $(PWD)/sim $(KERNEL_DIR)/arch/sim; fi
 .patch.ts: kernel.patch
 	CWD=`pwd` && cd $(KERNEL_DIR) && patch -p1 < $$CWD/kernel.patch && cd $$CWD && touch .patch.ts
 unpatch: 
 	CWD=`pwd` && cd $(KERNEL_DIR) && git reset --hard $(KERNEL_VERSION) && cd $$CWD && rm -f .patch.ts
+$(KERNEL_DIR):
+	git clone $(KERNEL_DOWNLOAD) $(KERNEL_DIR); cd $(KERNEL_DIR) && git reset --hard \
+	$(KERNEL_VERSION)
 ALL_OBJS=$(OBJS) $(KERNEL_LIB) $(modules) $(all-obj-for-clean)
-clean:
-	@for f in $(foreach m,$(modules),$($(m))) timeconst.h config; do rm -f $$f 2>/dev/null; done
-	@for f in $(ALL_OBJS); do rm -f $$f; done 2>/dev/null
-	@rm -rf $(INSTALL_DIR)  linker.lds $(AUTOCONF) objs.mk 2>/dev/null
+clean: unpatch
+	@for f in $(foreach m,$(modules),$($(m))) ; do rm -f $$f 2>/dev/null; done
+	@for f in $(OBJS) $(KERNEL_LIB) $(modules); do rm -f $$f; done 2>/dev/null
+	@rm -rf linker.lds $(AUTOCONF) objs.mk $(KERNEL_DIR)/.config timeconst.h 2>/dev/null
 
-$(KERNEL_LIB): $(AUTOCONF) objs.mk $(OBJS) linker.lds
+$(KERNEL_LIB): setup objs.mk $(AUTOCONF) $(OBJS) linker.lds
 	$(CC) $(LDFLAGS) -Wl,--whole-archive $(OBJS) -o $@
 
-defconfig:
+defconfig: 
 	make -C $(KERNEL_DIR) ARCH=sim defconfig
 allmodconfig:
 	make -C $(KERNEL_DIR) ARCH=sim allmodconfig
 menuconfig:
-	$(MAKE) -C $(KERNEL_DIR) ARCH=sim menuconfig
\ No newline at end of file
+	$(MAKE) -C $(KERNEL_DIR) ARCH=sim menuconfig
+
+.PHONY : clean
\ No newline at end of file
--- a/sim/defconfig	Thu Jun 21 16:29:32 2012 +0900
+++ b/sim/defconfig	Fri Jul 06 15:21:40 2012 +0900
@@ -37,7 +37,7 @@
 #
 # Networking options
 #
-CONFIG_PACKET=m
+CONFIG_PACKET=y
 CONFIG_UNIX=m
 CONFIG_XFRM=y
 CONFIG_XFRM_USER=m