aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorEgor Tensin <Egor.Tensin@gmail.com>2021-03-31 19:38:02 +0300
committerEgor Tensin <Egor.Tensin@gmail.com>2021-03-31 19:38:02 +0300
commitfc57a1fa4e0c74bcab836601cbd8677717b5064f (patch)
treedfdc93de86393affb6d54b674fa5247802f3f61c
parenttest: remove really old all.bat (diff)
downloadaes-tools-fc57a1fa4e0c74bcab836601cbd8677717b5064f.tar.gz
aes-tools-fc57a1fa4e0c74bcab836601cbd8677717b5064f.zip
add `make install`, `make test`, etc.
-rw-r--r--.github/workflows/ci.yml13
-rw-r--r--.gitignore1
-rw-r--r--Makefile85
-rw-r--r--README.md32
4 files changed, 100 insertions, 31 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 9ba227e..10a1907 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -32,6 +32,7 @@ jobs:
PLATFORM: '${{ matrix.platform }}'
CONFIGURATION: '${{ matrix.configuration }}'
BOOST_VERSION: 1.72.0
+ CMAKE_FLAGS: -D 'AES_TOOLS_ASM=${{ matrix.use_asm }}'
defaults:
run:
shell: pwsh
@@ -50,20 +51,14 @@ jobs:
platform: '${{ matrix.platform }}'
if: matrix.toolset == 'mingw'
- name: Build Boost
- run: |
- cd cmake
- python -m project.ci.boost -- --with-filesystem --with-program_options --with-system
+ run: make deps
- name: Build
- run: |
- cd cmake
- python -m project.ci.cmake --install -- -D 'AES_TOOLS_ASM=${{ matrix.use_asm }}'
+ run: make install
- name: Upload binaries
uses: actions/upload-artifact@v2
with:
name: 'aes-tools-${{ matrix.os }}-${{ matrix.toolset }}-${{ matrix.platform }}-asm${{ matrix.use_asm }}-${{ matrix.configuration }}'
path: '${{ runner.workspace }}/build/install/'
- name: Test
- run: |
- cd ../build/cmake
- ctest -C '${{ env.CONFIGURATION }}' --verbose
+ run: make test
if: runner.os == 'Windows'
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0e03e15
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/.build/
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..cb60357
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,85 @@
+# Various one-liners which I'm too lazy to remember.
+# Basically a collection of really small shell scripts.
+
+MAKEFLAGS += --warn-undefined-variables
+unexport MAKEFLAGS
+.DEFAULT_GOAL := all
+.DELETE_ON_ERROR:
+.SUFFIXES:
+SHELL := bash
+.SHELLFLAGS := -eu -o pipefail -c
+
+.PHONY: DO
+DO:
+
+escape = $(subst ','\'',$(1))
+
+define noexpand
+ifeq ($$(origin $(1)),environment)
+ $(1) := $$(value $(1))
+endif
+ifeq ($$(origin $(1)),environment override)
+ $(1) := $$(value $(1))
+endif
+ifeq ($$(origin $(1)),command line)
+ override $(1) := $$(value $(1))
+endif
+endef
+
+PROJECT := aes-tools
+TOOLSET ?= mingw
+CONFIGURATION ?= Debug
+BOOST_VERSION ?= 1.72.0
+BOOST_LIBRARIES := --with-filesystem --with-program_options
+CMAKE_FLAGS ?=
+
+this_dir := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+src_dir := $(this_dir)
+ifdef CI
+build_dir := $(this_dir)../build
+else
+build_dir := $(this_dir).build
+endif
+boost_dir := $(build_dir)/boost
+cmake_dir := $(build_dir)/cmake
+DESTDIR ?= $(build_dir)/install
+
+$(eval $(call noexpand,TOOLSET))
+$(eval $(call noexpand,CONFIGURATION))
+$(eval $(call noexpand,BOOST_VERSION))
+$(eval $(call noexpand,CMAKE_FLAGS))
+$(eval $(call noexpand,DESTDIR))
+
+.PHONY: all
+all: build
+
+.PHONY: clean
+clean:
+ rm -rf -- '$(call escape,$(build_dir))'
+
+$(boost_dir)/:
+ cd cmake && python3 -m project.boost.download --cache '$(call escape,$(build_dir))' -- '$(call escape,$(BOOST_VERSION))' '$(call escape,$(boost_dir))'
+
+.PHONY: deps
+ifdef CI
+deps:
+ cd cmake && python3 -m project.ci.boost -- $(BOOST_LIBRARIES)
+else
+deps: $(boost_dir)/
+ cd cmake && python3 -m project.boost.build --toolset '$(call escape,$(TOOLSET))' --configuration '$(call escape,$(CONFIGURATION))' -- '$(call escape,$(boost_dir))' $(BOOST_LIBRARIES)
+endif
+
+.PHONY: build
+build:
+ifdef CI
+ cd cmake && python3 -m project.ci.cmake --install -- $(CMAKE_FLAGS)
+else
+ cd cmake && python3 -m project.cmake.build --toolset '$(call escape,$(TOOLSET))' --configuration '$(call escape,$(CONFIGURATION))' --build '$(call escape,$(cmake_dir))' --install '$(call escape,$(DESTDIR))' --boost '$(call escape,$(boost_dir))' -- '$(call escape,$(src_dir))' $(CMAKE_FLAGS)
+endif
+
+.PHONY: install
+install: build
+
+.PHONY: test
+test:
+ cd -- '$(call escape,$(cmake_dir))' && ctest -C '$(call escape,$(CONFIGURATION))' --verbose
diff --git a/README.md b/README.md
index adfc67d..23147b9 100644
--- a/README.md
+++ b/README.md
@@ -5,30 +5,18 @@ AES tools
Simple AES implementation and utilities.
-Building
---------
-
-Create the build files using CMake and build using your native build tools
-(Visual Studio/make/etc.).
+Development
+-----------
-* **Prerequisites.**
+Build using CMake.
Depends on Boost.{Filesystem,Program_options}.
-* **Customization.**
-The runtime libraries are linked statically by default.
-Therefore, the Boost libraries must also link them statically.
-You can link the runtime dynamically by passing `-D CC_STATIC_RUNTIME=OFF` to
-`cmake`.
-* **Example.**
-Using Visual Studio 2015 (targeting x86), build & install the release version
-to C:\aes-tools:
-
- > cmake -G "Visual Studio 14 2015" -A Win32 ^
- -D BOOST_ROOT=C:\path\to\boost ^
- C:\path\to\aes-tools
- ...
-
- > cmake --build . --config Release --target install -- /m
- ...
+
+There's a Makefile with useful shortcuts to build the project in the .build/
+directory along with the dependencies:
+
+ make deps
+ make build
+ make test
Usage on older CPUs
-------------------