From f4b3d14e9724934c2511f844cb5e0660862c3ae2 Mon Sep 17 00:00:00 2001
From: Johannes Berg <johannes.berg@intel.com>
Date: Mon, 12 Oct 2020 12:14:04 +0200
Subject: [PATCH] build: Make a common library build

Derive the library name from the directory name, and let each
library Makefile only declare the objects that are needed.

This reduces duplicate code for the ar call. While at it, also
pretty-print that call.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
 src/ap/Makefile         | 4 ----
 src/common/Makefile     | 4 ----
 src/crypto/Makefile     | 4 ----
 src/eap_common/Makefile | 4 ----
 src/eap_peer/Makefile   | 4 ----
 src/eap_server/Makefile | 4 ----
 src/eapol_auth/Makefile | 4 ----
 src/eapol_supp/Makefile | 4 ----
 src/l2_packet/Makefile  | 4 ----
 src/lib.rules           | 8 ++++++++
 src/p2p/Makefile        | 4 ----
 src/radius/Makefile     | 4 ----
 src/rsn_supp/Makefile   | 4 ----
 src/tls/Makefile        | 4 ----
 src/utils/Makefile      | 4 ----
 src/wps/Makefile        | 4 ----
 16 files changed, 8 insertions(+), 60 deletions(-)

diff --git a/src/ap/Makefile b/src/ap/Makefile
index 09d54924c..9d67fb58b 100644
--- a/src/ap/Makefile
+++ b/src/ap/Makefile
@@ -1,5 +1,3 @@
-ALL=$(OUT)libap.a
-
 include ../lib.rules
 
 install:
@@ -67,5 +65,3 @@ LIB_OBJS= \
 
 _OBJS_VAR := LIB_OBJS
 include ../objs.mk
-$(OUT)libap.a: $(LIB_OBJS)
-	$(AR) crT $@ $?
diff --git a/src/common/Makefile b/src/common/Makefile
index 19573ebd3..a731c9230 100644
--- a/src/common/Makefile
+++ b/src/common/Makefile
@@ -1,5 +1,3 @@
-ALL=$(OUT)libcommon.a
-
 include ../lib.rules
 
 install:
@@ -21,5 +19,3 @@ LIB_OBJS= \
 
 _OBJS_VAR := LIB_OBJS
 include ../objs.mk
-$(OUT)libcommon.a: $(LIB_OBJS)
-	$(AR) crT $@ $?
diff --git a/src/crypto/Makefile b/src/crypto/Makefile
index b8accd81c..b0e13bd1d 100644
--- a/src/crypto/Makefile
+++ b/src/crypto/Makefile
@@ -1,5 +1,3 @@
-ALL=$(OUT)libcrypto.a
-
 include ../lib.rules
 
 install:
@@ -68,5 +66,3 @@ endif
 
 _OBJS_VAR := LIB_OBJS
 include ../objs.mk
-$(OUT)libcrypto.a: $(LIB_OBJS)
-	$(AR) crT $@ $?
diff --git a/src/eap_common/Makefile b/src/eap_common/Makefile
index b50a4b731..c85d01de7 100644
--- a/src/eap_common/Makefile
+++ b/src/eap_common/Makefile
@@ -1,5 +1,3 @@
-ALL=$(OUT)libeap_common.a
-
 include ../lib.rules
 
 install:
@@ -25,5 +23,3 @@ LIB_OBJS= \
 
 _OBJS_VAR := LIB_OBJS
 include ../objs.mk
-$(OUT)libeap_common.a: $(LIB_OBJS)
-	$(AR) crT $@ $?
diff --git a/src/eap_peer/Makefile b/src/eap_peer/Makefile
index d7a0372ad..1ce905d8c 100644
--- a/src/eap_peer/Makefile
+++ b/src/eap_peer/Makefile
@@ -1,5 +1,3 @@
-ALL=$(OUT)libeap_peer.a
-
 include ../lib.rules
 
 install:
@@ -17,5 +15,3 @@ LIB_OBJS= \
 
 _OBJS_VAR := LIB_OBJS
 include ../objs.mk
-$(OUT)libeap_peer.a: $(LIB_OBJS)
-	$(AR) crT $@ $?
diff --git a/src/eap_server/Makefile b/src/eap_server/Makefile
index b4261ec39..c68565c07 100644
--- a/src/eap_server/Makefile
+++ b/src/eap_server/Makefile
@@ -1,5 +1,3 @@
-ALL=$(OUT)libeap_server.a
-
 include ../lib.rules
 
 install:
@@ -15,5 +13,3 @@ LIB_OBJS= \
 
 _OBJS_VAR := LIB_OBJS
 include ../objs.mk
-$(OUT)libeap_server.a: $(LIB_OBJS)
-	$(AR) crT $@ $?
diff --git a/src/eapol_auth/Makefile b/src/eapol_auth/Makefile
index aa597eda4..328e18f50 100644
--- a/src/eapol_auth/Makefile
+++ b/src/eapol_auth/Makefile
@@ -1,5 +1,3 @@
-ALL=$(OUT)libeapol_auth.a
-
 include ../lib.rules
 
 install:
@@ -10,5 +8,3 @@ LIB_OBJS = eapol_auth_sm.o eapol_auth_dump.o
 
 _OBJS_VAR := LIB_OBJS
 include ../objs.mk
-$(OUT)libeapol_auth.a: $(LIB_OBJS)
-	$(AR) crT $@ $?
diff --git a/src/eapol_supp/Makefile b/src/eapol_supp/Makefile
index 453e49e6b..108e66c4c 100644
--- a/src/eapol_supp/Makefile
+++ b/src/eapol_supp/Makefile
@@ -1,5 +1,3 @@
-ALL=$(OUT)libeapol_supp.a
-
 include ../lib.rules
 
 install:
