From 2129f1f9a222cc5c674d8c04a291ef5a14bffe5c Mon Sep 17 00:00:00 2001 From: Stephan Schulz <stephan.schulz-x2q@rub.de> Date: Tue, 19 Jan 2021 09:09:13 +0100 Subject: [PATCH] example CMake project --- example/CMakeProject/ALL_Staggered.cpp | 1 + example/CMakeProject/ALL_Staggered_f.F90 | 1 + example/CMakeProject/CMakeLists.txt | 24 ++++++++++++ example/CMakeProject/build_all.sh | 41 ++++++++++++++++++++ example/CMakeProject/build_all_relocated.sh | 43 +++++++++++++++++++++ 5 files changed, 110 insertions(+) create mode 120000 example/CMakeProject/ALL_Staggered.cpp create mode 120000 example/CMakeProject/ALL_Staggered_f.F90 create mode 100644 example/CMakeProject/CMakeLists.txt create mode 100755 example/CMakeProject/build_all.sh create mode 100755 example/CMakeProject/build_all_relocated.sh diff --git a/example/CMakeProject/ALL_Staggered.cpp b/example/CMakeProject/ALL_Staggered.cpp new file mode 120000 index 0000000..8bca7c2 --- /dev/null +++ b/example/CMakeProject/ALL_Staggered.cpp @@ -0,0 +1 @@ +../ALL_Staggered.cpp \ No newline at end of file diff --git a/example/CMakeProject/ALL_Staggered_f.F90 b/example/CMakeProject/ALL_Staggered_f.F90 new file mode 120000 index 0000000..824e45e --- /dev/null +++ b/example/CMakeProject/ALL_Staggered_f.F90 @@ -0,0 +1 @@ +../ALL_Staggered_f.F90 \ No newline at end of file diff --git a/example/CMakeProject/CMakeLists.txt b/example/CMakeProject/CMakeLists.txt new file mode 100644 index 0000000..3640e57 --- /dev/null +++ b/example/CMakeProject/CMakeLists.txt @@ -0,0 +1,24 @@ +# REMEMBER TO SET CC AND CXX! CMake is too dumb to find compiler in your path! +# mkdcd build +# CC=gcc CXX=g++ cmake -DALL_DIR=`pwd`/../../jall_bin/lib/cmake/ALL ../ + +cmake_minimum_required(VERSION 3.14) +project(ALL_Staggered) + +enable_language(CXX) +enable_language(Fortran) +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +find_package(MPI REQUIRED COMPONENTS CXX Fortran) +find_package(ALL 0.9.1) + +add_executable(ALL_Staggered ALL_Staggered.cpp) +target_link_libraries(ALL_Staggered PRIVATE ALL::ALL) + +add_executable(ALL_Staggered_f ALL_Staggered_f.F90) +target_link_libraries(ALL_Staggered_f LINK_PRIVATE ALL::ALL) +target_link_libraries(ALL_Staggered_f LINK_PRIVATE ALL::ALL_fortran) +set_property(TARGET ALL_Staggered_f PROPERTY LINKER_LANGUAGE Fortran) +#todo(s.schulz): link against MPI diff --git a/example/CMakeProject/build_all.sh b/example/CMakeProject/build_all.sh new file mode 100755 index 0000000..e059c34 --- /dev/null +++ b/example/CMakeProject/build_all.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +# all commands must execute successfully +set -e +set -o pipefail +set -u +set -x + +# $ALL_INSTALL_DIR must be an absolute path! +ALL_ROOT_DIR=../.. +ALL_BUILD_DIR=all_build +ALL_INSTALL_DIR=`pwd`/all_bin +BUILD_DIR=build + +export CC=gcc +export CXX=g++ + +build_all () { + rm -rf "$ALL_BUILD_DIR" + mkdir "$ALL_BUILD_DIR" + cmake -S "$ALL_ROOT_DIR" -B "$ALL_BUILD_DIR"\ + -DCMAKE_INSTALL_PREFIX="$ALL_INSTALL_DIR"\ + -DCM_ALL_FORTRAN=ON\ + -DCMAKE_BUILD_TYPE=Release + + cmake --build "$ALL_BUILD_DIR" + rm -rf "ALL_INSTALL_DIR" + cmake --install "$ALL_BUILD_DIR" +} + +build_self () { + rm -rf "$BUILD_DIR" + mkdir "$BUILD_DIR" + cmake -S . -B "$BUILD_DIR"\ + -DALL_DIR="$ALL_INSTALL_DIR"/lib/cmake/ALL + + cmake --build "$BUILD_DIR" +} + +build_all +build_self diff --git a/example/CMakeProject/build_all_relocated.sh b/example/CMakeProject/build_all_relocated.sh new file mode 100755 index 0000000..b5dc3c5 --- /dev/null +++ b/example/CMakeProject/build_all_relocated.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# all commands must execute successfully +set -e +set -o pipefail +set -u +set -x + +# $ALL_INSTALL_DIR must be an absolute path! +ALL_ROOT_DIR=../.. +ALL_BUILD_DIR=all_build +ALL_INSTALL_DIR=`pwd`/all_bin +ALL_INSTALL_DIR2=`pwd`/all_bin2 +BUILD_DIR=build + +export CC=gcc +export CXX=g++ + +build_all () { + rm -rf "$ALL_BUILD_DIR" + mkdir "$ALL_BUILD_DIR" + cmake -S "$ALL_ROOT_DIR" -B "$ALL_BUILD_DIR"\ + -DCMAKE_INSTALL_PREFIX="$ALL_INSTALL_DIR"\ + -DCM_ALL_FORTRAN=ON\ + -DCMAKE_BUILD_TYPE=Release + + cmake --build "$ALL_BUILD_DIR" + rm -rf "ALL_INSTALL_DIR" + cmake --install "$ALL_BUILD_DIR" + mv "$ALL_INSTALL_DIR" "$ALL_INSTALL_DIR2" +} + +build_self () { + rm -rf "$BUILD_DIR" + mkdir "$BUILD_DIR" + cmake -S . -B "$BUILD_DIR"\ + -DALL_DIR="$ALL_INSTALL_DIR2"/lib/cmake/ALL + + cmake --build "$BUILD_DIR" +} + +build_all +build_self -- GitLab