Your Ad Here

24 Ocak 2008

MAKE KOMUTU ve MAKEFILE


GENEL BİLGİLER

make komutu çalıştırıldığı directory'de makefile veya Makefile varsa burada belirtilen işlemleri yapar. make komutu makefile içindeki hedef tanımlara ulaşmak için tanımlanan bağımlılıkları da kullanarak belirtilen directory'de bulunan tüm tarihi geçmiş kütüklerden liste oluşturur ve tanıma uygun işlemi yapar.

make programı tüm çevre (environment) tanımlarını okur. Boş olan tanımları dikkate almaz. "makefile" içindeki çevre değişkenlerine yapılan atamalar, bu değişkenlerin değerini değiştirir.

MAKEFLAGS isimli çevre değişkeni bu değişken "make" komutu için -f ve -p seçenekleri hariç, diğer komut seçeneklerini içerir. "make" programı bu değişkende tanımlanan seçeneklerle çalışır.

Seçenekler ne olursa olsun makefile içindeki $(MAKE), her koşulda çalıştırılır.

EKLEME KÜTÜKLERİ (INCLUDE FILES)

makefile içinde kullanılan include deyimi satırın başından başlar. Boşluk veya "tab" tuşundan sonrası kütük adı olarak kullanılır. "make" komutu include ile gösterilen kütüğü bulamaz ise "kütük bulunamadı" hatası verir. sinclude aynı amaç için kullanılır. Ancak kütük bulunamaz ise hata vermeden make işlemlere devam eder.

makefile "#!alternate_make" ile başlıyorsa, aynı çevre değişkenleri ile başka bir "make" kullanılır. #! satırında gerekiyorsa başka parametreler de tanımlanabilir. Bu satır makefile içinde tüm make komutlarından önce tanımlanmalıdır.

string1 = string2

gibi tanımlara macro tanımlar denir. macro adlarının ilk karakteri harf olmalıdır. Macro adlarında çoğu kez büyük harf kullanılır. macro adları içinde "._-+~" bulunabilir. macro tanımında string2 açıklama (comment) dışında satır sonu karakterine kadar olan herşeydir. $(string1) kullanılan her yerde string1 yerine string2 değeri açılır.

$(string1[subst1=subst2])

biçimindeki tanımlarda seçenekli taşıma ve açma işlemi vardır. Macro içindeki subst1 bulunan her yere subst2 değeri taşınır. Özel koşul olarak subst1 boş ise subst2 macronun sonuna eklenir.

MAKE İÇİNDEKİ (INTERNAL) MACRO TANIMLARI
$* son eki kaldırılmış bağımlı kütük adlarını belirtir.
$@ geçerli hedef bilginin tüm adıdır. Açıkça belirtilmiş bağımlılık tanımlarında kullanılır.
$$@ $@ ile tanımlanmış geçerli hedef bilginin tüm adını gösterir. Örneğin :
    cat dd: $$@.c
tanımında, make bu satırı cat.c ve dd.c olarak açar.
$< yalnız .DEFAULT kuralı için geçerli açılımı yapar. Yani .c.o kuralı için :
    .c.o :
      cc -c -O $*.c
veya
    .c.o :
      cc -c -O $<
aynı amaçla kullanılabilir.
$? makefile için açıkça tanımlanan kuralların açılımında kullanılır. Bu macro hedef kurala göre günü geçmiş bağımlılıkların listesini oluşturur ve doğal olarak bu modüller yenilenir.
$% Eğer hedef arşiv kütüpanesi ise bu macro, herbir üyeyi
    lib(file.o)
biçiminde açar. Bu macroda $@ lib olarak $% ise file.o olarak açılır.
Bu macroların sonuna D veya F eklenirse anlamları değişir. D eklenirse adlandıral macronun directory bölümü F eklenirse macronun kütük bölümü anlaşılır. Eğer $(@D) işleminde directory yoksa ./ açılan değer olur.

SON EKLER

