Make choices to build and to distribute modules independent of each other.
authorBen Pfaff <blp@nicira.com>
Fri, 23 Jan 2009 01:10:47 +0000 (17:10 -0800)
committerBen Pfaff <blp@nicira.com>
Fri, 23 Jan 2009 22:10:59 +0000 (14:10 -0800)
datapath/Modules.mk
datapath/hwtable_dummy/Modules.mk
datapath/linux-2.4/Kbuild.in
datapath/linux-2.4/Makefile.main.in
datapath/linux-2.4/Modules.mk
datapath/linux-2.6/Kbuild.in
datapath/linux-2.6/Makefile.main.in
datapath/linux-2.6/Modules.mk

index 9193d5099e0298824d4ff557fc69fbdc51d44185..ab1769c33254861dd006ab5a61f5f9ac1468309b 100644 (file)
@@ -1,5 +1,13 @@
-all_modules = $(dist_modules)
-dist_modules = openflow
+# Some modules should be built and distributed, e.g. openflow.
+#
+# Some modules should be distributed but not built, e.g. we do not build
+# veth if the kernel in question already has it.
+#
+# Some modules should be built but not distributed, e.g. third-party
+# hwtable modules.
+both_modules = openflow
+build_modules = $(both_modules)        # Modules to build
+dist_modules = $(both_modules) # Modules to distribute
 
 openflow_sources = \
        chain.c \
@@ -32,7 +40,7 @@ openflow_headers = \
 
 dist_sources = $(foreach module,$(dist_modules),$($(module)_sources))
 dist_headers = $(foreach module,$(dist_modules),$($(module)_headers))
-all_sources = $(foreach module,$(all_modules),$($(module)_sources))
-all_headers = $(foreach module,$(all_modules),$($(module)_headers))
-all_links = $(notdir $(all_sources))
-all_objects = $(notdir $(patsubst %.c,%.o,$(all_sources)))
+build_sources = $(foreach module,$(build_modules),$($(module)_sources))
+build_headers = $(foreach module,$(build_modules),$($(module)_headers))
+build_links = $(notdir $(build_sources))
+build_objects = $(notdir $(patsubst %.c,%.o,$(build_sources)))
index 2a3014d9eddaa6a6be58451dd082e94318116732..7f6b86ba6da2acec3916dfd696c06bfdce69b1df 100644 (file)
@@ -1,5 +1,5 @@
 # Specify the module to build.
-all_modules += hwtable_dummy
+build_modules += hwtable_dummy
 
 # Specify the source files that comprise the module.
 hwtable_dummy_sources = \
index 86bfa6b22a2d6639ffdfc616ab9a02e2e06401cd..047da499ae95bea943c40dc1066cd2413a9ec4f3 100644 (file)
@@ -30,7 +30,7 @@ endif
 override CFLAGS := $(OF_CFLAGS)
 
 # Multipart objects
-list-multi := $(patsubst %,%_mod.o,$(all_modules))
+list-multi := $(patsubst %,%_mod.o,$(build_modules))
 
 # Module objects that we can build
 obj-m += $(list-multi)
@@ -39,10 +39,10 @@ obj-m += $(list-multi)
 define parts_template
 $(1)_mod-objs = $$(patsubst %.c,%.o,$(notdir $($(1)_sources)))
 endef
-$(foreach module,$(all_modules),$(eval $(call parts_template,$(module))))
+$(foreach module,$(build_modules),$(eval $(call parts_template,$(module))))
 
 # Objects that export symbols
-export-objs = $(all_objects)
+export-objs = $(build_objects)
 
 # Include the kernel's global Rules.make
 include $(TOPDIR)/Rules.make
@@ -52,7 +52,7 @@ define link_template
 $(1)_mod.o: $($(1)_mod-objs)
        $(LD) -r -o $$@ $($(1)_mod-objs)
 endef
-$(foreach module,$(all_modules),$(eval $(call link_template,$(module))))
+$(foreach module,$(build_modules),$(eval $(call link_template,$(module))))
 
 # Build system rewrite May 2008: Bobby Holley <bh10@stanford.edu>
 #
