Document intent at no longer providing file length a priori
[profile/ivi/syslinux.git] / Makefile
index 5a27526..9fddb8a 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 ## -----------------------------------------------------------------------
 ##
-##   Copyright 1998-2007 H. Peter Anvin - All Rights Reserved
+##   Copyright 1998-2008 H. Peter Anvin - All Rights Reserved
 ##
 ##   This program is free software; you can redistribute it and/or modify
 ##   it under the terms of the GNU General Public License as published by
 # No builtin rules
 MAKEFLAGS = -r
 
-gcc_ok   = $(shell if gcc $(1) dummy.c -o /dev/null 2>/dev/null; \
-                  then echo '$(1)'; else echo '$(2)'; fi)
+TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX)
+
+gcc_ok   = $(shell tmpf=$(TMPFILE); if gcc $(1) dummy.c -o $$tmpf 2>/dev/null; \
+                  then echo '$(1)'; else echo '$(2)'; fi; rm -f $$tmpf)
 
 comma   := ,
 LDHASH  := $(call gcc_ok,-Wl$(comma)--hash-style=both,)
@@ -32,12 +34,14 @@ LDFLAGS  = -O2 -s $(LDHASH)
 AR      = ar
 RANLIB   = ranlib
 
-NASM    = nasm -O99
+NASM    = nasm
+NASMOPT  = -O9999
 NINCLUDE =
 BINDIR   = /usr/bin
 SBINDIR  = /sbin
 LIBDIR   = /usr/lib
 AUXDIR   = $(LIBDIR)/syslinux
+MANDIR  = /usr/man
 INCDIR   = /usr/include
 
 PERL     = perl
@@ -57,7 +61,7 @@ VERSION  = $(shell cat version)
 # with their own Makefiles.  Finally, there is a list of those
 # directories.
 #
-CSRC     = syslxmod.c gethostip.c
+CSRC     = gethostip.c
 NASMSRC  = $(wildcard *.asm)
 SOURCES = $(CSRC) *.h $(NASMSRC) *.inc
 
@@ -71,11 +75,12 @@ BTARGET  = kwdhash.gen version.gen version.h \
           ldlinux.bss ldlinux.sys ldlinux.bin \
           pxelinux.0 isolinux.bin isolinux-debug.bin \
           extlinux.bin extlinux.bss extlinux.sys
-BOBJECTS = $(BTARGET) mbr/mbr.bin dos/syslinux.com win32/syslinux.exe memdisk/memdisk
+BOBJECTS = $(BTARGET) mbr/mbr.bin dos/syslinux.com win32/syslinux.exe \
+       memdisk/memdisk memdump/memdump.com
 # BESUBDIRS and IESUBDIRS are "early", i.e. before the root; BSUBDIRS
 # and ISUBDIRS are "late", after the root.
 BESUBDIRS = mbr
-BSUBDIRS = memdisk dos win32
+BSUBDIRS = memdisk memdump dos win32
 ITARGET  = copybs.com gethostip mkdiskimage
 IOBJECTS = $(ITARGET) mtools/syslinux unix/syslinux extlinux/extlinux
 IESUBDIRS =
@@ -83,11 +88,13 @@ ISUBDIRS = mtools unix extlinux sample com32
 DOCS     = COPYING NEWS README TODO BUGS *.doc sample menu com32
 OTHER    = Makefile bin2c.pl now.pl genhash.pl keywords findpatch.pl \
           keytab-lilo.pl version version.pl sys2ansi.pl \
-          ppmtolss16 lss16toppm memdisk bin2hex.pl mkdiskimage.in
+          ppmtolss16 lss16toppm memdisk bin2hex.pl mkdiskimage.in \
+          sha1pass md5pass
 OBSOLETE = pxelinux.bin
 
 # Things to install in /usr/bin
-INSTALL_BIN   =        mtools/syslinux gethostip ppmtolss16 lss16toppm
+INSTALL_BIN   =        mtools/syslinux gethostip ppmtolss16 lss16toppm \
+               sha1pass md5pass
 # Things to install in /sbin
 INSTALL_SBIN  = extlinux/extlinux
 # Things to install in /usr/lib/syslinux