Bazı adların bağımlı olduğu ön koşullar vardır. Örneğin .o her zaman .c ve .s gibi son eklere bağımlıdır. Eğer bu tür kütükleri günlemek için gerekli koşul makefile içinde yoksa veya kütük bulunamıyorsa, son ön koşuldan hedefi yaratmak için gereken derleme yapılır. Bu durumda make, son ekleri inceleyerek bağımlılık koşullarını belirler ve ilgili hedef kuralı bulur. Bu tür INTERNAL kuralları listelemek için

    make -p -f/dev/null
komut satırı kullanılır. Bağımlılık kuralları makefile içinde yeniden tanımlanabilir veya -r komut seçeneği ile tümüyle atlanabilir.

Yukarıdaki anlatımda (bağımlılık kuralları) eğer '~' kullanılırsa, make programı gerekli kaynak programı SCCS (Source Code Control System) altından alır. Yani .c~.o kuralı SCCS altındaki C kaynak programını .o kütük haline dönüştürür.

makefile .c şeklinde bir kural x.c den nasıl x elde edileceğini gösterir. Bu işlem bir kaynaktan hedef elde etmek için önemlidir (örneğin shell script veya C programları). Null Suffix kuralı, birden çok bağımlılık durumunda make tarafından dikkate alınmaz.

Sistemde kullanılacak başka son ekler .SUFFIXES listesinde belirtilir. Bu listede yer alan son ekler ön koşul sıralamasına göre yerleştirilmelidir. Daha önceki belirtilen komut satırı ile bu tür son ek listesi ve bağımlılıklar kullanılan sistemdeki varsayılan değerleri görmek için alınabilir.

Kullanıcılar makefile içinde

    prgm: a.o b.o
         cc a.o b.o -o prgm
    a.o b.o: incl.h
gibi kurallar tanımlayarak standard bağımlılıklara ekler yapabilirler.

kullanılabilecek macro tanımları :

    CFLAGS   cc için gereklidir
    LFLAGS   lex için gereklidir
    YFLAGS   yacc için gereklidir.
Bağımlılık ön koşulları makefile içinde kontrol edilebilir. .c son ekinden .o elde etmek için .c.o: kuralı tanımlanır. Burada bağımlılık belirtilmez. İçinde / olmayan ve . ile başlayan bir hedef her zaman bir kuralı belirtir, gerçek hedef değildir.

KITAPLIKLAR (LIBRARIES)

Eğer bir macro adı ve bağımlılık kuralında parantezler varsa buna arşiv kitaplığı denir. Yani lib(file.o) ve $(LIB)(file.o) içinde file.o olan arşiv kütüphanesini belirtir.

Arşiv kitaplığına ilişkin kurallar .XX.a tipindedir. Burada XX arsiv kitaplığı üyelerinin oluşturulduğu son ektir. XX arşiv üyeleri son ekinden farklı olmalıdır. Yani lib(file.o) açıkça file.o ya bağlı olamaz. Örnek

   lib: lib(file1.o) lib(file2.o) lib(file3.o)
   @echo lib is non up-to-date
   .c.a:
        $(cc) -c $(CFLAGS) $< $(AR)$(ARFLAGS)$@$*.o
        rm -f $*.o
Bu kural make içinde zaten hazır olarak vardır. Daha ilginç bir örnek :
   lib: lib(file1.o) lib(file2.o) lib(file3.o)
        $(CC) -c $(CFLAGS) $(?:.o=.c)
        $(AR) $(ARFLAGS) lib $?
        rm $? @echo lib is now up-to-date
   .c.a:;
Bu örnekte macro içinde yerine koyma kuralı kullanılır. $? lib içindeki kütüklerin listesidir. Yerine koyma kuralı tüm .c leri .o ya çevirir. Bu örnekteki .o.a:; makefile içinde kuralın kapatıldığını gösterir. Burada kullanılan noklaı virgül ile kuralın kapatılması sağlanır. Bu tür arşiv kitaplıklarında yaratma/günleme işlemi asm ve C dili karışımı kaynak programlar kullanıldığında çok yararlıdır ve işlemi hızlandırır.

