OpenFPGA/libs/EXTERNAL/libtatum/Makefile

69 lines
2.3 KiB
Makefile

#This is a simple wrapper hiding cmake from non-expert end users.
#
# It supports the targets:
# 'make' - builds everything (all libaries/executables)
# 'make clean' - removes generated build objects/libraries/executables etc.
# 'make distclean' - will clean everything including the cmake generated build files
#
# All other targets (e.g. 'make tatum_test') are passed to the cmake generated makefile
# and processed according to the CMakeLists.txt.
#
# To perform a debug build use:
# 'make BUILD_TYPE=debug'
#Default build type
# Possible values:
# release
# debug
BUILD_TYPE = release
#Allows users to pass parameters to cmake
# e.g. make CMAKE_PARAMS="-DVTR_ENABLE_SANITIZE=true"
override CMAKE_PARAMS := -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -G 'Unix Makefiles' ${CMAKE_PARAMS}
# -s : Suppresss makefile output (e.g. entering/leaving directories)
# --output-sync target : For parallel compilation ensure output for each target is synchronized (make version >= 4.0)
MAKEFLAGS := -s
BUILD_DIR=./build
GENERATED_MAKEFILE := $(BUILD_DIR)/Makefile
#Check for the cmake exectuable
CMAKE := $(shell command -v cmake 2> /dev/null)
#Show test log on failures with 'make test'
export CTEST_OUTPUT_ON_FAILURE=TRUE
#All targets in this make file are always out of date.
# This ensures that any make target requests are forwarded to
# the generated makefile
.PHONY: all distclean $(GENERATED_MAKEFILE) $(MAKECMDGOALS)
#Build everything
all: $(GENERATED_MAKEFILE)
@+$(MAKE) -C $(BUILD_DIR)
#Call the generated Makefile's clean, and then remove all cmake generated files
distclean: $(GENERATED_MAKEFILE)
@ echo "Cleaning build..."
@+$(MAKE) -C $(BUILD_DIR) clean
@ echo "Removing build system files.."
@ rm -rf $(BUILD_DIR)
@ rm -rf CMakeFiles CMakeCache.txt #In case 'cmake .' was run in the source directory
#Call cmake to generate the main Makefile
$(GENERATED_MAKEFILE):
ifeq ($(CMAKE),)
$(error Required 'cmake' executable not found. On debian/ubuntu try 'sudo apt-get install cmake' to install)
endif
@ mkdir -p $(BUILD_DIR)
echo "cd $(BUILD_DIR) && $(CMAKE) $(CMAKE_PARAMS) .. "
cd $(BUILD_DIR) && $(CMAKE) $(CMAKE_PARAMS) ..
#Forward any targets that are not named 'distclean' to the generated Makefile
ifneq ($(MAKECMDGOALS),distclean)
$(MAKECMDGOALS): $(GENERATED_MAKEFILE)
@+$(MAKE) -C $(BUILD_DIR) $(MAKECMDGOALS)
endif