From e94cf0292758b8af5744c2331403580e1792acf7 Mon Sep 17 00:00:00 2001 From: Julian Blake Kongslie Date: Thu, 23 Jun 2022 17:46:19 -0700 Subject: Initial commit. --- .gitignore | 3 +++ Makefile | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ aisa/aisa.cpp | 12 ++++++++++++ aisa/aisa.h | 7 +++++++ get-git-tag | 15 +++++++++++++++ git-tag.h | 5 +++++ main.cpp | 11 +++++++++++ 7 files changed, 115 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 aisa/aisa.cpp create mode 100644 aisa/aisa.h create mode 100755 get-git-tag create mode 100644 git-tag.h create mode 100644 main.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..02eb89a --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/build +/issim +/issim-static diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..6d3a4ab --- /dev/null +++ b/Makefile @@ -0,0 +1,62 @@ +OPTIMIZE ?= -O3 +DEBUG ?= -g + +AR ?= ar +CXX ?= g++ + +CXXFLAGS := -Wall -Werror -std=c++20 -fPIC -iquote . ${OPTIMIZE} ${DEBUG} + +PARTS := $(shell find * -type d -\( -name build -prune -o -print -\)) +PARTARS := $(addprefix build/lib, $(addsuffix .a, ${PARTS})) +PARTSOS := $(addprefix build/lib, $(addsuffix .so, ${PARTS})) + +MAINOBJS := $(addprefix build/, $(addsuffix .o, $(basename $(wildcard *.cpp)))) +MAINOBJS += build/git-tag.o + +all: issim + +issim: build/issim-dynamic + @ln -sf $< $@ +.PHONY: issim + +issim-static: build/issim-static + @ln -sf $< $@ +.PHONY: issim-static + +build/issim-dynamic: ${MAINOBJS} ${PARTSOS} + @mkdir -p $(dir $@) + ${CXX} ${CXXFLAGS} -o $@ $+ + +build/issim-static: ${MAINOBJS} ${PARTARS} + @mkdir -p $(dir $@) + ${CXX} ${CXXFLAGS} -o $@ $+ + +clean: + rm -rf build issim issim-static +.PHONY: clean + +build/git-tag.cpp: + @mkdir -p $(dir $@) + ./get-git-tag > $@ +.PHONY: build/git-tag.cpp + +build/%.o: %.cpp Makefile + @mkdir -p $(dir $@) + ${CXX} ${CXXFLAGS} -c -o $@ $< + +build/%.o: build/%.cpp Makefile + @mkdir -p $(dir $@) + ${CXX} ${CXXFLAGS} -c -o $@ $< + +.SUFFIXES: +.SECONDARY: + +.SECONDEXPANSION: + +build/lib%.a: $$(addprefix build/, $$(addsuffix .o, $$(basename $$(wildcard %/*.cpp)))) + @mkdir -p $(dir $@) + ${AR} cr $@ $+ + +build/lib%.so: $$(addprefix build/, $$(addsuffix .o, $$(basename $$(wildcard %/*.cpp)))) + @mkdir -p $(dir $@) + ${CXX} ${CXXFLAGS} -shared -o $@ $+ diff --git a/aisa/aisa.cpp b/aisa/aisa.cpp new file mode 100644 index 0000000..0c806de --- /dev/null +++ b/aisa/aisa.cpp @@ -0,0 +1,12 @@ +#include + +#include "aisa/aisa.h" + +namespace aisa { + + void do_something() + { + std::cout << "Hello, world!\n"; + } + +} diff --git a/aisa/aisa.h b/aisa/aisa.h new file mode 100644 index 0000000..b570d6b --- /dev/null +++ b/aisa/aisa.h @@ -0,0 +1,7 @@ +#pragma once + +namespace aisa { + + void do_something(); + +} diff --git a/get-git-tag b/get-git-tag new file mode 100755 index 0000000..cb4e2fa --- /dev/null +++ b/get-git-tag @@ -0,0 +1,15 @@ +#!/bin/bash + +set -u + +TAG="$(git describe --always --tags --long --dirty 2> /dev/null)" + +if [[ "$TAG" == "" ]]; then + TAG="unknown" +fi + +cat < + +std::string GIT_TAG = "$TAG"; +END diff --git a/git-tag.h b/git-tag.h new file mode 100644 index 0000000..280f0c7 --- /dev/null +++ b/git-tag.h @@ -0,0 +1,5 @@ +#pragma once + +#include + +extern const std::string GIT_TAG; diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..6b7b0f4 --- /dev/null +++ b/main.cpp @@ -0,0 +1,11 @@ +#include + +#include "aisa/aisa.h" +#include "git-tag.h" + +int main(int argc, const char *argv[]) +{ + std::cout << "Version " << GIT_TAG << "\n"; + aisa::do_something(); + return 0; +} -- cgit v1.2.3