PARALEL ÇALIŞTIRMA

make komutundaki -P seçeneği parelel çalıştırmayı başlatır. Bu işlem için make komutu önce tüm bağımlılıkları kaldırır ve sonuçta oluşan kümeleri aynı anda açar. Aynı anda yapılan işlem sayısı faktörü en çok iki olabilir. PARALLEL çevre değişkeni ile bu sayı değiştirilebilir.


Örnek Makefile kütükleri :


SHELL = /bin/sh
MAKE = make
# Burada all ve install hedef tanımları include/printer.h kütüğüne
# bağımlıdır. make programı bu bağımlılığa göre src directory'si
# altındaki Makefile kütüğüne aynı parametrelerle bakar.

all install: include/printer.h

    cd src; $(MAKE) $@
# bu tanımda printer.h kütüğünde yapılan bir değişiklik varsa
# configurasyon programı çalıştırılır. Bu program kullanılan
# UNIX sistemi özelliklerine göre yeni Makefile yaratır.

include/printer.h:

    configure

clean:

    cd src; $(MAKE) $@

# src/Makefile
DESTOWN = admin
DESTGRP = pamuk
DESTBIN = ../bin

DEFINES = -I../include -DUNIX -DAIX
CC = cc
CFLAGS = -g $(DEFINES)
LIBS = -lcurses -ltli_r
PROGRAMS = yazserv npbaslat sendmsg
SRCS = sendmsg.c pbaslat.c yazserv.c
HDRS = ../include/printer.h
YAZSRV_OBJS = yazserv.o
SNDMSG_OBJS = sendmsg.o
BASLAT_OBJS = pbaslat.o

.c.o:

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

all: $(PROGRAMS)

yazserv: $(YAZSRV_OBJS)

    $(CC) $(YAZSRV_OBJS) $(LIBS) -o $@

npbaslat: $(BASLAT_OBJS)

    $(CC) $(BASLAT_OBJS) $(LIBS) -o $@

sendmsg: $(SNDMSG_OBJS)

    $(CC) $(SNDMSG_OBJS) $(LIBS) -o $@

install: $(PROGRAMS)

    cp $(PROGRAMS) $(DESTBIN)
    cd $(DESTBIN) && strip $(PROGRAMS)
    cd $(DESTBIN) && chmod 755 $(PROGRAMS)
    cd $(DESTBIN) && chown $(DESTOWN):$(DESTGRP) $(PROGRAMS)

clean:

    cd $(DESTBIN) && rm -f $(PROGRAMS)
    -rm -f $(PROGRAMS) $(YAZSRV_OBJS) $(BASLAT_OBJS) $(SNDMSG_OBJS)

yazserv.o: $(HDRS)
sendmsg.o: $(HDRS)
pbaslat.o: $(HDRS)


EK
MAKE KOMUTU VERI TABANI


# GNU Make version 3.74,
# by Richard Stallman and Roland McGrath.
# Copyright (C) 1988, 89, 90, 91, 92, 93, 94, 95
# Free Software Foundation, Inc.
# This is free software;
# see the source for copying conditions.
# There is NO warranty;
# not even for MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.

# Variables

