123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374 |
- #ifdef COMMENT
- ##############################################################################
- #
- # This Makefile has been completely re-vamped. Two reasons, first to allow
- # for a full compile before installation, hence allowing us to make a binary
- # distribution without installing and second to allow proper dependancy trees
- # for the different versions of the library.
- #
- # As an aside, it would be useful if I could avoid GNU-make constucts.
- #
- ##############################################################################
- #endif
- # Defaults, generic C
- ARFLAGS =r
- CC =%CC%
- CFLAGS =%CFLAGS%
- LDFLAGS =
- MAKEARG =CC='$(CC)' CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' \
- PREFIX=$(PREFIX) LIBDIR='$(LIBDIR)' \
- BINDIR='$(BINDIR)' ANSI='$(ANSI)'
- MAKEC=$(MAKE) -C
- MAKEX=
- # This is only allowed on Linux because make needs to know how to look
- # inside an archive to get the last modified times of the component .o
- # files. This should be fine for Linux, but it won't be for AIX etc.
- # Unfortunatly it's even _required_ for linux because some versions
- # have a broken standard ar command. Ie they barf if given something
- # they think is not an a.out.
- #ifdef __linux__
- AR=ar86
- #endif
- #ifdef __GNUC__
- CC =%CC%
- #ifdef GCCDB
- WALL =-Wall -Wtraditional -Wshadow -Wpointer-arith \
- -Wcast-qual -Wcast-align -Wconversion -Waggregate-return \
- -Wstrict-prototypes -Wmissing-prototypes -Wredundant-decls \
- -Wnested-externs -Winline
- CFLAGS =$(GCCFLAG) $(WALL) -O2 -g
- #else
- WALL =-Wall -Wstrict-prototypes
- CFLAGS =$(GCCFLAG) -O2 -fno-strict-aliasing
- #endif
- #endif
- #ifndef GNUMAKE
- MAKEC=sh makec
- MAKEX=makec
- #endif
- #ifdef __minix
- # Minix make doesn't understand -C, cc runs out of memory with the headers.
- MAKEC=ash makec
- MAKEX=makec
- CFLAGS=-O -m -w -DPOSIX_HEADERS_MISSING -DVERY_SMALL_MEMORY
- #endif
- #ifdef __BCC__
- ANSI =-ansi
- #ifdef __AS386_32__
- CFLAGS =-Ml
- LDFLAGS =-Ml -s
- #else
- CFLAGS =-O
- LDFLAGS =-s -H10000
- BCCARCH =
- #endif
- #endif
- # Apple cpp-precomp 6.14 (devkit-213/devkit_tools-214) cannot
- # handle the QUOT macro in bcc. It puts a space in /usr so that
- # it becomes / usr
- #ifdef __APPLE__
- CFLAGS += -no-cpp-precomp
- #endif
- # Install files with the userid of the currently running process.
- INDAT=-m 644
- INEXE=-m 755 -s
- INSCR=-m 755
- #ifdef __CYGWIN__
- EXE=.exe
- #else
- EXE=
- #endif
- #ifdef GNUMAKE
- all: check_config bcc86 cpp unproto copt as86 ar86 ld86 objdump86 \
- library lib-bsd alt-libs elksemu
- install: check_config install-bcc install-man \
- install-lib install-emu
- install-all: install install-other
- #else
- all: check_config bcc86 cpp unproto copt as86 ar86 ld86 objdump86
- @echo
- @echo 'NOTE: To build the libraries you need GNU-Make.'
- @echo ' They are available precompiled in the Dev86clb-X.X.X.zip file.'
- install install-all: check_config install-bcc install-man
- @echo
- @echo 'NOTE: To build the libraries you need GNU-Make.'
- @echo ' They are available precompiled in the Dev86clb-X.X.X.zip file.'
- #endif
- ##############################################################################
- LIBARGS= CC=ncc "CCFLAGS=-O" AR=$(AR) ARFLAGS=$(ARFLAGS)
- LIB3ARGS= CC=ncc AR=$(AR) ARFLAGS=$(ARFLAGS)
- # Season in the top makefile
- ELKSSRC= %ELKSSRC%
- PREFIX= %PREFIX%
- BINDIR= %BINDIR%
- LIBDIR= %LIBDIR%
- INCLDIR= %INCLDIR%
- ASLDDIR= %ASLDDIR%
- MANDIR= %MANDIR%
- #ifdef GNUMAKE
- export ELKSSRC
- #endif
- DISTBIN= $(DIST)$(BINDIR)
- DISTLIB= $(DIST)$(LIBDIR)
- DISTASLD=$(DIST)$(ASLDDIR)
- DISTINCL=$(DIST)$(INCLDIR)
- # Others to install
- OTHERS= tests dis88 doselks bootblocks
- CLEANLIST= bcc as ar ld cpp unproto copt libc elksemu libbsd $(OTHERS)
- ##############################################################################
- bindir: $(MAKEX)
- @mkdir -p bin lib lib/i386
- @rm -f include
- @ln -s libc/include include 2>/dev/null || true
- #ifndef GNUMAKE
- @rm -f include/linuxmt include/arch || true
- @ln -s ../kinclude/linuxmt include/linuxmt 2>/dev/null || true
- @ln -s ../kinclude/arch include/arch 2>/dev/null || true
- #endif
- bcc86: bindir versions
- $(MAKEC) bcc $(MAKEARG) BCCARCH='$(BCCARCH)' bcc ncc bcc-cc1
- cp -p bcc/bcc$(EXE) bin/Bcc$(EXE)
- cp -p bcc/ncc$(EXE) bin/ncc$(EXE)
- cp -p bcc/bcc-cc1$(EXE) lib/bcc-cc1$(EXE)
- cpp: bindir
- $(MAKEC) cpp $(MAKEARG) bcc-cpp
- cp -p cpp/bcc-cpp$(EXE) lib/bcc-cpp$(EXE)
- unproto: bindir
- $(MAKEC) unproto $(MAKEARG) unproto
- cp -p unproto/unproto$(EXE) lib/unproto$(EXE)
- copt: bindir
- $(MAKEC) copt $(MAKEARG) copt
- cp -p copt/copt$(EXE) lib/copt$(EXE)
- cp -p copt/rules.* lib/.
- cp -p copt/rules.start lib/i386/.
- cp -p copt/rules.386 lib/i386/.
- cp -p copt/rules.end lib/i386/.
- as86: bindir versions
- $(MAKEC) as $(MAKEARG) all
- cp -p as/as86$(EXE) bin/as86$(EXE)
- cp -p as/as86_encap bin/as86_encap
- ar86: bindir
- $(MAKEC) ar $(MAKEARG) all
- cp -p ar/ar86$(EXE) bin/ar86$(EXE)
- ld86: bindir versions
- $(MAKEC) ld $(MAKEARG) ld86
- cp -p ld/ld86$(EXE) bin/ld86$(EXE)
- ld86r: bindir
- $(MAKEC) ld $(MAKEARG) ld86r
- cp -p ld/ld86r$(EXE) bin/ld86r$(EXE)
- objdump86: bindir
- $(MAKEC) ld $(MAKEARG) objdump86
- cp -p ld/objdump86$(EXE) bin/objdump86$(EXE)
- #ifndef __AS386_16__
- #ifdef __elksemu_works__
- elksemu: bindir
- $(MAKEC) elksemu elksemu
- cp -p elksemu/elksemu bin/elksemu
- #else
- try_elksemu: bindir
- $(MAKEC) elksemu CC='ncc' elksemu
- cp -p elksemu/elksemu bin/elksemu
- #endif
- #endif
- install-bcc: bcc86 cpp unproto copt as86 ar86 ld86 objdump86
- install -d $(DISTBIN) $(DISTLIB)
- install $(INEXE) bin/Bcc$(EXE) $(DISTBIN)/bcc$(EXE)
- install $(INEXE) bin/as86$(EXE) $(DISTASLD)/as86$(EXE)
- install $(INEXE) bin/ld86$(EXE) $(DISTASLD)/ld86$(EXE)
- install $(INEXE) bin/ar86$(EXE) $(DISTBIN)/ar86$(EXE)
- install $(INEXE) bin/objdump86$(EXE) $(DISTBIN)/objdump86$(EXE)
- install $(INEXE) bin/objdump86$(EXE) $(DISTBIN)/nm86$(EXE)
- install $(INEXE) bin/objdump86$(EXE) $(DISTBIN)/size86$(EXE)
- install $(INSCR) bin/as86_encap $(DISTLIB)/as86_encap
- install $(INEXE) lib/bcc-cc1$(EXE) $(DISTLIB)/bcc-cc1$(EXE)
- install $(INEXE) lib/bcc-cpp$(EXE) $(DISTLIB)/bcc-cpp$(EXE)
- install $(INEXE) lib/unproto$(EXE) $(DISTLIB)/unproto$(EXE)
- install $(INEXE) lib/copt$(EXE) $(DISTLIB)/copt$(EXE)
- install $(INDAT) lib/rules.* $(DISTLIB)
- install -d $(DISTLIB)/i386
- install $(INDAT) lib/i386/rules.* $(DISTLIB)/i386
- # NB: This doesn't install as a suid root, that's ok though.
- install-emu: elksemu
- #ifdef __elksemu_works__
- install -d $(DISTBIN)
- install $(INEXE) bin/elksemu $(DISTBIN)/elksemu
- #endif
- install-man:
- -$(MAKEC) man MANDIR=$(DIST)$(MANDIR) install
- install-lib: lib/lib0-done lib/lib2-done lib/lib1-done
- $(MAKEC) libc $(LIBARGS) DISTINCL=$(DISTINCL) install_incl
- install $(INDAT) lib/crt0.o $(DISTLIB)/crt0.o
- install $(INDAT) lib/libc.a $(DISTLIB)/libc.a
- install $(INDAT) lib/libc_f.a $(DISTLIB)/libc_f.a
- install $(INDAT) lib/libc_s.a $(DISTLIB)/libc_s.a
- install $(INDAT) lib/libbsd.a $(DISTLIB)/libbsd.a
- install $(INDAT) lib/libdos.a $(DISTLIB)/libdos.a
- #ifndef __AS386_16__
- install -d $(DISTLIB)/i386
- install $(INDAT) lib/i386/crt0.o $(DISTLIB)/i386/crt0.o
- install $(INDAT) lib/i386/libc.a $(DISTLIB)/i386/libc.a
- #endif
- lib/lib0-done:
- $(MAKE) -f make.fil library
- lib/lib1-done:
- $(MAKE) -f make.fil alt-libs
- lib/lib2-done:
- $(MAKE) -f make.fil lib-bsd
- all-libs: library lib-bsd alt-libs
- @:
- library: bindir
- test -f bin/ncc
- $(MAKEC) libc $(LIBARGS) PLATFORM=i86-ELKS
- cp -p libc/crt0.o libc/libc.a lib/.
- sh libcompat lib/libc.a
- @touch lib/lib0-done
- lib-bsd: bindir
- test -f bin/ncc
- $(MAKEC) libbsd $(LIBARGS)
- cp -p libbsd/libbsd.a lib/libbsd.a
- sh libcompat lib/libbsd.a
- @touch lib/lib2-done
- #ifdef __AS386_16__
- alt-libs: lib-stand lib-dos lib-fast
- @touch lib/lib1-done
- #else
- alt-libs: lib-stand lib-dos lib-386 lib-fast
- @touch lib/lib1-done
- #endif
- lib-fast: bindir
- test -f bin/ncc
- $(MAKEC) libc $(LIBARGS) PLATFORM=i86-FAST
- cp -p libc/libc_f.a lib/libc_f.a
- sh libcompat lib/libc_f.a
- lib-stand: bindir
- test -f bin/ncc
- $(MAKEC) libc $(LIBARGS) PLATFORM=i86-BIOS
- cp -p libc/libc_s.a lib/libc_s.a
- sh libcompat lib/libc_s.a
- lib-dos: bindir
- test -f bin/ncc
- $(MAKEC) libc $(LIBARGS) PLATFORM=i86-DOS
- cp -p libc/libdos.a lib/libdos.a
- sh libcompat lib/libdos.a
- lib-386: bindir
- test -f bin/ncc
- $(MAKEC) libc $(LIB3ARGS) PLATFORM=i386-BCC
- cp -p libc/crt3.o lib/i386/crt0.o
- cp -p libc/libc3.a lib/i386/libc.a
- sh libcompat lib/i386/libc.a
- ##############################################################################
- #ifdef GNUMAKE
- check_config: $(MAKEX)
- $(MAKEC) libc .config.dir
- config: $(MAKEX)
- $(MAKEC) libc config
- #else
- check_config: ;
- config: ;
- #endif
- makec:
- echo 'cd $$1 ; shift ; make "$$@"' > makec
- chmod +x makec
- versions: bcc/version.h
- bcc/version.h: Makefile
- echo '#define VERSION "'"$(VERSION)"'"' > bcc/version.h
- echo '#define VERSION "'"$(VERSION)"'"' > as/version.h
- echo '#define VERSION "'"$(VERSION)"'"' > bootblocks/version.h
- echo '#define VERSION "'"$(VERSION)"'"' > ld/version.h
- VER=$(VERSION) ; \
- echo "#define VER_MAJ $${VER%%.*}" >> bcc/version.h ; \
- VER="$${VER#*.}" ; \
- echo "#define VER_MIN $${VER%.*}" >> bcc/version.h ; \
- echo "#define VER_PAT $${VER#*.}" >> bcc/version.h
- ##############################################################################
- install-other: other
- @for i in $(OTHERS) ; do \
- $(MAKEC) $$i BCC=ncc DIST=$(DIST) PREFIX=$(PREFIX) install || exit 1 ; \
- done
- other: versions
- @for i in $(OTHERS) ; do \
- $(MAKEC) $$i BCC=ncc DIST=$(DIST) PREFIX=$(PREFIX) || exit 1; \
- done
- ##############################################################################
- clean:
- -@for i in $(CLEANLIST) ; do $(MAKEC) $$i $@ ; true ; done
- realclean:
- -@for i in $(CLEANLIST) ; do $(MAKEC) $$i $@ ; true ; done
- rm -rf bin lib
- rm -f include
- rm -f makec
- rm -f `find $(CLEANLIST) -type l -print`
- rm -f bcc/version.h
- rm -f as/version.h
- rm -f ld/version.h
- rm -f bootblocks/version.h
- ##############################################################################
|