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