gerador automatico de Makefiles
Publicado por Pedro Robson Leão 11/06/2007
[ Hits: 8.713 ]
Código baseado no genmake original de ma_muquit@fccc.edu;
gera um arquivo makefile automaticamente.
#!/usr/bin/bash
VERSION="1.0"
EMAIL="ma_muquit@fccc.edu"
VER="Makefile automatically generated by genmake $VERSION, `date '+%h-%d-%y'`"
DATE=`date +%b-%d-%Y`
AUTHOR="genmake $VERSION by $EMAIL"
function genGenericMake() {
local fname=${3:-"Makefile"};
local opc=${1};
local prog=${2};
local cc=gcc;
local dir=;
local sharedlibrary=;
case ${opc} in
"lib") dir="lib";
prog="lib${prog}.a";;
"shared") dir="lib";
STRIP="";
prog="lib${prog}.so";
sharedlibrary="-shared";;
*) STRIP="";
dir="bin";;
esac
[ ! -z "${sharedlibrary}" ] && {
local machine=$(uname);
[ "${machine}" == "SunOS" ] && local sharedlibrary="-G";
}
cat >> ${fname} <<EOF
##
# ${VER}
# ${AUTHOR}
#
# \$Id: \$
#
##
CC= ${cc}
AR= ar cq
RANLIB= ranlib
baseinstall=./
DEFS=
PROGDIR=../${dir}
PROGNAME= \$(PROGDIR)/${prog}
INCLUDES= -I.
LIBS=
# replace -O with -g in order to debug
DEFINES= \$(DEFS) -DSYS_UNIX=1
CFLAGS= -O -Wall
ifeq (\$(DEBUG),on)
CFLAGS=-g -D__DEBUG__ -O -Wall
endif
OBJS = ${OBJS}
.c.o:
@rm -f \$@
\$(CC) \$(CFLAGS) \$(DEFINES) \$(INCLUDES) -c \$*.c
all: \$(PROGNAME) install-strip
\$(PROGNAME) : \$(OBJS)
@rm -f \$@
@mkdir -p \$(PROGDIR)
EOF
[ "${opc}" != "lib" ] && {
cat >> ${fname} <<EOF
\$(CC) \$(CFLAGS) ${sharedlibrary} -o \$(PROGNAME) \$(OBJS) \$(LIBS)
EOF
}
[ "${opc}" == "lib" ] && {
cat >> ${fname} <<EOF
\$(AR) \$@ \$(OBJS)
\$(RANLIB) \$@
EOF
}
cat >> ${fname} <<EOF
clean:
rm -f \$(OBJS) \$(PROGNAME) core *~ *.ln
install-strip: strip install
strip:
#Strip file
${STRIP}strip \$(PROGNAME)
install:
#Verify dir file
mkdir -p \$(baseinstall)
#Copy files
cp \$(PROGNAME) \$(baseinstall)
EOF
}
[ ${#} -lt 2 ] && {
echo "Use: ${0} [opc <prog|lib|shared>] [prog name] <makefile name>";
exit 0;
}
STRIP="#";
opc=${1};
prog=${2};
make=${3:-"Makefile"};
OBJS="$( \ls -c1 *.c | tr '\n' ' ')";
OBJS="${OBJS//\.c/.o}";
[ -f ${make} ] && {
echo "O arquivo ${make} ja existe";
exit 0;
}
genGenericMake ${opc} ${prog} ${make};
exit 1;
Pilhas Encadeadas Detalhadamente
Nenhum comentário foi encontrado.
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Script de montagem de chroot automatica
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Instalar Dual Boot, Linux+Windows. (5)
Conky, alerta de temperatura alta (16)
De volta para o futuro - ou melhor, para o presente (parte 2) (3)









