mirror of
https://github.com/SDL-Hercules-390/hyperion.git
synced 2026-04-15 00:15:30 +02:00
436 lines
8.0 KiB
Plaintext
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
|