# -*- sh -*- #--------------------------------------------------------------------------- # ANSI C compiler #--------------------------------------------------------------------------- CC = @CC@ CFLAGS = @CFLAGS@ LDFLAGS = @LDFLAGS@ #----------------------------------------------------------------------------- # System library that contains functions for dynamic linking (-ldl) #----------------------------------------------------------------------------- DL_LIB = @DYNAMIC_LINK_LIB@ #--------------------------------------------------------------------------- # Compiler for producing a shared library (ELF) #--------------------------------------------------------------------------- ELF_CC = @ELF_CC@ ELF_CFLAGS = @ELF_CFLAGS@ ELF_LINK = @ELF_LINK@ ELF_DEP_LIBS = @ELF_DEP_LIBS@ #--------------------------------------------------------------------------- # Set these values to ABSOLUTE path names #--------------------------------------------------------------------------- SRCDIR = @SRCDIR@# Location of sources OBJDIR = @OBJDIR@# Location of objects ELFDIR = @ELFDIR@# Location of elf objects VERSION_SCRIPT = $(SRCDIR)/slang.ver ELFDIR_TSTAMP = $(ELFDIR)/tstamp OBJDIR_TSTAMP = $(OBJDIR)/tstamp #--------------------------------------------------------------------------- # When searching for modules, slang will search the paths specified by the # value of the SLANG_MODULE_PATH environment variable. The name of this # variable may be changed here. #--------------------------------------------------------------------------- MODULE_PATH_ENV_NAME = "SLANG_MODULE_PATH" #--------------------------------------------------------------------------- # Misc Libraries MISC_TERMINFO_DIRS = @MISC_TERMINFO_DIRS@ OTHER_CFLAGS = @DSLSYSWRAP@ OTHER_LIBS = @LIB_SLSYSWRAP@ @TERMCAP@ @LIBS@ @M_LIB@ #--------------------------------------------------------------------------- # Directory where library is going to go when installed #--------------------------------------------------------------------------- prefix = @prefix@ exec_prefix = @exec_prefix@ install_lib_dir = @libdir@ install_bin_dir = @bindir@ install_include_dir = @includedir@ install_doc_dir = $(prefix)/share/doc/slang/v@slang_major_version@ DOC_FILES = ../changes.txt ../COPY* ../doc/slangdoc.html ../doc/text/*.txt MODULE_INSTALL_DIR = @libdir@/slang/v@slang_major_version@/modules #--------------------------------------------------------------------------- # DESTDIR is designed to facilitate making packages. Normally it is empty #--------------------------------------------------------------------------- #DESTDIR = DEST_LIBDIR = $(DESTDIR)$(install_lib_dir) DEST_DOCDIR = $(DESTDIR)$(install_doc_dir) DEST_INCDIR = $(DESTDIR)$(install_include_dir) DEST_BINDIR = $(DESTDIR)$(install_bin_dir) #---------------------------------------------------------------------------- # These should be empty for production code #---------------------------------------------------------------------------- SLSYSWRAP_DEF = @DSLSYSWRAP@ SLSYSWRAP_LIB = @LIB_SLSYSWRAP@ #--------------------------------------------------------------------------- # Misc commands (safe to leave these untouched) #--------------------------------------------------------------------------- RANLIB = @RANLIB@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ MKINSDIR = @CONFIG_DIR@/autoconf/mkinsdir.sh RM = rm -f RM_R = rm -rf AR_CR = ar cr RMDIR = rmdir LN = /bin/ln -sf CP = cp @SET_MAKE@ #--------------------------------------------------------------------------- # There should be no need to change anything below here. #--------------------------------------------------------------------------- THIS_LIB = slang# DLL_IMPLIB_NAME = @DLL_IMPLIB_NAME@ OTHERSTUFF = THIS_LIB_DEFINES = -DSLANG ELF_MAJOR_VERSION = @slang_major_version@# ELF_MINOR_VERSION = @slang_minor_version@# ELF_MICRO_VERSION = @slang_micro_version@# INSTALL_ELFLIB_TARGET = @INSTALL_ELFLIB_TARGET@ CONFIG_H = config.h TERMINFO_INC = terminfo/@TERMINFO_LAYOUT@.inc ALL_CFLAGS = $(CFLAGS) -Dunix $(THIS_LIB_DEFINES) $(OTHER_CFLAGS) ALL_ELF_CFLAGS = $(ELF_CFLAGS) -Dunix $(THIS_LIB_DEFINES) $(OTHER_CFLAGS) COMPILE_CMD = $(CC) -c $(ALL_CFLAGS) ELFCOMPILE_CMD = $(ELF_CC) -c $(ALL_ELF_CFLAGS) ELF_LINK_CMD = $(ELF_LINK) NORMAL_LIB = lib$(THIS_LIB).a OBJDIR_NORMAL_LIB = $(OBJDIR)/$(NORMAL_LIB) # On most systems, these variables have values of the form: # libslang.so, libslang.so.X, libslang.so.X.Y, libslang.so.X.Y.Z ELFLIB = @ELFLIB@ ELFLIB_MAJOR = @ELFLIB_MAJOR@ ELFLIB_MAJOR_MINOR = @ELFLIB_MAJOR_MINOR@ ELFLIB_MAJOR_MINOR_MICRO = @ELFLIB_MAJOR_MINOR_MICRO@ # Set this to one of the above ELFLIB_MAJOR_* values ELFLIB_BUILD_NAME = @ELFLIB_BUILD_NAME@ ELFDIR_ELF_LIB = $(ELFDIR)/$(ELFLIB_BUILD_NAME)# ELFDIR_DLL_LIB = $(ELFDIR)/$(DLL_IMPLIB_NAME)# EXECLIBS = -L$(OBJDIR) -lslang $(OTHER_LIBS) $(DL_LIB) EXECDEPS = $(OBJDIR_NORMAL_LIB) OFILES = @PROGRAM_OFILES@ OBJS = @PROGRAM_OBJECTS@ ELFOBJS = @PROGRAM_ELFOBJECTS@ SHELL = /bin/sh DOT_O_DEPS = sllimits.h _slang.h _slint.h $(CONFIG_H) OBJ_O_DEPS = $(OBJDIR_TSTAMP) ELF_O_DEPS = $(ELFDIR_TSTAMP) sltoken_O_DEP = keywhash.c slarith_O_DEP = slarith.inc slarith2.inc slarrfun_O_DEP = slarrfun.inc slarray_O_DEP = slagetput.inc slischar_O_DEP = slischar.h slwclut_O_DEP = slischar.h sllower_O_DEP = sllower.h slupper_O_DEP = slupper.h slwcwidth_O_DEP = slwcwidth.h slcommon_O_DEP = slang.h slstd_O_DEP = Makefile slimport_O_DEP = Makefile sltermin_O_DEP = Makefile terminfo.inc slcurses_O_DEP = slcurses.h slstd_C_FLAGS = -DSLANG_DOC_DIR='"$(install_doc_dir)"' -DSLANG_INSTALL_PREFIX='"$(prefix)"' slimport_C_FLAGS = -DMODULE_INSTALL_DIR='"$(MODULE_INSTALL_DIR)"' -DMODULE_PATH_ENV_NAME='$(MODULE_PATH_ENV_NAME)' sltermin_C_FLAGS = -DMISC_TERMINFO_DIRS='"$(MISC_TERMINFO_DIRS)"' UPDATE_VERSION_SCRIPT = $(HOME)/bin/update_changes_version #--------------------------------------------------------------------------- # Rules #--------------------------------------------------------------------------- all: static elf static: $(OBJDIR_TSTAMP) $(CONFIG_H) $(OBJDIR_NORMAL_LIB) $(OTHERSTUFF) elf: $(ELFDIR_TSTAMP) $(CONFIG_H) $(ELFDIR_ELF_LIB) $(OBJDIR_NORMAL_LIB): $(OBJDIR_TSTAMP) $(CONFIG_H) $(OBJS) -$(RM) $(OBJDIR_NORMAL_LIB) cd $(OBJDIR) && $(AR_CR) $(NORMAL_LIB) $(OFILES) $(RANLIB) $(OBJDIR_NORMAL_LIB) @echo "" @echo $(NORMAL_LIB) created in $(OBJDIR) $(ELFDIR_ELF_LIB): $(ELFDIR) $(CONFIG_H) $(ELFOBJS) $(VERSION_SCRIPT) -$(RM) $(ELFDIR_ELF_LIB) cd $(ELFDIR) && $(ELF_LINK_CMD) -o $(ELFLIB_BUILD_NAME) $(OFILES) $(LDFLAGS) $(ELF_DEP_LIBS) if [ $(ELFLIB_MAJOR) != $(ELFLIB_BUILD_NAME) ]; then \ cd $(ELFDIR) && $(RM) $(ELFLIB_MAJOR) && $(LN) $(ELFLIB_BUILD_NAME) $(ELFLIB_MAJOR); \ fi cd $(ELFDIR) && $(RM) $(ELFLIB) && $(LN) $(ELFLIB_BUILD_NAME) $(ELFLIB) @echo "" @echo $(ELFLIB_BUILD_NAME) created in $(ELFDIR). @echo The link $(ELFLIB) to $(ELFLIB_BUILD_NAME) was also created. @echo "" $(OBJDIR_TSTAMP) : -$(MKINSDIR) $(OBJDIR) touch $(OBJDIR_TSTAMP) $(ELFDIR_TSTAMP) : -$(MKINSDIR) $(ELFDIR) touch $(ELFDIR_TSTAMP) $(CONFIG_H) : sysconf.h Makefile -$(CP) sysconf.h $(CONFIG_H) terminfo.inc: $(TERMINFO_INC) Makefile -$(CP) $(TERMINFO_INC) terminfo.inc #--------------------------------------------------------------------------- # Intallation rules #--------------------------------------------------------------------------- $(DEST_DOCDIR): $(MKINSDIR) $(DEST_DOCDIR) $(DEST_INCDIR): $(MKINSDIR) $(DEST_INCDIR) $(DEST_LIBDIR): $(MKINSDIR) $(DEST_LIBDIR) install-headers: $(DEST_INCDIR) @echo installing slang.h and slcurses.h in $(DEST_INCDIR)/ $(INSTALL_DATA) $(SRCDIR)/slang.h $(DEST_INCDIR)/ $(INSTALL_DATA) $(SRCDIR)/slcurses.h $(DEST_INCDIR)/ install-docs: $(DEST_DOCDIR) @for i in $(DOC_FILES); \ do \ echo $(INSTALL_DATA) $$i $(DEST_DOCDIR)/; \ $(INSTALL_DATA) $$i $(DEST_DOCDIR)/; \ done install-static: static install-headers install-docs $(DEST_LIBDIR) @echo installing $(OBJDIR_NORMAL_LIB) in $(DEST_LIBDIR)/ $(INSTALL_DATA) $(OBJDIR_NORMAL_LIB) $(DEST_LIBDIR)/ $(RANLIB) $(DEST_LIBDIR)/$(NORMAL_LIB) install-elf-and-links: -$(RM) $(DEST_LIBDIR)/$(ELFLIB) -$(RM) $(DEST_LIBDIR)/$(ELFLIB_MAJOR) @echo installing $(ELFLIB_BUILD_NAME) in $(DEST_LIBDIR) $(INSTALL) $(ELFDIR_ELF_LIB) $(DEST_LIBDIR)/ -cd $(DEST_LIBDIR) && $(LN) $(ELFLIB_BUILD_NAME) $(ELFLIB_MAJOR) -cd $(DEST_LIBDIR) && $(LN) $(ELFLIB_MAJOR) $(ELFLIB) @echo "" @echo $(ELFLIB_BUILD_NAME) created in $(DEST_LIBDIR). @echo The links $(ELFLIB) and $(ELFLIB_MAJOR) to $(ELFLIB_BUILD_NAME) were also created. @echo "" # On cygwin, the DLL must be installed in the bin directory and the import-lib # goes in the lib directory install-elf-cygwin: $(INSTALL_DATA) $(ELFDIR_DLL_LIB) $(DEST_LIBDIR)/ $(MKINSDIR) $(DEST_BINDIR) $(INSTALL) $(ELFDIR_ELF_LIB) $(DEST_BINDIR)/ install-elf: elf install-headers install-docs $(DEST_LIBDIR) $(INSTALL_ELFLIB_TARGET) install-all: install-elf install-static install: install-all #--------------------------------------------------------------------------- # Tests #--------------------------------------------------------------------------- runtests: $(OBJDIR_NORMAL_LIB) static cd test; $(MAKE) CC="$(CC)" CFLAGS="$(CFLAGS)" OTHER_CFLAGS="$(OTHER_CFLAGS)" OTHER_LIBS="$(OTHER_LIBS)" SLANGLIB="$(OBJDIR)" #--------------------------------------------------------------------------- # Housekeeping #--------------------------------------------------------------------------- elf-clean: -$(RM) $(ELFDIR)/* clean: elf-clean -$(RM) *~ "#"* -$(RM) $(OBJDIR)/* -$(RM) $(ELFDIR)/* @cd test; $(MAKE) clean distclean: clean -$(RM_R) $(OBJDIR) $(ELFDIR) Makefile sysconf.h $(CONFIG_H) terminfo.inc # The symlinks target is for my own private use. It simply creates the object # directory as a symbolic link to a local disk instead of an NFS mounted one. symlinks: -/bin/rm -f $(ARCH)objs mkdir -p $(HOME)/sys/$(ARCH)/objs/slang/src ln -s $(HOME)/sys/$(ARCH)/objs/slang/src $(ARCH)objs @echo "Also try: make elfsymlinks" elfsymlinks: symlinks -/bin/rm -f elf$(ARCH)objs mkdir -p $(HOME)/sys/$(ARCH)/objs/slang/src/elf ln -s $(HOME)/sys/$(ARCH)/objs/slang/src/elf elf$(ARCH)objs slang.h: $(SRCDIR)/../changes.txt if [ -x $(UPDATE_VERSION_SCRIPT) ]; then \ $(UPDATE_VERSION_SCRIPT) $(SRCDIR)/../changes.txt $(SRCDIR)/slang.h; \ fi # #--------------------------------------------------------------------------- # Object Rules : These are created from the configure script (hopefully) #---------------------------------------------------------------------------