diff options
author | cc4b05f61e2d8f77114750386c9f9a60 <cc4b05f61e2d8f7@7114750386c9f9a60> | 2023-05-11 14:38:47 +0000 |
---|---|---|
committer | cc4b05f61e2d8f77114750386c9f9a60 <cc4b05f61e2d8f7@7114750386c9f9a60> | 2023-05-11 14:38:47 +0000 |
commit | f5450bfd35a6410528d124f534c2b1a958cafe51 (patch) | |
tree | a808b12d6ad5343fabdec7b8918df6b4d844e03f /src/Makefile | |
parent | 5ad2bb7a6ac7e97c031908d2439808a00fff6214 (diff) | |
download | dmsdosnow-f5450bfd35a6410528d124f534c2b1a958cafe51.tar.gz |
dmsdos-0.9.2.2 addeddmsdos-0.9.2.2
Diffstat (limited to 'src/Makefile')
-rw-r--r-- | src/Makefile | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..61ab1b6 --- /dev/null +++ b/src/Makefile @@ -0,0 +1,242 @@ +# If you want or need to change something herein, please look approx. 30 lines +# below for the 'User Config Section' + +######################################################################## +# The next lines are hacks for automatic detection of different kernel setups. +# These things must happen first, please don't change them here. They can be +# overridden later. +# +# we try to guess some settings from kernel configuration :) +-include /usr/src/linux/.config +# +# guess some special flags for CPU type - used for optimization only +CPUFLAGS= +ifeq ($(CONFIG_M386),y) +CPUFLAGS= -m386 -DCPU=386 -DUSE_ASM +endif +ifeq ($(CONFIG_M486),y) +CPUFLAGS= -m486 -DCPU=486 -DUSE_ASM +endif +ifeq ($(CONFIG_M586),y) +CPUFLAGS= -m486 -DCPU=586 -DUSE_ASM +endif +# this one is new in 2.2.x kernels... +ifeq ($(CONFIG_M586TSC),y) +CPUFLAGS= -m486 -DCPU=586 -DUSE_ASM +endif +ifeq ($(CONFIG_M686),y) +CPUFLAGS= -m486 -DCPU=686 -DUSE_ASM +endif +# this one is new in 2.3.x kernels... +ifeq ($(CONFIG_MK7),y) +CPUFLAGS= -m486 -DCPU=686 -DUSE_ASM +endif +# +# Okay, that's it :) +######################################################################## + +######################################################################## +# *** User Config Section *** +# Here you can look for settings to change if the code refuses to compile +# out of the box. There are so many different systems. So many versions +# of compilers. So many different bugs. :( +# +# Select compiler +CC=gcc +# +# If cpu specific optimization fails, uncomment the next line to switch it +# off - there are some gas versions around that don't like the cpu specific +# asm instructions in dmsdos... +# CPUFLAGS= +# +# Some gnu assembler versions have a bug in the syntax for the xlat +# instruction. This enables a workaround. It should only be needed for very +# old binutils versions. I don't know for which ones :( +# CPUFLAGS+= -DGAS_XLAT_BUG +# +# The next lines should detect SMP configuration automatically. +# Comment them out or set it manually if it fails. +ifeq ($(SMP),1) +CPUFLAGS+= -D__SMP__ +endif +# 2.2.x kernels have this one... +ifeq ($(CONFIG_SMP),y) +CPUFLAGS+= -D__SMP__ +endif +# +# The next lines are for libc6 and enable some compatibility hacks - +# uncomment the line with -D__FOR_LIBC6 if the code does not compile +# *** Currently not used - code should compile under libc6 without hacks +LIBC6FLAGS= +#LIBC6FLAGS= -D__FOR_LIBC6 +# +# CFLAGS for dmsdos module +# note: some macro expansions require at least -O +CFLAGS= -Wall -Wstrict-prototypes -O3 -fomit-frame-pointer -D__KERNEL__ -DMODULE +CFLAGS+= $(CPUFLAGS) +# +# The next lines add some stuff automatically for people using modversions +# if they fail, comment them out and set the required flags manually +ifeq ($(CONFIG_MODVERSIONS),y) +CFLAGS+= -DMODVERSIONS -include /usr/include/linux/modversions.h +endif +# +# CFLAGS for the dmsdos daemon +# note: some macro expansions require at least -O +DCFLAGS= -Wall -O3 -D__DMSDOS_DAEMON__ +DCFLAGS+= $(CPUFLAGS) +# +# CFLAGS for the dmsdos library +# note: some macro expansions require at least -O +LCFLAGS= -Wall -O -ggdb -D__DMSDOS_LIB__ -DUSE_FLOCK +LCFLAGS+= $(CPUFLAGS) $(LIBC6FLAGS) +# uncomment the next line if you want a shared library +# LIB_SHARED = 1 +# +# locations where to install the module, the executables and the manpages +# note: `uname -r` expands to the *currently running* kernel version - if it +# is different from that in /usr/src/linux you'd better edit the next line :) +MODULE_PREFIX=/lib/modules/`uname -r`/fs +#MODULE_PREFIX=/lib/modules/misc +EXEC_PREFIX=/usr/local/bin +# +# Okay, that's the end of the User Config Section. +########################################################################## + +########################################################################## +# The rest of this file are rules how to build which programs. + +all: dmsdos-config.h dmsdos.o dutil dmsdosd $(LIBDMSDOS) dcread dmsdosfsck \ + mcdmsdos cvflist cvftest + +min: dmsdos-config.h dmsdos.o dutil + +dmsdos-config.h: + /bin/bash conf-wrapper.sh + make dep + +config: + /bin/bash Configure + make dep + +menuconfig: + /bin/bash Menuconfig + make dep + +dep: + ./check.sh + $(CC) -w -E -MM -D__KERNEL__ -D__MODULE__ -DMODULE dblspace*.c dstacker*.c > depend + +depend: + @touch depend + +DBL_OBJS = dblspace_compr.o dblspace_tables.o \ + dblspace_alloc.o dblspace_dec.o dblspace_virtual.o \ + dblspace_buffer.o dblspace_methsq.o \ + dblspace_chk.o dblspace_interface.o \ + dstacker_alloc.o dstacker_compr.o dstacker_dec.o \ + dblspace_fileops.o dblspace_ioctl.o + +$(DBL_OBJS): dmsdos.h dmsdos-config.h + +dblspace_fileops.o : dblspace_fileops.c dblspace_fileops.c-2.0.33 \ + dblspace_fileops.c-2.1.80 dblspace_fileops.c-2.3.10 + +dmsdos.o: $(DBL_OBJS) + ld -r -o dmsdos.o $(DBL_OBJS) + +dutil: dutil.c dmsdos.h dmsdos-config.h + $(CC) $(DCFLAGS) -o dutil dutil.c + +DAEMON_OBJS = daemon_actions.do dblspace_compr.do dstacker_compr.do \ + dblspace_methsq.do + +$(DAEMON_OBJS): dmsdos.h dmsdos-config.h + +%.do: %.c ; $(CC) -o $@ $(DCFLAGS) -c $< + +dmsdosd: $(DAEMON_OBJS) + $(CC) -o dmsdosd $^ + +clean: + rm -f *.o *.a *.i *.s *.lo *.do *.so *.so.* dutil dmsdosd dcread \ + dmsdosfsck cvftest cvflist mcdmsdos + +mrproper: clean + rm -f core *~ depend + rm -f .config* dmsdos-config.h .menuconfig* + +install: all + ./check.sh + install dmsdos.o -m 644 $(MODULE_PREFIX)/dmsdos.o + install dutil $(EXEC_PREFIX)/dutil + install dmsdosd $(EXEC_PREFIX)/dmsdosd + install dmsdosfsck $(EXEC_PREFIX)/dmsdosfsck + install mcdmsdos $(EXEC_PREFIX)/mcdmsdos + install cvflist $(EXEC_PREFIX)/cvflist + install cvftest $(EXEC_PREFIX)/cvftest + +install-min: min + ./check.sh + install dmsdos.o $(MODULE_PREFIX)/dmsdos.o + install dutil $(EXEC_PREFIX)/dutil + +uninstall: + rm -f $(MODULE_PREFIX)/dmsdos.o + rm -f $(EXEC_PREFIX)/dutil + rm -f $(EXEC_PREFIX)/dmsdosd + rm -f $(EXEC_PREFIX)/dmsdosfsck + rm -f $(EXEC_PREFIX)/mcdmsdos + rm -f $(EXEC_PREFIX)/cvflist + rm -f $(EXEC_PREFIX)/cvftest + +messages: + grep DMSDOS ../doc/messages.doc | sort -d -b -f > /tmp/messdoc + ./listmsg.sh -LOG > /tmp/messsrc + diff -d -U 0 -w /tmp/messdoc /tmp/messsrc | grep DMSDOS + +LIB_OBJS = lib_interface.lo dblspace_interface.lo dblspace_dec.lo \ + dblspace_compr.lo dblspace_methsq.lo dblspace_alloc.lo \ + dblspace_chk.lo dblspace_tables.lo dstacker_compr.lo \ + dstacker_dec.lo dstacker_alloc.lo + +$(LIB_OBJS): dmsdos.h dmsdos-config.h lib_interface.h + +ifndef LIB_SHARED + +LIBDMSDOS = libdmsdos.a + +%.lo: %.c ; $(CC) -o $@ $(LCFLAGS) -c $< + +$(LIBDMSDOS): $(LIB_OBJS) + ar rcs $(LIBDMSDOS) $^ + ranlib $(LIBDMSDOS) + +else + +%.lo: %.c ; $(CC) --shared -o $@ $(LCFLAGS) -c $< + +LIBDMSDOS = libdmsdos.so.0.9.2 + +$(LIBDMSDOS): $(LIB_OBJS) + ld --shared --soname=$(LIBDMSDOS) -o $(LIBDMSDOS) $^ + ln -s $(LIBDMSDOS) libdmsdos.so + +endif + +dcread: dcread.c $(LIBDMSDOS) dmsdos.h dmsdos-config.h + $(CC) -Wall -ggdb -o dcread dcread.c -L. -ldmsdos + +mcdmsdos: mcdmsdos.c $(LIBDMSDOS) dmsdos.h dmsdos-config.h + $(CC) -Wall -ggdb -o mcdmsdos mcdmsdos.c -L. -ldmsdos + +dmsdosfsck: dmsdosfsck.c $(LIBDMSDOS) dmsdos.h dmsdos-config.h + $(CC) -Wall -o dmsdosfsck dmsdosfsck.c -L. -ldmsdos + +cvftest: cvftest.c + $(CC) -Wall -o cvftest cvftest.c + +cvflist: cvflist.c + $(CC) -Wall -o cvflist cvflist.c + +-include depend |