Migrate to latest project structure
Bump version to 1.1.0
This commit is contained in:
		
							
								
								
									
										238
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										238
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,54 +1,78 @@ | ||||
| include premake.make | ||||
|  | ||||
| LIBNAME := $(shell basename $$(pwd)) | ||||
| UNAME_S := $(shell uname -s) | ||||
| # git commit hash and version for this build | ||||
| COMMIT-HASH != git log 2>/dev/null | sed -e '1s/^commit //;q' | ||||
| COMMIT := "static const char* commit = \"$(COMMIT-HASH)\";" | ||||
| VERSION := "static const char* version = \"$(MAJOR).$(MINOR).$(PATCH)\";" | ||||
|  | ||||
| # some important install locations | ||||
| PREFIX ?= /usr/local | ||||
| BINDIR ?= $(PREFIX)/bin | ||||
| CONFIGDIR ?= $(PREFIX)/etc | ||||
| INCLUDEDIR ?= $(PREFIX)/include | ||||
| LIBDIR ?= $(PREFIX)/lib | ||||
| DATADIR ?= $(PREFIX)/share | ||||
| DOCDIR ?= $(DATADIR)/$(LIBNAME)/doc | ||||
| MANDIR ?= $(PREFIX)/man | ||||
| DATADIR ?= $(PREFIX)/share/$(PROJ) | ||||
| DOCDIR ?= $(DATADIR)/doc | ||||
|  | ||||
| ifeq ($(UNAME_S),Darwin) | ||||
| 	LINKERNAME := $(LIBNAME).dylib | ||||
| 	SONAME := $(LIBNAME).$(MAJOR).dylib | ||||
| # setup naming and versioning for library product | ||||
| ifeq ($(UNAME_S), Darwin) | ||||
| 	LINKERNAME := $(PROJ).dylib | ||||
| 	SONAME := $(PROJ).$(MAJOR).dylib | ||||
| 	REALNAME := $(LINKERNAME) | ||||
| endif | ||||
| ifeq ($(UNAME_S),OpenBSD) | ||||
| 	REALNAME := $(LIBNAME).so.$(MAJOR).$(MINOR) | ||||
| endif | ||||
| ifeq ($(UNAME_S),Linux) | ||||
| 	LINKERNAME := $(LIBNAME).so | ||||
| else ifeq ($(UNAME_S), OpenBSD) | ||||
| 	REALNAME := $(PROJ).so.$(MAJOR).$(MINOR) | ||||
| else ifeq ($(UNAME_S), Linux) | ||||
| 	LINKERNAME := $(PROJ).so | ||||
| 	SONAME := $(LINKERNAME).$(MAJOR) | ||||
| 	REALNAME := $(SONAME).$(MINOR).$(PATCH) | ||||
| endif | ||||
| STATICLIB := $(LIBNAME).a | ||||
| STATICLIB := $(PROJ).a | ||||
|  | ||||
| # select default compiler | ||||
| CXX ?= g++ | ||||
|  | ||||
| # setup compiler flags and build config | ||||
| CXXFLAGS += -Wshadow -Wall -Wpedantic -Wextra -Wno-unused-parameter | ||||
| CXXFLAGS += -g3 -std=c++20 -fPIC | ||||
| ifeq ($(DEBUG),1) | ||||
| 	CXXFLAGS += -D DEBUG -O0 | ||||
| CXXFLAGS += -g3 -fPIC | ||||
| ifeq ($(DEBUG), 1) | ||||
| 	CXXFLAGS += -DDEBUG -O0 | ||||
| 	CONFIG := debug | ||||
| else | ||||
| 	CXXFLAGS += -D NDEBUG -O3 | ||||
| 	CXXFLAGS += -DNDEBUG -O3 | ||||
| 	CONFIG := release | ||||
| endif | ||||
|  | ||||
| # setup build locations | ||||
| OUTDIR := build/$(CONFIG) | ||||
| BUILDDIR := build/obj | ||||
| BIN := $(OUTDIR)/$(PROJ) | ||||
|  | ||||
| SRCS := $(notdir $(wildcard src/*.cpp)) | ||||
| # define sources and derived files | ||||
| # allow for extra sources defined in premake.make | ||||
| SRCS += $(notdir $(wildcard src/*.cpp)) | ||||
| OBJS := $(addprefix $(BUILDDIR)/, $(SRCS:.cpp=.o)) | ||||
| DEPS := $(addprefix $(BUILDDIR)/, $(SRCS:.cpp=.dep)) | ||||
| HDRS ?= $(wildcard src/*.hpp) | ||||
| HDRS ?= $(filter-out src/precomp.hpp, $(wildcard src/*.hpp)) | ||||
| MANS := $(addprefix $(PREFIX)/, $(wildcard man/man*/*)) | ||||
|  | ||||
| # if project supports plugins, link to libdl where needed | ||||
| ifdef PLUGINS | ||||
| ifeq ($(UNAME_S),Darwin) | ||||
| 	LDLIBS += -ldl | ||||
| else ifeq ($(UNAME_S),Linux) | ||||
| 	LDLIBS += -ldl | ||||
| endif | ||||
| endif | ||||
|  | ||||
| # pattern rules =========================================================== | ||||
|  | ||||
| $(BUILDDIR)/%.o: src/%.cpp | ||||
| ifeq ($(PRECOMPILE), 1) | ||||
| 	$(CXX) $(CXXFLAGS) -o $@ -include precomp.hpp -MMD -MP -MT $@ -MF $(BUILDDIR)/$*.dep -c $< | ||||
| else | ||||
| 	$(CXX) $(CXXFLAGS) -o $@ -MMD -MP -MT $@ -MF $(BUILDDIR)/$*.dep -c $< | ||||
| endif | ||||
|  | ||||
| %.dep: ; | ||||
|  | ||||
| @@ -61,9 +85,19 @@ $(MANDIR)/man3/%: man/man3/% | ||||
| $(MANDIR)/man5/%: man/man5/% | ||||
| 	install -m 0644 $< $@ | ||||
|  | ||||
| .PHONY: all test clean install | ||||
| # =========================================================== pattern rules | ||||
|  | ||||
| all: $(BUILDDIR) $(OUTDIR) $(OUTDIR)/$(REALNAME) $(OUTDIR)/$(STATICLIB) | ||||
| # targets ================================================================= | ||||
|  | ||||
| .PHONY: all commit-hash version plugins test clean dist-clean install-plugins \ | ||||
| install install-data uninstall-data uninstall-plugins uninstall | ||||
|  | ||||
| # main target | ||||
| ifeq ($(PRODUCT), tool) | ||||
| all: $(BUILDDIR) $(OUTDIR) commit-hash version plugins $(BIN) | ||||
| else ifeq ($(PRODUCT), lib) | ||||
| all: $(BUILDDIR) $(OUTDIR) commit-hash version plugins $(OUTDIR)/$(REALNAME) $(OUTDIR)/$(STATICLIB) | ||||
| endif | ||||
|  | ||||
| $(BUILDDIR): | ||||
| 	mkdir -p $@ | ||||
| @@ -71,29 +105,75 @@ $(BUILDDIR): | ||||
| $(OUTDIR): | ||||
| 	mkdir -p $@ | ||||
|  | ||||
| # product build rules | ||||
| ifeq ($(PRODUCT), tool) # -------------------------------------------- tool | ||||
|  | ||||
| ifeq ($(PRECOMPILE), 1) | ||||
| $(BIN): precomp.hpp.gch $(OBJS) | ||||
| else | ||||
| $(BIN): $(OBJS) | ||||
| endif | ||||
| 	$(CXX) -o $(BIN) $(LDFLAGS) $(OBJS) $(LDLIBS) | ||||
| 	@ln -sf $(BIN) $(PROJ) | ||||
|  | ||||
| endif # -------------------------------------------------------------- tool | ||||
|  | ||||
| ifeq ($(PRODUCT), lib) # ---------------------------------------------- lib | ||||
|  | ||||
| ifeq ($(PRECOMPILE), 1) | ||||
| $(OUTDIR)/$(REALNAME): precomp.hpp.gch $(OBJS) | ||||
| else | ||||
| $(OUTDIR)/$(REALNAME): $(OBJS) | ||||
| endif | ||||
| ifeq ($(UNAME_S),Darwin) | ||||
| 	$(CXX) -dynamiclib -o $(OUTDIR)/$(REALNAME) -current_version $(MAJOR) -compatibility_version $(MINOR) $(LDFLAGS) $(OBJS) $(LDLIBS) | ||||
| endif | ||||
| ifeq ($(UNAME_S),OpenBSD) | ||||
| 	$(CXX) -dynamiclib -o $(OUTDIR)/$(REALNAME) -install_name $(LIBDIR)/$(REALNAME) \ | ||||
| -current_version $(MAJOR) -compatibility_version $(MINOR) $(LDFLAGS) $(OBJS) $(LDLIBS) | ||||
| else ifeq ($(UNAME_S),OpenBSD) | ||||
| 	$(CXX) -g -shared -Wl,-soname,$(REALNAME) -o $(OUTDIR)/$(REALNAME) $(LDFLAGS) $(OBJS) $(LDLIBS) | ||||
| endif | ||||
| ifeq ($(UNAME_S),Linux) | ||||
| else ifeq ($(UNAME_S),Linux) | ||||
| 	$(CXX) -g -shared -Wl,-soname,$(SONAME) -o $(OUTDIR)/$(REALNAME) $(LDFLAGS) $(OBJS) $(LDLIBS) | ||||
| endif | ||||
|  | ||||
| -include $(DEPS) | ||||
|  | ||||
| $(OUTDIR)/$(STATICLIB): $(OBJS) | ||||
| 	ar r $(OUTDIR)/$(STATICLIB) $(OBJS) | ||||
|  | ||||
| ifeq ($(GENERATELIBHEADER),1) | ||||
| $(OUTDIR)/$(LIBNAME).hpp: $(HDRS) | ||||
| 	@echo updating $(OUTDIR)/$(LIBNAME).hpp | ||||
| 	@cp /dev/null $(OUTDIR)/$(LIBNAME).hpp | ||||
| $(OUTDIR)/$(PROJ).hpp: $(HDRS) | ||||
| 	@echo updating $(OUTDIR)/$(PROJ).hpp | ||||
| 	@cp /dev/null $(OUTDIR)/$(PROJ).hpp | ||||
| 	@for h in $(HDRS); \ | ||||
| 	do \ | ||||
| 		sed '/@exclude/d' $$h >> $(OUTDIR)/$(LIBNAME).hpp; \ | ||||
| 		sed '/@exclude/d' $$h >> $(OUTDIR)/$(PROJ).hpp; \ | ||||
| 	done | ||||
| endif | ||||
|  | ||||
| endif # --------------------------------------------------------------- lib | ||||
|  | ||||
| # get generated dependencies, if any | ||||
| -include $(DEPS) | ||||
|  | ||||
| commit-hash: | ||||
| 	@if ! echo $(COMMIT) | diff -q src/commit.inc - >/dev/null 2>&1 ;\ | ||||
| 	then \ | ||||
| 		echo $(COMMIT) > src/commit.inc ;\ | ||||
| 	fi | ||||
|  | ||||
| version: | ||||
| 	@if ! echo $(VERSION) | diff -q src/version.inc - >/dev/null 2>&1 ;\ | ||||
| 	then \ | ||||
| 		echo $(VERSION) > src/version.inc ;\ | ||||
| 	fi | ||||
|  | ||||
| $(BUILDDIR)/version.o: src/version.inc src/commit.inc | ||||
|  | ||||
| precomp.hpp.gch: src/precomp.hpp | ||||
| 	$(CXX) $< $(CXXFLAGS) -o $@ | ||||
|  | ||||
| plugins: | ||||
| ifdef PLUGINS | ||||
| 	@for plug in $(PLUGINS) ;\ | ||||
| 	do \ | ||||
| 		$(MAKE) -C $$plug ;\ | ||||
| 	done | ||||
| endif | ||||
|  | ||||
| @@ -101,8 +181,16 @@ test: | ||||
| 	$(MAKE) -C tests && tests/tests | ||||
|  | ||||
| clean: | ||||
| 	rm -rf build | ||||
| 	$(MAKE) -C tests clean | ||||
| 	rm -rf $(BUILDDIR) tests/build tests/tests tests/src/commit.inc tests/src/version.inc | ||||
| ifdef PLUGINS | ||||
| 	@for plug in $(PLUGINS) ;\ | ||||
| 	do \ | ||||
| 		$(MAKE) -C $$plug clean ;\ | ||||
| 	done | ||||
| endif | ||||
|  | ||||
| dist-clean: clean | ||||
| 	rm -rf build $(PROJ) src/commit.inc src/version.inc precomp.hpp.gch | ||||
|  | ||||
| $(MANDIR)/man1: | ||||
| 	install -m 0755 -d $@ | ||||
| @@ -113,34 +201,94 @@ $(MANDIR)/man3: | ||||
| $(MANDIR)/man5: | ||||
| 	install -m 0755 -d $@ | ||||
|  | ||||
| $(DATADIR): | ||||
| 	install -m 0755 -d $@ | ||||
|  | ||||
| # (un)install targets | ||||
|  | ||||
| ifdef DATAFILES | ||||
| install-data: $(DATADIR) | ||||
| 	install -m 0644 $(DATAFILES) $(DATADIR) | ||||
| else | ||||
| install-data: | ||||
| endif | ||||
|  | ||||
| uninstall-data: | ||||
| 	rm -rf $(DATADIR) | ||||
|  | ||||
| install-plugins: | ||||
| ifdef PLUGINS | ||||
| 	@for plug in $(PLUGINS) ;\ | ||||
| 	do \ | ||||
| 		$(MAKE) -C $$plug install ;\ | ||||
| 	done | ||||
| endif | ||||
|  | ||||
| uninstall-plugins: | ||||
| ifdef PLUGINS | ||||
| 	@for plug in $(PLUGINS) ;\ | ||||
| 	do \ | ||||
| 		$(MAKE) -C $$plug uninstall ;\ | ||||
| 	done | ||||
| endif | ||||
|  | ||||
| ifeq ($(PRODUCT), tool) # -------------------------------------------- tool | ||||
|  | ||||
| $(BINDIR): | ||||
| 	install -m 0755 -d $@ | ||||
|  | ||||
| install: $(MANDIR)/man1 $(MANDIR)/man3 $(MANDIR)/man5 $(BINDIR) $(MANS) install-data install-plugins | ||||
| 	install -m 0755 $(BIN) $(BINDIR) | ||||
|  | ||||
| uninstall: uninstall-data uninstall-plugins | ||||
| 	rm -f $(BINDIR)/$(PROJ) $(MANS) | ||||
|  | ||||
| endif # -------------------------------------------------------------- tool | ||||
|  | ||||
| ifeq ($(PRODUCT), lib) # ---------------------------------------------- lib | ||||
|  | ||||
| $(LIBDIR): | ||||
| 	install -m 0755 -d $@ | ||||
|  | ||||
| $(INCLUDEDIR): | ||||
| 	install -m 0755 -d $@ | ||||
|  | ||||
| ifeq ($(GENERATELIBHEADER),1) | ||||
| install: $(MANDIR)/man1 $(MANDIR)/man3 $(MANDIR)/man5 $(LIBDIR) $(INCLUDEDIR) $(MANS) $(OUTDIR)/$(LIBNAME).hpp | ||||
| 	install -m 0644 $(OUTDIR)/$(LIBNAME).hpp $(INCLUDEDIR) | ||||
| $(INCLUDEDIR)/$(PROJ): | ||||
| 	install -m 0755 -d $@ | ||||
|  | ||||
| ifeq ($(GENERATELIBHEADER), 1) | ||||
| install: $(MANDIR)/man1 $(MANDIR)/man3 $(MANDIR)/man5 $(LIBDIR) $(INCLUDEDIR) $(MANS) $(OUTDIR)/$(PROJ).hpp install-data install-plugins | ||||
| 	install -m 0644 $(OUTDIR)/$(PROJ).hpp $(INCLUDEDIR) | ||||
| else | ||||
| install: $(MANDIR)/man1 $(MANDIR)/man3 $(MANDIR)/man5 $(LIBDIR) $(INCLUDEDIR) $(MANS) | ||||
| 	install -m 0644 $(HDRS) $(INCLUDEDIR)/$(LIBNAME) | ||||
| install: $(MANDIR)/man1 $(MANDIR)/man3 $(MANDIR)/man5 $(LIBDIR) $(INCLUDEDIR) $(MANS) $(INCLUDEDIR)/$(PROJ) install-data install-plugins | ||||
| 	install -m 0644 $(HDRS) $(INCLUDEDIR)/$(PROJ) | ||||
| endif | ||||
| 	install -m 0644 $(OUTDIR)/$(REALNAME) $(LIBDIR) | ||||
| 	install -m 0644 $(OUTDIR)/$(STATICLIB) $(LIBDIR) | ||||
| ifeq ($(UNAME_S),Darwin) | ||||
| ifeq ($(UNAME_S), Darwin) | ||||
| 	cd $(LIBDIR) && ln -sf $(REALNAME) $(SONAME) | ||||
| endif | ||||
| ifeq ($(UNAME_S),Linux) | ||||
| else ifeq ($(UNAME_S), Linux) | ||||
| ifeq ($(USER), root) | ||||
| 	ldconfig | ||||
| else | ||||
| 	cd $(LIBDIR) && ln -sf $(REALNAME) $(SONAME) | ||||
| endif | ||||
| 	cd $(LIBDIR) && ln -sf $(SONAME) $(LINKERNAME) | ||||
| endif | ||||
| ifeq ($(UNAME_S),OpenBSD) | ||||
| else ifeq ($(UNAME_S), OpenBSD) | ||||
| 	ldconfig -R | ||||
| endif | ||||
|  | ||||
| uninstall: uninstall-data uninstall-plugins | ||||
| 	rm -rf $(INCLUDEDIR)/$(PROJ).hpp $(INCLUDEDIR)/$(PROJ) $(MANS) $(LIBDIR)/$(STATICLIB) $(LIBDIR)/$(REALNAME) $(LIBDIR)/$(SONAME) $(LIBDIR)/$(LINKERNAME) | ||||
| ifeq ($(UNAME_S), Linux) | ||||
| 	ldconfig | ||||
| else ifeq ($(UNAME_S), OpenBSD) | ||||
| 	ldconfig -R | ||||
| endif | ||||
|  | ||||
| endif # --------------------------------------------------------------- lib | ||||
|  | ||||
| # ================================================================= targets | ||||
|  | ||||
| # project-specific targets go in here | ||||
| -include postmake.make | ||||
|   | ||||
							
								
								
									
										30
									
								
								man/man3/libsctimer.3
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								man/man3/libsctimer.3
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| .Dd $Mdocdate$ | ||||
| .Dt libsctimer 3 | ||||
| .Os | ||||
| .Sh NAME | ||||
| .Nm libsctimer | ||||
| .Nd one line about what it does | ||||
| .\" .Sh LIBRARY | ||||
| .\" For sections 2, 3, and 9 only. | ||||
| .\" Not used in OpenBSD. | ||||
| .Sh DESCRIPTION | ||||
| The | ||||
| .Nm | ||||
| library ... | ||||
| .\" .Sh RETURN VALUES | ||||
| .\" For sections 2, 3, and 9 function return values only. | ||||
| .\" .Sh ENVIRONMENT | ||||
| .\" .Sh FILES | ||||
| .\" .Sh EXAMPLES | ||||
| .\" .Sh ERRORS | ||||
| .\" For sections 2, 3, 4, and 9 errno settings only. | ||||
| .\" .Sh SEE ALSO | ||||
| .\" .Xr foobar 1 | ||||
| .\" .Sh STANDARDS | ||||
| .\" .Sh HISTORY | ||||
| .Sh AUTHORS | ||||
| Bob Polis | ||||
| .\" .Sh CAVEATS | ||||
| .\" .Sh BUGS | ||||
| .\" .Sh SECURITY CONSIDERATIONS | ||||
| .\" Not used in OpenBSD. | ||||
							
								
								
									
										33
									
								
								premake.make
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								premake.make
									
									
									
									
									
								
							| @@ -1,7 +1,36 @@ | ||||
