gerador automatico de Makefiles
Publicado por Pedro Robson Leão 11/06/2007
[ Hits: 8.802 ]
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;
Mudando Cor da Letra e Fundo de Tela
Exemplo de sistema especialista usando Inteligência Artificial
Algoritmo método da Posição Falsa ou Falsa Posição, Newton Raphson e Bisseção em Calculo Númerico
Função "Partição de Inteiros" Recursiva SEM Tabela Estática em C
Nenhum comentário foi encontrado.
O Journal no Linux para a guarda e consulta de logs do sistema
A evolução do Linux e as mudanças que se fazem necessárias desde o seu lançamento
Maquina modesta - a vez dos navegadores ferrarem o usuario
Fscrypt: protegendo arquivos do seu usuário sem a lentidão padrão de criptograr o disco
Sway no Arch Linux: configuração Inicial sem enrolação
Resolvendo o bloqueio do Módulo Warsaw no Arch Linux (Porta 30900)
Continuando meus tópicos anteriores (0)
Saída de loop após teste de if. (2)
Governo da França vai trocar Windows por Linux (9)
Warsaw não é reconhecido no Google Chrome 147.0.7727.55 [RESOLVIDO] (9)









