239 lines
No EOL
14 KiB
Makefile
Executable file
239 lines
No EOL
14 KiB
Makefile
Executable file
#*====================================================================================================================*#
|
|
#| |#
|
|
#| /$$$$$$$ /$$ /$$ /$$ /$$ |#
|
|
#| | $$__ $$|__/ | $$ /$ | $$| $$ |#
|
|
#| | $$ \ $$ /$$ /$$$$$$ | $$ /$$$| $$| $$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ |#
|
|
#| | $$$$$$$ | $$ /$$__ $$ | $$/$$ $$ $$| $$__ $$ /$$__ $$ /$$__ $$ /$$__ $$ |#
|
|
#| | $$__ $$| $$| $$ \ $$ | $$$$_ $$$$| $$ \ $$| $$ \ $$| $$ \ $$| $$ \ $$ |#
|
|
#| | $$ \ $$| $$| $$ | $$ | $$$/ \ $$$| $$ | $$| $$ | $$| $$ | $$| $$ | $$ |#
|
|
#| | $$$$$$$/| $$| $$$$$$$ | $$/ \ $$| $$ | $$| $$$$$$/| $$$$$$/| $$$$$$$/ |#
|
|
#| |_______/ |__/ \____ $$ |__/ \__/|__/ |__/ \______/ \______/ | $$____/ |#
|
|
#| /$$ \ $$ | $$ |#
|
|
#| | $$$$$$/ | $$ |#
|
|
#| \______/ |__/ |#
|
|
#| |#
|
|
#| |#
|
|
#| Version 0.1.0 |#
|
|
#| |#
|
|
#| DESCRIPTION: |#
|
|
#| ------------ |#
|
|
#| Defines a wrapper for the Big Whoop cmake & make tools. This Makefile creates the |#
|
|
#| build dir if it does not exist, switches to it and executes cmake and make. |#
|
|
#| |#
|
|
#| ---------------------------------------------------------------------------------------------------------------- |#
|
|
#| |#
|
|
#| Copyright (c) 2021, High Performance Computing Center - University of Stuttgart |#
|
|
#| |#
|
|
#| Redistribution and use in source and binary forms, with or without modification, are permitted provided that the |#
|
|
#| following conditions are met: |#
|
|
#| |#
|
|
#| (1) Redistributions of source code must retain the above copyright notice, this list of conditions and the |#
|
|
#| following disclaimer. |#
|
|
#| |#
|
|
#| (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and |#
|
|
#| the following disclaimer in the documentation and/or other materials provided with the distribution. |#
|
|
#| |#
|
|
#| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED |#
|
|
#| WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A |#
|
|
#| PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY |#
|
|
#| DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |#
|
|
#| PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |#
|
|
#| CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |#
|
|
#| OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH |#
|
|
#| DAMAGE. |#
|
|
#| |#
|
|
#*====================================================================================================================*#
|
|
#*--------------------------------------------------------*#
|
|
# Define special targets for the required build commands. #
|
|
#*--------------------------------------------------------*#
|
|
.PHONY: clean
|
|
.PHONY: help
|
|
|
|
.PHONY: static
|
|
.PHONY: single
|
|
|
|
.PHONY: tool
|
|
.PHONY: profiling
|
|
.PHONY: omp
|
|
.PHONY: eas3
|
|
.PHONY: netCDF
|
|
|
|
.PHONY: build_debug
|
|
|
|
.PHONY: default
|
|
.PHONY: debug
|
|
.PHONY: full
|
|
.PHONY: release
|
|
|
|
.PHONY: cmdl
|
|
.PHONY: cldebug
|
|
|
|
#*--------------------------------------------------------*#
|
|
# Initialize the compiler flags used to build the library. #
|
|
#*--------------------------------------------------------*#
|
|
BUILD_TYPE="Release"
|
|
|
|
LINK_TYPE="Dynamic"
|
|
|
|
BUILD_PREC="Double"
|
|
|
|
BUILD_TOOL="False"
|
|
|
|
BUILD_PROF="False"
|
|
|
|
BUILD_OMP="False"
|
|
|
|
BUILD_EAS3="False"
|
|
|
|
BUILD_NETCDF="False"
|
|
|
|
#*--------------------------------------------------------*#
|
|
# Define default target. #
|
|
#*--------------------------------------------------------*#
|
|
default: | build_bwc display
|
|
|
|
#*--------------------------------------------------------*#
|
|
# Define helper target. #
|
|
#*--------------------------------------------------------*#
|
|
help:
|
|
|
|
@echo "Usage: make [options] [argument] Compile the BigWhoop library using the specified"
|
|
@echo " [options] and [argument]. Only one argument is "
|
|
@echo " accepted per compile run."
|
|
@echo ""
|
|
@echo "Arguments:"
|
|
@echo ""
|
|
@echo " [Type] [Description]"
|
|
@echo ""
|
|
@echo " debug Compiles BigWhoop with all relevant debug flags."
|
|
@echo ""
|
|
@echo " full Removes all files and folders created during a pre-"
|
|
@echo " vious compile run. Compiles BigWhoop (with OpenMP "
|
|
@echo " enabled if applicable). Code optimization is set to"
|
|
@echo " the highest level."
|
|
@echo ""
|
|
@echo " release Compiles BigWhoop (with OpenMP enabled if applica-"
|
|
@echo " ble). Code optimization is set to the highest level."
|
|
@echo ""
|
|
@echo " cldebug Removes all files and folders created during a pre-"
|
|
@echo " vious compile run. Compiles BigWhoop (with OpenMP "
|
|
@echo " enabled if applicable). All relevant debug flags "
|
|
@echo " are set. "
|
|
@echo ""
|
|
@echo " cmdl Removes all files and folders created during a pre-"
|
|
@echo " vious compile run. Compiles BigWhoop (with OpenMP "
|
|
@echo " enabled if applicable). Code optimization is set to"
|
|
@echo " the highest level."
|
|
@echo ""
|
|
@echo " clean Removes all files and folders created during a pre-"
|
|
@echo " vious compile run."
|
|
@echo ""
|
|
@echo "Options:"
|
|
@echo ""
|
|
@echo " [Type] [Description]"
|
|
@echo ""
|
|
@echo " static Builds BigWhoop as a static library."
|
|
@echo ""
|
|
@echo " single Compiles the BigWhoop library in single precision"
|
|
@echo " mode."
|
|
@echo ""
|
|
@echo " tool Build the command line tool."
|
|
@echo ""
|
|
@echo " profiling Enable Profiling."
|
|
@echo ""
|
|
@echo " omp Enable OpenMP parallelization."
|
|
@echo ""
|
|
@echo " eas3 Adds support for the eas3 file format to the com-"
|
|
@echo " mand line tool."
|
|
@echo ""
|
|
@echo " netCDF Adds support for the eas3 file format to the com-"
|
|
@echo " mand line tool."
|
|
|
|
#*--------------------------------------------------------*#
|
|
# Define private targets. #
|
|
#*--------------------------------------------------------*#
|
|
build_debug:
|
|
$(eval BUILD_TYPE="Debug")
|
|
|
|
#*--------------------------------------------------------*#
|
|
# Define targets used to instrument library properites. #
|
|
#*--------------------------------------------------------*#
|
|
static:
|
|
$(eval LINK_TYPE="Static")
|
|
|
|
single:
|
|
$(eval BUILD_PREC="Single")
|
|
|
|
#*--------------------------------------------------------*#
|
|
# Define target used to activate command line tool build. #
|
|
#*--------------------------------------------------------*#
|
|
tool:
|
|
$(eval BUILD_TOOL="True")
|
|
|
|
#*--------------------------------------------------------*#
|
|
# Define target used to activate profiling. #
|
|
#*--------------------------------------------------------*#
|
|
profiling:
|
|
$(eval BUILD_PROF="True")
|
|
|
|
#*--------------------------------------------------------*#
|
|
# Define target used to activate OpenMP parallelization. #
|
|
#*--------------------------------------------------------*#
|
|
omp:
|
|
$(eval BUILD_OMP="True")
|
|
|
|
#*--------------------------------------------------------*#
|
|
# Define targets used to activate file format support. #
|
|
#*--------------------------------------------------------*#
|
|
eas3:
|
|
$(eval BUILD_EAS3="True")
|
|
|
|
netCDF:
|
|
$(eval BUILD_NETCDF="True")
|
|
|
|
#*--------------------------------------------------------*#
|
|
# Define the wrappers for the compile command targets. #
|
|
#*--------------------------------------------------------*#
|
|
debug: | clean build_debug build_bwc display
|
|
full: | clean build_bwc display
|
|
release: | build_bwc display
|
|
cmdl: | clean tool profiling eas3 build_bwc display
|
|
cldebug: | clean build_debug tool profiling eas3 build_bwc display
|
|
|
|
#*--------------------------------------------------------*#
|
|
# Define target used to output compile information. #
|
|
#*--------------------------------------------------------*#
|
|
display:
|
|
@echo "=============================================================="
|
|
@echo ""
|
|
@echo " .:-------------: .:-------------: "
|
|
@echo " .+++++++++++++++= :+++++++++++++++- "
|
|
@echo " :+++. -++= -++= "
|
|
@echo " :+++. -++= -++= "
|
|
@echo " -++++++++++++++= -++= -++= "
|
|
@echo " .=++---------=++= -++= -++= "
|
|
@echo " :+++ :++= -++= -++= "
|
|
@echo " .+++=--------=+++---=+++---=+++------------: "
|
|
@echo " -=++++++++++++++++++++++++++++++++++++++++- "
|
|
@echo ""
|
|
@echo "----------------- Successfully Compiled -----------------"
|
|
@echo ""
|
|
@echo " Build Type: $(BUILD_TYPE)"
|
|
@echo " Link Type: $(LINK_TYPE)"
|
|
@echo " Precision: $(BUILD_PREC)"
|
|
@echo " Utilities: $(BUILD_TOOL)"
|
|
@echo " Profiling: $(BUILD_PROF)"
|
|
@echo ""
|
|
@echo " Build date: $(shell date)"
|
|
@echo " User: $(USER)"
|
|
@echo ""
|
|
@echo "=============================================================="
|
|
|
|
#*--------------------------------------------------------*#
|
|
# Define the main compile command targets. #
|
|
#*--------------------------------------------------------*#
|
|
build_bwc:
|
|
mkdir -p build && cd build && cmake .. "-DCMAKE_BUILD_TYPE=${BUILD_TYPE}" "-DLINK:STRING=${LINK_TYPE}" "-DPREC:STRING=${BUILD_PREC}" "-DTOOL=${BUILD_TOOL}" "-DPROF=${BUILD_PROF}" "-DOMP=${BUILD_OMP}" "-DBUILD_EAS3=${BUILD_EAS3}" "-DBUILD_NETCDF=${BUILD_NETCDF}" && $(MAKE) -j
|
|
|
|
clean:
|
|
- /bin/rm -rf build/ bin/ lib/ lib64/ include/library/public
|