1
0
Fork 0
forked from lthn/blockchain

Merge pull request #10 from anonimal/build

Build: refactor for extensibility + CMake generator support, add optional test building
This commit is contained in:
cryptozoidberg 2019-02-20 19:22:35 +01:00 committed by GitHub
commit 226aad4620
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 19 deletions

View file

@ -201,8 +201,11 @@ else()
endif()
endif()
set(BUILD_TESTS FALSE CACHE BOOL "Build Zano tests")
add_subdirectory(contrib)
add_subdirectory(src)
add_subdirectory(tests)
if (BUILD_TESTS)
add_subdirectory(tests)
endif()

View file

@ -1,28 +1,48 @@
all: all-release
# Copyright (c) 2014-2019 Zano Project
# Copyright (c) 2014 The Cryptonote developers
# Distributed under the MIT/X11 software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
cmake-debug:
mkdir -p build/debug
cd build/debug && cmake -D CMAKE_BUILD_TYPE=Debug ../..
# Define CMake generator
system := $(shell uname)
ifneq (, $(findstring MINGW, $(system)))
cmake_gen = -G 'MSYS Makefiles'
endif
build-debug: cmake-debug
cd build/debug && $(MAKE)
cmake = cmake $(cmake_gen)
test-debug: build-debug
cd build/debug && $(MAKE) test
cmake_debug = $(cmake) -D CMAKE_BUILD_TYPE=Debug
cmake_release = $(cmake) -D CMAKE_BUILD_TYPE=Release
cmake_tests = $(cmake) -D BUILD_TESTS=ON
all-debug: build-debug
# Helper macro
define CMAKE
mkdir -p $1 && cd $1 && $2 ../../
endef
cmake-release:
mkdir -p build/release
cd build/release && cmake -D CMAKE_BUILD_TYPE=Release ../..
build = build
dir_debug = $(build)/debug
dir_release = $(build)/release
build-release: cmake-release
cd build/release && $(MAKE)
all: release
test-release: build-release
cd build/release && $(MAKE) test
release:
$(eval command += $(cmake_release))
$(call CMAKE,$(dir_release),$(command)) && $(MAKE)
all-release: build-release
test-release:
$(eval command += $(cmake_release) $(cmake_tests))
$(call CMAKE,$(dir_release),$(command)) && $(MAKE) && $(MAKE) test
test: test-release
debug:
$(eval command += $(cmake_debug))
$(call CMAKE,$(dir_debug),$(command)) && $(MAKE)
test-debug:
$(eval command += $(cmake_debug) $(cmake_tests))
$(call CMAKE,$(dir_debug),$(command)) && $(MAKE) && $(MAKE) test
clean:
rm -rf build
@ -30,4 +50,4 @@ clean:
tags:
ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ src contrib tests/gtest
.PHONY: all cmake-debug build-debug test-debug all-debug cmake-release build-release test-release all-release clean tags
.PHONY: all release test-release test all-debug debug test-debug clean tags