@@ -12,5 +10,3 @@ LIB_OBJS = eapol_supp_sm.o
 
 _OBJS_VAR := LIB_OBJS
 include ../objs.mk
-$(OUT)libeapol_supp.a: $(LIB_OBJS)
-	$(AR) crT $@ $?
diff --git a/src/l2_packet/Makefile b/src/l2_packet/Makefile
index 870d652bc..5c69413f3 100644
--- a/src/l2_packet/Makefile
+++ b/src/l2_packet/Makefile
@@ -1,5 +1,3 @@
-ALL=$(OUT)libl2_packet.a
-
 include ../lib.rules
 
 install:
@@ -10,5 +8,3 @@ LIB_OBJS = l2_packet_linux.o
 
 _OBJS_VAR := LIB_OBJS
 include ../objs.mk
-$(OUT)libl2_packet.a: $(LIB_OBJS)
-	$(AR) crT $@ $?
diff --git a/src/lib.rules b/src/lib.rules
index 81b895967..99b7bd026 100644
--- a/src/lib.rules
+++ b/src/lib.rules
@@ -1,3 +1,6 @@
+_LIBMK := $(lastword $(wordlist 1,$(shell expr $(words $(MAKEFILE_LIST)) - 1),$(MAKEFILE_LIST)))
+_LIBNAME := $(notdir $(patsubst %/,%,$(dir $(abspath $(_LIBMK)))))
+ALL := $(OUT)lib$(_LIBNAME).a
 LIB_RULES := $(lastword $(MAKEFILE_LIST))
 include $(dir $(LIB_RULES))build.rules
 
@@ -9,5 +12,10 @@ endif
 CFLAGS += $(FUZZ_CFLAGS)
 CFLAGS += -I.. -I../utils
 
+.SECONDEXPANSION:
+$(ALL): $$(LIB_OBJS)
+	@$(E) "  AR  $(notdir $@)"
+	$(Q)$(AR) crT $@ $?
+
 clean:
 	$(Q)rm -f *~ *.o *.d *.gcno *.gcda *.gcov $(ALL)
diff --git a/src/p2p/Makefile b/src/p2p/Makefile
index 00e1908f0..0289dec5e 100644
--- a/src/p2p/Makefile
+++ b/src/p2p/Makefile
@@ -1,5 +1,3 @@
-ALL=$(OUT)libp2p.a
-
 include ../lib.rules
 
 install:
@@ -23,5 +21,3 @@ LIB_OBJS= \
 
 _OBJS_VAR := LIB_OBJS
 include ../objs.mk
-$(OUT)libp2p.a: $(LIB_OBJS)
-	$(AR) crT $@ $?
diff --git a/src/radius/Makefile b/src/radius/Makefile
index 5cefa390f..8d25400e9 100644
--- a/src/radius/Makefile
+++ b/src/radius/Makefile
@@ -1,5 +1,3 @@
-ALL=$(OUT)libradius.a
-
 include ../lib.rules
 
 install:
@@ -16,5 +14,3 @@ LIB_OBJS= \
 
 _OBJS_VAR := LIB_OBJS
 include ../objs.mk
-$(OUT)libradius.a: $(LIB_OBJS)
-	$(AR) crT $@ $?
diff --git a/src/rsn_supp/Makefile b/src/rsn_supp/Makefile
index f5f5cad17..25accf795 100644
--- a/src/rsn_supp/Makefile
+++ b/src/rsn_supp/Makefile
@@ -1,5 +1,3 @@
-ALL=$(OUT)librsn_supp.a
-
 include ../lib.rules
 
 install:
@@ -21,5 +19,3 @@ LIB_OBJS= \
 
 _OBJS_VAR := LIB_OBJS
 include ../objs.mk
-$(OUT)librsn_supp.a: $(LIB_OBJS)
-	$(AR) crT $@ $?
diff --git a/src/tls/Makefile b/src/tls/Makefile
index 5483345e5..0e79902ef 100644
--- a/src/tls/Makefile
+++ b/src/tls/Makefile
@@ -1,5 +1,3 @@
-ALL=$(OUT)libtls.a
-
 include ../lib.rules
 
 install:
@@ -33,5 +31,3 @@ LIB_OBJS= \
 
 _OBJS_VAR := LIB_OBJS
 include ../objs.mk
-$(OUT)libtls.a: $(LIB_OBJS)
-	$(AR) crT $@ $?
diff --git a/src/utils/Makefile b/src/utils/Makefile
index 91aba3846..fc7f4323d 100644
--- a/src/utils/Makefile
+++ b/src/utils/Makefile
@@ -1,5 +1,3 @@
-ALL=$(OUT)libutils.a
-
 include ../lib.rules
 
 install:
@@ -36,5 +34,3 @@ LIB_OBJS += edit.o
 
 _OBJS_VAR := LIB_OBJS
 include ../objs.mk
-$(OUT)libutils.a: $(LIB_OBJS)
-	$(AR) crT $@ $?
diff --git a/src/wps/Makefile b/src/wps/Makefile
index 791069527..d7660fdd4 100644
--- a/src/wps/Makefile
+++ b/src/wps/Makefile
@@ -1,5 +1,3 @@
-ALL=$(OUT)libwps.a
-
 include ../lib.rules
 
 install:
@@ -35,5 +33,3 @@ LIB_OBJS= \
 
 _OBJS_VAR := LIB_OBJS
 include ../objs.mk
-$(OUT)libwps.a: $(LIB_OBJS)
-	$(AR) crT $@ $?