| LDLIBS := -lm -lpthread -lscerror | ||||
| # Define linker flags here, like: -lsqlite3 -lpthread | ||||
| LDLIBS := -lscerror | ||||
|  | ||||
| # Dir name becomes product name. | ||||
| PROJ := $(shell basename $$(pwd)) | ||||
|  | ||||
| # Find out what platform we're on, e.g. Darwin, Linux, OpenBSD. | ||||
| UNAME_S := $(shell uname -s) | ||||
|  | ||||
| # We will build a library, not a tool. | ||||
| PRODUCT := lib | ||||
|  | ||||
| # Single source of truth for version. | ||||
| MAJOR := 1 | ||||
| MINOR := 0 | ||||
| MINOR := 1 | ||||
| PATCH := 0 | ||||
|  | ||||
| # Specify desired C++ standard for this project. | ||||
| CXXFLAGS += -std=c++20 | ||||
|  | ||||
| # Set to 1 if you want a precompiled header for the C++ Standard Library. | ||||
| PRECOMPILE := 0 | ||||
|  | ||||
| # Set to 0 if you want to create a library header by hand. | ||||
| # By default, it will concatenate all headers, leaving out | ||||
| # lines containing: @exclude | ||||
| GENERATELIBHEADER := 1 | ||||
|  | ||||
| # List of extra files to be installed in DATADIR (/usr/local/share/$(PROJ) by default) | ||||
| DATAFILES := | ||||
|  | ||||
| # Define plugin sub-projects here. Assumption here is a directory "plugins" | ||||
| # containing plugin sub-projects, each in its own directory. | ||||
| # Rename and/or repeat accordingly. | ||||
| PLUGINS := $(wildcard plugins/*) | ||||
| MAKE += --no-print-directory | ||||
|   | ||||
							
								
								
									
										127
									
								
								src/precomp.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								src/precomp.hpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,127 @@ | ||||
| // C++98 (first official C++ standard) | ||||
| #include <algorithm> | ||||
| #include <bitset> | ||||
| #include <cassert> | ||||
| #include <cctype> | ||||
| #include <cerrno> | ||||
| #include <climits> | ||||
| #include <cmath> | ||||
| #include <complex> | ||||
| #include <cstdarg> | ||||
| #include <cstddef> | ||||
| #include <cstdio> | ||||
| #include <cstdlib> | ||||
| #include <cstring> | ||||
| #include <ctime> | ||||
| #include <cwchar> | ||||
| #include <cwctype> | ||||
| #include <deque> | ||||
| #include <exception> | ||||
| #include <fstream> | ||||
| #include <functional> | ||||
| #include <iomanip> | ||||
| #include <ios> | ||||
| #include <iosfwd> | ||||
| #include <iostream> | ||||
| #include <istream> | ||||
| #include <iterator> | ||||
| #include <limits> | ||||
| #include <list> | ||||
| #include <locale> | ||||
| #include <map> | ||||
| #include <memory> | ||||
| #include <new> | ||||
| #include <numeric> | ||||
| #include <ostream> | ||||
| #include <queue> | ||||
| #include <set> | ||||
| #include <sstream> | ||||
| #include <stack> | ||||
| #include <stdexcept> | ||||
| #include <streambuf> | ||||
| #include <string> | ||||
| #include <typeinfo> | ||||
| #include <utility> | ||||
| #include <valarray> | ||||
| #include <vector> | ||||
|  | ||||
| #if (__cplusplus >= 201103L) // C++11 | ||||
| #include <array> | ||||
| #include <atomic> | ||||
| #include <cfenv> | ||||
| #include <chrono> | ||||
| #include <cinttypes> | ||||
| #include <codecvt> // deprecated in C++17, removed in C++26 | ||||
| #include <condition_variable> | ||||
| #include <cstdint> | ||||
| #include <cuchar> | ||||
| #include <forward_list> | ||||
| #include <future> | ||||
| #include <initializer_list> | ||||
| #include <mutex> | ||||
| #include <random> | ||||
| #include <ratio> | ||||
| #include <regex> | ||||
| #include <scoped_allocator> | ||||
| #include <system_error> | ||||
| #include <thread> | ||||
| #include <tuple> | ||||
| #include <type_traits> | ||||
| #include <typeindex> | ||||
| #include <unordered_map> | ||||
| #include <unordered_set> | ||||
| #endif // C++11 | ||||
|  | ||||
| #if (__cplusplus >= 201402L) // C++14 | ||||
| #include <shared_mutex> | ||||
| #endif // C++14 | ||||
|  | ||||
| #if (__cplusplus >= 201703L) // C++17 | ||||
| #include <any> | ||||
| #include <charconv> | ||||
| #include <execution> | ||||
| #include <filesystem> | ||||
| #include <memory_resource> | ||||
| #include <optional> | ||||
| #include <string_view> | ||||
| #include <variant> | ||||
| #endif // C++17 | ||||
|  | ||||
| #if (__cplusplus >= 202002L) // C++20 | ||||
| #include <barrier> | ||||
| #include <bit> | ||||
| #include <compare> | ||||
| #include <concepts> | ||||
| #include <coroutine> | ||||
| #include <format> | ||||
| #include <latch> | ||||
| #include <numbers> | ||||
| #include <ranges> | ||||
| #include <semaphore> | ||||
| #include <source_location> | ||||
| #include <span> | ||||
| //#include <stop_token> not yet supported by clang 16 | ||||
| //#include <syncstream> not yet supported by clang 17 | ||||
| #include <version> | ||||
| #endif // C++20 | ||||
|  | ||||
| #if (__cplusplus >= 202302L) // C++23 | ||||
| #include <expected> | ||||
| #include <flat_map> | ||||
| #include <flat_set> | ||||
| #include <generator> | ||||
| #include <mdspan> | ||||
| #include <print> | ||||
| #include <spanstream> | ||||
| #include <stacktrace> | ||||
| #include <stdfloat> | ||||
| #endif // C++23 | ||||
|  | ||||
| #if (__cplusplus > 202302L) // C++26 | ||||
| #include <debugging> | ||||
| #include <hazard_pointer> | ||||
| #include <inplace_vector> | ||||
| #include <linalg> | ||||
| #include <rcu> | ||||
| #include <text_encoding> | ||||
| #endif // C++26 | ||||
							
								
								
									
										19
									
								
								src/version.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/version.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| #include "version.hpp" | ||||
| #include <sstream> | ||||
|  | ||||
| std::string libsctimer_version() { | ||||
| #include "version.inc" | ||||
| #include "commit.inc" | ||||
|     std::ostringstream oss; | ||||
|     oss << "libsctimer version " << version; | ||||
| #ifdef DEBUG | ||||
|     oss << " DEBUG"; | ||||
| #endif | ||||
|     oss << '\n'; | ||||
|     if (commit[0] != '\0') { | ||||
|         oss << "build " << commit << ", "; | ||||
|     } | ||||
|     oss << __DATE__ << ", " << __TIME__ << '\n'; | ||||
|     oss << "(c) Bob Polis, all rights reserved"; | ||||
|     return oss.str(); | ||||
| } | ||||
							
								
								
									
										8
									
								
								src/version.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/version.hpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| #ifndef _LIBSCTIMER_VERSION_H_ | ||||
| #define _LIBSCTIMER_VERSION_H_ | ||||
|  | ||||
| #include <string> | ||||
|  | ||||
| std::string libsctimer_version(); | ||||
|  | ||||
| #endif // _LIBSCTIMER_VERSION_H_ | ||||
| @@ -1,51 +0,0 @@ | ||||
| include ../premake.make | ||||
| LDLIBS += -lboost_unit_test_framework | ||||
|  | ||||
| BIN := $(shell basename $$(pwd)) | ||||
|  | ||||
| SRCS := $(notdir $(wildcard src/*.cpp)) | ||||
| SRCS += $(notdir $(filter-out ../src/main.cpp,$(wildcard ../src/*.cpp))) | ||||
| OBJS := $(SRCS:.cpp=.o) | ||||
| DEPS := $(SRCS:.cpp=.d) | ||||
|  | ||||
| BUILDDIR := build/intermediates/ | ||||
|  | ||||
| CXX ?= g++ | ||||
| RM := /bin/rm -rf | ||||
|  | ||||
| CXXFLAGS += -Wshadow -Wall -Wpedantic -Wextra -Wno-unused-parameter | ||||
| CXXFLAGS += -g3 -std=c++20 -I../src | ||||
| ifeq ($(DEBUG),1) | ||||
| 	CXXFLAGS += -D DEBUG -O0 | ||||
| 	CONFIG := debug | ||||
| else | ||||
| 	CXXFLAGS += -D NDEBUG -O3 | ||||
| 	CONFIG := release | ||||
| endif | ||||
| OUTDIR := build/$(CONFIG)/ | ||||
|  | ||||
| vpath %.cpp src ../src | ||||
| vpath %.d $(BUILDDIR) | ||||
| vpath %.o $(BUILDDIR) | ||||
|  | ||||
| .PHONY: all clean prebuild | ||||
|  | ||||
| all: prebuild $(OUTDIR)$(BIN) | ||||
|  | ||||
| prebuild: | ||||
| 	@mkdir -p $(BUILDDIR) $(OUTDIR) | ||||
|  | ||||
| $(OUTDIR)$(BIN): $(OBJS) | ||||
| 	$(CXX) $(addprefix $(BUILDDIR),$(OBJS)) $(LDFLAGS) $(LDLIBS) -o $(OUTDIR)$(BIN) | ||||
| 	@ln -sf $(OUTDIR)$(BIN) $(BIN) | ||||
|  | ||||
| %.o %.d: %.cpp | ||||
| 	$(CXX) $(CXXFLAGS) -MMD -MP -MT $@ -MF $*.d -c $< | ||||
| 	@mv $@ $*.d $(BUILDDIR) | ||||
|  | ||||
| -include $(addprefix $(BUILDDIR), $(DEPS)) | ||||
|  | ||||
| clean: | ||||
| 	$(RM) build $(BIN) | ||||
|  | ||||
| -include postmake.make | ||||
							
								
								
									
										1
									
								
								tests/Makefile
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								tests/Makefile
									
									
									
									
									
										Symbolic link
									
								
							| @@ -0,0 +1 @@ | ||||
| ../Makefile | ||||
							
								
								
									
										6
									
								
								tests/postmake.make
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								tests/postmake.make
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| $(BUILDDIR)/%.o: ../src/%.cpp | ||||
| ifeq ($(PRECOMPILE), 1) | ||||
| 	$(CXX) $(CXXFLAGS) -o $@ -include precomp.hpp -MMD -MP -MT $@ -MF $(BUILDDIR)/$*.dep -c $< | ||||
| else | ||||
| 	$(CXX) $(CXXFLAGS) -o $@ -MMD -MP -MT $@ -MF $(BUILDDIR)/$*.dep -c $< | ||||
| endif | ||||
							
								
								
									
										5
									
								
								tests/premake.make
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								tests/premake.make
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| include ../premake.make | ||||
| LDLIBS += -lboost_unit_test_framework | ||||
| CXXFLAGS += -I../src | ||||
| SRCS := $(notdir $(filter-out ../src/main.cpp,$(wildcard ../src/*.cpp))) | ||||
| PRODUCT := tool | ||||
							
								
								
									
										1
									
								
								tests/src/precomp.hpp
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								tests/src/precomp.hpp
									
									
									
									
									
										Symbolic link
									
								
							| @@ -0,0 +1 @@ | ||||
| ../../src/precomp.hpp | ||||
		Reference in New Issue
	
	Block a user