# default
F77 = $(FC)
# default
PREPROCESS.r = $(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -F
# automatic
@F = $(notdir $@)
# environment
HOME = /u/ergun
# default
MAKE = $(MAKE_COMMAND)
# environment
LESSOPEN = |lesspipe.sh %s
# default
SUFFIXES := .out .a .ln .o .c .cc .C .p .f .F .r .y .l .s .S .mod .symi .def .h .info .dvi .tex .texinfo .texi .txinfo .w .ch .web .sh .elc .el
# default
COMPILE.r = $(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -c
# default
LINK.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# default
LINK.s = $(CC) $(ASFLAGS) $(LDFLAGS) $(TARGET_MACH)
# environment
MAIL = /var/spool/mail/ergun
# environment
PWD = /u/ergun/ben/docs
# default
LINK.o = $(CC) $(LDFLAGS) $(TARGET_ARCH)
# default
TEXI2DVI = texi2dvi
# automatic
+F = $(notdir $+)
# default
COMPILE.f = $(FC) $(FFLAGS) $(TARGET_ARCH) -c
# environment
PS1 = %m:%~%#
# automatic
%F = $(notdir $%)
# default
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# default
CO = co
# automatic
?D = $(patsubst %/,%,$(dir $?))
# environment
_ = /usr/bin/make
# default
PREPROCESS.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -F
# automatic
# default
M2C = m2c
# default
FC = f77
# default
CC = cc
# environment
MINICOM = -c on
# default
LINK.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH)
# default
CXX = g++
# default
AR = ar
# default
CWEAVE = cweave
# environment
OPENWINHOME = /usr/openwin
# default
COMPILE.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# environment
USER = ergun
# automatic
*D = $(patsubst %/,%,$(dir $*))
# automatic
^D = $(patsubst %/,%,$(dir $^))
# default
COMPILE.s = $(AS) $(ASFLAGS) $(TARGET_MACH)
# makefile
SHELL = /bin/sh
# environment
MANPATH = /usr/local/man:/usr/man/preformat:/usr/man: /usr/X11/man:/usr/openwin/man
# default
YACC = yacc
# default
COMPILE.def = $(M2C) $(M2FLAGS) $(DEFFLAGS) $(TARGET_ARCH)
# default
LINK.C = $(LINK.cc)
# makefile
MAKEFLAGS = p
# default
LINK.p = $(PC) $(PFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# default
OUTPUT_OPTION = -o $@
# default
MAKE_VERSION := 3.74
# default
PREPROCESS.S = $(CC) -E $(CPPFLAGS)
# environment
MAKELEVEL := 0
# environment
PS2 = >
# default
YACC.y = $(YACC) $(YFLAGS)
# default
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# default
TANGLE = tangle
# default
CHECKOUT,v = $(patsubst $@-noexist,$(CO) $(COFLAGS) $< $@,

    $(filter-out $@,$(firstword $(wildcard $@) $@-noexist)))
# default
LD = ld
# environment
MFLAGS = -p
# default
GET = get
# environment
ignoreeof = 10
# environment
HOSTNAME = napoleon.yerel.yore.com.tr
# default
COMPILE.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c
# default
PC = pc
# default
AS = as
# automatic
@D = $(patsubst %/,%,$(dir $@))
# environment
HZ = 100
# default
TEX = tex
# environment
TERM = linux
# environment
LOGNAME = ergun
# environment
SHLVL = 1
# environment
LESS = -MM
# default
COMPILE.C = $(COMPILE.cc)
# default
LINT = lint
# default
F77FLAGS = $(FFLAGS)
# default
COMPILE.p = $(PC) $(PFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# default
RM = rm -f
# automatic
+D = $(patsubst %/,%,$(dir $+))
# default
WEAVE = weave
# automatic
?F = $(notdir $?)
# automatic
%D = $(patsubst %/,%,$(dir $%))
# default
CPP = $(CC) -E
# automatic
# default
LEX = lex # default
LINK.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# default
LEX.l = $(LEX) $(LFLAGS) -t
# default
COMPILE.mod = $(M2C) $(M2FLAGS) $(MODFLAGS) $(TARGET_ARCH)
# default
ARFLAGS = rv
# automatic
*F = $(notdir $*)
# automatic
^F = $(notdir $^)
# default
LINT.c = $(LINT) $(LINTFLAGS) $(CPPFLAGS) $(TARGET_ARCH)
# default
LINK.r = $(FC) $(FFLAGS) $(RFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# environment
BULLDOZERLIB = /usr/local/lib/dozer-0.7.2b
# default
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# default
MAKEFILES :=
# default
CTANGLE = ctangle
# default
MAKE_COMMAND := make
# environment
PATH = /bin:/usr/bin:/usr/local/bin:/usr/X11/bin:/usr/andrew/bin: /usr/openwin/bin:/usr/games:.:/usr/local/bin/Thot/LINUX-ELF/bin:
# default
LINK.f = $(FC) $(FFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# environment
LS_COLORS = no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35: bd=40;33;01:cd=40;33;01:ex=01;32:*.cmd=01;32:*.exe=01;32: *.com=01;32:*.btm=01;32:*.bat=01;32:*.tar=01;31:*.tgz=01;31: *.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31: *.gz=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35: *.xpm=01;35:*.tif=01;35:
# default
MAKEINFO = makeinfo
# 98 variables in 523 hash buckets.
# average of 0.2 variables per bucket, max 3 in one bucket.

# Directories

# SCCS: could not be stat'd.
# /dev/RCS: could not be stat'd.
# /dev (device 769, inode 4065): 1283 files, 42 impossibilities.
# RCS: could not be stat'd.
# /dev/SCCS: could not be stat'd.

# 1283 files, 42 impossibilities in 5 directories.

# Implicit Rules

%.out:

%.a:

%.ln:

%.o:

%: %.o
# commands to execute (built-in):

    $(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.c:

%: %.c
# commands to execute (built-in):

    $(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.ln: %.c
# commands to execute (built-in):

    $(LINT.c) -C$* $<

%.o: %.c
# commands to execute (built-in):

    $(COMPILE.c) $< $(OUTPUT_OPTION)

%.cc:

%: %.cc
# commands to execute (built-in):

    $(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.cc
# commands to execute (built-in):

    $(COMPILE.cc) $< $(OUTPUT_OPTION)

%.C:

%: %.C
# commands to execute (built-in):

    $(LINK.C) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.C
# commands to execute (built-in):

    $(COMPILE.C) $< $(OUTPUT_OPTION)

%.p:

%: %.p
# commands to execute (built-in):

    $(LINK.p) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.p
# commands to execute (built-in):

    $(COMPILE.p) $< $(OUTPUT_OPTION)

%.f:

%: %.f
# commands to execute (built-in):

    $(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.f
# commands to execute (built-in):

    $(COMPILE.f) $< $(OUTPUT_OPTION)

%.F:

%: %.F
# commands to execute (built-in):

    $(LINK.F) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.F
# commands to execute (built-in):

    $(COMPILE.F) $< $(OUTPUT_OPTION)

%.f: %.F
# commands to execute (built-in):

    $(PREPROCESS.F) $< $(OUTPUT_OPTION)

%.r:

%: %.r
# commands to execute (built-in):

    $(LINK.r) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.r
# commands to execute (built-in):

    $(COMPILE.r) $< $(OUTPUT_OPTION)

%.f: %.r
# commands to execute (built-in):

    $(PREPROCESS.r) $< $(OUTPUT_OPTION)

%.y:

%.ln: %.y
# commands to execute (built-in):

    $(YACC.y) $<
    $(LINT.c) -C$* y.tab.c
    $(RM) y.tab.c

%.c: %.y
# commands to execute (built-in):

    $(YACC.y) $<
    mv -f y.tab.c $@

%.l:

%.ln: %.l
# commands to execute (built-in):

    @$(RM) $*.c
    $(LEX.l) $< > $*.c
    $(LINT.c) -i $*.c -o $@
    $(RM) $*.c

%.c: %.l
# commands to execute (built-in):

    @$(RM) $@
    $(LEX.l) $< > $@

%.r: %.l
# commands to execute (built-in):

    $(LEX.l) $< > $@
    mv -f lex.yy.r $@

%.s:

%: %.s
# commands to execute (built-in):

    $(LINK.s) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.s
# commands to execute (built-in):

    $(COMPILE.s) -o $@ $<

%.S:

%: %.S
# commands to execute (built-in):

    $(LINK.S) $^ $(LOADLIBES) $(LDLIBS) -o $@

%.o: %.S
# commands to execute (built-in):

    $(COMPILE.S) -o $@ $<

%.s: %.S
# commands to execute (built-in):

    $(PREPROCESS.S) $< > $@

%.mod:

%: %.mod
# commands to execute (built-in):

    $(COMPILE.mod) -o $@ -e $@ $^

%.o: %.mod
# commands to execute (built-in):

    $(COMPILE.mod) -o $@ $<

%.sym:

%.def:

%.sym: %.def
# commands to execute (built-in):

    $(COMPILE.def) -o $@ $<

%.h:

%.info:

%.dvi:

%.tex:

%.dvi: %.tex
# commands to execute (built-in):

    $(TEX) $<

%.texinfo:

%.info: %.texinfo
# commands to execute (built-in):

    $(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@

%.dvi: %.texinfo
# commands to execute (built-in):

    $(TEXI2DVI) $(TEXI2DVI_FLAGS) $<

%.texi:

%.info: %.texi
# commands to execute (built-in):

    $(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@

%.dvi: %.texi
# commands to execute (built-in):

    $(TEXI2DVI) $(TEXI2DVI_FLAGS) $<

%.txinfo:

%.info: %.txinfo
# commands to execute (built-in):

    $(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@

%.dvi: %.txinfo
# commands to execute (built-in):

    $(TEXI2DVI) $(TEXI2DVI_FLAGS) $<

%.w:

%.c: %.w
# commands to execute (built-in):

    $(CTANGLE) $< - $@

%.tex: %.w
# commands to execute (built-in):

    $(CWEAVE) $< - $@

%.ch:

%.web:

%.p: %.web
# commands to execute (built-in):

    $(TANGLE) $<

%.tex: %.web
# commands to execute (built-in):

    $(WEAVE) $<

%.sh:

%: %.sh
# commands to execute (built-in):

    cat $< >$@
    chmod a+x $@

%.elc:

%.el:

(%): %
# commands to execute (built-in):

    $(AR) $(ARFLAGS) $@ $<

%.out: %
# commands to execute (built-in):

    @rm -f $@
    cp $< $@

%.c: %.w %.ch
# commands to execute (built-in):

    $(CTANGLE) $^ $@

%.tex: %.w %.ch
# commands to execute (built-in):

    $(CWEAVE) $^ $@

%:: %,v
# commands to execute (built-in):

    +$(CHECKOUT,v)

%:: RCS/%,v
# commands to execute (built-in):

    +$(CHECKOUT,v)

%:: s.%
# commands to execute (built-in):

    $(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<

%:: SCCS/s.%
# commands to execute (built-in):

    $(GET) $(GFLAGS) $(SCCS_OUTPUT_OPTION) $<

# 82 implicit rules, 4 (4.9%) terminal.

# Files

# Not a target:
.c: # Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@

# Not a target:
.texinfo.info:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@

# Not a target:
.mod.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(COMPILE.mod) -o $@ $<

# Not a target:
.c.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(COMPILE.c) $< $(OUTPUT_OPTION)

# Not a target:
.s:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(LINK.s) $^ $(LOADLIBES) $(LDLIBS) -o $@

# Not a target:
.txinfo.dvi:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(TEXI2DVI) $(TEXI2DVI_FLAGS) $<

# Not a target:
.DEFAULT:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.y.c:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(YACC.y) $<
    mv -f y.tab.c $@

# Not a target:
.l:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.web.tex:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(WEAVE) $<

# Not a target:
.s.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(COMPILE.s) -o $@ $<

# Not a target:
.sym:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.texi:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.F.f:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(PREPROCESS.F) $< $(OUTPUT_OPTION)

# Not a target:
.dvi:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.web.p:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(TANGLE) $<

# Not a target:
.def:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.F:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(LINK.F) $^ $(LOADLIBES) $(LDLIBS) -o $@

# Not a target:
.cc.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(COMPILE.cc) $< $(OUTPUT_OPTION)

# Not a target:
.S.s:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(PREPROCESS.S) $< > $@

# Not a target:
.ch:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.def.sym:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(COMPILE.def) -o $@ $<

# Not a target:
.F.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(COMPILE.F) $< $(OUTPUT_OPTION)

# Not a target:
.f:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(LINK.f) $^ $(LOADLIBES) $(LDLIBS) -o $@

# Not a target:
.elc:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.y.ln:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(YACC.y) $<
    $(LINT.c) -C$* y.tab.c
    $(RM) y.tab.c

# Not a target:
.texi.dvi:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(TEXI2DVI) $(TEXI2DVI_FLAGS) $<

# Not a target:
.el:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.texinfo.dvi:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(TEXI2DVI) $(TEXI2DVI_FLAGS) $<

# Not a target:
/dev/null:
# Implicit rule search has been done.
# Last modified Mon Jul 18 02:46:18 1994 (774488778)
# File has been updated.
# Successfully updated.

# Not a target:
.SUFFIXES: .out .a .ln .o .c .cc .C .p .f .F .r .y .l .s .S .mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo .w .ch .web .sh .elc .el
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.txinfo:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.p.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(COMPILE.p) $< $(OUTPUT_OPTION)

# Not a target:
.r.f:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(PREPROCESS.r) $< $(OUTPUT_OPTION)

# Not a target:
.w.tex:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(CWEAVE) $< - $@

# Not a target:
.txinfo.info:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@

# Not a target:
.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@

# Not a target:
.c.ln:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(LINT.c) -C$* $<

# Not a target:
.w:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.ln:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.l.r:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(LEX.l) $< > $@
    mv -f lex.yy.r $@

# Not a target:
.info:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.r.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(COMPILE.r) $< $(OUTPUT_OPTION)

# Not a target:
.h:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.C.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(COMPILE.C) $< $(OUTPUT_OPTION)

# Not a target:
.p:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(LINK.p) $^ $(LOADLIBES) $(LDLIBS) -o $@

# Not a target:
.l.c:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    @$(RM) $@
    $(LEX.l) $< > $@

# Not a target:
.sh:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    cat $< >$@
    chmod a+x $@

# Not a target:
.web:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.out:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.cc:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@

# Not a target:
.f.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(COMPILE.f) $< $(OUTPUT_OPTION)

# Not a target:
.texi.info:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@

# Not a target:
.a:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.tex:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.l.ln:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    @$(RM) $*.c
    $(LEX.l) $< > $*.c
    $(LINT.c) -i $*.c -o $@
    $(RM) $*.c

# Not a target:
.y:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.S.o:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(COMPILE.S) -o $@ $<

# Not a target:
.tex.dvi:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(TEX) $<

# Not a target:
.r:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(LINK.r) $^ $(LOADLIBES) $(LDLIBS) -o $@

# Not a target:
.mod:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(COMPILE.mod) -o $@ -e $@ $^

# Not a target:
.C:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(LINK.C) $^ $(LOADLIBES) $(LDLIBS) -o $@

# Not a target:
.S:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(LINK.S) $^ $(LOADLIBES) $(LDLIBS) -o $@

# Not a target:
.texinfo:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.

# Not a target:
.w.c:
# Implicit rule search has not been done.
# Modification time never checked.
# File has not been updated.
# commands to execute (built-in):

    $(CTANGLE) $< - $@

# 65 files in 1007 hash buckets.
# average 6.5 files per bucket, max 2 files in one bucket.

# VPATH Search Paths

# No `vpath' search paths.

# No general (`VPATH' variable) search path.


Ana Sayfaya   Teknik Bilgiler Sayfasina


Aglar Aglink Agteknik C-Kodlama C-Önişleme CRC/LRC DEA etcsrv Çatal (fork) ilet inetd Make Msg Auth Özyinelemeli Robotlar için SDLC Güvenlik Seri uçlar SNA LU0 SNA LU6.2 tcp/ip tcp Programı Unix vi Editör