From 6d4630cbdc7feb3ac3cece46aa3556fd5b592eac Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Tue, 22 Jan 2019 15:25:28 +0100 Subject: Add ninja build files to create a shared and static library --- .gitignore | 1 + build.ninja | 6 ++++++ mmvec.cpp | 1 + mmvec.hpp | 6 +++--- ninja/rules.ninja | 27 +++++++++++++++++++++++++++ 5 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 build.ninja create mode 100644 mmvec.cpp create mode 100644 ninja/rules.ninja diff --git a/.gitignore b/.gitignore index 378eac2..ac480cc 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ build +.ninja* diff --git a/build.ninja b/build.ninja new file mode 100644 index 0000000..3c134bf --- /dev/null +++ b/build.ninja @@ -0,0 +1,6 @@ +include ninja/rules.ninja + +build build/mmvec.o: cpp mmvec.cpp + +build build/libmm.a: link-static build/mmvec.o +build build/libmm.so: link-shared build/mmvec.o diff --git a/mmvec.cpp b/mmvec.cpp new file mode 100644 index 0000000..f555a6e --- /dev/null +++ b/mmvec.cpp @@ -0,0 +1 @@ +#include "mmvec.hpp" diff --git a/mmvec.hpp b/mmvec.hpp index f371d41..4bac658 100644 --- a/mmvec.hpp +++ b/mmvec.hpp @@ -13,11 +13,12 @@ * Naoki Pross * 2018 ~ 2019 */ -#include +#pragma once #include #include +#include #include #include #include @@ -111,8 +112,7 @@ template template mm::basic_vec& mm::basic_vec::operator=(const mm::basic_vec& other) { static_assert( - d >= n, - "cannot copy higher dimensional vector into a smaller one" + d >= n, "cannot copy higher dimensional vector into a smaller one" ); std::copy(other.begin(), other.end(), this->begin()); diff --git a/ninja/rules.ninja b/ninja/rules.ninja new file mode 100644 index 0000000..04b625c --- /dev/null +++ b/ninja/rules.ninja @@ -0,0 +1,27 @@ +includes = -I engine/include +cflags = -Wall -Werror -pedantic -fPIC -std=c++17 $includes + +libs = +lflags = $libs + +flags = -fdiagnostics-color + +rule mkdir + command = mkdir -p $out + description = creating directory $out + +rule cpp + command = g++ $flags $cflags -c $in -o $out $lflags + description = compiling $in + +rule link + command = g++ $flags $cflags -o $out $in $lflags + description = linking $out + +rule link-shared + command = g++ $flags $cflags -shared -o $out $in $lflags + description = linking shared object $out + +rule link-static + command = ar rvs $out $in + description = creating archive $out -- cgit v1.2.1