Use thin archives to allow libraries to be merged
authorJouni Malinen <j@w1.fi>
Sun, 6 Dec 2009 11:49:31 +0000 (13:49 +0200)
committerJouni Malinen <j@w1.fi>
Sun, 6 Dec 2009 11:49:31 +0000 (13:49 +0200)
This allows libeap.a and libeap.so to be built by merging in multiple
libraries from src subdirectories. In addition, this avoids wasting
extra space and time for local builds.

eap_example/Makefile
src/crypto/Makefile
src/utils/Makefile

index 1784d40..ec26bc8 100644 (file)
@@ -6,6 +6,10 @@ ifndef CC
 CC=gcc
 endif
 
+ifndef RANLIB
+RANLIB=ranlib
+endif
+
 ifndef CFLAGS
 CFLAGS = -MMD -O2 -Wall -g
 endif
@@ -21,11 +25,7 @@ CFLAGS += -I../src
 CFLAGS += -I../src/utils
 
 
-OBJS_both += ../src/utils/common.o
-OBJS_both += ../src/utils/os_unix.o
-OBJS_both += ../src/utils/wpa_debug.o
-OBJS_both += ../src/utils/base64.o
-OBJS_both += ../src/utils/wpabuf.o
+OBJS_both += ../src/utils/libutils.a
 OBJS_both += ../src/crypto/sha1.o
 OBJS_both += ../src/crypto/sha1-tlsprf.o
 OBJS_both += ../src/crypto/aes-cbc.o
@@ -192,11 +192,16 @@ OBJS_lib=$(OBJS_both) $(OBJS_peer) $(OBJS_server)
 
 OBJS_ex = eap_example.o eap_example_peer.o eap_example_server.o
 
+
+../src/utils/libutils.a:
+       $(MAKE) -C ../src/utils
+
+
 ifneq ($(CONFIG_SOLIB), yes)
 LIBEAP = libeap.a
 libeap.a: $(OBJS_lib)
-       ar rc libeap.a $(OBJS_lib)
-       ranlib libeap.a
+       $(AR) crT libeap.a $(OBJS_lib)
+       $(RANLIB) libeap.a
 
 else
 CFLAGS  += -fPIC -DPIC
index c7ba82f..d1330a2 100644 (file)
@@ -49,6 +49,6 @@ LIB_OBJS += fips_prf_internal.o
 
 
 libcrypto.a: $(LIB_OBJS)
-       $(AR) cr $@ $(LIB_OBJS)
+       $(AR) crT $@ $?
 
 -include $(OBJS:%.o=%.d)
index b4a8973..bf9e444 100644 (file)
@@ -28,6 +28,6 @@ LIB_OBJS += eloop.o
 #LIB_OBJS += pcsc_funcs.o
 
 libutils.a: $(LIB_OBJS)
-       $(AR) cr $@ $(LIB_OBJS)
+       $(AR) crT $@ $?
 
 -include $(OBJS:%.o=%.d)