_OBJS_VAR := OBJS_ex
include ../src/objs.mk
-
-../src/utils/libutils.a:
- $(MAKE) -C ../src/utils
-
-../src/crypto/libcrypto.a:
- $(MAKE) -C ../src/crypto
-
-../src/tls/libtls.a:
- $(MAKE) -C ../src/tls
+_OBJS_VAR := EAP_LIBS
+include ../src/objs.mk
ifneq ($(CONFIG_SOLIB), yes)
LIBS += ../src/utils/libutils.a
LLIBS = -lrt
-../src/utils/libutils.a:
- $(MAKE) -C ../src/utils
-
-../src/crypto/libcrypto.a:
- $(MAKE) -C ../src/crypto
-
-../src/radius/libradius.a:
- $(MAKE) -C ../src/radius
-
#CLAGS += -DCONFIG_IPV6
OBJS_ex = radius_example.o
_OBJS_VAR := OBJS_ex
include ../src/objs.mk
+_OBJS_VAR := LIBS
+include ../src/objs.mk
+
radius_example: $(OBJS_ex) $(LIBS)
$(LDO) $(LDFLAGS) -o radius_example $(OBJS_ex) $(LIBS) $(LLIBS)
-ALL=libap.a
+ALL=$(OUT)libap.a
include ../lib.rules
_OBJS_VAR := LIB_OBJS
include ../objs.mk
-libap.a: $(LIB_OBJS)
+$(OUT)libap.a: $(LIB_OBJS)
$(AR) crT $@ $?
ROOTDIR := $(dir $(ROOTDIR:%../src/=%))../
BUILDDIR ?= $(abspath $(ROOTDIR)build)
BUILDDIR := $(BUILDDIR:%/=%)
-_PROJ := $(abspath $(dir $(firstword $(MAKEFILE_LIST))))
ABSROOT := $(abspath $(ROOTDIR))
+ifeq ($(origin OUT),command line)
+_PROJ := $(OUT:%/=%)
+_PROJ := $(_PROJ:$(BUILDDIR)/%=%)
+else
+_PROJ := $(abspath $(dir $(firstword $(MAKEFILE_LIST))))
_PROJ := $(_PROJ:$(ABSROOT)/%=%)
+endif
ifndef CC
CC=gcc
$(Q)$(CC) -c -o $@ $(CFLAGS) $<
@$(E) " CC " $<
+# libraries - they know how to build themselves
+$(BUILDDIR)/$(PROJ)/%.a: $(CONFIG_FILE)
+ $(Q)mkdir -p $(BUILDDIR)/$(PROJ)/$(dir $(@:$(BUILDDIR)/$(PROJ)/%=%))
+ $(Q)$(MAKE) -C $(ROOTDIR)$(dir $(@:$(BUILDDIR)/$(PROJ)/%=%)) OUT=$(abspath $(dir $@))/
+
BUILDOBJ = $(patsubst %,$(BUILDDIR)/$(PROJ)/%,$(patsubst $(ROOTDIR)%,%,$(1)))
.PHONY: common-clean
common-clean:
- $(Q)$(MAKE) -C $(ROOTDIR)/src clean
$(Q)rm -rf $(ALL) $(BUILDDIR)/$(PROJ)
-ALL=libcommon.a
+ALL=$(OUT)libcommon.a
include ../lib.rules
_OBJS_VAR := LIB_OBJS
include ../objs.mk
-libcommon.a: $(LIB_OBJS)
+$(OUT)libcommon.a: $(LIB_OBJS)
$(AR) crT $@ $?
-ALL=libcrypto.a
+ALL=$(OUT)libcrypto.a
include ../lib.rules
_OBJS_VAR := LIB_OBJS
include ../objs.mk
-libcrypto.a: $(LIB_OBJS)
+$(OUT)libcrypto.a: $(LIB_OBJS)
$(AR) crT $@ $?
-ALL=libeap_common.a
+ALL=$(OUT)libeap_common.a
include ../lib.rules
_OBJS_VAR := LIB_OBJS
include ../objs.mk
-libeap_common.a: $(LIB_OBJS)
+$(OUT)libeap_common.a: $(LIB_OBJS)
$(AR) crT $@ $?
-ALL=libeap_peer.a
+ALL=$(OUT)libeap_peer.a
include ../lib.rules
_OBJS_VAR := LIB_OBJS
include ../objs.mk
-libeap_peer.a: $(LIB_OBJS)
+$(OUT)libeap_peer.a: $(LIB_OBJS)
$(AR) crT $@ $?
-ALL=libeap_server.a
+ALL=$(OUT)libeap_server.a
include ../lib.rules
_OBJS_VAR := LIB_OBJS
include ../objs.mk
-libeap_server.a: $(LIB_OBJS)
+$(OUT)libeap_server.a: $(LIB_OBJS)
$(AR) crT $@ $?
-ALL=libeapol_auth.a
+ALL=$(OUT)libeapol_auth.a
include ../lib.rules
_OBJS_VAR := LIB_OBJS
include ../objs.mk
-libeapol_auth.a: $(LIB_OBJS)
+$(OUT)libeapol_auth.a: $(LIB_OBJS)
$(AR) crT $@ $?
-ALL=libeapol_supp.a
+ALL=$(OUT)libeapol_supp.a
include ../lib.rules
_OBJS_VAR := LIB_OBJS
include ../objs.mk
-libeapol_supp.a: $(LIB_OBJS)
+$(OUT)libeapol_supp.a: $(LIB_OBJS)
$(AR) crT $@ $?
-ALL=libl2_packet.a
+ALL=$(OUT)libl2_packet.a
include ../lib.rules
_OBJS_VAR := LIB_OBJS
include ../objs.mk
-libl2_packet.a: $(LIB_OBJS)
+$(OUT)libl2_packet.a: $(LIB_OBJS)
$(AR) crT $@ $?
$(_OBJS_VAR) := $(call BUILDOBJ,$($(_OBJS_VAR)))
--include $($(_OBJS_VAR):%.o=%.d)
+-include $($($(_OBJS_VAR):%.o=%.d):%.a=%.d)
_DIRS += $(dir $($(_OBJS_VAR)))
-ALL=libp2p.a
+ALL=$(OUT)libp2p.a
include ../lib.rules
_OBJS_VAR := LIB_OBJS
include ../objs.mk
-libp2p.a: $(LIB_OBJS)
+$(OUT)libp2p.a: $(LIB_OBJS)
$(AR) crT $@ $?
-ALL=libradius.a
+ALL=$(OUT)libradius.a
include ../lib.rules
_OBJS_VAR := LIB_OBJS
include ../objs.mk
-libradius.a: $(LIB_OBJS)
+$(OUT)libradius.a: $(LIB_OBJS)
$(AR) crT $@ $?
-ALL=librsn_supp.a
+ALL=$(OUT)librsn_supp.a
include ../lib.rules
_OBJS_VAR := LIB_OBJS
include ../objs.mk
-librsn_supp.a: $(LIB_OBJS)
+$(OUT)librsn_supp.a: $(LIB_OBJS)
$(AR) crT $@ $?
-ALL=libtls.a
+ALL=$(OUT)libtls.a
include ../lib.rules
_OBJS_VAR := LIB_OBJS
include ../objs.mk
-libtls.a: $(LIB_OBJS)
+$(OUT)libtls.a: $(LIB_OBJS)
$(AR) crT $@ $?
-ALL=libutils.a
+ALL=$(OUT)libutils.a
include ../lib.rules
_OBJS_VAR := LIB_OBJS
include ../objs.mk
-libutils.a: $(LIB_OBJS)
+$(OUT)libutils.a: $(LIB_OBJS)
$(AR) crT $@ $?
-ALL=libwps.a
+ALL=$(OUT)libwps.a
include ../lib.rules
_OBJS_VAR := LIB_OBJS
include ../objs.mk
-libwps.a: $(LIB_OBJS)
+$(OUT)libwps.a: $(LIB_OBJS)
$(AR) crT $@ $?
../src/rsn_supp/librsn_supp.a \
../src/tls/libtls.a
+_OBJS_VAR := LLIBS
+include ../src/objs.mk
+_OBJS_VAR := SLIBS
+include ../src/objs.mk
+_OBJS_VAR := DLIBS
+include ../src/objs.mk
+
LIBS = $(SLIBS) $(DLIBS)
LLIBS = -Wl,--start-group $(DLIBS) -Wl,--end-group $(SLIBS)
# glibc < 2.17 needs -lrt for clock_gettime()
LLIBS += -lrt
-../src/utils/libutils.a:
- $(MAKE) -C ../src/utils
-
-../src/common/libcommon.a:
- $(MAKE) -C ../src/common
-
-../src/crypto/libcrypto.a:
- $(MAKE) -C ../src/crypto
-
-../src/tls/libtls.a:
- $(MAKE) -C ../src/tls
-
-../src/ap/libap.a:
- $(MAKE) -C ../src/ap
-
-../src/radius/libradius.a:
- $(MAKE) -C ../src/radius
-
-../src/l2_packet/libl2_packet.a:
- $(MAKE) -C ../src/l2_packet
-
-../src/wps/libwps.a:
- $(MAKE) -C ../src/wps
-
-../src/eap_peer/libeap_peer.a:
- $(MAKE) -C ../src/eap_peer
-
-../src/eap_server/libeap_server.a:
- $(MAKE) -C ../src/eap_server
-
-../src/eap_common/libeap_common.a:
- $(MAKE) -C ../src/eap_common
-
-../src/eapol_auth/libeapol_auth.a:
- $(MAKE) -C ../src/eapol_auth
-
-../src/eapol_supp/libeapol_supp.a:
- $(MAKE) -C ../src/eapol_supp
-
-../src/rsn_supp/librsn_supp.a:
- $(MAKE) -C ../src/rsn_supp
-
-
test-aes: $(call BUILDOBJ,test-aes.o) $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LLIBS)
_OBJS_VAR := OBJS
include ../../../src/objs.mk
+_OBJS_VAR := LIBS
+include ../../../src/objs.mk
+
+_OBJS_VAR := ELIBS
+include ../../../src/objs.mk
+
ap-mgmt: $(OBJS) $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LIBS) $(ELIBS)
_OBJS_VAR := OBJS
include ../../../src/objs.mk
+_OBJS_VAR := LIBS
+include ../../../src/objs.mk
+
asn1: $(OBJS) $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LIBS) $(ELIBS)
_OBJS_VAR := OBJS
include ../../../src/objs.mk
+_OBJS_VAR := LIBS
+include ../../../src/objs.mk
+
dpp-uri: $(OBJS) $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ -lcrypto
_OBJS_VAR := OBJS
include ../../../src/objs.mk
+_OBJS_VAR := LIBS
+include ../../../src/objs.mk
+
eap-aka-peer: $(OBJS) $(LIBS)
$(Q)$(LDO) $(LDFLAGS) -o $@ $^ $(LIBS) $(ELIBS)
@$(E) " LD " $@
_OBJS_VAR := OBJS
include ../../../src/objs.mk
+_OBJS_VAR := LIBS
+include ../../../src/objs.mk
+
eap-mschapv2-peer: $(OBJS) $(LIBS)
$(Q)$(LDO) $(LDFLAGS) -o $@ $^ $(LIBS) $(ELIBS)
@$(E) " LD " $@
_OBJS_VAR := OBJS
include ../../../src/objs.mk
+_OBJS_VAR := LIBS
+include ../../../src/objs.mk
+
eap-sim-peer: $(OBJS) $(LIBS)
$(Q)$(LDO) $(LDFLAGS) -o $@ $^ $(LIBS) $(ELIBS)
@$(E) " LD " $@
_OBJS_VAR := OBJS
include ../../../src/objs.mk
+_OBJS_VAR := LIBS
+include ../../../src/objs.mk
+
eapol-key-auth: $(OBJS) $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ -Wl,--start-group $(LIBS) -Wl,--end-group
_OBJS_VAR := OBJS
include ../../../src/objs.mk
+_OBJS_VAR := LIBS
+include ../../../src/objs.mk
+
eapol-key-supp: $(OBJS) $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ -Wl,--start-group $(LIBS) -Wl,--end-group
_OBJS_VAR := OBJS
include ../../../src/objs.mk
+_OBJS_VAR := LIBS
+include ../../../src/objs.mk
+
eapol-supp: $(OBJS) $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ -Wl,--start-group $(LIBS) -Wl,--end-group
_OBJS_VAR := OBJS
include ../../../src/objs.mk
+_OBJS_VAR := LIBS
+include ../../../src/objs.mk
+
json: $(OBJS) $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LIBS) $(ELIBS)
_OBJS_VAR := OBJS
include ../../../src/objs.mk
+_OBJS_VAR := LIBS
+include ../../../src/objs.mk
+
p2p: $(OBJS) $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LIBS)
CFLAGS += -I$(SRC) -I$(SRC)/utils -I$(WPAS_SRC)
OBJS += ../fuzzer-common.o
-$(SRC)/ap/libap.a:
- $(MAKE) -C $(SRC)/ap TEST_FUZZ=y
-
-$(SRC)/common/libcommon.a:
- $(MAKE) -C $(SRC)/common
-
-$(SRC)/crypto/libcrypto.a:
- $(MAKE) -C $(SRC)/crypto TEST_FUZZ=y
-
-$(SRC)/eapol_auth/libeapol_auth.a:
- $(MAKE) -C $(SRC)/eapol_auth
-
-$(SRC)/eapol_supp/libeapol_supp.a:
- $(MAKE) -C $(SRC)/eapol_supp
-
-$(SRC)/eap_common/libeap_common.a:
- $(MAKE) -C $(SRC)/eap_common
-
-$(SRC)/eap_peer/libeap_peer.a:
- $(MAKE) -C $(SRC)/eap_peer
-
-$(SRC)/eap_server/libeap_server.a:
- $(MAKE) -C $(SRC)/eap_server
-
-$(SRC)/l2_packet/libl2_packet.a:
- $(MAKE) -C $(SRC)/l2_packet
-
-$(SRC)/p2p/libp2p.a:
- $(MAKE) -C $(SRC)/p2p
-
-$(SRC)/radius/libradius.a:
- $(MAKE) -C $(SRC)/radius
-
-$(SRC)/rsn_supp/librsn_supp.a:
- $(MAKE) -C $(SRC)/rsn_supp TEST_FUZZ=y
-
-$(SRC)/tls/libtls.a:
- $(MAKE) -C $(SRC)/tls TEST_FUZZ=y
-
-$(SRC)/utils/libutils.a:
- $(MAKE) -C $(SRC)/utils TEST_FUZZ=y
-
-$(SRC)/wps/libwps.a:
- $(MAKE) -C $(SRC)/wps
+# for the lib builds
+export TEST_FUZZ=y
_OBJS_VAR := OBJS
include ../../../src/objs.mk
+_OBJS_VAR := LIBS
+include ../../../src/objs.mk
+
sae: $(OBJS) $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ -lcrypto
_OBJS_VAR := OBJS
include ../../../src/objs.mk
+_OBJS_VAR := LIBS
+include ../../../src/objs.mk
+
+_OBJS_VAR := ELIBS
+include ../../../src/objs.mk
+
tls-client: $(OBJS) $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LIBS) $(ELIBS)
_OBJS_VAR := OBJS
include ../../../src/objs.mk
+_OBJS_VAR := LIBS
+include ../../../src/objs.mk
+
+_OBJS_VAR := ELIBS
+include ../../../src/objs.mk
+
tls-server: $(OBJS) $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LIBS) $(ELIBS)
_OBJS_VAR := OBJS
include ../../../src/objs.mk
+_OBJS_VAR := LIBS
+include ../../../src/objs.mk
+
+_OBJS_VAR := ELIBS
+include ../../../src/objs.mk
+
wnm: $(OBJS) $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LIBS) $(ELIBS)
_OBJS_VAR := OBJS
include ../../../src/objs.mk
+_OBJS_VAR := LIBS
+include ../../../src/objs.mk
+
+_OBJS_VAR := ELIBS
+include ../../../src/objs.mk
+
x509: $(OBJS) $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LIBS) $(ELIBS)
TOBJS += gcmp.o
-../src/utils/libutils.a:
- $(MAKE) -C ../src/utils
-
-../src/crypto/libcrypto.a:
- $(MAKE) -C ../src/crypto
-
-
OBJS_cli = wlantest_cli.o
_OBJS_VAR := OBJS
include ../src/objs.mk
_OBJS_VAR := OBJS_cli
include ../src/objs.mk
+_OBJS_VAR := OWN_LIBS
+include ../src/objs.mk
wlantest: $(OBJS) $(OWN_LIBS)
$(LDO) $(LDFLAGS) -o wlantest $(OBJS) $(OWN_LIBS) $(LIBS)