mirror of
https://github.com/LIV2/libnix.git
synced 2025-12-06 00:23:08 +00:00
196 lines
5.9 KiB
Makefile
196 lines
5.9 KiB
Makefile
# simple libnix Makefile.gcc6 - for Bebbo's gcc-6
|
|
|
|
PREFIX ?= /opt/amiga
|
|
|
|
CC = m68k-amigaos-gcc
|
|
AR = m68k-amigaos-ar
|
|
AS = m68k-amigaos-as
|
|
|
|
uname := $(shell uname)
|
|
root ?= $(shell echo $$PWD)
|
|
export root
|
|
|
|
MAKEFILES=$(root)/Makefile.gcc6
|
|
|
|
# special path handling for msys2 started from Eclipse
|
|
ifneq (,$(findstring MSYS_NT,$(uname)))
|
|
ifneq (,$(findstring /cygdrive/,$(root)))
|
|
troot := $(root)
|
|
tdrive := $(word 2,$(subst /, ,$(troot)))
|
|
root = $(subst /cygdrive/$(tdrive)/,$(tdrive):/,$(troot))
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(lib))
|
|
ifeq (,$(libname))
|
|
libname=$(lib)
|
|
endif
|
|
-include $(root)/sources/$(lib)/steal.me
|
|
endif
|
|
|
|
# use nix13 or nix20
|
|
ifneq (,$(lib))
|
|
ifeq (nix13,$(lib))
|
|
CFLAGS += -mcrt=nix13
|
|
else
|
|
CFLAGS += -noixemul
|
|
endif
|
|
endif
|
|
|
|
# extend CFLAGS on first invokation
|
|
ifeq (,$(kind))
|
|
CFLAGS ?= -Os -fomit-frame-pointer
|
|
CFLAGS += -I$(root)/sources/headers -fno-builtin
|
|
endif
|
|
|
|
.PHONY: all one rest clean install install_one
|
|
|
|
.PHONY: lib libb libm020 libm020bb libm020bb32 libm881 libm020bb881 libm020bb32881
|
|
all: info lib libb libm020 libm020bb libm020bb32 libm881 libm020bb881 libm020bb32881
|
|
|
|
# the desired kinds to be build
|
|
lib: lib/devinit.o lib/libinit.o lib/libinitr.o lib/ncrt0.o lib/nbcrt0.o lib/nlbcrt0.o lib/nrcrt0.o lib/nlrcrt0.o
|
|
@mkdir -p $@
|
|
$(MAKE) one kind=$@
|
|
if [ -e $(PREFIX)/m68k-amigaos/lib/libstubs.a ]; then cp $(PREFIX)/m68k-amigaos/lib/libstubs.a lib/libstubs.a; touch -t 0001010000 lib/libstubs.a; fi
|
|
if [ -e lib/libstubs.a ] && [ "$$(m68k-amigaos-ar t lib/libstubs.a | grep __initlib)" != "" ]; then rm -f lib/libstubs.a; fi
|
|
$(MAKE) -C $@ kind=lib libstubs.a lib=stubs
|
|
|
|
libb:
|
|
@mkdir -p $@
|
|
$(MAKE) one kind=$@ flags="-fbaserel"
|
|
|
|
libm020:
|
|
@mkdir -p $@
|
|
$(MAKE) one kind=$@ flags="-m68020"
|
|
|
|
libm020bb:
|
|
@mkdir -p $@
|
|
$(MAKE) one kind=$@ flags="-fbaserel -m68020"
|
|
|
|
libm020bb32:
|
|
@mkdir -p $@
|
|
$(MAKE) one kind=$@ flags="-fbaserel32 -m68020"
|
|
|
|
libm881:
|
|
@mkdir -p $@
|
|
$(MAKE) one kind=$@ flags="-m68020 -m68881 -mhard-float"
|
|
|
|
libm020bb881:
|
|
@mkdir -p $@
|
|
$(MAKE) one kind=$@ flags="-fbaserel -m68020 -m68881 -mhard-float"
|
|
|
|
libm020bb32881:
|
|
@mkdir -p $@
|
|
$(MAKE) one kind=$@ flags="-fbaserel32 -m68020 -m68881 -mhard-float"
|
|
|
|
# the libs to build for each kind
|
|
one: libnix libnix13 libnix20 libnixmain libnix_main libm libsocket libstack
|
|
|
|
# install all kinds into the prefix
|
|
.PHONY: install_lib install_libb install_libm020 install_libm020bb install_libm020bb32 install_libm881 install_libm020bb881 install_libm020bb32881
|
|
install: install_lib install_libb install_libm020 install_libm020bb install_libm020bb32 install_libm881 install_libm020bb881 install_libm020bb32881
|
|
|
|
install_lib:
|
|
$(MAKE) install_one kind=lib to=""
|
|
mv $(PREFIX)/m68k-amigaos/libnix/lib/libstubs.a $(PREFIX)/m68k-amigaos/lib/
|
|
install_libb:
|
|
$(MAKE) install_one kind=libb to="libb/"
|
|
install_libm020:
|
|
$(MAKE) install_one kind=libm020 to="libm020/"
|
|
install_libm020bb:
|
|
$(MAKE) install_one kind=libm020bb to="libb/libm020/"
|
|
install_libm020bb32:
|
|
$(MAKE) install_one kind=libm020bb32 to="libb32/libm020/"
|
|
install_libm881:
|
|
$(MAKE) install_one kind=libm881 to="libm020/libm881/"
|
|
install_libm020bb881:
|
|
$(MAKE) install_one kind=libm020bb881 to="libb/libm020/libm881/"
|
|
install_libm020bb32881:
|
|
$(MAKE) install_one kind=libm020bb32881 to="libb32/libm020/libm881/"
|
|
|
|
# install the files for the given $(kind) into $(to)
|
|
install_one:
|
|
mkdir -p $(PREFIX)/m68k-amigaos/libnix/lib/$(to)
|
|
cp $(kind)/*.a $(PREFIX)/m68k-amigaos/libnix/lib/$(to)
|
|
cp $(kind)/*.o $(PREFIX)/m68k-amigaos/libnix/lib/$(to)
|
|
rm -f /m68k-amigaos/libnix/lib/$(to)/libstubs.a
|
|
|
|
|
|
# startup stuff
|
|
.PHONY: libdir
|
|
libdir:
|
|
@mkdir -p lib
|
|
|
|
lib/devinit.o: $(root)/sources/startup/devinit.c libdir
|
|
$(CC) -c $(CFLAGS) $(flags) $< -o $@
|
|
|
|
lib/libinit.o: $(root)/sources/startup/libinit.c libdir
|
|
$(CC) -c $(CFLAGS) $(flags) $< -o $@
|
|
|
|
lib/libinitr.o: $(root)/sources/startup/libinitr.c libdir
|
|
$(CC) -c $(CFLAGS) $(flags) $< -o $@
|
|
|
|
lib/ncrt0.o: $(root)/sources/startup/ncrt0.S libdir
|
|
$(AS) -m68000 $< -o $@
|
|
|
|
lib/nbcrt0.o: $(root)/sources/startup/nbcrt0.S libdir
|
|
$(AS) -m68000 $< -o $@
|
|
|
|
lib/nlbcrt0.o: $(root)/sources/startup/nlbcrt0.S libdir
|
|
$(AS) -m68020 $< -o $@
|
|
|
|
lib/nrcrt0.o: $(root)/sources/startup/nrcrt0.S libdir
|
|
$(AS) -m68000 $< -o $@
|
|
|
|
lib/nlrcrt0.o: $(root)/sources/startup/nlrcrt0.S libdir
|
|
$(AS) -m68020 $< -o $@
|
|
|
|
.PHONY: libnix libnix13 libnix20 libnixmain libnix_main libm libsocket libstack
|
|
libnix:
|
|
$(MAKE) -C $(kind) rest libnix.a lib=nix
|
|
libnix13:
|
|
$(MAKE) -C $(kind) rest libnix13.a lib=nix13
|
|
libnix20:
|
|
$(MAKE) -C $(kind) rest libnix20.a lib=nix20
|
|
libnixmain:
|
|
$(MAKE) -C $(kind) rest libnixmain.a lib=nixmain
|
|
libnix_main:
|
|
$(MAKE) -C $(kind) rest libnix_main.a lib=nix_main
|
|
libm:
|
|
$(MAKE) -C $(kind) rest libm.a lib=math libname=m flags="$(flags) -DFULL_SPECIFIERS"
|
|
libsocket:
|
|
$(MAKE) -C $(kind) rest libsocket.a lib=socket
|
|
libstack:
|
|
$(MAKE) -C $(kind) rest libstack.a lib=stack
|
|
|
|
rest: swapstack.o detach.o
|
|
|
|
swapstack.o: $(root)/sources/misc/swapstack.c
|
|
$(CC) -c $(CFLAGS) $(flags) $^ -o $@
|
|
|
|
detach.o: $(root)/sources/misc/detach.c
|
|
$(CC) -c $(CFLAGS) $(flags) $^ -o $@
|
|
|
|
# build the lib base on $(lib), $(kind) and $(flags)
|
|
lib$(libname).a: $(shell find $(root)/sources/$(lib)/* -name '*.c') $(stolen) $(shell find $(root)/sources/headers/* -name '*.h') $(root)/Makefile.gcc6
|
|
@mkdir -p $(lib)
|
|
@echo compiling for $(kind)/$@ using $(CC) -c $(CFLAGS) $(flags)
|
|
@touch -t 0001010000 $(lib)/stamp && if [ -e $@ ]; then touch -r $@ $(lib)/stamp; fi
|
|
@if [ "$$(find $(root)/sources/headers/* -newer $(lib)/stamp)" != "" ]; then rm -f $(lib)/*.o $@; touch -t 0001010000 $(lib)/stamp; fi
|
|
@if [ "$$(find $(root)/Makefile.gcc6 -newer $(lib)/stamp)" != "" ]; then rm -f $(lib)/*.o $@; touch -t 0001010000 $(lib)/stamp; fi
|
|
@cd $(lib) && files="$$(find $^ -name '*.c' -newer stamp)" && echo "$(CC) -c $(CFLAGS) $(flags) $$files" && $(CC) -c $(CFLAGS) $(flags) $$files
|
|
@#echo archive $(kind)/$@
|
|
@$(AR) rcs $@ $$(find ./$(lib)/* -name '*.o' -newer $(lib)/stamp)
|
|
|
|
|
|
# cleanup
|
|
clean:
|
|
find * -name '*.o' -delete
|
|
find * -name '*.a' -delete
|
|
find * -name stamp -delete
|
|
|
|
info:
|
|
@echo "$(uname)"
|
|
@echo "root=$(root)"
|