1# 2# Copyright (c) 2001, 2002 Swedish Institute of Computer Science. 3# All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without modification, 6# are permitted provided that the following conditions are met: 7# 8# 1. Redistributions of source code must retain the above copyright notice, 9# this list of conditions and the following disclaimer. 10# 2. Redistributions in binary form must reproduce the above copyright notice, 11# this list of conditions and the following disclaimer in the documentation 12# and/or other materials provided with the distribution. 13# 3. The name of the author may not be used to endorse or promote products 14# derived from this software without specific prior written permission. 15# 16# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 17# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 19# SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 20# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 21# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 24# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 25# OF SUCH DAMAGE. 26# 27# This file is part of the lwIP TCP/IP stack. 28# 29# Author: Adam Dunkels <adam@sics.se> 30# 31 32all compile: lwip_unittests 33.PHONY: all clean check 34 35LWIPDIR=../../../../src 36 37# The include path to sys_arch.h and lwipopts.h must be first, so this must be before Common.mk 38CFLAGS=-DLWIP_NOASSERT_ON_ERROR -I/usr/include/check -I$(LWIPDIR)/../test/unit 39 40# Ignore 'too many arguments for format' warnings which happen with GCCs 41# from check 0.15.2 on fail_if/fail_unless macros with text. 42# See https://github.com/libcheck/check/pull/298/commits/82540c5428d3818b64d 43CFLAGS+=-Wno-error=format-extra-args 44 45ifeq (clang,$(findstring clang,$(CC))) 46# check.h causes 'error: token pasting of ',' and __VA_ARGS__ is a GNU extension' with clang 9.0.0 47CFLAGS+=-Wno-gnu-zero-variadic-macro-arguments 48endif 49 50# Prevent compiling sys_arch.c of unix port because unit test provide their own port 51SYSARCH?= 52include ../Common.mk 53 54LDFLAGS:=-lcheck -lm $(LDFLAGS) 55 56ifneq ($(UNAME_S),Darwin) 57# check installed via brew on Darwin doesn't have a separate subunit library (must be statically linked) 58LDFLAGS+=-lsubunit 59endif 60 61TESTDIR=$(LWIPDIR)/../test/unit 62include $(TESTDIR)/Filelists.mk 63TESTOBJS=$(notdir $(TESTFILES:.c=.o)) 64 65DEPFILES=.depend_test .depend_lwip .depend_app 66 67clean: 68 @rm -f *.o $(LWIPLIBCOMMON) $(APPLIB) lwip_unittests *.s $(DEPFILES) *.core core lwip_unittests.xml 69 70depend dep: $(DEPFILES) 71 @true 72 73ifneq ($(MAKECMDGOALS),clean) 74include $(DEPFILES) 75endif 76 77.depend_test: $(TESTFILES) 78 $(CCDEP) $(CFLAGS) -MM $^ > .depend_test || rm -f .depend_test 79.depend_lwip: $(LWIPFILES) 80 $(CCDEP) $(CFLAGS) -MM $^ > .depend_lwip || rm -f .depend_lwip 81.depend_app: $(APPFILES) 82 $(CCDEP) $(CFLAGS) -MM $^ > .depend_app || rm -f .depend_app 83 84ifneq ($(UNAME_S),Darwin) 85# clang on Darwin doesn't support --start-group 86lwip_unittests: $(DEPFILES) $(TESTOBJS) $(LWIPLIBCOMMON) $(APPLIB) 87 $(CC) $(CFLAGS) -o lwip_unittests $(TESTOBJS) -Wl,--start-group $(LWIPLIBCOMMON) $(APPLIB) $(LDFLAGS) -Wl,--end-group 88else 89lwip_unittests: $(DEPFILES) $(TESTOBJS) $(LWIPLIBCOMMON) $(APPLIB) 90 $(CC) $(CFLAGS) -o lwip_unittests $(TESTOBJS) $(LWIPLIBCOMMON) $(APPLIB) $(LDFLAGS) 91endif 92 93check: lwip_unittests 94 @./lwip_unittests 95