]> git.ipfire.org Git - ipfire-3.x.git/blame - tools/make-constants
Added a macro for cross-compilation.
[ipfire-3.x.git] / tools / make-constants
CommitLineData
1ded22cc
MT
1#!/bin/bash
2###############################################################################
3# #
4# IPFire.org - A linux based firewall #
5# Copyright (C) 2008 Michael Tremer & Christian Schmidt #
6# #
7# This program is free software: you can redistribute it and/or modify #
8# it under the terms of the GNU General Public License as published by #
9# the Free Software Foundation, either version 3 of the License, or #
10# (at your option) any later version. #
11# #
12# This program is distributed in the hope that it will be useful, #
13# but WITHOUT ANY WARRANTY; without even the implied warranty of #
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
15# GNU General Public License for more details. #
16# #
17# You should have received a copy of the GNU General Public License #
18# along with this program. If not, see <http://www.gnu.org/licenses/>. #
19# #
20###############################################################################
27b9c375
MT
21###############################################################################
22#
23# Define default vars
24#
25###############################################################################
1ded22cc
MT
26
27# Default target
28TARGET=i686
9e49fc4c 29POSSIBLE_TARGETS="i586 i686 via-c3 via-c7 geodelx"
1ded22cc
MT
30
31# Configuration rootdir
32CONFIG_ROOT=/etc/$SNAME
33
34# Nice level
35NICE=10
36
37# Read in kernel version
38KVER=$(grep --max-count=1 VER lfs/linux | awk '{ print $3 }' | tr -d '\n'; grep --max-count=1 LOCALVERSION lfs/linux | awk '{ print $3 }' | tail -1)
39
40# Read in machine type
41MACHINE_REAL=$(uname -m)
42
43# Read in our tag
44GIT_TAG=$(git tag | tail -1)
45
46# Default Security options
47SSP=1
48PIE=1
49PAX=1
50
51# Embedded build
52EMB=0
53
54# Default building options
55BUILD_EXTRAS=1
56BUILD_DEBUG=0
57
58# Default parallelism options
59PARALLELISMFLAGS=-j$(( $(grep processor < /proc/cpuinfo | wc -l) * 2 + 1 ))
60
61# Default distcc options
62DISTCC_HOSTS=localhost
63DISTCC_PORT=3632
e3e4d196 64DISTCC_JOBS=4
1ded22cc
MT
65
66# Default hostname
67HOSTNAME=${HOSTNAME-$(hostname -f || hostname)}
68
27b9c375
MT
69###############################################################################
70#
71# Read the local configuration to override the environment variables
72#
73###############################################################################
74
75if ! [ -e .config ]; then
76 sed -e "s/@UUID@/$(uuidgen 2>/dev/null || cat /proc/sys/kernel/random/uuid)/" \
77 -e "s/^#UUID=/UUID=/" < $BASEDIR/.config-default > $BASEDIR/.config
78fi
79
80. $BASEDIR/.config
81
82###############################################################################
83#
84# Variables that are not modifyable by .config
85#
86###############################################################################
87
88if [ 'i686' = $MACHINE_REAL \
89 -o 'i586' = $MACHINE_REAL \
90 -o 'i486' = $MACHINE_REAL \
91 -o 'x86_64' = $MACHINE_REAL ]; then
92 IFS_HOST="$(echo $MACHTYPE | sed "s/$(echo $MACHTYPE | cut -d- -f2)/cross/")"
93else
94 beautify message FAIL
95 echo "Can't determine your architecture - $MACHINE_REAL"
96 exit 1
97fi
98
99if [ 'i686' = $TARGET -o 'i586' = $TARGET \
100 -o 'i486' = $TARGET ]; then
101 MACHINE=${TARGET}
102 MACHINE_REAL=${MACHINE_REAL}
103 LINKER=/lib/ld-linux.so.2
104 IFS_TARGET="${MACHINE}-pc-linux-gnu"
105 CFLAGS="-march=${MACHINE} -O2 -pipe -fomit-frame-pointer"
106 CXXFLAGS="${CFLAGS}"
107elif [ 'via-c7' = $TARGET ]; then
108 MACHINE=i686
109 MACHINE_REAL=${MACHINE_REAL}
110 LINKER=/lib/ld-linux.so.2
111 IFS_TARGET="${MACHINE}-pc-linux-gnu"
112 CFLAGS="-march=${MACHINE} -mmmx -msse -msse2 -msse3 -O2 -pipe"
113 CXXFLAGS="${CFLAGS}"
114elif [ 'via-c3' = $TARGET ]; then
115 MACHINE=i586
116 MACHINE_REAL=${MACHINE_REAL}
117 LINKER=/lib/ld-linux.so.2
118 IFS_TARGET="${MACHINE}-pc-linux-gnu"
119 CFLAGS="-march=c3 -m3dnow -O2 -pipe -fomit-frame-pointer"
120 CXXFLAGS="${CFLAGS}"
121elif [ 'geodelx' = $TARGET ]; then
122 MACHINE=i586
123 MACHINE_REAL=${MACHINE_REAL}
124 LINKER=/lib/ld-linux.so.2
125 IFS_TARGET="${MACHINE}-pc-linux-gnu"
126 CFLAGS="-march=geode -Os -pipe -fomit-frame-pointer"
127 CXXFLAGS="${CFLAGS}"
128else
129 beautify message FAIL
130 echo "Not a valid target arch (i686|i586|i486|via-c7|via-c3|geodelx) - $TARGET"
131 exit 1
132fi
133
134# Make debugging symbols
135if [ "$BUILD_DEBUG" == "1" ]; then
136 CFLAGS=$(sed -e "s/-O[123s]/-O/g" <<< $CFLAGS)
137 CFLAGS="$CFLAGS -g"
138 CXXFLAGS=$(sed -e "s/-O[123s]/-O/g" <<< $CXXFLAGS)
139 CXXFLAGS="$CXXFLAGS -g"
140fi
141
0ad657e2
MT
142# Define IMAGENAME
143IMAGENAME=${SNAME}-${VERSION}.${TARGET}
144
145if [ "$BUILD_DEBUG" == "1" ]; then
146 # On debug build, append -debug
147 IMAGENAME=${IMAGENAME}-debug
148fi
149
150# Define TOOLCHAINNAME
27b9c375
MT
151TOOLCHAINNAME=$SNAME-$TOOLCHAINVERSION-toolchain-t${TARGET}-m${MACHINE}
152
1ded22cc
MT
153# Set up what used to be /tools
154TOOLS_DIR=/tools_${MACHINE}
155
156# Set up /installer
157INSTALLER_DIR=/pomona
158
159# A place to build the iso
160CDROM_DIR=/cdrom
161
162# A place to keep the images
163IMAGES_DIR=/images
164
165# Files that indicates that we are running or failed
166RUNNING=$BASEDIR/.running
167FAILED=$BASEDIR/.failed