c8a0e2f4c6
This commit finalizes support for cross compilation. The tools directory are all links to the actual tools and are built on the host system to build Minix. build.sh is the work horse that takes care of all environment settings. It's slightly adjusted for Minix. The /usr/src/Makefile has additional targets needed for cross compilation.
123 lines
3.3 KiB
Makefile
123 lines
3.3 KiB
Makefile
# Master Makefile to compile everything in /usr/src except the system.
|
|
|
|
.include <bsd.own.mk>
|
|
|
|
MAKE?=make
|
|
|
|
usage:
|
|
@echo ""
|
|
@echo "Master Makefile for MINIX commands and utilities."
|
|
@echo "Root privileges are required for some actions."
|
|
@echo ""
|
|
@echo "Usage:"
|
|
@echo " make world # Compile everything (libraries & commands)"
|
|
@echo " make includes # Install include files from src/"
|
|
@echo " make libraries # Compile and install libraries"
|
|
@echo " make commands # Compile all, commands, but don't install"
|
|
@echo " make install # Compile and install commands"
|
|
@echo " make clean # Remove all compiler results"
|
|
@echo ""
|
|
@echo "Run 'make' in releasetools/ to create a new MINIX configuration."
|
|
@echo ""
|
|
|
|
# world has to be able to make a new system, even if there
|
|
# is no complete old system. it has to install commands, for which
|
|
# it has to install libraries, for which it has to install includes,
|
|
# for which it has to install /etc (for users and ownerships).
|
|
# etcfiles also creates a directory hierarchy in its
|
|
# 'make install' target.
|
|
#
|
|
|
|
# etcfiles has to be done first.
|
|
|
|
distribution: etcfiles includes mkfiles libraries do-libgcc .WAIT dep-all install etcforce
|
|
|
|
do-libgcc: .PHONY .MAKE
|
|
${MAKEDIRTARGET} external/gpl3/gcc/lib/libgcc/libgcc all
|
|
${MAKEDIRTARGET} external/gpl3/gcc/lib/libgcc/libgcc install
|
|
|
|
world: mkfiles etcfiles includes libraries dep-all install etcforce
|
|
|
|
# subdirs where userland utilities and other executables live
|
|
CMDSDIRS=commands bin sbin usr.bin usr.sbin libexec external
|
|
|
|
# subdirs where system stuff lives
|
|
SYSDIRS=sys kernel servers drivers
|
|
|
|
# combination
|
|
CMDSYSDIRS=$(CMDSDIRS) $(SYSDIRS)
|
|
|
|
etcfiles: .PHONY .MAKE
|
|
${MAKEDIRTARGET} etc install
|
|
|
|
etcforce: .PHONY .MAKE
|
|
${MAKEDIRTARGET} etc installforce
|
|
|
|
mkfiles: .PHONY .MAKE
|
|
${MAKEDIRTARGET} share/mk install
|
|
|
|
includes: .PHONY .MAKE
|
|
${MAKEDIRTARGET} include includes
|
|
${INSTALL_DIR} ${DESTDIR}/usr/include/g++
|
|
${MAKEDIRTARGET} lib includes
|
|
${MAKEDIRTARGET} sys includes
|
|
${MAKEDIRTARGET} external includes
|
|
|
|
.for dir in lib lib/csu lib/libc
|
|
do-${dir:S/\//-/g}: .PHONY .MAKE
|
|
${MAKEDIRTARGET} ${dir} dependall
|
|
${MAKEDIRTARGET} ${dir} install
|
|
.endfor
|
|
|
|
# libraries are built by building and installing csu, then libc, then
|
|
# the rest
|
|
libraries: includes .PHONY .MAKE do-lib-csu .WAIT do-lib-libc .WAIT do-lib
|
|
|
|
commands: includes libraries .PHONY .MAKE
|
|
.for dir in $(CMDSDIRS)
|
|
${MAKEDIRTARGET} ${dir} dependall
|
|
.endfor
|
|
|
|
dep-all: .PHONY .MAKE
|
|
.for dir in $(CMDSYSDIRS)
|
|
${MAKEDIRTARGET} ${dir} dependall
|
|
.endfor
|
|
|
|
install: .PHONY .MAKE
|
|
.for dir in $(CMDSYSDIRS)
|
|
${MAKEDIRTARGET} ${dir} install
|
|
.endfor
|
|
${MAKEDIRTARGET} man install
|
|
${MAKEDIRTARGET} man makedb
|
|
${MAKEDIRTARGET} share install
|
|
${MAKEDIRTARGET} releasetools install
|
|
|
|
clean: mkfiles .PHONY .MAKE
|
|
.for dir in $(CMDSDIRS)
|
|
${MAKEDIRTARGET} ${dir} clean
|
|
.endfor
|
|
${MAKEDIRTARGET} sys clean
|
|
${MAKEDIRTARGET} releasetools clean
|
|
${MAKEDIRTARGET} lib clean
|
|
${MAKEDIRTARGET} test clean
|
|
|
|
cleandepend: mkfiles .PHONY .MAKE
|
|
.for dir in $(CMDSYSDIRS)
|
|
${MAKEDIRTARGET} ${dir} cleandepend
|
|
.endfor
|
|
${MAKEDIRTARGET} lib cleandepend
|
|
|
|
# Shorthands
|
|
all: .PHONY .MAKE dep-all
|
|
${MAKEDIRTARGET} releasetools all
|
|
|
|
# Obsolete targets
|
|
elf-libraries: .PHONY
|
|
echo "That target is just libraries now."
|
|
false
|
|
|
|
gnu-includes: .PHONY
|
|
echo "That target is obsolete."
|
|
echo "Current MINIX GCC packages don't require it any more."
|
|
false
|
|
|