libdpf/thirdparty/hedley/test/Makefile

289 lines
9.6 KiB
Makefile
Raw Normal View History

CLANG_C_FLAGS = -Weverything -Wno-vla -Wno-covered-switch-default -Werror
GCC_C_FLAGS = -Wall -Wextra -Werror
ifeq ($(notdir $(CC)), clang)
CFLAGS ?= $(CLANG_C_FLAGS)
else ifeq ($(notdir $(CC)), suncc)
CFLAGS ?= -errwarn -errtags
C_OUTPUT_FILE := -o
else ifeq ($(notdir $(CC)),$(filter $(notdir $(CC)),armcl cl2000 cl430 cl6x cl7x clpru))
CFLAGS ?= --display_error_number --emit_warnings_as_errors --issue_remarks -i $(dir $(shell readlink -f $(shell which $(CC))))../include
C_OUTPUT_FILE := --output_file=
else ifeq ($(notdir $(CC)), pgcc)
CFLAGS ?= -Minform=inform -c11
C_OUTPUT_FILE := -o
else ifeq ($(notdir $(CC)), pgc++)
CFLAGS ?= --display_error_number -Minform=inform -Werror
C_OUTPUT_FILE := -o
else ifeq ($(notdir $(CC)), xlc)
CFLAGS ?= $(CLANG_C_FLAGS)
C_OUTPUT_FILE := -o
else ifeq ($(notdir $(CC)), icc)
CFLAGS ?= -w3 -Werror
C_OUTPUT_FILE := -o
else ifeq ($(notdir $(CC)), tcc)
CFLAGS ?=
C_OUTPUT_FILE := -o
else ifeq ($(notdir $(CC)), gcc)
CFLAGS ?= $(GCC_C_FLAGS)
C_OUTPUT_FILE := -o
else ifeq ($(notdir $(CC)), x86_64-w64-mingw32-gcc)
CFLAGS ?= $(GCC_C_FLAGS)
C_OUTPUT_FILE := -o
else ifeq ($(notdir $(CC)), ccomp)
CFLAGS ?= -Wall
C_OUTPUT_FILE := -o
else
CFLAGS ?= $(filter-out -Werror,$(GCC_C_FLAGS))
endif
CLANG_CXX_FLAGS = -Weverything -Werror
GCC_CXX_FLAGS = -Wall -Wextra -Werror
ifeq ($(notdir $(CXX)), clang++)
CXXFLAGS ?= $(CLANG_CXX_FLAGS)
else ifeq ($(notdir $(CXX)), sunCC)
CXXFLAGS ?= -errwarn=%all -errtags=yes
CXX_OUTPUT_FILE := -o
else ifeq ($(notdir $(CXX)), pgc++)
CXXFLAGS ?= --display_error_number -Minform=inform -Werror
CXX_OUTPUT_FILE := -o
else ifeq ($(notdir $(CXX)),$(filter $(notdir $(CC)),armcl cl2000 cl430 cl6x cl7x clpru))
CXXFLAGS ?= --display_error_number --emit_warnings_as_errors --issue_remarks -i $(dir $(shell readlink -f $(shell which $(CC))))../include
CXX_OUTPUT_FILE := --output_file=
else ifeq ($(notdir $(CXX)), xlc++)
CXXFLAGS ?= $(CLANG_CXX_FLAGS)
CXX_OUTPUT_FILE := -o
else ifeq ($(notdir $(CXX)), icpc)
CXXFLAGS ?= $(GCC_CXX_FLAGS)
CXX_OUTPUT_FILE := -o
else ifeq ($(notdir $(CXX)), g++)
CXXFLAGS ?= $(GCC_CXX_FLAGS)
CXX_OUTPUT_FILE := -o
else ifeq ($(notdir $(CXX)), x86_64-w64-mingw32-g++)
CFLAGS ?= $(GCC_CXX_FLAGS)
C_OUTPUT_FILE := -o
else
CXXFLAGS ?= $(filter-out -Werror,$(GCC_CXX_FLAGS))
endif
C_OUTPUT_FILE ?= --output=
CXX_OUTPUT_FILE ?= --output=
NULL =
TESTS = \
array-param \
assume \
cast \
concat \
const \
constant \
deprecated \
empty-bases \
fallthrough \
flags \
inline \
likely \
malloc \
message \
noinline \
no-escape \
no-return \
non-null \
predict \
printf-format \
pure \
require \
restrict \
returns-non-null \
sentinel \
static-assert \
stringify \
unknown-cpp-attributes \
unknown-pragmas \
unavailable \
unreachable \
unused-function \
visibility \
warn \
warn-unused-result \
$(NULL)
ifneq ($(CXX), none)
CXXTESTS = $(TESTS:=-cpp)
else
CXXTESTS =
endif
CLEANFILES = \
$(TESTS) \
$(TESTS:=-cpp) \
$(TESTS:=.cpp)
all: $(TESTS) $(CXXTESTS) .gitignore Makefile.msvc Makefile.iar Makefile.dmc
%.cpp: %.c
cp -a $^ $@
%-cpp: %.cpp
$(CXX) $(CXXFLAGS) $(CXX_OUTPUT_FILE)$@ $(^:.c=.cpp)
%: %.c
$(CC) $(CFLAGS) $(C_OUTPUT_FILE)$@ $^
define GEN_GCC_C_WARNINGS
$(1): $(1:=.c)
$(CC) $(filter-out -Werror,$(CFLAGS)) $(C_OUTPUT_FILE)$(1) $(1:=.c)
endef
define GEN_GCC_CXX_WARNINGS
$(1)-cpp: $(1:=.cpp)
$(CXX) $(filter-out -Werror,$(CXXFLAGS)) $(CXX_OUTPUT_FILE)$(1) $(1:=.cpp)
endef
.gitignore: Makefile
@echo "# Generated by Makefile. Do not edit." > $@
@$(foreach file,$(TESTS),echo -e "/$(file)\n/$(file:=.exe)\n/$(file:=.cpp)\n/$(file:=-cpp)\n/$(file:=-cpp.exe)\n/$(file:=-cpp.o)\n/$(file:=.obj)\n/$(file:=.lib)\n/$(file:=-cpp.obj)\n/$(file:=-cpp.lib)\n/$(file:=.o)\n/$(file:=.map)\n/$(file:=-cpp.map)" >> $@;)
@echo "/.gitignore" >> $@
Makefile.iar: Makefile
@echo -e "# Generated by Makefile. Do not edit.\r" > $@
@echo -e "CC = \"C:\x5cProgram Files (x86)\x5cIAR Systems\x5cEmbedded Workbench 8.4\x5carm\x5cbin\x5ciccarm.exe\"\r" >> $@
@echo -e "CXX = \x24(CC)\r" >> $@
@echo -e "\r" >> $@
@echo -e "CFLAGS = --silent --remarks --warnings_are_errors\r" >> $@
@echo -e "CXXFLAGS = --c++ \x24(CFLAGS)\r" >> $@
@echo -e "\r" >> $@
@echo -e "TESTS = \x5c\r" >> $@
@$(foreach file,$(TESTS),echo -e "\t$(file:=.o) $(file:=-cpp.o) \x5c\r" >> $@;)
@echo -e "\t\x24(NULL)\r\n\r" >> $@
@echo -e "CLEANFILES = \x24(TESTS) \x5c\r" >> $@
@$(foreach file,$(TESTS),echo -e "\t$(file:=.cpp) $(file:=.o) $(file:=-cpp.o) \x5c\r" >> $@;)
@echo -e "\t\x24(NULL)\r\n\r" >> $@
@echo -e "all: \x24(TESTS)\r\n\r" >> $@
@echo -e "clean:\r\n\tdel /Q \x24(CLEANFILES)\r\n\r" >> $@
@$(foreach file,$(TESTS),echo -e "$(file:=.o): $(file:=.c)\r\n\t\x24(CC) \x24(CFLAGS) --output \x24(@) \x24(?)\r\n$(file:=.cpp): $(file:=.c)\r\n\tcopy /Y \x24(?) \x24(@) >NUL\r\n$(file:=-cpp.o): $(file:=.cpp)\r\n\t\x24(CXX) \x24(CXXFLAGS) --output \x24(@) \x24(?)\r\n\r" >> $@;)
Makefile.dmc: Makefile
@echo -e "# Generated by Makefile. Do not edit.\r" > $@
@echo -e "CC = \"dmc.exe\"\r" >> $@
@echo -e "CXX = \x24(CC)\r" >> $@
@echo -e "\r" >> $@
@echo -e "CFLAGS = -w -w17 -w18 -wx\r" >> $@
@echo -e "CXXFLAGS = -wc \x24(CFLAGS)\r" >> $@
@echo -e "\r" >> $@
@echo -e "TESTS = \x5c\r" >> $@
@$(foreach file,$(TESTS),echo -e "\t$(file:=.exe) $(file:=-cpp.exe) \x5c\r" >> $@;)
@echo -e "\t\x24(NULL)\r\n\r" >> $@
@echo -e "CLEANFILES = \x24(TESTS) \x5c\r" >> $@
@$(foreach file,$(TESTS),echo -e "\t$(file:=.cpp) $(file:=.exe) $(file:=-cpp.exe) $(file:=.map) $(file:=-cpp.map) \x5c\r" >> $@;)
@echo -e "\t\x24(NULL)\r\n\r" >> $@
@echo -e "all: \x24(TESTS)\r\n\r" >> $@
@echo -e "clean:\r\n\tdel /Q \x24(CLEANFILES)\r\n\r" >> $@
@$(foreach file,$(TESTS),echo -e "$(file:=.exe): $(file:=.c)\r\n\t\x24(CC) \x24(CFLAGS) -o \x24(@) \x24(?)\r\n$(file:=.cpp): $(file:=.c)\r\n\tcopy /Y \x24(?) \x24(@) >NUL\r\n$(file:=-cpp.exe): $(file:=.cpp)\r\n\t\x24(CXX) \x24(CXXFLAGS) -o \x24(@) \x24(?)\r\n\r" >> $@;)
Makefile.msvc: Makefile
@echo -e "# Generated by Makefile. Do not edit.\r" > $@
@echo -e "CC = cl\r" >> $@
@echo -e "CXX = \x24(CC)\r" >> $@
@echo -e "\r" >> $@
@echo -e "CFLAGS = /nologo /Wall /wd4464 /wd4514\r" >> $@
@echo -e "CXXFLAGS = \x24(CFLAGS)\r" >> $@
@echo -e "\r" >> $@
@echo -e "TESTS = \x5c\r" >> $@
@$(foreach file,$(TESTS),echo -e "\t$(file:=.exe) $(file:=-cpp.exe) \x5c\r" >> $@;)
@echo -e "\t\x24(NULL)\r\n\r" >> $@
@echo -e "TESTS = \x5c\r" >> $@
@$(foreach file,$(TESTS),echo -e "\t$(file:=.exe) $(file:=-cpp.exe) \x5c\r" >> $@;)
@echo -e "\t\x24(NULL)\r\n\r" >> $@
@echo -e "CLEANFILES = \x24(TESTS) \x5c\r" >> $@
@$(foreach file,$(TESTS),echo -e "\t$(file:=.cpp) $(file:=.obj) $(file:=.lib) $(file:=-cpp.exp) $(file:=-cpp.lib) \x5c\r" >> $@;)
@echo -e "\t\x24(NULL)\r\n\r" >> $@
@echo -e "all: \x24(TESTS)\r\n\r" >> $@
@echo -e "clean:\r\n\tdel /Q \x24(CLEANFILES)\r\n\r" >> $@
@$(foreach file,$(TESTS),echo -e "$(file:=.exe): $(file:=.c)\r\n\t\x24(CC) \x24(CFLAGS) /Fe\x24(@) \x24(?)\r\n$(file:=.cpp): $(file:=.c)\r\n\tcopy /Y \x24(?) \x24(@) >NUL\r\n$(file:=-cpp.exe): $(file:=.cpp)\r\n\t\x24(CXX) \x24(CXXFLAGS) /Fe\x24(@) \x24(?)\r\n\r" >> $@;)
Makefile.icl: Makefile
@echo -e "# Generated by Makefile. Do not edit.\r" > $@
@echo -e "CC = icl\r" >> $@
@echo -e "CXX = \x24(CC)\r" >> $@
@echo -e "\r" >> $@
@echo -e "CFLAGS = /nologo /Wall /wd4464 /wd4514\r" >> $@
@echo -e "CXXFLAGS = \x24(CFLAGS)\r" >> $@
@echo -e "\r" >> $@
@echo -e "TESTS = \x5c\r" >> $@
@$(foreach file,$(TESTS),echo -e "\t$(file:=.exe) $(file:=-cpp.exe) \x5c\r" >> $@;)
@echo -e "\t\x24(NULL)\r\n\r" >> $@
@echo -e "TESTS = \x5c\r" >> $@
@$(foreach file,$(TESTS),echo -e "\t$(file:=.exe) $(file:=-cpp.exe) \x5c\r" >> $@;)
@echo -e "\t\x24(NULL)\r\n\r" >> $@
@echo -e "CLEANFILES = \x24(TESTS) \x5c\r" >> $@
@$(foreach file,$(TESTS),echo -e "\t$(file:=.cpp) $(file:=.obj) $(file:=.lib) $(file:=-cpp.exp) $(file:=-cpp.lib) \x5c\r" >> $@;)
@echo -e "\t\x24(NULL)\r\n\r" >> $@
@echo -e "all: \x24(TESTS)\r\n\r" >> $@
@echo -e "clean:\r\n\tdel /Q \x24(CLEANFILES)\r\n\r" >> $@
@$(foreach file,$(TESTS),echo -e "$(file:=.exe): $(file:=.c)\r\n\t\x24(CC) \x24(CFLAGS) /Fe\x24(@) \x24(?)\r\n$(file:=.cpp): $(file:=.c)\r\n\tcopy /Y \x24(?) \x24(@) >NUL\r\n$(file:=-cpp.exe): $(file:=.cpp)\r\n\t\x24(CXX) \x24(CXXFLAGS) /Fe\x24(@) \x24(?)\r\n\r" >> $@;)
Makefile.pelles: Makefile
@echo -e "# Generated by Makefile. Do not edit.\r" > $@
@echo -e "CC = pocc\r" >> $@
@echo -e "LD = polink\r" >> $@
@echo -e "\r" >> $@
@echo -e "CFLAGS = \r" >> $@
@echo -e "LDFLAGS = \r" >> $@
@echo -e "\r" >> $@
@echo -e "TESTS = \x5c\r" >> $@
@$(foreach file,$(TESTS),echo -e "\t$(file:=.exe) \x5c\r" >> $@;)
@echo -e "\t\x24(NULL)\r\n\r" >> $@
@echo -e "CLEANFILES = \x24(TESTS) \x5c\r" >> $@
@$(foreach file,$(TESTS),echo -e "\t$(file:=.obj) $(file:=.exe) \x5c\r" >> $@;)
@echo -e "\t\x24(NULL)\r\n\r" >> $@
@echo -e "all: \x24(TESTS)\r\n\r" >> $@
@echo -e "clean:\r\n\tdel /Q \x24(CLEANFILES)\r\n\r" >> $@
@$(foreach file,$(TESTS),echo -e "$(file:=.obj): $(file:=.c)\r\n\t\x24(CC) \x24(CFLAGS) $(file:=.c)\r\n\r\n$(file:=.exe): $(file:=.obj)\r\n\t\x24(LD) \x24(LDFLAGS) /OUT:$(file:=.exe) $(file:=.obj)\r\n\r" >> $@;)
clean:
rm -f $(CLEANFILES)
.PHONY: clean all
ifeq ($(notdir $(CC)), gcc)
$(foreach tgt,unavailable warn unknown-pragmas,$(eval $(call GEN_GCC_C_WARNINGS,$(tgt))))
else ifeq ($(notdir $(CC)), x86_64-w64-mingw32-gcc)
$(foreach tgt,unavailable warn unknown-pragmas,$(eval $(call GEN_GCC_C_WARNINGS,$(tgt))))
endif
ifeq ($(notdir $(CXX)), g++)
$(foreach tgt,unavailable warn unknown-pragmas,$(eval $(call GEN_GCC_CXX_WARNINGS,$(tgt))))
else ifeq ($(notdir $(CXX)), x86_64-w64-mingw32-g++)
$(foreach tgt,unavailable warn unknown-pragmas,$(eval $(call GEN_GCC_CXX_WARNINGS,$(tgt))))
endif