aboutsummaryrefslogtreecommitdiffhomepage
path: root/lexilla/test/makefile
diff options
context:
space:
mode:
Diffstat (limited to 'lexilla/test/makefile')
-rw-r--r--lexilla/test/makefile68
1 files changed, 68 insertions, 0 deletions
diff --git a/lexilla/test/makefile b/lexilla/test/makefile
new file mode 100644
index 000000000..f89f75640
--- /dev/null
+++ b/lexilla/test/makefile
@@ -0,0 +1,68 @@
+# Build all the lexer tests using GNU make and either g++ or Clang
+# @file makefile
+# Copyright 2019 by Neil Hodgson <neilh@scintilla.org>
+# The License.txt file describes the conditions under which this software may be distributed.
+# Should be run using mingw32-make on Windows, not nmake
+# On Windows g++ is used, on OS X clang, and on Linux g++ is used by default
+# but clang can be used by defining CLANG when invoking make
+# clang works only with libc++, not libstdc++
+
+.PHONY: all test clean
+
+.SUFFIXES: .cxx
+
+WARNINGS = -Wpedantic -Wall -Wextra
+
+ifndef windir
+LIBS += -ldl
+ifeq ($(shell uname),Darwin)
+# On macOS always use Clang
+CLANG = 1
+endif
+endif
+
+EXE = $(if $(windir),TestLexers.exe,TestLexers)
+
+BASE_FLAGS += --std=c++2a
+
+ifdef CLANG
+ CXX = clang++
+ BASE_FLAGS += -fsanitize=address
+endif
+
+ifdef LEXILLA_STATIC
+ DEFINES += -D LEXILLA_STATIC
+ LIBS += ../../bin/liblexilla.a
+endif
+
+ifdef windir
+ DEL = $(if $(wildcard $(dir $(SHELL))rm.exe), $(dir $(SHELL))rm.exe -f, del /q)
+else
+ DEL = rm -f
+endif
+
+DEFINES += -D$(if $(DEBUG),DEBUG,NDEBUG)
+BASE_FLAGS += $(if $(DEBUG),-g,-Os)
+
+INCLUDES = -I ../../include -I ../src
+BASE_FLAGS += $(WARNINGS)
+
+all: $(EXE)
+
+test: $(EXE)
+ ./$(EXE)
+
+clean:
+ $(DEL) *.o *.obj $(EXE)
+
+%.o: %.cxx
+ $(CXX) $(DEFINES) $(INCLUDES) $(BASE_FLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
+
+OBJS = TestLexers.o TestDocument.o LexillaAccess.o
+
+$(EXE): $(OBJS)
+ $(CXX) $(BASE_FLAGS) $(CPPFLAGS) $(CXXFLAGS) $^ $(LIBS) $(LDLIBS) -o $@
+
+TestLexers.o: TestLexers.cxx TestDocument.h LexillaAccess.h
+TestDocument.o: TestDocument.cxx TestDocument.h
+LexillaAccess.o: LexillaAccess.cxx LexillaAccess.h