# Copyright (c) 1999-2025 Paul Mattes.
# All rights reserved.
# 
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in the
#       documentation and/or other materials provided with the distribution.
#     * Neither the name of Paul Mattes nor his contributors may be used
#       to endorse or promote products derived from this software without
#       specific prior written permission.
# 
# THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
# NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# Makefile for s3270 (scripted 3270 emulator)

RM = rm -f
CC = @CC@
PYTHON = @PYTHON@

all: s3270

HOST = @host@
include s3270_files.mk libs.mk

VOBJS = $(S3270_OBJECTS) fallbacks.o

OBJS1 = $(VOBJS) version.o

LIBDIR = @libdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
sysconfdir = @sysconfdir@
datarootdir = @datarootdir@
LIBX3270DIR = @LIBX3270DIR@
MANDIR = @mandir@
BINDIR = @bindir@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@

CCOPTIONS = @CCOPTIONS@
XCPPFLAGS = -I$(THIS) -I$(TOP)/include -I$(TOP)/Common/s3270 -DLIBX3270DIR=\"$(LIBX3270DIR)\" @CPPFLAGS@
override CFLAGS += $(CCOPTIONS) $(CDEBUGFLAGS) $(XCPPFLAGS) @CFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@

XVERSION = xversion.c
version.o: mkversion.py $(VOBJS) version.txt
	$(RM) $(XVERSION)
	$(PYTHON) $< -o $(XVERSION) s3270 $(filter %.txt,$^)
	$(CC) $(CFLAGS) -c -o $@ $(XVERSION)
	$(RM) $(XVERSION)

FALLBACKS = fb-common fb-printSession
fallbacks.c: mkfb.py $(FALLBACKS)
	$(RM) $@
	$(PYTHON) $< -c -o $@ $(filter-out %.py,$^)

s3270: $(OBJS1) $(DEP3270) $(DEP32XX) $(DEP3270STUBS)
	$(CC) -o $@ $(OBJS1) $(LDFLAGS) $(LD3270) $(LD32XX) $(LD3270STUBS) $(LIBS)

man:: s3270.man
	if [ ! -f $(notdir $^) ]; then cp $< $(notdir $^); fi

install: s3270
	[ -d $(DESTDIR)$(BINDIR) ] || \
		mkdir -p $(DESTDIR)$(BINDIR)
	$(INSTALL_PROGRAM) s3270 $(DESTDIR)$(BINDIR)/s3270

install.man: man
	[ -d $(DESTDIR)$(MANDIR)/man1 ] || \
		mkdir -p $(DESTDIR)$(MANDIR)/man1
	$(INSTALL_DATA) s3270.man $(DESTDIR)$(MANDIR)/man1/s3270.1

clean:
	$(RM) *.o fallbacks.c
clobber: clean
	$(RM) s3270 *.d *.man

# Include auto-generated dependencies.
-include $(S3270_OBJECTS:.o=.d)
