summaryrefslogtreecommitdiff
path: root/Build/source/texk/gregorio/gregorio-4.0.0-beta2/build.sh
blob: 9625bc85ec358d7c48fdbaecf9a53907dfebe194 (plain)
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/usr/bin/env bash
#
# Public Domain
#
# new script to build gregorio binaries (inspired from LuaTeX's one).
# ----------
# Options:
#      --mingw     : crosscompile for mingw32 from i-386linux
#      --warn      : enables all sorts of warnings
#      --host=     : target system for mingw32 cross-compilation
#      --build=    : build system for mingw32 cross-compilation
#      --arch=     : crosscompile for ARCH on OS X
#      --jobs=     : the number of jobs to run simultaneously in the make step
#      --force=    : force autoreconf or font building
#      {other)     : anything else is passed to configure verbatim
      
# try to find bash, in case the standard shell is not capable of
# handling the generated configure's += variable assignments
if which bash >/dev/null
then
 CONFIG_SHELL=`which bash`
 export CONFIG_SHELL
fi

WARNINGS=yes
MINGWCROSS=FALSE
CONFHOST=
CONFBUILD=
MACCROSS=FALSE
MAKEOPTS=
OTHERARGS=
FORCE_AUTORECONF=
FORCE_FONTS=

CFLAGS="$CFLAGS -Wdeclaration-after-statement"

until [ -z "$1" ]; do
  case "$1" in
    --mingw     ) MINGWCROSS=TRUE ;;
    --warn      ) WARN=TRUE ;;
    --host=*    ) CONFHOST="$1" ;;
    --build=*   ) CONFBUILD="$1" ;;
    --arch=*    ) MACCROSS=TRUE; ARCH=`echo $1 | sed 's/--arch=\(.*\)/\1/' ` ;;
    -j*|--jobs=*) MAKEOPTS="$MAKEOPTS $1" ;;
    --force=autoreconf) FORCE_AUTORECONF=TRUE ;;
    --force=fonts) FORCE_FONTS=TRUE ;;
    *           ) OTHERARGS="$OTHERARGS $1" ;;
  esac
  shift
done

B=build

ARCHFLAGS=

if [ "$WARN" = "TRUE" ]
then
  CFLAGS="-Wall -Wextra \
 -Wformat-y2k -Wno-format-extra-args\
 -Wno-format-zero-length -Wformat-nonliteral\
 -Wformat-security -Wformat=2 -Wnormalized=nfc $CFLAGS"
fi

if [ "$MINGWCROSS" = "TRUE" ]
then
  MINGWBUILD=$HOSTTYPE-$OSTYPE
  MINGWSTR=mingw32
  if [ -d /usr/mingw32 ]; then
    MINGWSTR=mingw32
  else
    if [ -d /usr/i386-mingw32msvc ]; then
      MINGWSTR=i386-mingw32msvc
    else
      if [ -d /usr/i586-mingw32msvc ]; then
        MINGWSTR=i586-mingw32msvc
      fi
    fi
  fi
  OLDPATH=$PATH
  PATH=/usr/$MINGWSTR/bin:$PATH
  CFLAGS="-mtune=pentiumpro -msse2 -O2 $CFLAGS"
  LDFLAGS="-Wl,--large-address-aware $CFLAGS"
  ARCHFLAGS="--target=\"$MINGWSTR\" \
    --with-gnu-ld \
    --host=$MINGWSTR \
    --build=$MINGWBUILD \
    --prefix=/usr/$MINGWSTR"
else
if [ "$MACCROSS" = "TRUE" ]
then
  # make sure that architecture parameter is valid
  case $ARCH in
    i386 | x86_64 | ppc | ppc64 ) ;;
    * ) echo "ERROR: architecture $ARCH is not supported"; exit 1;;
  esac
  ARCHFLAGS="$ARCHFLAGS"
  CFLAGS="-arch $ARCH -g -O2 $CFLAGS"
  LDFLAGS="-arch $ARCH $LDFLAGS" 
fi  
fi


export CFLAGS LDFLAGS

function die {
	echo "Failed to $1."
	exit 1
}

if [ "$FORCE_AUTORECONF" = "TRUE" -o ! -e Makefile.in ]
then
  echo "Creating build files using Autotools"
  autoreconf -f -i || die "create build files"
  echo
fi

CONFIGURE_ARGS="$CONFHOST $CONFBUILD $ARCHFLAGS $OTHERARGS"
echo "Configuring build files; options: $CONFIGURE_ARGS"
./configure $CONFIGURE_ARGS || die "configure Gregorio"
echo

echo "Building Gregorio; options:$MAKEOPTS"
make ${MAKEOPTS} || die "build Gregorio"
echo

if [ "$FORCE_FONTS" = "TRUE" -o ! -e fonts/greciliae.ttf ]
then
  echo "Building fonts; options:$MAKEOPTS"
  cd fonts
  make ${MAKEOPTS} fonts || die "build fonts"
  cd ..
  echo
fi

if [ "$MINGWCROSS" = "TRUE" ]
then
  PATH=$OLDPATH
fi

echo "Build complete.  Next, you may want to run ./install.sh to install."
echo
echo "Depending on installation directory, you probably need to run"
echo "./install.sh using sudo or as root."

exit 0