• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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