la herramienta make

40
Área de Instrumentación INSTITUTO DE ASTROFÍSICA DE CANARIAS Esperanza Páez Instituto de Astrofísica de Canarias La herramienta make Cómo leer y modificar un Makefile

Upload: laurel

Post on 23-Jan-2016

31 views

Category:

Documents


0 download

DESCRIPTION

La herramienta make. Cómo leer y modificar un Makefile. > make . busca por “makefile”. busca por “Makefile”. > make  make: *** No makefile found. Stop. > make  make: *** No makefile found. Stop. > make –f mimakefile.mak . objetivo : dependencias. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: La herramienta make

Área de Instrumentación

INSTITUTO DE ASTROFÍSICA DE

CANARIAS

INSTITUTO DE ASTROFÍSICA DE

CANARIAS

Esperanza PáezInstituto de Astrofísica de Canarias

La herramienta makeLa herramienta make

Cómo leer y modificar un Makefile

Cómo leer y modificar un Makefile

Page 2: La herramienta make

2 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

> make > make > make > make

busca por “makefile”busca por “makefile”busca por “Makefile”busca por “Makefile”

Page 3: La herramienta make

3 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

> make > make make: *** No makefile found. make: *** No makefile found. Stop.Stop.

> make > make make: *** No makefile found. make: *** No makefile found. Stop.Stop.

Page 4: La herramienta make

4 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

objetivo : dependenciasobjetivo : dependencias

> make > make make: *** No makefile found. make: *** No makefile found. Stop.Stop.> make –f mimakefile.mak > make –f mimakefile.mak

> make > make make: *** No makefile found. make: *** No makefile found. Stop.Stop.> make –f mimakefile.mak > make –f mimakefile.mak

Page 5: La herramienta make

5 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

main : main.fmain : main.f

> make > make make: *** No makefile found. make: *** No makefile found. Stop.Stop.> make –f mimakefile.mak > make –f mimakefile.mak

> make > make make: *** No makefile found. make: *** No makefile found. Stop.Stop.> make –f mimakefile.mak > make –f mimakefile.mak

dependeciasdependecias

objetivoobjetivo

Page 6: La herramienta make

6 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

main : main.fmain : main.f

> make > make make: *** No makefile found. make: *** No makefile found. Stop.Stop.> make –f mimakefile.mak > make –f mimakefile.mak f77 main.f –o mainf77 main.f –o main

> make > make make: *** No makefile found. make: *** No makefile found. Stop.Stop.> make –f mimakefile.mak > make –f mimakefile.mak f77 main.f –o mainf77 main.f –o main

.f extensión reconocida.f extensión reconocida

sólo si no existe o si antiguosólo si no existe o si antiguo

Page 7: La herramienta make

7 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

main : main.fmain : main.f

> make > make make: *** No makefile found. make: *** No makefile found. Stop.Stop.> make –f mimakefile.mak > make –f mimakefile.mak make: ‘main’ is up date.make: ‘main’ is up date.

> make > make make: *** No makefile found. make: *** No makefile found. Stop.Stop.> make –f mimakefile.mak > make –f mimakefile.mak make: ‘main’ is up date.make: ‘main’ is up date.

Page 8: La herramienta make

8 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

main : main.f fn1.f fn2.fmain : main.f fn1.f fn2.f

> make > make > make > make

objetivoobjetivo

dependeciasdependecias

Page 9: La herramienta make

9 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

main : main.f fn1.f fn2.f

main2 : main2.f fn3.f fn4.f

main : main.f fn1.f fn2.f

main2 : main2.f fn3.f fn4.f

> make > make > make > make

objetivo1objetivo1

objetivo2objetivo2

Page 10: La herramienta make

10 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

> make > make objetivoobjetivo> make main2 > make main2 > make > make objetivoobjetivo> make main2 > make main2

main : main.f fn1.f fn2.f

main2 : main2.f fn3.f fn4.f

main : main.f fn1.f fn2.f

main2 : main2.f fn3.f fn4.f

objetivo1objetivo1

objetivo2objetivo2

Page 11: La herramienta make

11 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

main : main.o fn1.o fn2.o

main.o : main.f

fn1.o : fn1.f

fn2.o : fn2.f

