diff --git a/Makefile b/Makefile index e5018aef..bbcbb511 100644 --- a/Makefile +++ b/Makefile @@ -1,21 +1,4 @@ -# Normal settings. - -OBJDIR = .obj -LUA = lua -CC = gcc -CXX = g++ -AR = ar -PKG_CONFIG = pkg-config -WX_CONFIG = wx-config -PROTOC = protoc -CFLAGS = -g -CXXFLAGS = -std=c++2a \ - -Wno-deprecated-enum-float-conversion \ - -Wno-deprecated-enum-enum-conversion -LDFLAGS = -PLATFORM = UNIX - -# Apply special Windows settings. +# Special Windows settings. ifeq ($(OS), Windows_NT) MINGWBIN = /mingw32/bin @@ -26,7 +9,26 @@ ifeq ($(OS), Windows_NT) PLATFORM = WINDOWS endif -all: $(OBJDIR)/build.ninja +# Normal settings. + +OBJDIR ?= .obj +LUA ?= lua +CC ?= gcc +CXX ?= g++ +AR ?= ar +PKG_CONFIG ?= pkg-config +WX_CONFIG ?= wx-config +PROTOC ?= protoc +CFLAGS ?= -g -Os +CXXFLAGS ?= -std=c++2a \ + -Wno-deprecated-enum-float-conversion \ + -Wno-deprecated-enum-enum-conversion +LDFLAGS ?= +PLATFORM ?= UNIX +TESTS ?= yes + +all:: $(OBJDIR)/build.ninja compile_commands.json + @ninja -f $< -t compdb > compile_commands.json @ninja -f $< $(OBJDIR)/build.ninja: Makefile $(shell find . -name '*.lua') @@ -43,6 +45,7 @@ $(OBJDIR)/build.ninja: Makefile $(shell find . -name '*.lua') PKG_CONFIG="$(PKG_CONFIG)" \ PLATFORM="$(PLATFORM)" \ PROTOC="$(PROTOC)" \ + TESTS="$(TESTS)" \ WX_CONFIG="$(WX_CONFIG)" \ > $@ diff --git a/build.lua b/build.lua index 37aa42fb..b0abf239 100644 --- a/build.lua +++ b/build.lua @@ -4,6 +4,7 @@ vars.ldflags = { "-pthread" } include "build/protobuf.lua" include "build/dependency.lua" +include "build/tests.lua" dependency { name = "fmt_dep", @@ -182,3 +183,5 @@ installable { } } +include "tests/build.lua" + diff --git a/build/tests.lua b/build/tests.lua new file mode 100644 index 00000000..176319f7 --- /dev/null +++ b/build/tests.lua @@ -0,0 +1,18 @@ +definerule("test", + { + srcs = { type="targets", default={} }, + }, + function (e) + if vars.TESTS == "yes" then + normalrule { + name = e.name, + ins = e.srcs, + outleaves = { "log.txt" }, + commands = { + "%{ins} > %{outs}", + } + } + end + end +) + diff --git a/dep/snowhouse/build.lua b/dep/snowhouse/build.lua new file mode 100644 index 00000000..34e1a561 --- /dev/null +++ b/dep/snowhouse/build.lua @@ -0,0 +1,5 @@ +clibrary { + name = "snowhouse", + dep_cflags = { "-Idep/snowhouse/include" } +} + diff --git a/dep/stb/build.lua b/dep/stb/build.lua index 77107d22..dde271b0 100644 --- a/dep/stb/build.lua +++ b/dep/stb/build.lua @@ -1,6 +1,6 @@ clibrary { name = "stb", srcs = { "./stb_image_write.c" }, - hdrs = { "./stb_image_write.h" } + hdrs = { "./stb_image_write.h" }, } diff --git a/tests/build.lua b/tests/build.lua new file mode 100644 index 00000000..a0211ccc --- /dev/null +++ b/tests/build.lua @@ -0,0 +1,35 @@ +TESTS = { + ["agg"] = { "dep/agg+agg", "dep/stb+stb", "~+zlib_dep" }, + ["amiga"] = {}, + ["bitaccumulator"] = {}, + ["bytes"] = {}, + ["compression"] = {}, + ["csvreader"] = {}, + ["flags"] = {}, + ["fluxmapreader"] = {}, + ["fluxpattern"] = {}, + ["fmmfm"] = {}, + ["greaseweazle"] = {}, + ["kryoflux"] = {}, + ["ldbs"] = {}, + --["proto"] = {}, + ["utils"] = {}, +} + +for name, deps in pairs(TESTS) do + cprogram { + name = name.."_bin", + srcs = { "./"..name..".cc" }, + deps = { + "~+libfluxengine", + "dep/snowhouse+snowhouse", + deps + }, + } + + test { + name = name.."_test", + srcs = { "+"..name.."_bin" } + } +end +