1#-*-sh-*-
2CC		= @CC@
3CFLAGS		= @CFLAGS@ @SLANG_DLL_CFLAGS@
4LDFLAGS		= @LDFLAGS@
5DLINK_FLAGS	= @DYNAMIC_LINK_FLAGS@
6CONFIG_DIR	= @CONFIG_DIR@
7OBJDIR		= $(ARCH)objs
8SOBJDIR		= static_objs
9SRCDIR		= $(CONFIG_DIR)/slsh
10#---------------------------------------------------------------------------
11# Installation location of the slang library
12#---------------------------------------------------------------------------
13prefix 		= @prefix@
14exec_prefix 	= @exec_prefix@
15datarootdir	= @datarootdir@
16INST_LIB_DIR	= @libdir@
17SLANG_INST_INC	= -I@includedir@
18SLANG_INST_LIB	= -L$(INST_LIB_DIR)
19#---------------------------------------------------------------------------
20SLANG_SRCINC	= -I@SRCDIR@
21SLANG_ELFLIB	= -L@ELFDIR@#  for dynamically linked
22SLANG_OBJLIB	= -L@OBJDIR@#  for statically linked
23#---------------------------------------------------------------------------
24DYNAMIC_LIBS	= @TERMCAP@ @DYNAMIC_LINK_LIB@ @LIBS@ @M_LIB@
25STATIC_LIBS	= @TERMCAP@ @LIBS@ @M_LIB@
26RPATH		= @RPATH@
27#----------------------------------------------------------------------------
28INSTALL		= @INSTALL@
29INSTALL_DATA	= @INSTALL_DATA@
30MKINSDIR	= $(CONFIG_DIR)/autoconf/mkinsdir.sh
31#----------------------------------------------------------------------------
32# Where system-wide slsh.rc, scripts, and library files reside
33#----------------------------------------------------------------------------
34SLSH_CONF_DIR	= @sysconfdir@
35SLSH_LIB_DIR	= $(datarootdir)/slsh
36SLSH_HELP_DIR	= $(SLSH_LIB_DIR)/help
37SLSH_DOC_DIR	= $(datarootdir)/doc/slang/v@slang_major_version@
38SLSH_LOCALLIB_DIR = $(SLSH_LIB_DIR)/local-packages
39SLSH_SCRIPT_DIR	= $(SLSH_LIB_DIR)/scripts
40SCRIPTS		= jpegsize lsrpm sldb svnsh slprof slstkchk
41#---------------------------------------------------------------------------
42# Hard-coded paths may be configured during run-time via the SLSH_CONF_DIR
43# and SLSH_PATH env variables.  The names of those variables may be
44# changed here.  The SLSH_LIB_DIR variable has been deprecated.
45#
46SLSH_CONF_DIR_ENV = "SLSH_CONF_DIR"
47SLSH_PATH_ENV	  = "SLSH_PATH"
48SLSH_LIB_DIR_ENV  = "SLSH_LIB_DIR"
49#---------------------------------------------------------------------------
50# If you want GNU readline instead of slang's readline, then enable it here
51#---------------------------------------------------------------------------
52GNU_READLINE	= @GNU_READLINE@
53READLINE_LIB	= @LIB_READLINE@
54#---------------------------------------------------------------------------
55# DESTDIR is designed to facilitate making packages.  Normally it is empty
56#---------------------------------------------------------------------------
57#DESTDIR		=
58BIN_DIR		= @bindir@
59MAN_DIR		= @mandir@/man1
60DEST_LIB_DIR	= -L$(DESTDIR)@libdir@
61DEST_BIN_DIR	= $(DESTDIR)$(BIN_DIR)
62DEST_MAN_DIR	= $(DESTDIR)$(MAN_DIR)
63DEST_SLSH_CONF_DIR = $(DESTDIR)$(SLSH_CONF_DIR)
64DEST_SLSH_LIB_DIR  = $(DESTDIR)$(SLSH_LIB_DIR)
65DEST_SLSH_HELP_DIR = $(DESTDIR)$(SLSH_HELP_DIR)
66DEST_SLSH_LOCALLIB_DIR = $(DESTDIR)$(SLSH_LOCALLIB_DIR)
67DEST_SLSH_SCRIPT_DIR = $(DESTDIR)$(SLSH_SCRIPT_DIR)
68DEST_SLSH_DOC_DIR= $(DESTDIR)$(SLSH_DOC_DIR)
69
70#----------------------------------------------------------------------------
71# These should be empty for production code
72#----------------------------------------------------------------------------
73SLSYSWRAP_DEF = @DSLSYSWRAP@
74SLSYSWRAP_LIB = @LIB_SLSYSWRAP@
75#----------------------------------------------------------------------------
76# End of user configuration
77#----------------------------------------------------------------------------
78@SET_MAKE@
79SHELL = /bin/sh
80INST_LIBS = $(DEST_LIB_DIR) $(RPATH) $(SLANG_INST_LIB) -lslang $(READLINE_LIB) $(DYNAMIC_LIBS)
81DEFS = -DSLSH_CONF_DIR='"$(SLSH_CONF_DIR)"' -DSLSH_PATH='"$(SLSH_LIB_DIR)"' \
82 -DSLSH_CONF_DIR_ENV='$(SLSH_CONF_DIR_ENV)' -DSLSH_LIB_DIR_ENV='$(SLSH_LIB_DIR_ENV)' \
83 -DSLSH_PATH_ENV='$(SLSH_PATH_ENV)' $(SLSYSWRAP_DEF)
84SDEFS = $(DEFS) -DSLSH_STATIC
85SRC_LIBS = $(SLANG_ELFLIB) -lslang $(SLSYSWRAP_LIB) $(READLINE_LIB) $(DYNAMIC_LIBS)
86STATIC_SRC_LIBS = $(SLANG_OBJLIB) -lslang $(SLSYSWRAP_LIB) $(READLINE_LIB) $(STATIC_LIBS)
87OBJDIR_TSTAMP = $(OBJDIR)/tstamp
88SOBJDIR_TSTAMP = $(SOBJDIR)/tstamp
89#
90all: $(OBJDIR)/slsh_exe
91slsh: $(OBJDIR)/slsh
92$(OBJDIR)/slsh_exe: $(OBJDIR)/slsh.o $(OBJDIR)/readline.o
93	$(CC) $(CFLAGS) $(OBJDIR)/slsh.o $(OBJDIR)/readline.o -o $(OBJDIR)/slsh_exe $(LDFLAGS) $(DLINK_FLAGS) $(SRC_LIBS)
94$(OBJDIR)/slsh: $(OBJDIR)/slsh.o $(OBJDIR)/readline.o
95	$(CC) $(CFLAGS) $(OBJDIR)/slsh.o $(OBJDIR)/readline.o -o $(OBJDIR)/slsh $(LDFLAGS) $(DLINK_FLAGS) $(INST_LIBS)
96$(OBJDIR)/slsh.o: $(OBJDIR_TSTAMP) slsh.c slsh.h config.h Makefile
97	cd $(OBJDIR) && $(CC) $(SLANG_SRCINC) $(CFLAGS) -c $(DEFS) $(SRCDIR)/slsh.c
98$(OBJDIR)/readline.o: $(OBJDIR_TSTAMP) readline.c slsh.h config.h Makefile
99	cd $(OBJDIR) && $(CC) $(SLANG_SRCINC) $(CFLAGS) -c $(DEFS) -DUSE_GNU_READLINE=$(GNU_READLINE) $(SRCDIR)/readline.c
100$(OBJDIR_TSTAMP):
101	-$(MKINSDIR) $(OBJDIR)
102	touch $(OBJDIR_TSTAMP)
103#
104static: $(SOBJDIR)/slsh
105$(SOBJDIR)/slsh: $(SOBJDIR)/slsh.o $(SOBJDIR)/readline.o
106	$(CC) $(CFLAGS) $(SOBJDIR)/slsh.o $(SOBJDIR)/readline.o -o $(SOBJDIR)/slsh $(LDFLAGS) $(STATIC_SRC_LIBS)
107$(SOBJDIR)/slsh.o: $(SOBJDIR_TSTAMP) slsh.c slsh.h config.h Makefile
108	cd $(SOBJDIR) && $(CC) $(SLANG_SRCINC) $(CFLAGS) -c $(SDEFS) $(SRCDIR)/slsh.c
109$(SOBJDIR)/readline.o: $(SOBJDIR_TSTAMP) readline.c slsh.h config.h Makefile
110	cd $(SOBJDIR) && $(CC) $(SLANG_SRCINC) $(CFLAGS) -c $(SDEFS) -DUSE_GNU_READLINE=$(GNU_READLINE) $(SRCDIR)/readline.c
111$(SOBJDIR_TSTAMP):
112	-$(MKINSDIR) $(SOBJDIR)
113	touch $(SOBJDIR_TSTAMP)
114#
115config.h: ../src/config.h
116	cp ../src/config.h .
117install_directories:
118	$(MKINSDIR) $(DEST_BIN_DIR)
119	$(MKINSDIR) $(DEST_MAN_DIR)
120	$(MKINSDIR) $(DEST_SLSH_CONF_DIR)
121	$(MKINSDIR) $(DEST_SLSH_LIB_DIR)
122	$(MKINSDIR) $(DEST_SLSH_LIB_DIR)/rline
123	$(MKINSDIR) $(DEST_SLSH_HELP_DIR)
124	$(MKINSDIR) $(DEST_SLSH_LOCALLIB_DIR)
125	$(MKINSDIR) $(DEST_SLSH_SCRIPT_DIR)
126	$(MKINSDIR) $(DEST_SLSH_DOC_DIR)/html
127install_lib_files:
128	@for X in lib/*.sl; \
129	do \
130		echo $(INSTALL_DATA) $$X $(DEST_SLSH_LIB_DIR); \
131		$(INSTALL_DATA) $$X $(DEST_SLSH_LIB_DIR); \
132		if [ "$$?" != "0" ]; then \
133		  exit 1; \
134		fi; \
135	done
136install_rline_files:
137	@for X in lib/rline/*.sl lib/rline/slrline.rc; \
138	do \
139		echo $(INSTALL_DATA) $$X $(DEST_SLSH_LIB_DIR)/rline/; \
140		$(INSTALL_DATA) $$X $(DEST_SLSH_LIB_DIR)/rline/; \
141		if [ "$$?" != "0" ]; then \
142		  exit 1; \
143		fi; \
144	done
145install_scripts:
146	@for X in $(SCRIPTS); \
147	do \
148		echo $(INSTALL) scripts/$$X $(DEST_SLSH_SCRIPT_DIR); \
149		$(INSTALL) scripts/$$X $(DEST_SLSH_SCRIPT_DIR); \
150		if [ "$$?" != "0" ]; then \
151		  exit 1; \
152		fi; \
153	done
154install_help:
155	@for X in lib/help/*.hlp; \
156	do \
157		echo $(INSTALL_DATA) $$X $(DEST_SLSH_HELP_DIR); \
158		$(INSTALL_DATA) $$X $(DEST_SLSH_HELP_DIR); \
159		if [ "$$?" != "0" ]; then \
160		  exit 1; \
161		fi; \
162	done
163install_docs:
164	@for X in doc/html/*.html; \
165	do \
166		echo $(INSTALL_DATA) $$X $(DEST_SLSH_DOC_DIR)/html/; \
167		$(INSTALL_DATA) $$X $(DEST_SLSH_DOC_DIR)/html/; \
168		if [ "$$?" != "0" ]; then \
169		  exit 1; \
170		fi; \
171	done
172	$(INSTALL_DATA) doc/man/slsh.1 $(DEST_MAN_DIR)/
173#
174install_slsh:
175	$(INSTALL) $(OBJDIR)/slsh $(DEST_BIN_DIR)/
176install_static_slsh:
177	$(INSTALL) $(SOBJDIR)/slsh $(DEST_BIN_DIR)/
178install_slshrc:
179	$(INSTALL_DATA) etc/slsh.rc $(DEST_SLSH_CONF_DIR)/
180	echo 'prepend_to_slang_load_path("$(SLSH_LOCALLIB_DIR)");' >> $(DEST_SLSH_CONF_DIR)/slsh.rc
181install_common: install_directories install_lib_files install_rline_files install_scripts install_help install_docs
182#
183install: slsh install_common install_slsh install_slshrc
184install-static: static install_common install_static_slsh install_slshrc
185#---------------------------------------------------------------------------
186runtests:
187	cd lib/test && ./runtests.sh test_*.sl
188#---------------------------------------------------------------------------
189# Housekeeping
190#---------------------------------------------------------------------------
191clean:
192	-/bin/rm -f $(OBJDIR_TSTAMP) $(SOBJDIR_TSTAMP)
193	-/bin/rm -f *~ $(OBJDIR)/slsh.o $(OBJDIR)/readline.o $(OBJDIR)/slsh $(OBJDIR)/slsh_exe scripts/*~ lib/*~
194	-/bin/rm -f $(SOBJDIR)/slsh.o $(SOBJDIR)/readline.o $(SOBJDIR)/slsh $(SOBJDIR)/slsh_exe
195distclean: clean
196	-/bin/rm -f Makefile config.h
197#
198.PHONY: all clean distclean symlinks slsh install install_directories \
199  install_lib_files install_rline_files install_scripts install_help \
200  install_docs install-static static install_common \
201  install_slsh install_static_slsh install_slshrc
202
203