main : main.o fn1.o fn2.o

main.o : main.f

fn1.o : fn1.f

fn2.o : fn2.f

> make > make [objetivo][objetivo] > make > make [objetivo][objetivo]

jerarquía

jerarquía

Page 12: La herramienta make

12 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o

main.o : main.f

fn1.o : fn1.f

fn2.o : fn2.f

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o

main.o : main.f

fn1.o : fn1.f

fn2.o : fn2.f

> make [objetivo] > make [objetivo] > make [objetivo] > make [objetivo]

línea de comandolínea de comando

Page 13: La herramienta make

13 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o

main.o : main.f[TAB] f77 –O –c main.f

fn1.o : fn1.f

fn2.o : fn2.f

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o

main.o : main.f[TAB] f77 –O –c main.f

fn1.o : fn1.f

fn2.o : fn2.f

> make [objetivo] > make [objetivo] > make [objetivo] > make [objetivo]

línea de comandolínea de comando

Page 14: La herramienta make

14 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o

main.o : main.f[TAB] f77 –O –c main.f

fn1.o : fn1.f[TAB] f77 –O –c fn1.f

fn2.o : fn2.f

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o

main.o : main.f[TAB] f77 –O –c main.f

fn1.o : fn1.f[TAB] f77 –O –c fn1.f

fn2.o : fn2.f

> make [objetivo] > make [objetivo] > make [objetivo] > make [objetivo]

línea de comandolínea de comando

Page 15: La herramienta make

15 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o

main.o : main.f[TAB] f77 –O –c main.f

fn1.o : fn1.f[TAB] f77 –O –c fn1.f

fn2.o : fn2.f[TAB] f77 –O –c fn2.f

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o

main.o : main.f[TAB] f77 –O –c main.f

fn1.o : fn1.f[TAB] f77 –O –c fn1.f

fn2.o : fn2.f[TAB] f77 –O –c fn2.f

> make [objetivo] > make [objetivo] > make [objetivo] > make [objetivo]

línea de comandolínea de comando

ojo con los tabuladoresojo con los tabuladores

Page 16: La herramienta make

16 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o

main.o : main.f[TAB] f77 –O –c main.f

fn1.o : fn1.f[TAB] f77 –O –c fn1.f

fn2.o : fn2.f[TAB] f77 –O –c fn2.f

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o

main.o : main.f[TAB] f77 –O –c main.f

fn1.o : fn1.f[TAB] f77 –O –c fn1.f

fn2.o : fn2.f[TAB] f77 –O –c fn2.f

> make [objetivo] > make [objetivo] > make [objetivo] > make [objetivo]

orden shell: sh

división líneas: ‘\’

un comando: ‘;’

una línea: ojo

sin eco: @

orden shell: sh

división líneas: ‘\’

un comando: ‘;’

una línea: ojo

sin eco: @

Page 17: La herramienta make

17 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o[TAB] @ echo “Muevo el ejecutable.”[TAB] @ mv main .. ; ls [TAB] @ cd .. ; \ [RETURN] chmod a+x main

main.o : main.f[TAB] f77 –O –c main.f

fn1.o : fn1.f[TAB] f77 –O –c fn1.f

fn2.o : fn2.f[TAB] f77 –O –c fn2.f

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o[TAB] @ echo “Muevo el ejecutable.”[TAB] @ mv main .. ; ls [TAB] @ cd .. ; \ [RETURN] chmod a+x main

main.o : main.f[TAB] f77 –O –c main.f

fn1.o : fn1.f[TAB] f77 –O –c fn1.f

fn2.o : fn2.f[TAB] f77 –O –c fn2.f

> make [objetivo] > make [objetivo] > make [objetivo] > make [objetivo]

orden shell: sh

división líneas: ‘\’

un comando: ‘;’

una línea: ojo

sin eco: @

orden shell: sh

división líneas: ‘\’

un comando: ‘;’

una línea: ojo

sin eco: @

Page 18: La herramienta make

18 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o

main.o : main.f[TAB] f77 –O –c main.f

fn1.o : fn1.f[TAB] f77 –O –c fn1.f

fn2.o : fn2.f[TAB] f77 –O –c fn2.f

