1# Copyright 2018 The Fuchsia Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5LOCAL_DIR := $(GET_LOCAL_DIR)
6
7#
8# BANJO compiler host tests.
9#
10
11MODULE := $(LOCAL_DIR)
12
13MODULE_TYPE := hosttest
14
15MODULE_NAME := banjo-compiler-test
16
17EXAMPLE_DIR := system/host/banjo/examples/
18
19EXAMPLE_FILES := \
20    $(EXAMPLE_DIR)/alignment.banjo \
21    $(EXAMPLE_DIR)/empty.banjo \
22    $(EXAMPLE_DIR)/enums.banjo \
23    $(EXAMPLE_DIR)/events.banjo \
24    $(EXAMPLE_DIR)/example-0.banjo \
25    $(EXAMPLE_DIR)/example-1.banjo \
26    $(EXAMPLE_DIR)/example-2.banjo \
27    $(EXAMPLE_DIR)/example-3.banjo \
28    $(EXAMPLE_DIR)/example-4.banjo \
29    $(EXAMPLE_DIR)/example-5.banjo \
30    $(EXAMPLE_DIR)/example-6.banjo \
31    $(EXAMPLE_DIR)/example-7.banjo \
32    $(EXAMPLE_DIR)/example-8.banjo \
33    $(EXAMPLE_DIR)/example-9.banjo \
34    $(EXAMPLE_DIR)/interface-ordinals.banjo \
35    $(EXAMPLE_DIR)/library-a/point.banjo \
36    $(EXAMPLE_DIR)/library-b/view.banjo \
37    $(EXAMPLE_DIR)/simple.banjo \
38    $(EXAMPLE_DIR)/tables.banjo \
39    $(EXAMPLE_DIR)/test.banjo \
40    $(EXAMPLE_DIR)/types.banjo \
41    $(LOCAL_DIR)/testdata/goodformat.banjo \
42    $(LOCAL_DIR)/testdata/badformat.banjo.noformat \
43
44BUILDGEN_DIR=$(BUILDDIR)/system/utest/banjo-compiler
45
46$(BUILDGEN_DIR)/examples.cpp: $(EXAMPLE_FILES)
47	@$(MKDIR)
48	$(call BUILDECHO, generating BANJO test example file)
49	$(NOECHO)rm -rf $@ && \
50	printf "\
51#include <map>\n\
52#include <string>\n\
53#include \"examples.h\"\n\
54// Autogenerated: Do not modify!\n\
55std::map<std::string, std::string> Examples::map_ = {\n" >> $@ && \
56	for i in $^; do \
57	  printf "    {\""$${i}"\", R\"BANJO(""$$(cat $${i})"")BANJO\"}," >> $@; \
58	done &&  \
59	printf "\
60};\n" >> $@ \
61
62
63MODULE_SRCS := \
64    $(LOCAL_DIR)/main.cpp \
65    $(LOCAL_DIR)/dup_attributes_tests.cpp \
66    $(LOCAL_DIR)/flat_ast_tests.cpp \
67    $(LOCAL_DIR)/formatter_unittests.cpp \
68    $(LOCAL_DIR)/json_generator_tests.cpp \
69    $(LOCAL_DIR)/max_bytes_tests.cpp \
70    $(LOCAL_DIR)/max_handle_tests.cpp \
71    $(LOCAL_DIR)/parsing_tests.cpp \
72    $(LOCAL_DIR)/superinterface_tests.cpp \
73    $(LOCAL_DIR)/using_tests.cpp \
74    $(LOCAL_DIR)/visitor_unittests.cpp \
75    $(BUILDGEN_DIR)/examples.cpp \
76
77MODULE_COMPILEFLAGS := \
78    -Isystem/ulib/unittest/include \
79    -Isystem/utest/banjo-compiler \
80
81MODULE_HOST_LIBS := \
82    system/host/banjo \
83    system/ulib/pretty.hostlib \
84    system/ulib/unittest.hostlib \
85
86MODULE_PACKAGE_INCS := \
87    $(LOCAL_DIR)/examples.h \
88
89include make/module.mk
90