gerador automatico de Makefiles
Publicado por Pedro Robson Leão 11/06/2007
[ Hits: 8.636 ]
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;
3º EP - Poli USP - Angry Birds (angry bixos)
Contar elementos de uma lista encadeada
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
How can I remove duplicate MSG files from my folders effectively? (0)
O programa assinador digital (0)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