fn1.o : include.inc

fn2.o : include.inc

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o

main.o : main.f[TAB] f77 –O –c main.f

fn1.o : fn1.f[TAB] f77 –O –c fn1.f

fn2.o : fn2.f[TAB] f77 –O –c fn2.f

fn1.o : include.inc

fn2.o : include.inc

> make [objetivo] > make [objetivo] > make [objetivo] > make [objetivo]

repetición de objetivosrepetición de objetivos

Page 19: La herramienta make

19 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o

main.o : main.f[TAB] f77 –O –c main.f

fn1.o : fn1.f[TAB] f77 –O –c fn1.f

fn2.o : fn2.f[TAB] f77 –O –c fn2.f

fn1.o fn2.o : include.inc

limpia : [TAB] rm *%

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o

main.o : main.f[TAB] f77 –O –c main.f

fn1.o : fn1.f[TAB] f77 –O –c fn1.f

fn2.o : fn2.f[TAB] f77 –O –c fn2.f

fn1.o fn2.o : include.inc

limpia : [TAB] rm *%

> make limpia > make limpia > make limpia > make limpia

podemos agruparpodemos agrupar

objetivo etiquetaobjetivo etiqueta

Page 20: La herramienta make

20 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

todo : libreria.a main limpia

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o

main.o : main.f[TAB] f77 –O –c main.f

fn1.o : fn1.f[TAB] f77 –O –c fn1.f

fn2.o : fn2.f[TAB] f77 –O –c fn2.f

fn1.o fn2.o : include.inc

libreria.a : libfn.o[TAB] ar r libreria.a libfn.o

libfn.o : libfn.f[TAB] f77 –O –c libfn.f

limpia :[TAB] rm *%

todo : libreria.a main limpia

main : main.o fn1.o fn2.o[TAB] f77 –O –o main main.o fn1.o fn2.o

main.o : main.f[TAB] f77 –O –c main.f

fn1.o : fn1.f[TAB] f77 –O –c fn1.f

fn2.o : fn2.f[TAB] f77 –O –c fn2.f

fn1.o fn2.o : include.inc

libreria.a : libfn.o[TAB] ar r libreria.a libfn.o

libfn.o : libfn.f[TAB] f77 –O –c libfn.f

limpia :[TAB] rm *%

> make [todo] > make [todo] > make > make libreria.alibreria.a > make > make limpialimpia >>

> make [todo] > make [todo] > make > make libreria.alibreria.a > make > make limpialimpia >>

Page 21: La herramienta make

21 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

nombre = valornombre = valor

> make > make > make > make

macro = se referencia como $(nombre) o ${nombre}

macro = se referencia como $(nombre) o ${nombre}

Page 22: La herramienta make

22 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

EXE = mainOBJS = main.o fn1.o fn2.oINCS = include.inc

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : ${OBJS}[TAB] f77 ${LDFLAGS} –o ${EXE} ${OBJS}[TAB] cp ${EXE} /home/usuario/bin

main.o : main.f[TAB] f77 ${FFLAGS} –c main.f

fn1.o : fn1.f[TAB] f77 ${FFLAGS} –c fn1.f

fn2.o : fn2.f[TAB] f77 ${FFLAGS} –c fn2.f

fn1.o fn2.o : ${INCS}

EXE = mainOBJS = main.o fn1.o fn2.oINCS = include.inc

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : ${OBJS}[TAB] f77 ${LDFLAGS} –o ${EXE} ${OBJS}[TAB] cp ${EXE} /home/usuario/bin

main.o : main.f[TAB] f77 ${FFLAGS} –c main.f

fn1.o : fn1.f[TAB] f77 ${FFLAGS} –c fn1.f

fn2.o : fn2.f[TAB] f77 ${FFLAGS} –c fn2.f

fn1.o fn2.o : ${INCS}

> make > make

> make > make

macros del usuario

macros internas

variables de entorno

línea de ejecución

indefinidas = vacías

macros del usuario

macros internas

variables de entorno

línea de ejecución

indefinidas = vacías

Orden de prioridad:

1) macros internas

2) variables entorno

3) en Makefile

4) línea de ejecución

Orden de prioridad:

1) macros internas

2) variables entorno