@@ -120,7 +127,9 @@ all:
 
 all-local: $(BTARGET) $(ITARGET) $(BINFILES)
 
-installer: installer-local
+installer:
+       set -e ; for i in $(IESUBDIRS); do $(MAKE) -C $$i all ; done
+       $(MAKE) installer-local
        set -e ; for i in $(ISUBDIRS); do $(MAKE) -C $$i all ; done
        -ls -l $(BOBJECTS) $(IOBJECTS)
 
@@ -135,32 +144,19 @@ version.h: version version.pl
 kwdhash.gen: keywords genhash.pl
        $(PERL) genhash.pl < keywords > kwdhash.gen
 
-ldlinux.bin: ldlinux.asm kwdhash.gen version.gen
-       $(NASM) -f bin -DDATE_STR="'$(DATE)'" -DHEXDATE="$(HEXDATE)" \
-               -DMAP=$(@:.bin=.map) -l $(@:.bin=.lst) -o $@ $<
-       $(PERL) checkov.pl ldlinux.map $@
-
-pxelinux.bin: pxelinux.asm kwdhash.gen version.gen
-       $(NASM) -f bin -DDATE_STR="'$(DATE)'" -DHEXDATE="$(HEXDATE)" \
-               -DMAP=$(@:.bin=.map) -l $(@:.bin=.lst) -o $@ $<
-       $(PERL) checkov.pl $(@:.bin=.map) $@
-
-isolinux.bin: isolinux.asm kwdhash.gen version.gen checksumiso.pl
-       $(NASM) -f bin -DDATE_STR="'$(DATE)'" -DHEXDATE="$(HEXDATE)" \
-               -DMAP=$(@:.bin=.map) -l $(@:.bin=.lst) -o $@ $<
-       $(PERL) checkov.pl $(@:.bin=.map) $@
+# Standard rule for {isolinux,isolinux-debug}.bin
+iso%.bin: iso%.asm kwdhash.gen version.gen
+       $(NASM) $(NASMOPT) -f bin -DDATE_STR="'$(DATE)'" -DHEXDATE="$(HEXDATE)" \
+               -DMAP=$(@:.bin=.map) -l $(@:.bin=.lsr) -o $@ $<
+       $(PERL) lstadjust.pl $(@:.bin=.lsr) $(@:.bin=.map) $(@:.bin=.lst)
        $(PERL) checksumiso.pl $@
-
-# Special verbose version of isolinux.bin
-isolinux-debug.bin: isolinux-debug.asm kwdhash.gen version.gen checksumiso.pl
-       $(NASM) -f bin -DDATE_STR="'$(DATE)'" -DHEXDATE="$(HEXDATE)" \
-               -DMAP=$(@:.bin=.map) -l $(@:.bin=.lst) -o $@ $<
        $(PERL) checkov.pl $(@:.bin=.map) $@
-       $(PERL) checksumiso.pl $@
 
-extlinux.bin: extlinux.asm kwdhash.gen version.gen
-       $(NASM) -f bin -DDATE_STR="'$(DATE)'" -DHEXDATE="$(HEXDATE)" \
-               -DMAP=$(@:.bin=.map) -l $(@:.bin=.lst) -o $@ $<
+# Standard rule for {ldlinux,pxelinux,extlinux}.bin
+%.bin: %.asm kwdhash.gen version.gen
+       $(NASM) $(NASMOPT) -f bin -DDATE_STR="'$(DATE)'" -DHEXDATE="$(HEXDATE)" \
+               -DMAP=$(@:.bin=.map) -l $(@:.bin=.lsr) -o $@ $<
+       $(PERL) lstadjust.pl $(@:.bin=.lsr) $(@:.bin=.map) $(@:.bin=.lst)
        $(PERL) checkov.pl $(@:.bin=.map) $@
 
 pxelinux.0: pxelinux.bin
