FreeDOS/makefile
Andrew Bird 6092afc74d Build: Country submodule now has production target
When country was converted to a submodule (by me) the production
installation target was hacked onto the kernel subdirectory Makefile
which wasn't ideal. Introduce a production target into the country
Makefile that does the installation. Since we want the submodule to be
buildable standalone, we can't include the variable definitions from the
upper level, such as $(DIRSEP) and $(CP), so the caller has to pass those
in at build time if using the production target.

Tested on Linux (GCC + Watcom) and DOS (Watcom)
2024-02-24 17:38:14 +00:00

149 lines
3.5 KiB
Makefile

# What you WANT on DOS is:
# EDIT CONFIG.B, COPY CONFIG.B to CONFIG.BAT, RUN BUILD.BAT
# On Linux, use config.mak, and "make all", "make clean", or "make clobber"
# On Windows, use config.mak, and
# "mingw32-make all", "mingw32-make clean", or "mingw32-make clobber"
default:
@echo On DOS, please type build, clean, or clobber.
@echo On Linux, please type make all, make clean, or make clobber.
@echo On Windows, please type mingw32-make all, mingw32-make clean, or
@echo mingw32-make clobber.
build:
build
bin\kwc8616.sys:
build -r wc 86 fat16
bin\kwc8632.sys:
build -r wc 86 fat32
# use as follows: wmake -ms zip VERSION=2029
zip_src:
cd ..\..
zip -9 -r -k source/ke$(VERSION)s.zip source/ke$(VERSION) -i@source/ke$(VERSION)/filelist
cd source\ke$(VERSION)
BINLIST1 = doc bin/kernel.sys bin/sys.com
# removed - as the 2nd zip -r line to add those to the zip:
# BINLIST2 = bin/config.sys bin/autoexec.bat bin/command.com bin/install.bat
zipfat16: bin\kwc8616.sys
mkdir doc
mkdir doc\kernel
copy docs\*.txt doc\kernel
copy docs\*.cvs doc\kernel
copy docs\copying doc\kernel
copy docs\*.lsm doc\kernel
del doc\kernel\build.txt
del doc\kernel\lfnapi.txt
copy bin\kwc8616.sys bin\kernel.sys
zip -r -k ../ke$(VERSION)16.zip $(BINLIST)
utils\rmfiles doc\kernel\*.txt doc\kernel\*.cvs doc\kernel\*.lsm doc\kernel\copying
rmdir doc\kernel
rmdir doc
zipfat32: bin\kwc8632.sys
mkdir doc
mkdir doc\kernel
copy docs\*.txt doc\kernel
copy docs\*.cvs doc\kernel
copy docs\copying doc\kernel
copy docs\*.lsm doc\kernel
del doc\kernel\build.txt
del doc\kernel\lfnapi.txt
copy bin\kwc8632.sys bin\kernel.sys
zip -r -k ../ke$(VERSION)32.zip $(BINLIST)
utils\rmfiles doc\kernel\*.txt doc\kernel\*.cvs doc\kernel\*.lsm doc\kernel\copying
rmdir doc\kernel
rmdir doc
zip: zip_src zipfat16 zipfat32
#Linux part
#defaults: override using config.mak
export
ifeq ($(OS),Windows_NT)
BUILDENV ?= windows
DIRSEP=\
CP=copy
else
BUILDENV ?= linux
DIRSEP=/
CP=cp
endif
ifeq ($(BUILDENV),windows)
COMPILER=owwin
TEST_F=type >nul 2>nul
TOUCH=wtouch
else
COMPILER=owlinux
TEST_F=test -f
TOUCH=touch
ifndef WATCOM
WATCOM=$(HOME)/watcom
PATH:=$(WATCOM)/binl:$(PATH)
endif
endif
XCPU=86
XFAT=32
XUPX=upx --8086 --best
XNASM=nasm
ifeq ($(COMPILER),gcc)
MAKE=make
MAKEADJUST=for i in utils lib drivers boot sys kernel setver; do sed 's@!include "\(.*\)"@include ../mkfiles/gcc.mak@' < $$i/makefile > $$i/GNUmakefile; done
MAKEREMOVE=for i in utils lib drivers boot sys kernel setver; do rm -f $$i/GNUmakefile; done
XLINK=ia16-elf-gcc
else
MAKE=wmake -ms -h
MAKEADJUST=
MAKEREMOVE=
XLINK=wlink
endif
#ALLCFLAGS=-DDEBUG
-include config.mak
ifdef XUPX
UPXOPT=-U
endif
all:
$(MAKEADJUST)
cd utils && $(MAKE) production
cd lib && ( $(TEST_F) libm.lib || $(TOUCH) libm.lib )
cd drivers && $(MAKE) production
cd boot && $(MAKE) production
cd sys && $(MAKE) production
cd kernel && $(MAKE) production
cd country && $(MAKE) DIRSEP=$(DIRSEP) CP=$(CP) production
cd setver && $(MAKE) production
$(MAKEREMOVE)
clean:
$(MAKEADJUST)
cd utils && $(MAKE) clean
cd lib && $(MAKE) clean
cd drivers && $(MAKE) clean
cd boot && $(MAKE) clean
cd sys && $(MAKE) clean
cd kernel && $(MAKE) clean
cd country && $(MAKE) clean
cd setver && $(MAKE) clean
$(MAKEREMOVE)
clobber:
$(MAKEADJUST)
cd utils && $(MAKE) clobber
cd lib && $(MAKE) clobber
cd drivers && $(MAKE) clobber
cd boot && $(MAKE) clobber
cd sys && $(MAKE) clobber
cd kernel && $(MAKE) clobber
cd country && $(MAKE) clobber
cd setver && $(MAKE) clobber
$(MAKEREMOVE)