3) en Makefile

4) línea de ejecución

Page 23: La herramienta make

23 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

EXE = mainOBJS = main.o fn1.o fn2.oDIR = ${HOME}/bin

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : ${OBJS}[TAB] ${FC} ${LDFLAGS} –o ${EXE} ${OBJS}[TAB] cp ${EXE} ${DIR}

main.o : main.f[TAB] ${FC} ${FFLAGS} –c main.f

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c fn1.f

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c fn2.f

fn1.o fn2.o : include.inc

EXE = mainOBJS = main.o fn1.o fn2.oDIR = ${HOME}/bin

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : ${OBJS}[TAB] ${FC} ${LDFLAGS} –o ${EXE} ${OBJS}[TAB] cp ${EXE} ${DIR}

main.o : main.f[TAB] ${FC} ${FFLAGS} –c main.f

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c fn1.f

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c fn2.f

fn1.o fn2.o : include.inc

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

FFLAGS ignorada

FC = f77 (interna)

podemos FC = f90

make –p

no usar ‘~’ en rutas

FFLAGS ignorada

FC = f77 (interna)

podemos FC = f90

make –p

no usar ‘~’ en rutas

Page 24: La herramienta make

24 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

EXE = mainSRCS = main.f fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : ${OBJS}[TAB] ${FC} ${LDFLAGS} –o ${EXE} ${OBJS}[TAB] cp ${EXE} ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c main.f

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c fn1.f

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c fn2.f

fn1.o fn2.o : include.inc

EXE = mainSRCS = main.f fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : ${OBJS}[TAB] ${FC} ${LDFLAGS} –o ${EXE} ${OBJS}[TAB] cp ${EXE} ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c main.f

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c fn1.f

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c fn2.f

fn1.o fn2.o : include.inc

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

OBJS = SRCS perosustituyendo ‘.f’ por ‘.o’

OBJS = SRCS perosustituyendo ‘.f’ por ‘.o’

Page 25: La herramienta make

25 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

EXE = mainSRCS = main.f fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : ${OBJS}[TAB] ${FC} ${LDFLAGS} –o ${EXE} ${OBJS}[TAB] cp ${EXE} ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c main.f

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c fn1.f

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c fn2.f

fn1.o fn2.o : include.inc

EXE = mainSRCS = main.f fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : ${OBJS}[TAB] ${FC} ${LDFLAGS} –o ${EXE} ${OBJS}[TAB] cp ${EXE} ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c main.f

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c fn1.f

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c fn2.f

fn1.o fn2.o : include.inc

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

$? = lista de dependencias

$@ = objetivo en comandos

$$@ = objetivo (sólo Unix)

en dependencias

$? = lista de dependencias

$@ = objetivo en comandos

$$@ = objetivo (sólo Unix)

en dependencias

Page 26: La herramienta make

26 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

EXE = mainSRCS = fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o ${EXE} ${OBJS}[TAB] cp ${EXE} ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c main.f

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c fn1.f

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c fn2.f

fn1.o fn2.o : include.inc

EXE = mainSRCS = fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o ${EXE} ${OBJS}[TAB] cp ${EXE} ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c main.f

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c fn1.f

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c fn2.f

fn1.o fn2.o : include.inc

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

[email protected] = [email protected] = main.o

omitimos main.fomitimos main.f

Page 27: La herramienta make

27 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

EXE = mainSRCS = fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ ${OBJS}[TAB] cp $@ ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c main.f

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c fn1.f

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c fn2.f

fn1.o fn2.o : include.inc

EXE = mainSRCS = fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ ${OBJS}[TAB] cp $@ ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c main.f

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c fn1.f

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c fn2.f

fn1.o fn2.o : include.inc

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

[email protected] = [email protected] = main.o

omitimos main.fomitimos main.f

$@ = main$@ = main

Page 28: La herramienta make

28 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

EXE = mainSRCS = fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ $?[TAB] cp $@ ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c main.f

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c fn1.f

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c fn2.f

fn1.o fn2.o : include.inc

EXE = mainSRCS = fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ $?[TAB] cp $@ ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c main.f

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c fn1.f

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c fn2.f

fn1.o fn2.o : include.inc

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