@@ -182,7 +178,7 @@ mbr_bin.c: mbr/mbr.bin bin2c.pl
        $(PERL) bin2c.pl syslinux_mbr < $< > $@
 
 copybs.com: copybs.asm
-       $(NASM) -f bin -l copybs.lst -o copybs.com copybs.asm
+       $(NASM) $(NASMOPT) -f bin -l copybs.lst -o copybs.com copybs.asm
 
 bootsect_bin.c: ldlinux.bss bin2c.pl
        $(PERL) bin2c.pl syslinux_bootsect < $< > $@
@@ -194,15 +190,7 @@ extlinux_bss_bin.c: extlinux.bss bin2c.pl
        $(PERL) bin2c.pl extlinux_bootsect < $< > $@
 
 extlinux_sys_bin.c: extlinux.sys bin2c.pl
-       $(PERL) bin2c.pl extlinux_image < $< > $@
-
-libsyslinux.a: bootsect_bin.o ldlinux_bin.o mbr_bin.o syslxmod.o
-       rm -f $@
-       $(AR) cq $@ $^
-       $(RANLIB) $@
-
-$(LIB_SO): bootsect_bin.o ldlinux_bin.o syslxmod.o
-       $(CC) $(LDFLAGS) -shared -Wl,-soname,$(LIB_SONAME) -o $@ $^
+       $(PERL) bin2c.pl extlinux_image 512 < $< > $@
 
 gethostip: gethostip.o
        $(CC) $(LDFLAGS) -o $@ $^
@@ -219,6 +207,10 @@ install: installer
        mkdir -m 755 -p $(INSTALLROOT)$(AUXDIR)
        install -m 644 -c $(INSTALL_AUX) $(INSTALLROOT)$(AUXDIR)
        -install -m 644 -c $(INSTALL_AUX_OPT) $(INSTALLROOT)$(AUXDIR)
+       mkdir -m 755 -p $(INSTALLROOT)$(MANDIR)/man1
+       install -m 644 -c man/*.1 $(INSTALLROOT)$(MANDIR)/man1
+       : mkdir -m 755 -p $(INSTALLROOT)$(MANDIR)/man8
+       : install -m 644 -c man/*.8 $(INSTALLROOT)$(MANDIR)/man8
        $(MAKE) -C com32 install
 
 install-lib: installer
@@ -227,17 +219,17 @@ install-all: install install-lib
 
 local-tidy:
        rm -f *.o *_bin.c stupid.* patch.offset
-       rm -f *.lst *.map
+       rm -f *.lsr *.lst *.map
        rm -f $(OBSOLETE)
 
 tidy: local-tidy
-       set -e ; for i in $(BSUBDIRS) $(ISUBDIRS) ; do $(MAKE) -C $$i $@ ; done
+       set -e ; for i in $(BESUBDIRS) $(IESUBDIRS) $(BSUBDIRS) $(ISUBDIRS) ; do $(MAKE) -C $$i $@ ; done
 
 local-clean:
        rm -f $(ITARGET)
 
 clean: local-tidy local-clean
-       set -e ; for i in $(BSUBDIRS) $(ISUBDIRS) ; do $(MAKE) -C $$i $@ ; done
+       set -e ; for i in $(BESUBDIRS) $(IESUBDIRS) $(BSUBDIRS) $(ISUBDIRS) ; do $(MAKE) -C $$i $@ ; done
 
 dist: tidy
        for dir in . sample memdisk ; do \
@@ -248,7 +240,7 @@ local-spotless:
        rm -f $(BTARGET) .depend *.so.*
 
 spotless: local-clean dist local-spotless
-       set -e ; for i in $(BSUBDIRS) $(ISUBDIRS) ; do $(MAKE) -C $$i $@ ; done
+       set -e ; for i in $(BESUBDIRS) $(IESUBDIRS) $(BSUBDIRS) $(ISUBDIRS) ; do $(MAKE) -C $$i $@ ; done
 
 .depend:
        rm -f .depend