Fabrice Fontaine | 04ada58 | 2016-08-30 10:51:14 +0200 | [diff] [blame] | 1 | ALLTESTS = open_memstream funopen fopencookie gc_sections \ |
Thiago Macieira | 4d15639 | 2018-07-17 20:37:25 -0700 | [diff] [blame] | 2 | system-cjson cjson freestanding |
Thiago Macieira | 2a5fb79 | 2015-09-18 11:34:11 -0700 | [diff] [blame] | 3 | MAKEFILE := $(lastword $(MAKEFILE_LIST)) |
| 4 | OUT := |
| 5 | |
| 6 | PROGRAM-open_memstream = extern int open_memstream(); int main() { return open_memstream(); } |
| 7 | PROGRAM-funopen = extern int funopen(); int main() { return funopen(); } |
Fabrice Fontaine | 04ada58 | 2016-08-30 10:51:14 +0200 | [diff] [blame] | 8 | PROGRAM-fopencookie = extern int fopencookie(); int main() { return fopencookie(); } |
Thiago Macieira | 2a5fb79 | 2015-09-18 11:34:11 -0700 | [diff] [blame] | 9 | PROGRAM-gc_sections = int main() {} |
| 10 | CCFLAGS-gc_sections = -Wl,--gc-sections |
Thiago Macieira | 4d15639 | 2018-07-17 20:37:25 -0700 | [diff] [blame] | 11 | PROGRAM-freestanding = \#if !defined(__STDC_HOSTED__) || __STDC_HOSTED__-0 == 1\n |
| 12 | PROGRAM-freestanding += \#error Hosted implementation\n |
| 13 | PROGRAM-freestanding += \#endif\n |
| 14 | PROGRAM-freestanding += int main() {} |
| 15 | CCFLAGS-freestanding = $(CFLAGS) |
Thiago Macieira | 2a5fb79 | 2015-09-18 11:34:11 -0700 | [diff] [blame] | 16 | |
Thiago Macieira | d4c9ecb | 2015-09-26 00:21:06 -0700 | [diff] [blame] | 17 | PROGRAM-cjson = \#include <stdlib.h>\n |
Fabrice Fontaine | 8ba8e20 | 2016-11-13 15:43:40 +0100 | [diff] [blame] | 18 | PROGRAM-cjson += \#include <cjson/cJSON.h>\n |
Thiago Macieira | d4c9ecb | 2015-09-26 00:21:06 -0700 | [diff] [blame] | 19 | PROGRAM-cjson += int main() { return cJSON_False; } |
Thiago Macieira | 73d0a9c | 2018-03-13 15:08:31 -0700 | [diff] [blame] | 20 | CCFLAGS-cjson = -I$(dir $(MAKEFILE))src |
Thiago Macieira | d4c9ecb | 2015-09-26 00:21:06 -0700 | [diff] [blame] | 21 | PROGRAM-system-cjson = $(PROGRAM-cjson) |
Fabrice Fontaine | 8ba8e20 | 2016-11-13 15:43:40 +0100 | [diff] [blame] | 22 | CCFLAGS-system-cjson = -lcjson |
Thiago Macieira | d4c9ecb | 2015-09-26 00:21:06 -0700 | [diff] [blame] | 23 | |
Thiago Macieira | 2a5fb79 | 2015-09-18 11:34:11 -0700 | [diff] [blame] | 24 | sink: |
| 25 | @echo >&2 Please run from the top-level Makefile. |
| 26 | |
| 27 | configure: $(foreach it,$(ALLTESTS),check-$(it)) |
| 28 | |
| 29 | check-%: |
| 30 | @echo $(subst check-,,$@)-tested := 1 $(OUT) |
Thiago Macieira | 481ec6e | 2016-07-22 08:50:35 -0700 | [diff] [blame] | 31 | $(if $(V),,@)if printf "$($(subst check-,PROGRAM-,$@))" | \ |
Thiago Macieira | 2a5fb79 | 2015-09-18 11:34:11 -0700 | [diff] [blame] | 32 | $(CC) -xc $($(subst check-,CCFLAGS-,$@)) -o /dev/null - $(if $(V),,>/dev/null 2>&1); \ |
| 33 | then \ |
| 34 | echo $(subst check-,,$@)-pass := 1 $(OUT); \ |
| 35 | fi |