CC		= gcc
CFLAGS		= -O2 -fmessage-length=0 -Wall -D_FORTIFY_SOURCE=2 -g -fno-strict-aliasing -fstack-protector -Wall -W -pedantic -Winline -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wcast-align -Wshadow -Wstrict-prototypes -Wformat -Wformat-security
LDFLAGS		=  -Wl,-export-dynamic
#---------------------------------------------------------------------------
# Installation location of the slang library
#---------------------------------------------------------------------------
prefix 		= /usr
exec_prefix 	= ${prefix}
SLANG_INST_INC	= -I${prefix}/include
SLANG_INST_LIB	= -L/usr/lib64 -lslang
#---------------------------------------------------------------------------
SLANG_SRCINC	= -I/usr/src/packages/BUILD/slang-2.0.5/src
SLANG_SRCLIB	= -L/usr/src/packages/BUILD/slang-2.0.5/src/objs -L/usr/src/packages/BUILD/slang-2.0.5/src/elfobjs -lslang
#---------------------------------------------------------------------------
OTHER_LIBS	=  -ldl -lm
RPATH		= -Wl,-R/usr/lib64
#----------------------------------------------------------------------------
INSTALL		= /usr/bin/install -c
INSTALL_DATA	= ${INSTALL} -m 644
MKINSDIR	= ../autoconf/mkinsdir.sh
#----------------------------------------------------------------------------
# Where system-wide slsh.rc, scripts, and library files reside
#----------------------------------------------------------------------------
SLSH_CONF_DIR	= /etc
SLSH_LIB_DIR	= ${prefix}/share/slsh
SLSH_LOCALLIB_DIR = $(SLSH_LIB_DIR)/local-packages
SLSH_SCRIPT_DIR	= $(SLSH_LIB_DIR)/scripts
SCRIPTS		= jpegsize lsrpm sldb svnsh slprof
#---------------------------------------------------------------------------
# Hard-coded paths may be configured during run-time via the SLSH_CONF_DIR
# and SLSH_PATH env variables.  The names of those variables may be
# changed here.  The SLSH_LIB_DIR variable has been deprecated.
#
SLSH_CONF_DIR_ENV = "SLSH_CONF_DIR"
SLSH_PATH_ENV	  = "SLSH_PATH"
SLSH_LIB_DIR_ENV  = "SLSH_LIB_DIR"
#---------------------------------------------------------------------------
# If you want GNU readline instead of slang's readline, then enable it here
#---------------------------------------------------------------------------
GNU_READLINE	= 0
READLINE_LIB	= # -lreadline
#---------------------------------------------------------------------------
# DESTDIR is designed to facilitate making packages.  Normally it is empty
#---------------------------------------------------------------------------
DESTDIR		=
BIN_DIR		= ${exec_prefix}/bin
MAN_DIR		= /usr/share/man/man1
DEST_BIN_DIR	= $(DESTDIR)$(BIN_DIR)
DEST_MAN_DIR	= $(DESTDIR)$(MAN_DIR)
DEST_SLSH_CONF_DIR = $(DESTDIR)$(SLSH_CONF_DIR)
DEST_SLSH_LIB_DIR  = $(DESTDIR)$(SLSH_LIB_DIR)
DEST_SLSH_LOCALLIB_DIR = $(DESTDIR)$(SLSH_LOCALLIB_DIR)
DEST_SLSH_SCRIPT_DIR = $(DESTDIR)$(SLSH_SCRIPT_DIR)

#----------------------------------------------------------------------------
# End of user configuration
#----------------------------------------------------------------------------

SHELL = /bin/sh
INST_LIBS = $(RPATH) $(SLANG_INST_LIB) $(READLINE_LIB) $(OTHER_LIBS)
DEFS = -DSLSH_CONF_DIR='"$(SLSH_CONF_DIR)"' -DSLSH_PATH='"$(SLSH_LIB_DIR)"' \
 -DSLSH_CONF_DIR_ENV='$(SLSH_CONF_DIR_ENV)' -DSLSH_LIB_DIR_ENV='$(SLSH_LIB_DIR_ENV)' \
 -DSLSH_PATH_ENV='$(SLSH_PATH_ENV)' 
SRC_LIBS = $(SLANG_SRCLIB) $(READLINE_LIB) $(OTHER_LIBS)
#
all: slsh
slsh_exe: slsh.o readline.o
	$(CC) slsh.o readline.o -o slsh_exe $(LDFLAGS) $(SRC_LIBS)
slsh: slsh.o readline.o
	$(CC) slsh.o readline.o -o slsh $(LDFLAGS) $(SRC_LIBS)
slsh.o: slsh.c slsh.h config.h
	$(CC) -c $(CFLAGS) $(SLANG_SRCINC) $(DEFS) slsh.c
readline.o: readline.c slsh.h config.h
	$(CC) -c $(CFLAGS) $(SLANG_SRCINC) $(DEFS) -DUSE_GNU_READLINE=$(GNU_READLINE) readline.c
config.h: ../src/config.h
	cp ../src/config.h .
install_directories:
	$(MKINSDIR) $(DEST_BIN_DIR)
	$(MKINSDIR) $(DEST_MAN_DIR)
	$(MKINSDIR) $(DEST_SLSH_CONF_DIR)
	$(MKINSDIR) $(DEST_SLSH_LIB_DIR)
	$(MKINSDIR) $(DEST_SLSH_LOCALLIB_DIR)
	$(MKINSDIR) $(DEST_SLSH_SCRIPT_DIR)
install_lib_files:
	@for X in lib/*.sl; \
	do \
		echo $(INSTALL_DATA) $$X $(DEST_SLSH_LIB_DIR); \
		$(INSTALL_DATA) $$X $(DEST_SLSH_LIB_DIR); \
		if [ "$$?" != "0" ]; then \
		  exit 1; \
		fi; \
	done
install_scripts:
	@for X in $(SCRIPTS); \
	do \
		echo $(INSTALL) scripts/$$X $(DEST_SLSH_SCRIPT_DIR); \
		$(INSTALL) scripts/$$X $(DEST_SLSH_SCRIPT_DIR); \
		if [ "$$?" != "0" ]; then \
		  exit 1; \
		fi; \
	done

install: slsh install_directories install_lib_files install_scripts
	$(INSTALL) slsh $(DEST_BIN_DIR)/
	$(INSTALL_DATA) lib/slsh.rc $(DEST_SLSH_CONF_DIR)/
	echo 'prepend_to_slang_load_path("$(SLSH_LOCALLIB_DIR)");' >> $(DEST_SLSH_CONF_DIR)/slsh.rc
	$(INSTALL_DATA) doc/man/slsh.1 $(DEST_MAN_DIR)/
#---------------------------------------------------------------------------
# Housekeeping
#---------------------------------------------------------------------------
clean:
	-/bin/rm -f *~ slsh.o readline.o slsh slsh_exe scripts/*~ lib/*~
distclean: clean
	-/bin/rm -f Makefile
symlinks:
	-/bin/rm -f $(ARCH)objs
	-mkdir -p $(HOME)/sys/$(ARCH)/objs/jdl/src
	ln -s $(HOME)/sys/$(ARCH)/objs/jdl/src $(ARCH)objs
