hostapd/tests/Makefile
Johannes Berg 722138cd25 build: Put object files into build/ folder
Instead of building in the source tree, put most object
files into the build/ folder at the root, and put each
thing that's being built into a separate folder.

This then allows us to build hostapd and wpa_supplicant
(or other combinations) without "make clean" inbetween.

For the tests keep the objects in place for now (and to
do that, add the build rule) so that we don't have to
rewrite all of that with $(call BUILDOBJS,...) which is
just noise there.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2020-10-10 12:51:39 +03:00

170 lines
3.7 KiB
Makefile

ALL=test-base64 test-md4 test-milenage \
test-rsa-sig-ver \
test-sha1 \
test-sha256 test-aes test-asn1 test-x509v3 test-list test-rc4
include ../src/build.rules
# for now, keep building in this folder, otherwise we need to
# put each object for each test into a separate variable and
# then do the objs.mk dance for it ...
%.o: %.c
$(Q)$(CC) -c -o $@ $(CFLAGS) $<
@$(E) " CC " $<
ifdef LIBFUZZER
CC=clang
CFLAGS = -MMD -O2 -Wall -g
CFLAGS += -fsanitize=fuzzer,address,signed-integer-overflow,unsigned-integer-overflow
CFLAGS += -DTEST_LIBFUZZER
LDFLAGS += -fsanitize=fuzzer,address,signed-integer-overflow,unsigned-integer-overflow
TEST_FUZZ=y
endif
ifdef TEST_FUZZ
CFLAGS += -DCONFIG_NO_RANDOM_POOL
CFLAGS += -DTEST_FUZZ
endif
CFLAGS += -DCONFIG_IEEE80211R_AP
CFLAGS += -DCONFIG_IEEE80211R
CFLAGS += -DCONFIG_TDLS
CFLAGS += -I../src
CFLAGS += -I../src/utils
SLIBS = ../src/utils/libutils.a
DLIBS = ../src/crypto/libcrypto.a \
../src/common/libcommon.a \
../src/ap/libap.a \
../src/eapol_auth/libeapol_auth.a \
../src/eapol_supp/libeapol_supp.a \
../src/eap_peer/libeap_peer.a \
../src/eap_server/libeap_server.a \
../src/eap_common/libeap_common.a \
../src/radius/libradius.a \
../src/l2_packet/libl2_packet.a \
../src/wps/libwps.a \
../src/rsn_supp/librsn_supp.a \
../src/tls/libtls.a
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: test-aes.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LLIBS)
test-asn1: test-asn1.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LLIBS)
test-base64: test-base64.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LLIBS)
test-eapol: test-eapol.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $< $(LLIBS)
test-https: test-https.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $< $(LLIBS)
test-https_server: test-https_server.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $< $(LLIBS)
test-json: test-json.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LLIBS)
test-list: test-list.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LLIBS)
test-md4: test-md4.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LLIBS)
test-milenage: test-milenage.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LLIBS)
test-rc4: test-rc4.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LLIBS)
test-rsa-sig-ver: test-rsa-sig-ver.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $< $(LLIBS)
test-sha1: test-sha1.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LLIBS)
test-sha256: test-sha256.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $^ $(LLIBS)
test-tls: test-tls.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $< $(LLIBS)
test-x509v3: test-x509v3.o $(LIBS)
$(LDO) $(LDFLAGS) -o $@ $< $(LLIBS)
run-tests: $(ALL)
./test-aes
./test-list
./test-md4
./test-milenage
./test-rsa-sig-ver
./test-sha1
./test-sha256
@echo
@echo All tests completed successfully.
clean: common-clean
rm -f *~ *.o *.d
rm -f test-eapol
rm -f test-https
rm -f test-json
rm -f test-tls
rm -f test_x509v3_nist.out.*
rm -f test_x509v3_nist2.out.*
-include $(OBJS:%.o=%.d)