[email protected] = [email protected] = main.o

omitimos main.fomitimos main.f

$@ = main$@ = main

$? = main.o fn1.o fn2.o$? = main.o fn1.o fn2.o

Page 29: La herramienta make

29 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

EXE = mainSRCS = fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ $?[TAB] cp $@ ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c $?

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c fn1.f

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c fn2.f

fn1.o fn2.o : include.inc

EXE = mainSRCS = fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ $?[TAB] cp $@ ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c $?

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c fn1.f

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c fn2.f

fn1.o fn2.o : include.inc

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

[email protected] = [email protected] = main.o

omitimos main.fomitimos main.f

$@ = main$@ = main

$? = main.o fn1.o fn2.o$? = main.o fn1.o fn2.o

$? = main.f$? = main.f

Page 30: La herramienta make

30 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

EXE = mainSRCS = fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ $?[TAB] cp $@ ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c $?

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c $?

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c fn2.f

fn1.o fn2.o : include.inc

EXE = mainSRCS = fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ $?[TAB] cp $@ ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c $?

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c $?

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c fn2.f

fn1.o fn2.o : include.inc

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

[email protected] = [email protected] = main.o

omitimos main.fomitimos main.f

$@ = main$@ = main

$? = main.o fn1.o fn2.o$? = main.o fn1.o fn2.o

$? = main.f$? = main.f

$? = fn1.f$? = fn1.f

Page 31: La herramienta make

31 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

EXE = mainSRCS = fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ $?[TAB] cp $@ ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c $?

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c $?

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c $?

fn1.o fn2.o : include.inc

EXE = mainSRCS = fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ $?[TAB] cp $@ ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c $?

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c $?

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c $?

fn1.o fn2.o : include.inc

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

[email protected] = [email protected] = main.o

omitimos main.fomitimos main.f

$@ = main$@ = main

$? = main.o fn1.o fn2.o$? = main.o fn1.o fn2.o

$? = main.f$? = main.f

$? = fn1.f$? = fn1.f

$? = fn2.f$? = fn2.f

Page 32: La herramienta make

32 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

EXE = mainSRCS = fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ $?[TAB] cp $@ ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c $?

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c $?

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c $?

${OBJS} : include.inc

EXE = mainSRCS = fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ $?[TAB] cp $@ ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c $?

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c $?

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c $?

${OBJS} : include.inc

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

OBJS = fn1.o fn2.oOBJS = fn1.o fn2.o

se desdoblase desdobla

Page 33: La herramienta make

33 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

EXE = mainSRCS = fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ $?[TAB] cp $@ ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c $?

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c $?

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c $?

${OBJS} : include.inc

EXE = mainSRCS = fn1.f fn2.fOBJS = ${SRCS:.f=.o}

FFLAGS = –OLDFLAGS = ${FFLAGS}

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ $?[TAB] cp $@ ${HOME}/bin

main.o : main.f[TAB] ${FC} ${FFLAGS} –c $?

fn1.o : fn1.f[TAB] ${FC} ${FFLAGS} –c $?

fn2.o : fn2.f[TAB] ${FC} ${FFLAGS} –c $?

${OBJS} : include.inc

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

Page 34: La herramienta make

34 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

EXE = mainSRCS = fn1.f fn2.fINCS = include.incOBJS = ${SRCS:.f=.o}

DIR = ${HOME}/bin

FFLAGS = –OLDFLAGS = ${FFLAGS}

.f.o :[TAB] ${FC} ${FFLAGS} –c $<

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ $?[TAB] cp $@ ${DIR}

${OBJS} : ${INCS}

EXE = mainSRCS = fn1.f fn2.fINCS = include.incOBJS = ${SRCS:.f=.o}

DIR = ${HOME}/bin

FFLAGS = –OLDFLAGS = ${FFLAGS}

.f.o :[TAB] ${FC} ${FFLAGS} –c $<

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ $?[TAB] cp $@ ${DIR}

${OBJS} : ${INCS}

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

regla para construir los .o a partir de los .f

regla para construir los .o a partir de los .f

$< = .f más nuevos$< = .f más nuevos

Page 35: La herramienta make

35 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

EXE = mainSRCS = fn1.F fn2.FINCS = include.incOBJS = ${SRCS:.f=.o}

