File: wmake.cmake-args

package info (click to toggle)
openfoam 1912.200626-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 238,940 kB
  • sloc: cpp: 1,159,638; sh: 15,902; ansic: 5,195; lex: 660; xml: 387; python: 282; awk: 212; makefile: 103; sed: 88; csh: 3
file content (120 lines) | stat: -rw-r--r-- 3,897 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#----------------------------------*-sh-*--------------------------------------
# =========                 |
# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
#  \\    /   O peration     |
#   \\  /    A nd           | www.openfoam.com
#    \\/     M anipulation  |
#------------------------------------------------------------------------------
#     Copyright (C) 2020 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
#     This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
#
# File
#     wmake/scripts/wmake.cmake-args
#
# Description
#     Special-purpose argument parser (eg, for Allwmake scripts)
#     that handles -prefix=... and some other simpler tasks
#
# Usage
#     # Parse the arguments by sourcing this script
#     . ${WM_PROJECT_DIR:?}/wmake/scripts/wmake.cmake-args
#
# Options
#     -prefix=...
#     Exports CMAKE_INSTALL_PREFIX value.
#     Handles u(ser), g(roup), o(ther) short-cuts (see foamEtcFile),
#     absolute or relative paths
#
#     -j | -jN | -j N
#     Compile using all or specified N cores/hyperthreads
#
#------------------------------------------------------------------------------

# NB: nArgs to track the current processing position to avoid wraparound
# when checking for optional parameters (eg, the -j processing)

nArgs="$#"
for arg in "$@"
do
    shift; nArgs="$((nArgs - 1))"               # Drop argument

    case "$arg" in

    # Install prefix: user
    -prefix=u | -prefix=user)
        export CMAKE_INSTALL_PREFIX="${FOAM_USER_LIBBIN%/*}"
        echo "Install prefix = user ($CMAKE_INSTALL_PREFIX)" 1>&2
        continue    # Handled argument
        ;;

    # Install prefix: group
    -prefix=g | -prefix=group)
        export CMAKE_INSTALL_PREFIX="${FOAM_SITE_LIBBIN%/*}"
        echo "Install prefix = group ($CMAKE_INSTALL_PREFIX)" 1>&2
        continue    # Handled argument
        ;;

    # Install prefix: other/openfoam
    -prefix=o | -prefix=other | -prefix=openfoam)
        export CMAKE_INSTALL_PREFIX="${FOAM_LIBBIN%/*}"
        echo "Install prefix = openfoam ($CMAKE_INSTALL_PREFIX)" 1>&2
        continue    # Handled argument
        ;;

    # Install prefix: custom
    -prefix=*)
        export CMAKE_INSTALL_PREFIX="${arg#*=}"
        : "${CMAKE_INSTALL_PREFIX:=/usr/local}"  # Default as per autoconf

        # Require as absolute path
        [ "${CMAKE_INSTALL_PREFIX#/}" != "${CMAKE_INSTALL_PREFIX}" ] || \
            CMAKE_INSTALL_PREFIX="${PWD}/${CMAKE_INSTALL_PREFIX}"

        echo "Install prefix = $CMAKE_INSTALL_PREFIX" 1>&2
        continue    # Handled argument
        ;;

    # Parallel compilation (all or specified number of cores)
    -j)
        export WM_NCOMPPROCS=0
        if [ "$nArgs" -gt 0 ]
        then
            case "$1" in
            [0-9]*)
                if WM_NCOMPPROCS="$(expr 0 + "$1" 2>/dev/null)"
                then
                    shift; nArgs="$((nArgs - 1))"   # Drop argument
                fi
                ;;
            esac
        fi
        if [ "${WM_NCOMPPROCS:=0}" -le 0 ]
        then
            WM_NCOMPPROCS=$(getconf _NPROCESSORS_ONLN 2>/dev/null) || \
                WM_NCOMPPROCS=1
        fi

        echo "Compiling enabled on $WM_NCOMPPROCS cores" 1>&2
        continue    # Handled argument
        ;;

    # Parallel compilation (specified number of cores)
    -j[0-9]*)
        export WM_NCOMPPROCS="${arg#-j}"
        if [ "${WM_NCOMPPROCS:=0}" -le 0 ]
        then
            WM_NCOMPPROCS=$(getconf _NPROCESSORS_ONLN 2>/dev/null) || \
                WM_NCOMPPROCS=1
        fi

        echo "Compiling enabled on $WM_NCOMPPROCS cores" 1>&2
        continue    # Handled argument
        ;;
    esac

    set -- "$@" "$arg"     # Reinsert unhandled argument
done

#------------------------------------------------------------------------------