234 lines
6.1 KiB
Makefile
234 lines
6.1 KiB
Makefile
|
@if NO_SILENT_RULES
|
||
|
Q :=
|
||
|
ECHO := @:
|
||
|
@else
|
||
|
# make V=1 for verbose make output
|
||
|
Q := @
|
||
|
ECHO := @echo
|
||
|
ifeq ($(V),1)
|
||
|
ifeq ("$(origin V)", "command line")
|
||
|
Q :=
|
||
|
ECHO := @:
|
||
|
endif
|
||
|
endif
|
||
|
@endif
|
||
|
|
||
|
# Tools
|
||
|
CC = @CCACHE@ @CC@
|
||
|
CXX = @CCACHE@ @CXX@
|
||
|
RANLIB = @RANLIB@
|
||
|
AR = @AR@
|
||
|
STRIP = @STRIP@
|
||
|
@if COVERAGE
|
||
|
export CCACHE_DISABLE := 1
|
||
|
@endif
|
||
|
|
||
|
# Configuration
|
||
|
|
||
|
SH_CFLAGS ?= @SH_CFLAGS@
|
||
|
SH_LDFLAGS ?= @SH_LDFLAGS@
|
||
|
@if SH_SOPREFIX
|
||
|
SH_LDFLAGS += @SH_SOPREFIX@libjim@LIBSOEXT@
|
||
|
@endif
|
||
|
SHOBJ_CFLAGS ?= @SHOBJ_CFLAGS@
|
||
|
@if JIM_STATICLIB
|
||
|
SHOBJ_LDFLAGS ?= @SHOBJ_LDFLAGS@
|
||
|
@else
|
||
|
SHOBJ_LDFLAGS ?= @SHOBJ_LDFLAGS_R@
|
||
|
@endif
|
||
|
CFLAGS = @CFLAGS@ @CCOPTS@ @CPPFLAGS@
|
||
|
CXXFLAGS = @CXXFLAGS@ @CXXOPTS@
|
||
|
LDFLAGS = @LDFLAGS@
|
||
|
LDLIBS += @LDLIBS@
|
||
|
LIBS += @LIBS@
|
||
|
exec_prefix ?= @exec_prefix@
|
||
|
prefix ?= @prefix@
|
||
|
docdir = @docdir@
|
||
|
srcdir := @srcdir@
|
||
|
|
||
|
CC += -Wall $(OPTIM) -I.
|
||
|
CXX += -Wall $(OPTIM) -I.
|
||
|
@if [get-define srcdir] ne "."
|
||
|
CFLAGS += -I@srcdir@
|
||
|
CXXFLAGS += -I@srcdir@
|
||
|
VPATH := @srcdir@
|
||
|
@endif
|
||
|
|
||
|
@if JIM_STATICLIB
|
||
|
LIBJIM := libjim.a
|
||
|
@else
|
||
|
LIBJIM := libjim@LIBSOEXT@
|
||
|
SH_LIBJIM := $(LIBJIM)
|
||
|
CC += $(SH_CFLAGS)
|
||
|
CXX += $(SH_CFLAGS)
|
||
|
DEF_LD_PATH := @LD_LIBRARY_PATH@="@builddir@:$(@LD_LIBRARY_PATH@)"
|
||
|
@endif
|
||
|
|
||
|
@if HAVE_CXX_EXTENSIONS
|
||
|
JIMSH_CC := $(CXX) $(CXXFLAGS)
|
||
|
@else
|
||
|
JIMSH_CC := $(CC) $(CFLAGS)
|
||
|
@endif
|
||
|
|
||
|
OBJS := _load-static-exts.o jim-subcmd.o jim-interactive.o jim-format.o jim.o utf8.o jimregexp.o jimiocompat.o \
|
||
|
@EXTRA_OBJS@ @C_EXT_OBJS@ @TCL_EXT_OBJS@
|
||
|
|
||
|
JIMSH := jimsh@EXEEXT@
|
||
|
|
||
|
@if JIM_INSTALL
|
||
|
INSTALL_DATA_DIR ?= mkdir -p
|
||
|
INSTALL_DATA ?= cp
|
||
|
INSTALL_PROGRAM ?= cp
|
||
|
@endif
|
||
|
|
||
|
all: $(JIMSH) @C_EXT_SHOBJS@
|
||
|
|
||
|
# Create C extensions from pure Tcl extensions
|
||
|
.SUFFIXES: .tcl
|
||
|
.tcl.o:
|
||
|
$(ECHO) " TCLEXT _$*.c"
|
||
|
$(Q)@tclsh@ @srcdir@/make-c-ext.tcl $< >_$*.c
|
||
|
$(ECHO) " CC $@"
|
||
|
$(Q)$(CC) $(CFLAGS) -c -o $@ _$*.c
|
||
|
|
||
|
.c.o:
|
||
|
$(ECHO) " CC $@"
|
||
|
$(Q)$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
|
||
|
|
||
|
$(JIMSH): $(LIBJIM) jimsh.o initjimsh.o
|
||
|
$(ECHO) " LINK $@"
|
||
|
$(Q)$(JIMSH_CC) @SH_LINKRPATH_FLAGS@ @SH_LINKFLAGS@ $(LDFLAGS) -o $@ jimsh.o initjimsh.o $(LIBJIM) $(LDLIBS) $(LIBS)
|
||
|
|
||
|
@if JIM_INSTALL
|
||
|
install: all @TCL_EXTS@ install-exec install-docs
|
||
|
$(INSTALL_DATA_DIR) $(DESTDIR)@libdir@/jim
|
||
|
$(INSTALL_DATA) $(LIBJIM) $(DESTDIR)@libdir@
|
||
|
$(INSTALL_DATA) @srcdir@/README.extensions @C_EXT_SHOBJS@ $(DESTDIR)@libdir@/jim
|
||
|
for i in tcltest.tcl @TCL_EXTS@; do $(INSTALL_DATA) @srcdir@/$$i $(DESTDIR)@libdir@/jim; done
|
||
|
$(INSTALL_DATA_DIR) $(DESTDIR)@includedir@
|
||
|
$(INSTALL_DATA) @srcdir@/jim.h @srcdir@/jim-eventloop.h @srcdir@/jim-signal.h \
|
||
|
@srcdir@/jim-subcmd.h @srcdir@/jim-win32compat.h $(DESTDIR)@includedir@
|
||
|
$(INSTALL_DATA) jim-config.h $(DESTDIR)@includedir@
|
||
|
$(INSTALL_DATA_DIR) $(DESTDIR)@bindir@
|
||
|
$(INSTALL_DATA) build-jim-ext $(DESTDIR)@bindir@
|
||
|
$(INSTALL_DATA_DIR) $(DESTDIR)@libdir@/pkgconfig
|
||
|
$(INSTALL_DATA) jimtcl.pc $(DESTDIR)@libdir@/pkgconfig
|
||
|
|
||
|
install-exec: all
|
||
|
$(INSTALL_DATA_DIR) $(DESTDIR)@bindir@
|
||
|
$(INSTALL_PROGRAM) $(JIMSH) $(DESTDIR)@bindir@
|
||
|
$(INSTALL_PROGRAM) @srcdir@/jimdb $(DESTDIR)@bindir@
|
||
|
|
||
|
uninstall:
|
||
|
rm -f $(DESTDIR)@bindir@/$(JIMSH)
|
||
|
rm -f $(DESTDIR)@bindir@/build-jim-ext
|
||
|
rm -f $(DESTDIR)@libdir@/$(LIBJIM)
|
||
|
for i in README.extensions @C_EXT_SHOBJS@ @TCL_EXTS@; do rm -f $(DESTDIR)@libdir@/jim/$$i; done
|
||
|
rm -f $(DESTDIR)@includedir@/jim*.h
|
||
|
rm -f $(DESTDIR)@datadir@/doc/jim/Tcl.html
|
||
|
@else
|
||
|
install install-exec: all
|
||
|
uninstall:
|
||
|
@endif
|
||
|
|
||
|
test check: $(JIMSH)
|
||
|
$(DEF_LD_PATH) $(MAKE) -C tests jimsh="@builddir@/jimsh"
|
||
|
|
||
|
$(OBJS) jimsh.o initjimsh.o: Makefile $(wildcard *.h)
|
||
|
|
||
|
@if JIM_UTF8
|
||
|
# Generate the unicode case mapping
|
||
|
utf8.o: _unicode_mapping.c
|
||
|
|
||
|
_unicode_mapping.c: @srcdir@/UnicodeData.txt @srcdir@/parse-unidata.tcl
|
||
|
$(ECHO) " UNIDATA $@"
|
||
|
$(Q)@tclsh@ @srcdir@/parse-unidata.tcl @PARSE_UNIDATA_FLAGS@ @srcdir@/UnicodeData.txt @srcdir@/EastAsianWidth.txt >$@ || ( rm $@; exit 1)
|
||
|
@endif
|
||
|
|
||
|
_load-static-exts.c: @srcdir@/make-load-static-exts.tcl Makefile
|
||
|
$(ECHO) " MKLDEXT $@"
|
||
|
$(Q)@tclsh@ @srcdir@/make-load-static-exts.tcl @STATIC_EXTS@ >$@ || ( rm $@; exit 1)
|
||
|
|
||
|
$(LIBJIM): $(OBJS)
|
||
|
@if JIM_STATICLIB
|
||
|
$(ECHO) " AR $@"
|
||
|
$(Q)$(AR) cr $@ $(OBJS)
|
||
|
$(Q)$(RANLIB) $@
|
||
|
@else
|
||
|
$(ECHO) " LDSO $@"
|
||
|
$(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(SH_LDFLAGS) -o $@ $(OBJS) $(LDLIBS) $(LIBS)
|
||
|
@endif
|
||
|
|
||
|
@BUILD_SHOBJS@
|
||
|
|
||
|
docs: Tcl.html
|
||
|
|
||
|
@if INSTALL_DOCS eq "nodocs"
|
||
|
install-docs:
|
||
|
@endif
|
||
|
|
||
|
@if INSTALL_DOCS eq "docs"
|
||
|
install-docs: docs
|
||
|
$(INSTALL_DATA_DIR) $(DESTDIR)$(docdir)
|
||
|
$(INSTALL_DATA) Tcl.html $(DESTDIR)$(docdir)
|
||
|
@endif
|
||
|
|
||
|
@if INSTALL_DOCS eq "shipped"
|
||
|
install-docs:
|
||
|
$(INSTALL_DATA_DIR) $(DESTDIR)$(docdir)
|
||
|
@echo "Warning: asciidoc not available - installing Tcl_shipped.html"
|
||
|
$(INSTALL_DATA) Tcl_shipped.html $(DESTDIR)$(docdir)/Tcl.html
|
||
|
@endif
|
||
|
|
||
|
Tcl.html: jim_tcl.txt @srcdir@/make-index
|
||
|
@if HAVE_ASCIIDOC
|
||
|
@tclsh@ @srcdir@/make-index $> $^ | @ASCIIDOC@ --attribute footer-style=none -d manpage - >$@
|
||
|
@else
|
||
|
@echo "asciidoc is not available"; false
|
||
|
@endif
|
||
|
|
||
|
coverage:
|
||
|
@if COVERAGE
|
||
|
@if COVERAGE_TOOL eq "lcov"
|
||
|
@LCOV@ -c --rc genhtml_branch_coverage=1 -d . -o lcov.txt
|
||
|
@GENHTML@ --rc genhtml_branch_coverage=1 -o coverage_html lcov.txt > genhtml_output.txt
|
||
|
@LCOV@ --summary lcov.txt
|
||
|
@endif
|
||
|
@if COVERAGE_TOOL eq "gcovr"
|
||
|
@GCOVR@ -s -e 'conftest*' --html --html-details --output coverage.html
|
||
|
@endif
|
||
|
@if COVERAGE_TOOL eq "gcov"
|
||
|
gcov @srcdir@/*.c
|
||
|
@endif
|
||
|
@else
|
||
|
@echo "Use ./configure --coverage to enable code coverage"
|
||
|
@endif
|
||
|
|
||
|
clean:
|
||
|
rm -f *.o *.so *.dll *.exe lib*.a $(JIMSH) $(LIBJIM) Tcl.html _*.c
|
||
|
@if COVERAGE
|
||
|
rm -f *.gcno *.gcov *.gcda */*.gcno */*.gcda */*.gcov coverage*.html
|
||
|
rm -rf coverage_html lcov.txt genhtml_output.txt
|
||
|
@endif
|
||
|
|
||
|
distclean: clean
|
||
|
rm -f jimautoconf.h jim-config.h Makefile config.log jimsh0@EXEEXT@ build-jim-ext
|
||
|
rm -f jimtcl.pc tests/Makefile examples.api/Makefile
|
||
|
|
||
|
ship: Tcl.html
|
||
|
cp $< Tcl_shipped.html
|
||
|
|
||
|
# automake compatibility. do nothing for all these targets
|
||
|
EMPTY_AUTOMAKE_TARGETS := dvi pdf ps info html tags ctags mostlyclean maintainer-clean check installcheck installdirs \
|
||
|
install-pdf install-ps install-info install-html -install-dvi uninstall install-data
|
||
|
.PHONY: $(EMPTY_AUTOMAKE_TARGETS)
|
||
|
$(EMPTY_AUTOMAKE_TARGETS):
|
||
|
|
||
|
# automake compatibility - install sources from the current dir to $(distdir)
|
||
|
distdir_full := $(shell cd $(distdir); pwd)
|
||
|
distdir:
|
||
|
cd "@srcdir@"; git ls-files | cpio -pdmu $(distdir_full)
|
||
|
|
||
|
reconfig:
|
||
|
CC='@CC@' @AUTOREMAKE@
|