DIR = ${HOME}/bin

FFLAGS = –OLDFLAGS = ${FFLAGS}

.SUFFIXES : .F

.F.o :[TAB] ${FC} ${FFLAGS} –c $<

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ $?[TAB] cp $@ ${DIR}

${OBJS} : ${INCS}

EXE = mainSRCS = fn1.F fn2.FINCS = include.incOBJS = ${SRCS:.f=.o}

DIR = ${HOME}/bin

FFLAGS = –OLDFLAGS = ${FFLAGS}

.SUFFIXES : .F

.F.o :[TAB] ${FC} ${FFLAGS} –c $<

${EXE} : [email protected] ${OBJS}[TAB] ${FC} ${LDFLAGS} –o $@ $?[TAB] cp $@ ${DIR}

${OBJS} : ${INCS}

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

> touch fn2.f > touch fn2.f > make “FFLAGS = –v –O” > make “FFLAGS = –v –O” f77 –v –O –c fn2.f f77 –v –O –c fn2.f f77 –v –O –o main main.o fn1.o f77 –v –O –o main main.o fn1.o fn2.ofn2.o

añade sufijos a lista de make

añade sufijos a lista de make

Page 36: La herramienta make

36 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

# Name:# makefile## Purpose:# Build and install the IRAFSTAR package.## Type of Module:# Description file for the make utility.## Description:# This description file is used by the make utility to# build the IRAFSTAR package from the distributed # source files, to install the resulting system for use,# and to perform other housekeeping tasks.######################################################### Pathname of the root directory beneath which# other Starlink software is currently installed.STARLINK = /star

# Name:# makefile## Purpose:# Build and install the IRAFSTAR package.## Type of Module:# Description file for the make utility.## Description:# This description file is used by the make utility to# build the IRAFSTAR package from the distributed # source files, to install the resulting system for use,# and to perform other housekeeping tasks.######################################################### Pathname of the root directory beneath which# other Starlink software is currently installed.STARLINK = /star

Makefile de IRAFMakefile de IRAFMakefile de IRAFMakefile de IRAF

Page 37: La herramienta make

37 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

# Pathnames of Starlink sub-directories that may # be referenced when building this package.STAR_BIN = $(STARLINK)/binSTAR_DATES = $(STARLINK)/datesSTAR_DOCS = $(STARLINK)/docsSTAR_ETC = $(STARLINK)/etcSTAR_HELP = $(STARLINK)/helpSTAR_INC = $(STARLINK)/includeSTAR_LIB = $(STARLINK)/libSTAR_SHARE = $(STARLINK)/share

# Pathname of the root directory beneath which the # built files for this package should be installed for# use. This defaults to the user's home directory.INSTALL = $(HOME)

# Pathname of root directory beneath which TCLADAM# is installed. and the version number of TCLTCL_VERS = 8.2TCL_INC_DIR = $(STAR_INC)TCL_LIB_DIR = $(STAR_LIB)

# Pathnames of Starlink sub-directories that may # be referenced when building this package.STAR_BIN = $(STARLINK)/binSTAR_DATES = $(STARLINK)/datesSTAR_DOCS = $(STARLINK)/docsSTAR_ETC = $(STARLINK)/etcSTAR_HELP = $(STARLINK)/helpSTAR_INC = $(STARLINK)/includeSTAR_LIB = $(STARLINK)/libSTAR_SHARE = $(STARLINK)/share

# Pathname of the root directory beneath which the # built files for this package should be installed for# use. This defaults to the user's home directory.INSTALL = $(HOME)

# Pathname of root directory beneath which TCLADAM# is installed. and the version number of TCLTCL_VERS = 8.2TCL_INC_DIR = $(STAR_INC)TCL_LIB_DIR = $(STAR_LIB)

Makefile de IRAFMakefile de IRAFMakefile de IRAFMakefile de IRAF

Page 38: La herramienta make

38 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

# Default macros for compiling C and Fortran source code.CC = c89CFLAGS = -O -I$(TCL_INC_DIR) -I$(STAR_INC)FC = fort77FFLAGS = -O 

# Commands for adding to and extracting from an # archive file (.tar).TAR_IN = tar cvhfTAR_OUT = tar xf

