237 lines
7.6 KiB
Plaintext
237 lines
7.6 KiB
Plaintext
|
#!/bin/sh
|
||
|
#
|
||
|
# @(#)makeinc 1.8 14/03/24 Copyright 1998-2014 J. Schilling
|
||
|
###########################################################################
|
||
|
# Copyright 1998-2014 by J. Schilling
|
||
|
###########################################################################
|
||
|
#
|
||
|
# Automake script for the Schily (SING) makefile system
|
||
|
#
|
||
|
###########################################################################
|
||
|
#
|
||
|
# Creates the following files:
|
||
|
#
|
||
|
# ./RULES/os-sunos.id included first after mk-$(XMAKEPROG).id
|
||
|
# ./RULES/os-sunos.def included next after RULES/os-sunos.id
|
||
|
# ./DEFAULTS/Defaults.sunos included after RULES/os-sunos.def
|
||
|
# Now incs/Dcc.$(PARCH)$(-O_ARCH) is
|
||
|
# included in parparation of the next
|
||
|
# file. This may call conf/cc-config.sh
|
||
|
# ./RULES/sun4c-sunos-gcc.rul included after DEFAULTS/Defaults.sunos
|
||
|
#
|
||
|
###########################################################################
|
||
|
# The contents of this file are subject to the terms of the
|
||
|
# Common Development and Distribution License, Version 1.0 only
|
||
|
# (the "License"). You may not use this file except in compliance
|
||
|
# with the License.
|
||
|
#
|
||
|
# See the file CDDL.Schily.txt in this distribution for details.
|
||
|
# A copy of the CDDL is also available via the Internet at
|
||
|
# http://www.opensource.org/licenses/cddl1.txt
|
||
|
#
|
||
|
# When distributing Covered Code, include this CDDL HEADER in each
|
||
|
# file and include the License file CDDL.Schily.txt from this distribution.
|
||
|
###########################################################################
|
||
|
MAILADDR=joerg.schilling@fokus.fraunhofer.de
|
||
|
|
||
|
###########################################################################
|
||
|
# Option processing
|
||
|
###########################################################################
|
||
|
case $1 in
|
||
|
|
||
|
-r)
|
||
|
shift
|
||
|
SRCROOT=$1
|
||
|
shift
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
if [ $# -lt 1 ]; then
|
||
|
echo 'Usage: makeinc [-r srcroot] filename' 1>&2
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
###########################################################################
|
||
|
# Find SRCROOT if not specified via option
|
||
|
###########################################################################
|
||
|
if [ .$SRCROOT = . ]; then
|
||
|
SRCROOT=.
|
||
|
loop=1
|
||
|
while [ $loop -lt 100 ]; do
|
||
|
if [ ! -d $SRCROOT ]; then
|
||
|
# Abort on ENAMETOOLONG
|
||
|
break
|
||
|
fi
|
||
|
if [ -r $SRCROOT/RULES/rules.top ]; then
|
||
|
break
|
||
|
fi
|
||
|
if [ "$SRCROOT" = . ]; then
|
||
|
SRCROOT=".."
|
||
|
else
|
||
|
SRCROOT="$SRCROOT/.."
|
||
|
fi
|
||
|
loop="`expr $loop + 1`"
|
||
|
done
|
||
|
if [ ! -r $SRCROOT/RULES/rules.top ]; then
|
||
|
echo "Cannot find SRCROOT directory" 1>&2
|
||
|
exit 1
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
###########################################################################
|
||
|
# Real start of automake script
|
||
|
###########################################################################
|
||
|
echo 'NOTICE: Automake script called'
|
||
|
if [ -r $1 ]; then
|
||
|
echo "WARNING: requested file '$1' already exists"
|
||
|
exit
|
||
|
fi
|
||
|
echo "IMPORTANT: Please report your architecture to $MAILADDR"
|
||
|
echo
|
||
|
echo "Trying to create missing rule file '$1'"
|
||
|
sleep 1
|
||
|
echo
|
||
|
|
||
|
#
|
||
|
# Compiler for platforms we do not yet know.
|
||
|
# $CC is only used with *Defaults.*)
|
||
|
#
|
||
|
CC=cc
|
||
|
gcc -v 2> /dev/null && CC=gcc
|
||
|
ARG_CC=$CC
|
||
|
echo "CC: $CC"
|
||
|
|
||
|
#
|
||
|
# Call $CC and try to find out whether it might be "gcc" or "clang".
|
||
|
#
|
||
|
CC_V=`eval "$CC -v > /dev/null" 2>&1`
|
||
|
GCC_V=`echo "$CC_V" | grep -i gcc-version `
|
||
|
CLANG_V=`echo "$CC_V" | grep -i clang `
|
||
|
|
||
|
if [ ".$GCC_V" != . ]; then
|
||
|
if eval "gcc -v 2> /dev/null" 2>/dev/null; then
|
||
|
CC="gcc"
|
||
|
fi
|
||
|
elif [ ".$CLANG_V" != . ]; then
|
||
|
if eval "clang -v 2> /dev/null" 2>/dev/null; then
|
||
|
CC="clang"
|
||
|
fi
|
||
|
fi
|
||
|
#
|
||
|
# Check whether "cc" or "gcc" are emulated by another compiler
|
||
|
#
|
||
|
if [ "$CC" != "$ARG_CC" ]; then
|
||
|
echo "$ARG_CC is $CC"
|
||
|
fi
|
||
|
|
||
|
MANSTYLE=sysv
|
||
|
if [ -r /usr/man/*man7*/man.* -o -r /usr/share/man/*man7*/man.* \
|
||
|
-o -r /usr/man/*man7*/mandoc.* -o -r /usr/share/man/*man7*/mandoc.* \
|
||
|
-o -r /usr/man/*man7*/ascii* -o -r /usr/share/man/*man7*/ascii* ]; then
|
||
|
MANSTYLE=bsd
|
||
|
fi
|
||
|
echo "MANSTYLE: $MANSTYLE"
|
||
|
|
||
|
case $1 in
|
||
|
|
||
|
*os-*.id)
|
||
|
echo $1
|
||
|
OSNAME=`echo $1 | sed -e 's;\(.*\)os-\(.*\)\.id;\2;'`
|
||
|
echo '###########################################################################' > $1
|
||
|
echo "# OS specific MACRO definitions for $OSNAME" >> $1
|
||
|
echo "# This file is auto generated and may be wrong" >> $1
|
||
|
echo '###########################################################################' >> $1
|
||
|
echo "O_ARCH= $OSNAME" >> $1
|
||
|
echo '-O_ARCH= -$(O_ARCH)' >> $1
|
||
|
;;
|
||
|
|
||
|
*os-*.def)
|
||
|
echo $1
|
||
|
OSNAME=`echo $1 | sed -e 's;\(.*\)os-\(.*\)\.def;\2;'`
|
||
|
echo '###########################################################################' > $1
|
||
|
echo "# Global os definitions for $OSNAME" >> $1
|
||
|
echo "# This file is auto generated and may be wrong" >> $1
|
||
|
echo '###########################################################################' >> $1
|
||
|
echo "MANSTYLE= $MANSTYLE" >> $1
|
||
|
;;
|
||
|
|
||
|
*Defaults.*)
|
||
|
echo $1
|
||
|
OSNAME=`echo $1 | sed -e 's;\(.*\)\.\(.*\);\2;'`
|
||
|
echo '###########################################################################' > $1
|
||
|
echo "# global definitions for $OSNAME Systems" >> $1
|
||
|
echo "# This file is auto generated and may be wrong" >> $1
|
||
|
echo '###########################################################################' >> $1
|
||
|
if [ "$CC" = clang ]; then
|
||
|
cat $SRCROOT/TEMPLATES/Defaults.clang >> $1
|
||
|
elif [ "$CC" = gcc ]; then
|
||
|
cat $SRCROOT/TEMPLATES/Defaults.gcc >> $1
|
||
|
else
|
||
|
cat $SRCROOT/TEMPLATES/Defaults.xcc >> $1
|
||
|
fi
|
||
|
echo >> $1
|
||
|
echo '###########################################################################' >> $1
|
||
|
echo "# Do compilattion with minimal warnings" >> $1
|
||
|
echo '###########################################################################' >> $1
|
||
|
echo "CWARNOPTS=" >> $1
|
||
|
;;
|
||
|
|
||
|
*-*-cc*.rul | \
|
||
|
*-*-gcc*.rul | \
|
||
|
*-*-clang*.rul)
|
||
|
ARCH=`echo $1 | sed -e 's;\(.*\)/\(.*\)-\(.*\)-\(.*\).rul;\2;'`
|
||
|
OSNAME=`echo $1 | sed -e 's;\(.*\)/\(.*\)-\(.*\)-\(.*\).rul;\3;'`
|
||
|
CCOM=`echo $1 | sed -e 's;\(.*\)/\(.*\)-\(.*\)-\(.*\).rul;\4;'`
|
||
|
DIR=`echo $1 | sed -e "s;\(.*\)/$ARCH-$OSNAME-$CCOM.rul;\1;"`
|
||
|
echo "ARCH: $ARCH"
|
||
|
echo "OSNAME: $OSNAME"
|
||
|
echo "CCOM: $CCOM"
|
||
|
echo "DIR: $DIR"
|
||
|
echo $1
|
||
|
echo "Trying to find similar architecture for '$1'"
|
||
|
similar=`ls $DIR/*-$OSNAME-$CCOM.rul 2>/dev/null| head -1`
|
||
|
SARCH=`echo $similar | sed -e "s;\(.*\)/\(.*\)-$OSNAME-$CCOM.rul;\2;"`
|
||
|
|
||
|
if [ .$similar != . ]; then
|
||
|
echo 'Found similar architecture ' "'$similar'"
|
||
|
echo 'creating symlink:' ln -s $SARCH-$OSNAME-$CCOM.rul $1
|
||
|
echo "Please send a mail to $MAILADDR to report whether this works or not"
|
||
|
sleep 10
|
||
|
ln -s $SARCH-$OSNAME-$CCOM.rul $1 || cp $SARCH-$OSNAME-$CCOM.rul $1
|
||
|
exit
|
||
|
else
|
||
|
echo '###########################################################################' > $1
|
||
|
echo "# global definitions for $OSNAME Systems" >> $1
|
||
|
echo "# This file is auto generated and may be wrong" >> $1
|
||
|
echo '###########################################################################' >> $1
|
||
|
|
||
|
if [ $CCOM = clang -o $CCOM = clang32 -o $CCOM = clang64 ]; then
|
||
|
echo 'Using generic CLANG machine configuration file'
|
||
|
cat $SRCROOT/TEMPLATES/temp-$CCOM.rul >> $1
|
||
|
elif [ $CCOM = gcc -o $CCOM = gcc32 -o $CCOM = gcc64 ]; then
|
||
|
echo 'Using generic GCC machine configuration file'
|
||
|
cat $SRCROOT/TEMPLATES/temp-$CCOM.rul >> $1
|
||
|
else
|
||
|
echo 'Using generic dumb cc machine configuration file'
|
||
|
cat $SRCROOT/TEMPLATES/temp-xcc.rul >> $1
|
||
|
fi
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
#######################################################################
|
||
|
# This entry is not really needed...
|
||
|
#######################################################################
|
||
|
*TARGETS/Targetdirs*)
|
||
|
echo "Linking $1 to $SRCROOT/TARGETS/Targetdirs"
|
||
|
ln -s Targetdirs $1
|
||
|
;;
|
||
|
*)
|
||
|
echo "Unknown rule to build: '$1'."
|
||
|
exit 1
|
||
|
;;
|
||
|
|
||
|
esac
|
||
|
|
||
|
echo "Please send a mail to $MAILADDR to report whether this works or not"
|
||
|
sleep 10
|