Files
org-hyperion-cules/makefile.w32
Roger Bowler 47229a20ca Added Malcolm Beattie's dasdcat program
git-svn-id: file:///home/jj/hercules.svn/trunk@606 956126f8-22a0-4046-8f4a-272fa8102e63
2002-01-26 09:17:31 +00:00

436 lines
8.0 KiB
Plaintext

#
# Makefile for Hercules S/370, ESA/390 and z/Architecture emulator
# modified to build hercules under windows (VB)
# modified to build external GUI compatible version under Windows (Fish)
# modified to be useful (hopefully) for Linux AND windows (VB)
# Added LINKMAP option (Fish)
# Support for version >= 1.3.3 of Cygwin = built-in pthreads (Fish)
# Added Malcolm Beattie's dasdcat program (rbowler)
#
#### VERSION #####
ifndef VER
VER=2.15a
endif
# Change the following to yes/no depending on whether
# or not you're using Cygwin version 1.3.3 or higher
CYGWIN_133_OR_HIGHER=yes
# Change the following to yes/no to
# generate a link map for debugging
LINKMAP=no
WIN=NO
THEOS=$(OSTYPE)
ifeq ($(THEOS),cygwin)
WIN=yes
endif
ifndef HOST_ARCH
HOST_ARCH=pentium
endif
VERSION = $(VER)_$(HOST_ARCH)
# Set the default directory where you want to install the Hercules executables somewhere
# besides /usr/bin. The $PREFIX (which defaults to nothing) can be
# overridden in the make command line, as in "PREFIX=/foo make install"
# (the directory is only used when installing).
ifeq ($(WIN),yes)
DESTDIR = $(PREFIX)/hercules2
else
DESTDIR = $(prefix)/usr/bin
endif
# The default installation directory can be overridden by the DEST= keyword
# when executing the make utility
ifndef DEST
DEST = $(DESTDIR)
endif
# Standard compiler flags used for all architectures
CFLAGS = -Wall
CFLAGS += -fomit-frame-pointer
CFLAGS += -DVERSION=$(VERSION)
CFLAGS += -DNO_IEEE_SUPPORT
#CFLAGS += -DNO_ATTR_REGPARM
ifeq ($(WIN),yes)
ifeq ($(CYGWIN_133_OR_HIGHER),yes)
CC = gcc
else
# Directory where the pthreads-win32 library was installed.
PTHREADS_W32DIR = /usr
CC = gcc -I$(PTHREADS_W32DIR)/Pthreads
endif
CC = gcc
endif
ifeq ($(WIN),yes)
CFLAGS += -DWIN32
CFLAGS += -DNO_BYTESWAP_H
CFLAGS += -DNO_SETUID
CFLAGS += -DHAVE_U_INT
CFLAGS += -DHAVE_SETRESUID
endif
#set compiler flags depending on HOST_ARCH
ifeq ($(HOST_ARCH),i386)
CFLAGS += -O3
CFLAGS += -malign-double
CFLAGS += -DNO_ASM_BYTESWAP
endif
ifeq ($(HOST_ARCH),i586)
CFLAGS += -O3
CFLAGS += -malign-double
CFLAGS += -march=pentium
endif
ifeq ($(HOST_ARCH),pentium)
CFLAGS += -O3
CFLAGS += -malign-double
CFLAGS += -march=pentium
endif
ifeq ($(HOST_ARCH),i686)
CFLAGS += -O3
CFLAGS += -malign-double
CFLAGS += -march=pentiumpro
endif
ifeq ($(HOST_ARCH),pentiumpro)
CFLAGS += -O3
CFLAGS += -malign-double
CFLAGS += -march=pentiumpro
endif
ifeq ($(HOST_ARCH),alpha)
CFLAGS += -O2
CFLAGS += -DNO_ASM_BYTESWAP
endif
ifeq ($(HOST_ARCH),other)
CFLAGS += -O3
CFLAGS += -DNO_ASM_BYTESWAP
endif
# For Linux/390 use:
#CFLAGS += -DNO_ASM_BYTESWAP
#
# The sigabend handler has not yet been tested with windows *JJ
CFLAGS += -DNO_SIGABEND_HANDLER
ifeq ($(WIN),yes)
ifeq ($(CYGWIN_133_OR_HIGHER),yes)
LFLAGS =
else
LFLAGS = -L$(PTHREADS_W32DIR)/DLL -lpthreadw32
endif
else
LFLAGS = -lpthread
endif
# Comment out the line below to build a console-mode only
# (i.e. NON-external GUI compatible) version of Hercules
#
# Note: the external GUI compatible version of Hercules
# (which is the default) can be run in both console mode
# or external GUI mode, whereas a NON-external GUI compatible
# version can ONLY be run in console (non-GUI) mode.
CFLAGS += -DEXTERNALGUI
# Change the value below to YES to enable compresion
# to NO to disable compression
CCKD=YES
# Change the value below to YES to use bzip2 compression
# to NO to use standard compression
BZIP2=YES
ifeq ($(CCKD),YES)
LFLAGS += -lz
else
CFLAGS += -DNO_CCKD
endif
ifeq ($(BZIP2),YES)
CFLAGS += -DCCKD_BZIP2
CFLAGS += -DHET_BZIP2
LFLAGS += -lbz2
endif
ifeq ($(LINKMAP),no)
else
LFLAGS += -Xlinker -Map -Xlinker hercules.map
endif
EXEFILES = hercules \
dasdinit \
dasdisup \
dasdload \
dasdls \
dasdcat \
dasdpdsu \
tapecopy \
tapemap \
tapesplt \
cckd2ckd \
cckdcdsk \
ckd2cckd \
cckdcomp \
hetget \
hetinit \
hetmap \
hetupd \
dmap2hrc
ifeq ($(WIN),yes)
else
EXEFILES += hercifc
endif
TARFILES = makefile \
*.c \
*.h \
hercules.cnf \
tapeconv.jcl \
util/dasdlist \
html \
zzsa.cnf \
zzsacard.bin
HRC_OBJS = impl.o \
config.o \
panel.o \
version.o \
ipl.o \
assist.o \
dat.o \
stack.o \
cpu.o \
vstore.o \
general1.o \
general2.o \
plo.o \
control.o \
io.o \
decimal.o \
service.o \
opcode.o \
diagnose.o \
diagmssf.o \
vm.o \
channel.o \
ckddasd.o \
fbadasd.o \
tapedev.o \
cardrdr.o \
cardpch.o \
printer.o \
console.o \
external.o \
float.o \
ctcadpt.o \
trace.o \
machchk.o \
vector.o \
xstore.o \
cmpsc.o \
sie.o \
timer.o \
esame.o \
cckddasd.o \
cckdcdsx.o \
parser.o \
hetlib.o \
ieee.o
ifeq ($(WIN),yes)
else
HIFC_OBJ = hercifc.o version.o
endif
DIN_OBJS = dasdinit.o dasdutil.o version.o
DIS_OBJS = dasdisup.o dasdutil.o version.o
DLD_OBJS = dasdload.o dasdutil.o version.o
DLS_OBJS = dasdls.o dasdutil.o version.o
DCA_OBJS = dasdcat.o dasdutil.o version.o
DPU_OBJS = dasdpdsu.o dasdutil.o version.o
TCY_OBJS = tapecopy.o version.o
TMA_OBJS = tapemap.o version.o
TSP_OBJS = tapesplt.o version.o
CCHK_OBJ = cckdcdsk.o version.o
COMP_OBJ = cckdcomp.o cckdcdsx.o version.o
C2CC_OBJ = ckd2cckd.o version.o
CC2C_OBJ = cckd2ckd.o version.o
HGT_OBJS = hetget.o hetlib.o sllib.o version.o
HIN_OBJS = hetinit.o hetlib.o sllib.o version.o
HMA_OBJS = hetmap.o hetlib.o sllib.o version.o
HUP_OBJS = hetupd.o hetlib.o sllib.o version.o
D2H_OBJS = dmap2hrc.o version.o
HEADERS = feat370.h \
feat390.h \
feat900.h \
featall.h \
featchk.h \
features.h \
esa390.h \
opcode.h \
hercules.h \
inline.h \
dat.h \
vstore.h \
byteswap.h \
dasdblks.h \
hetlib.h \
version.h
#HEADERS = esa390.h version.h inline.h
all: $(EXEFILES)
hercules: $(HRC_OBJS)
$(CC) -o hercules $(HRC_OBJS) $(LFLAGS)
$(HRC_OBJS): %.o: %.c $(HEADERS)
$(CC) $(CFLAGS) -o $@ -c $<
ifeq ($(WIN),yes)
else
hercifc: $(HIFC_OBJ)
$(CC) -o hercifc $(HIFC_OBJ)
endif
dasdinit: $(DIN_OBJS)
$(CC) -o dasdinit $(DIN_OBJS)
dasdisup: $(DIS_OBJS)
$(CC) -o dasdisup $(DIS_OBJS)
dasdload: $(DLD_OBJS)
$(CC) -o dasdload $(DLD_OBJS)
dasdls: $(DLS_OBJS)
$(CC) -o dasdls $(DLS_OBJS)
dasdcat: $(DCA_OBJS)
$(CC) -o dasdcat $(DCA_OBJS)
dasdpdsu: $(DPU_OBJS)
$(CC) -o dasdpdsu $(DPU_OBJS)
tapecopy: $(TCY_OBJS)
$(CC) -o tapecopy $(TCY_OBJS)
tapemap: $(TMA_OBJS)
$(CC) -o tapemap $(TMA_OBJS)
tapesplt: $(TSP_OBJS)
$(CC) -o tapesplt $(TSP_OBJS)
hetget: $(HGT_OBJS)
$(CC) -o hetget $(HGT_OBJS) $(LFLAGS)
hetinit: $(HIN_OBJS)
$(CC) -o hetinit $(HIN_OBJS) $(LFLAGS)
hetmap: $(HMA_OBJS)
$(CC) -o hetmap $(HMA_OBJS) $(LFLAGS)
hetupd: $(HUP_OBJS)
$(CC) -o hetupd $(HUP_OBJS) $(LFLAGS)
dmap2hrc: $(D2H_OBJS)
$(CC) -o dmap2hrc $(D2H_OBJS) $(LFLAGS)
dasdinit.o: dasdinit.c $(HEADERS) dasdblks.h
dasdisup.o: dasdisup.c $(HEADERS) dasdblks.h
dasdload.o: dasdload.c $(HEADERS) dasdblks.h
dasdls.o: dasdls.c $(HEADERS) dasdblks.h
dasdcat.o: dasdcat.c $(HEADERS) dasdblks.h
dasdpdsu.o: dasdpdsu.c $(HEADERS) dasdblks.h
dasdutil.o: dasdutil.c $(HEADERS) dasdblks.h
tapecopy.o: tapecopy.c $(HEADERS)
tapemap.o: tapemap.c $(HEADERS)
tapesplt.o: tapesplt.c $(HEADERS)
cckdcdsk: $(CCHK_OBJ)
$(CC) -o cckdcdsk $(CCHK_OBJ) $(LFLAGS)
cckdcomp: $(COMP_OBJ)
$(CC) -o cckdcomp $(COMP_OBJ) $(LFLAGS)
cckd2ckd: $(CC2C_OBJ)
$(CC) -o cckd2ckd $(CC2C_OBJ) $(LFLAGS)
ckd2cckd: $(C2CC_OBJ)
$(CC) -o ckd2cckd $(C2CC_OBJ) $(LFLAGS)
hetget.o: hetget.c hetlib.h sllib.h
hetinit.o: hetinit.c hetlib.h sllib.h
hetmap.o: hetmap.c hetlib.h sllib.h
hetupd.o: hetupd.c hetlib.h sllib.h
dmap2hrc.o: dmap2hrc.c $(HEADERS)
cckd: cckd2ckd cckdcdsk ckd2cckd cckdcomp
clean:
rm -rf $(EXEFILES) *.o
tar: clean
(cd ..; tar cvzf hercules-$(VERSION).tar.gz hercules-$(VERSION))
install: $(EXEFILES)
mkdir -p $(DEST)
ifeq ($(WIN),yes)
cp *.exe $(DEST)
rm -f $(DEST)/dasdlist*
cp util/dasdlist* $(DEST)
else
cp $(EXEFILES) $(DEST)
cp util/dasdlist $(DEST)
chown root $(DEST)/hercifc
chmod 0751 $(DEST)/hercifc
chmod +s $(DEST)/hercifc
rm hercifc
endif