#-------------------------------------------------------------------------------# DEFINE PACKAGE SOURCE FILES.## This section defines the set of source files for# the package. 

# Name of the package as specified in documentation# The value is used in messages from make to the user.PACK_NAME = IRAFSTAR 

# Default macros for compiling C and Fortran source code.CC = c89CFLAGS = -O -I$(TCL_INC_DIR) -I$(STAR_INC)FC = fort77FFLAGS = -O 

# Commands for adding to and extracting from an # archive file (.tar).TAR_IN = tar cvhfTAR_OUT = tar xf

#-------------------------------------------------------------------------------# DEFINE PACKAGE SOURCE FILES.## This section defines the set of source files for# the package. 

# Name of the package as specified in documentation# The value is used in messages from make to the user.PACK_NAME = IRAFSTAR 

Makefile de IRAFMakefile de IRAFMakefile de IRAFMakefile de IRAF

Page 39: La herramienta make

39 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

# C routines required for building the package. This is# just a list of all the C source files.C_ROUTINES = tclAppInit.c tclIrafio.c zfiopr.c

#-------------------------------------------------------------------------------# DEFINE FILES REQUIRED FOR BUILDING# THE PACKAGE.## This section defines the set of files produced from# the source files when the package is built and installed. 

# List of object files produced by compiling the source# code and rules for performing the compilations.OBJECT_FILES = $(C_ROUTINES:.c=.o)  # Use .o, .c, .f, .ifc, .ifl, .shl and .hlp suffix rules..SUFFIXES: .o .c .f .ifc .ifl .shl .hlp 

# Implicit rule..c.o:

$(CC) $(CFLAGS) -c $<

# C routines required for building the package. This is# just a list of all the C source files.C_ROUTINES = tclAppInit.c tclIrafio.c zfiopr.c

#-------------------------------------------------------------------------------# DEFINE FILES REQUIRED FOR BUILDING# THE PACKAGE.## This section defines the set of files produced from# the source files when the package is built and installed. 

# List of object files produced by compiling the source# code and rules for performing the compilations.OBJECT_FILES = $(C_ROUTINES:.c=.o)  # Use .o, .c, .f, .ifc, .ifl, .shl and .hlp suffix rules..SUFFIXES: .o .c .f .ifc .ifl .shl .hlp 

# Implicit rule..c.o:

$(CC) $(CFLAGS) -c $<

Makefile de IRAFMakefile de IRAFMakefile de IRAFMakefile de IRAF

Page 40: La herramienta make

40 Área de InstrumentaciónEsperanza PáezInstituto de Astrofísica de Canarias

######################################################### PRIMARY TARGETS.#

# Rules for extracting source files from the source archive.$(C_ROUTINES) :[TAB] $(TAR_OUT) $(PKG_NAME)_source.tar $@[TAB] @ if test -r $@ ; then ; \ else echo $@ is not in the tar file ; exit 1 ; fi # Rule and dependencies for building the # executable image.aitclsh : $(OBJECT_FILES)[TAB] $(FC) $(FFLAGS) -o $@ \ tclAppInit.o $(STAR_LIB)/tclAdam.o \ tclIrafio.o zfiopr.o \ $(LDFLAGS) -L$(TCL_LIB_DIR) \ -L$(STAR_LIB) \ -ltcl$(TCL_VERS)

######################################################### PRIMARY TARGETS.#

# Rules for extracting source files from the source archive.$(C_ROUTINES) :[TAB] $(TAR_OUT) $(PKG_NAME)_source.tar $@[TAB] @ if test -r $@ ; then ; \ else echo $@ is not in the tar file ; exit 1 ; fi # Rule and dependencies for building the # executable image.aitclsh : $(OBJECT_FILES)[TAB] $(FC) $(FFLAGS) -o $@ \ tclAppInit.o $(STAR_LIB)/tclAdam.o \ tclIrafio.o zfiopr.o \ $(LDFLAGS) -L$(TCL_LIB_DIR) \ -L$(STAR_LIB) \ -ltcl$(TCL_VERS)

Makefile de IRAFMakefile de IRAFMakefile de IRAFMakefile de IRAF