index 08848c5c5e98f6b383fbf5d662d9b7503dd25e37..1647f60e49a1dcf75d33d377443e0771fbdbe04e 100644 (file)
@@ -12,8 +12,8 @@ include $(srcdir)/../Modules.mk
 include $(srcdir)/Modules.mk
 include @HW_TABLES@
 
-default: $(all_links)
-$(foreach m,$(all_modules), \
+default: $(build_links)
+$(foreach m,$(build_modules), \
   $(foreach s,$($(m)_sources), \
     $(eval $(notdir $(s)): ; ln -s $(srcdir)/../$(s) .)))
 
@@ -24,7 +24,7 @@ all: default
 check: all
 clean:
        rm -f *.o *_mod.o .*.o.flags
-       for d in $(all_links); do if test -h $$d; then rm $$d; fi; done
+       for d in $(build_links); do if test -h $$d; then rm $$d; fi; done
 
 ifneq (,$(KSRC))
 
index 391990953434b60d24636132207d366e962d5a40..5aa1a39c20431ed4bc119974f1263ede8161e98e 100644 (file)
@@ -1,4 +1,4 @@
-dist_modules += compat24
+both_modules += compat24
 
 compat24_sources = \
        linux-2.4/compat-2.4/attr.c \
index 1d405ccec43482f1aa69df66f64a90997dcd9b89..4e03a0786db755af6a076a7eb052946e7dfa3234 100644 (file)
@@ -27,10 +27,10 @@ EXTRA_CFLAGS += -include $(builddir)/kcompat.h
 # right place, even though it's conceptually incorrect.
 NOSTDINC_FLAGS += -I$(srcdir)/compat-2.6 -I$(srcdir)/compat-2.6/include 
 
-obj-m := $(patsubst %,%_mod.o,$(all_modules))
+obj-m := $(patsubst %,%_mod.o,$(build_modules))
 
 define module_template
 $(1)_mod-y = $$(notdir $$(patsubst %.c,%.o,$($(1)_sources)))
 endef
 
-$(foreach module,$(all_modules),$(eval $(call module_template,$(module))))
+$(foreach module,$(build_modules),$(eval $(call module_template,$(module))))
index aef3e3d04054161d37b28532b7d7ea18900d1490..e5a6593e65ec9f2d5ea3a7d970bba0a73e7249cd 100644 (file)
@@ -9,9 +9,9 @@ include $(srcdir)/../Modules.mk
 include $(srcdir)/Modules.mk
 include @HW_TABLES@
 
-default: $(all_links)
+default: $(build_links)
 
-$(foreach s,$(sort $(foreach m,$(all_modules),$($(m)_sources))), \
+$(foreach s,$(sort $(foreach m,$(build_modules),$($(m)_sources))), \
   $(eval $(notdir $(s)): ; ln -s $(srcdir)/../$(s) $@))
 
 distclean: clean
@@ -22,7 +22,7 @@ all: default
 check: all
 clean:
        rm -f *.o *.ko *_mod.* Module.symvers *.cmd kcompat.h.new
-       for d in $(all_links); do if test -h $$d; then rm $$d; fi; done
+       for d in $(build_links); do if test -h $$d; then rm $$d; fi; done
 
 ifneq ($(KSRC),)
 
index d66d1016aab357f23b627587573e99cd2dc19c90..bc0317e63804c99fc0a6c0413a4a95a9b9765e9b 100644 (file)
@@ -1,9 +1,6 @@
-dist_modules += brcompat
-
 openflow_sources += \
        linux-2.6/compat-2.6/genetlink-openflow.c \
        linux-2.6/compat-2.6/random32.c
-
 openflow_headers += \
        linux-2.6/compat-2.6/compat26.h \
        linux-2.6/compat-2.6/include/asm-generic/bug.h \
@@ -29,6 +26,7 @@ openflow_headers += \
        linux-2.6/compat-2.6/include/net/genetlink.h \
        linux-2.6/compat-2.6/include/net/netlink.h
 
+both_modules += brcompat
 brcompat_sources = \
        linux-2.6/compat-2.6/genetlink-brcompat.c \
        brcompat.c \