diff --git a/lang/tcl86/Makefile b/lang/tcl86/Makefile index d68cf9f3da91..a15f390805c6 100644 --- a/lang/tcl86/Makefile +++ b/lang/tcl86/Makefile @@ -1,97 +1,98 @@ PORTNAME= tcl DISTVERSION= ${TCL_VERSION}${TCL_RC} +PORTREVISION= 1 CATEGORIES= lang MASTER_SITES= SF/tcl/Tcl/${TCL_VERSION} PKGNAMESUFFIX= ${SHORT_TCL_VER} DISTNAME= ${PORTNAME}${DISTVERSION}-src MAINTAINER= tcltk@FreeBSD.org COMMENT= Tool Command Language WWW= https://www.tcl.tk/ LICENSE= TclTk LICENSE_NAME= Tcl/Tk License LICENSE_FILE= ${WRKSRC}/../license.terms LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept USES= cpe USE_LDCONFIG= yes GNU_CONFIGURE= yes GNU_CONFIGURE_MANPREFIX=${PREFIX}/share CONFIGURE_ARGS= --enable-shared \ --enable-man-suffix=.${MAN_SUFFIX} \ --includedir=${PREFIX}/include/tcl${TCL_VER} CONFIGURE_ENV= PORTSDIR=${PORTSDIR} LDFLAGS+= -Wl,-z,muldefs OPTIONS_DEFINE= TCLMAN TZDATA THREADS DEBUG OPTIONS_DEFINE_amd64= DTRACE OPTIONS_DEFINE_powerpc64= DTRACE OPTIONS_DEFINE_powerpc64le= DTRACE OPTIONS_DEFAULT=TCLMAN TZDATA THREADS OPTIONS_DEFAULT_amd64= DTRACE OPTIONS_DEFAULT_powerpc64= DTRACE OPTIONS_DEFAULT_powerpc64le= DTRACE TCLMAN_DESC= Install Tcl function manpages TZDATA_DESC= Install Tcl timezone data OPTIONS_SUB= yes .if !exists(/usr/sbin/dtrace) OPTIONS_EXCLUDE+= DTRACE .endif PATCH_WRKSRC= ${WRKDIR}/${PORTNAME}${TCL_VERSION} WRKSRC= ${PATCH_WRKSRC}/unix ALL_TARGET= all INSTALL_TARGET= install-strip install-libraries install-private-headers TEST_TARGET= test-tcl TCL_VERSION= 8.6.18 TCL_VER= ${TCL_VERSION:R} TCL_RC= SHORT_TCL_VER= ${TCL_VER:S/.//} MAN_SUFFIX= ${PKGBASE} MAKE_ENV= SHORT_TCL_VER=${SHORT_TCL_VER} \ MAN_SUFFIX=.${MAN_SUFFIX} PLIST_SUB= TCL_VER=${TCL_VER} \ SHORT_TCL_VER=${SHORT_TCL_VER} TCLMAN_INSTALL_TARGET= install-doc TZDATA_INSTALL_TARGET= install-tzdata THREADS_CONFIGURE_ENABLE= threads DEBUG_CONFIGURE_ENABLE= symbols DTRACE_CONFIGURE_ENABLE= dtrace .include .if ${PORT_OPTIONS:MDTRACE} PLIST_SUB+= DTRACE="" .else PLIST_SUB+= DTRACE="@comment " .endif post-patch: ${REINPLACE_CMD} -e \ 's|@TCL_BUILD_LIB_SPEC@|@TCL_LIB_SPEC@|; \ s|@TCL_BUILD_STUB_LIB_SPEC@|@TCL_STUB_LIB_SPEC@|; \ s|@TCL_BUILD_STUB_LIB_PATH@|@TCL_STUB_LIB_PATH@|; \ s|@TCL_SRC_DIR@|${PREFIX}/include/tcl${TCL_VER}|' \ ${PATCH_WRKSRC}/unix/tclConfig.sh.in ${REINPLACE_CMD} -e \ 's|MODULE_INSTALL_DIR)/8.[56]|SCRIPT_INSTALL_DIR)|' \ ${PATCH_WRKSRC}/unix/Makefile.in post-patch-TCLMAN-off: @${FIND} ${PATCH_WRKSRC}/pkgs -name Makefile.in | ${XARGS} ${REINPLACE_CMD} \ -e '/^install:/s|install-doc||' post-configure: ${REINPLACE_CMD} \ -e 's,-DNO_MEMMOVE=1,,' -e 's,-DNO_STRING_H=1,,' \ -e 's,^COMPAT_OBJS.*,,' ${WRKSRC}/Makefile .include diff --git a/lang/tcl86/files/patch-unix-Makefile.in b/lang/tcl86/files/patch-unix-Makefile.in index 17183ce026f3..3ba69c5027aa 100644 --- a/lang/tcl86/files/patch-unix-Makefile.in +++ b/lang/tcl86/files/patch-unix-Makefile.in @@ -1,166 +1,183 @@ --- unix/Makefile.in.orig 2026-04-17 18:51:37 UTC +++ unix/Makefile.in @@ -58,6 +58,8 @@ INCLUDE_INSTALL_DIR = $(INSTALL_ROOT)$(includedir) # Directory in which to install the include file tcl.h: INCLUDE_INSTALL_DIR = $(INSTALL_ROOT)$(includedir) +GENERIC_INCLUDE_INSTALL_DIR = $(INCLUDE_INSTALL_DIR)/generic +UNIX_INCLUDE_INSTALL_DIR = $(INCLUDE_INSTALL_DIR)/unix # Path to the private tcl header dir: PRIVATE_INCLUDE_DIR = @PRIVATE_INCLUDE_DIR@ @@ -84,10 +86,10 @@ HTML_INSTALL_DIR = $(INSTALL_ROOT)$(HTML_DIR) HTML_INSTALL_DIR = $(INSTALL_ROOT)$(HTML_DIR) # Directory in which to install the configuration file tclConfig.sh -CONFIG_INSTALL_DIR = $(INSTALL_ROOT)$(libdir) +CONFIG_INSTALL_DIR = $(SCRIPT_INSTALL_DIR) # Directory in which to install bundled packages: -PACKAGE_DIR = @PACKAGE_DIR@ +PACKAGE_DIR = $(SCRIPT_INSTALL_DIR) # Package search path. TCL_PACKAGE_PATH = @TCL_PACKAGE_PATH@ @@ -151,7 +153,7 @@ INSTALL_STRIP_PROGRAM = strip # distribution, which is slower but guaranteed to work. INSTALL_STRIP_PROGRAM = strip -INSTALL_STRIP_LIBRARY = strip -x +INSTALL_STRIP_LIBRARY = strip --strip-unneeded INSTALL = $(SHELL) $(UNIX_DIR)/install-sh -c INSTALL_PROGRAM = ${INSTALL} @@ -622,9 +624,9 @@ SRCS = $(GENERIC_SRCS) $(UNIX_SRCS) $(NOTIFY_SRCS) \ # Start of rules #-------------------------------------------------------------------------- -all: binaries libraries doc packages +all: binaries libraries doc -binaries: ${LIB_FILE} ${TCL_EXE} +binaries: ${LIB_FILE} ${TCL_EXE} libtcl${SHORT_TCL_VER}.a libraries: @@ -635,7 +637,13 @@ ${LIB_FILE}: ${STUB_LIB_FILE} ${OBJS} ${LIB_FILE}: ${STUB_LIB_FILE} ${OBJS} rm -f $@ @MAKE_LIB@ + @ln -sf ${LIB_FILE} ./libtcl${SHORT_TCL_VER}.so +libtcl${SHORT_TCL_VER}.a: ${OBJS} + rm -f libtcl${SHORT_TCL_VER}.a + ar cr libtcl${SHORT_TCL_VER}.a ${OBJS} + ${RANLIB} libtcl${SHORT_TCL_VER}.a + ${STUB_LIB_FILE}: ${STUB_LIB_OBJS} @if test "x${LIB_FILE}" = "xlibtcl${MAJOR_VERSION}.${MINOR_VERSION}.dll"; then \ (cd ${TOP_DIR}/win; ${MAKE} winextensions); \ @@ -787,13 +795,13 @@ trace-test: ${TCLTEST_EXE} # Installation rules #-------------------------------------------------------------------------- -INSTALL_BASE_TARGETS = install-binaries install-libraries install-msgs $(INSTALL_TZDATA) +INSTALL_BASE_TARGETS = install-binaries install-msgs $(INSTALL_TZDATA) INSTALL_DOC_TARGETS = install-doc INSTALL_PACKAGE_TARGETS = install-packages INSTALL_DEV_TARGETS = install-headers INSTALL_EXTRA_TARGETS = @EXTRA_INSTALL@ -INSTALL_TARGETS = $(INSTALL_BASE_TARGETS) $(INSTALL_DEV_TARGETS) $(INSTALL_DOC_TARGETS) \ - $(INSTALL_PACKAGE_TARGETS) $(INSTALL_EXTRA_TARGETS) +INSTALL_TARGETS = $(INSTALL_BASE_TARGETS) $(INSTALL_DEV_TARGETS) \ + $(INSTALL_EXTRA_TARGETS) install: $(INSTALL_TARGETS) @@ -813,6 +821,11 @@ install-binaries: binaries @echo "Installing $(LIB_FILE) to $(DLL_INSTALL_DIR)/" @@INSTALL_LIB@ @chmod 555 "$(DLL_INSTALL_DIR)/$(LIB_FILE)" + @ln -sf $(LIB_FILE) "$(DLL_INSTALL_DIR)"/libtcl${SHORT_TCL_VER}.so + @echo "Installing libtcl${SHORT_TCL_VER}.a to $(DLL_INSTALL_DIR)" + @$(INSTALL_DATA) libtcl${SHORT_TCL_VER}.a "$(DLL_INSTALL_DIR)"/libtcl${SHORT_TCL_VER}.a + @(cd "$(DLL_INSTALL_DIR)" && ${RANLIB} libtcl${SHORT_TCL_VER}.a) + @chmod 555 "$(DLL_INSTALL_DIR)"/libtcl${SHORT_TCL_VER}.a @echo "Installing ${TCL_EXE} as $(BIN_INSTALL_DIR)/tclsh$(VERSION)${EXE_SUFFIX}" @$(INSTALL_PROGRAM) ${TCL_EXE} "$(BIN_INSTALL_DIR)/tclsh$(VERSION)${EXE_SUFFIX}" @echo "Installing tclConfig.sh to $(CONFIG_INSTALL_DIR)/" @@ -825,33 +838,19 @@ install-binaries: binaries @INSTALL_STUB_LIB@ ; \ fi @EXTRA_INSTALL_BINARIES@ - @echo "Installing pkg-config file to $(LIB_INSTALL_DIR)/pkgconfig/" - @$(INSTALL_DATA_DIR) "$(LIB_INSTALL_DIR)/pkgconfig" - @$(INSTALL_DATA) tcl.pc "$(LIB_INSTALL_DIR)/pkgconfig/tcl.pc" + @echo "Installing pkg-config file to $(prefix)/libdata/pkgconfig/" + @$(INSTALL_DATA_DIR) "$(INSTALL_ROOT)$(prefix)/libdata/pkgconfig" + @$(INSTALL_DATA) tcl.pc "$(INSTALL_ROOT)/$(prefix)/libdata/pkgconfig/tcl86.pc" install-libraries: libraries - @for i in "$(SCRIPT_INSTALL_DIR)" "$(MODULE_INSTALL_DIR)"; \ + @for i in opt0.4 http1.0 platform encoding; \ do \ - if [ ! -d "$$i" ] ; then \ - echo "Making directory $$i"; \ - $(INSTALL_DATA_DIR) "$$i"; \ - fi; \ - done; - @for i in opt0.4 http1.0 encoding; \ - do \ if [ ! -d "$(SCRIPT_INSTALL_DIR)/$$i" ] ; then \ echo "Making directory $(SCRIPT_INSTALL_DIR)/$$i"; \ $(INSTALL_DATA_DIR) "$(SCRIPT_INSTALL_DIR)/$$i"; \ else true; \ fi; \ done; - @for i in 8.5 8.6 8.6/platform; \ - do \ - if [ ! -d "$(MODULE_INSTALL_DIR)/$$i" ] ; then \ - echo "Making directory $(MODULE_INSTALL_DIR)/$$i"; \ - $(INSTALL_DATA_DIR) "$(MODULE_INSTALL_DIR)/$$i"; \ - fi; \ - done; @echo "Installing library files to $(SCRIPT_INSTALL_DIR)/" @for i in $(TOP_DIR)/library/*.tcl $(TOP_DIR)/library/tclIndex \ $(UNIX_DIR)/tclAppInit.c @LDAIX_SRC@ @DTRACE_SRC@ ; do \ +@@ -885,11 +884,11 @@ install-libraries: libraries + @for i in $(TOP_DIR)/library/encoding/*.enc; do \ + $(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)/encoding"; \ + done +- @if [ -n "$(TCL_MODULE_PATH)" -a -f $(TOP_DIR)/library/tm.tcl ] ; then \ +- echo "Customizing tcl module path"; \ +- echo "if {![interp issafe]} { ::tcl::tm::roots [list $(TCL_MODULE_PATH)] }" >> \ +- "$(SCRIPT_INSTALL_DIR)/tm.tcl"; \ +- fi ++ @echo "Customizing tcl module path"; ++ echo "if {![interp issafe]} { ::tcl::tm::roots {$(TCL_MODULE_PATH)} }" >> \ ++ "$(SCRIPT_INSTALL_DIR)"/tm.tcl; ++ echo "::tcl::tm::path add {$(TCL_LIBRARY)}" >> \ ++ "$(SCRIPT_INSTALL_DIR)"/tm.tcl; + + install-tzdata: + @for i in tzdata; do \ @@ -956,7 +955,7 @@ install-headers: done install-headers: - @for i in "$(INCLUDE_INSTALL_DIR)"; do \ + @for i in "$(INCLUDE_INSTALL_DIR)" "$(GENERIC_INCLUDE_INSTALL_DIR)"; do \ if [ ! -d "$$i" ] ; then \ echo "Making directory $$i"; \ $(INSTALL_DATA_DIR) "$$i"; \ @@ -971,23 +970,22 @@ install-headers: do \ $(INSTALL_DATA) $$i "$(INCLUDE_INSTALL_DIR)"; \ done + @for i in $(GENERIC_DIR)/*.h; do \ + $(INSTALL_DATA) $$i "$(GENERIC_INCLUDE_INSTALL_DIR)"/; \ + done; # Optional target to install private headers install-private-headers: - @for i in "$(PRIVATE_INCLUDE_INSTALL_DIR)"; do \ + @for i in "$(GENERIC_INCLUDE_INSTALL_DIR)" "$(UNIX_INCLUDE_INSTALL_DIR)"; do \ if [ ! -d "$$i" ] ; then \ echo "Making directory $$i"; \ $(INSTALL_DATA_DIR) "$$i"; \ fi; \ done - @echo "Installing private header files to $(PRIVATE_INCLUDE_INSTALL_DIR)/"; - @for i in $(GENERIC_DIR)/tclInt.h $(GENERIC_DIR)/tclIntDecls.h \ - $(GENERIC_DIR)/tclIntPlatDecls.h $(GENERIC_DIR)/tclPort.h \ - $(GENERIC_DIR)/tclOOInt.h $(GENERIC_DIR)/tclOOIntDecls.h \ - $(UNIX_DIR)/tclUnixPort.h; \ + @for i in $(UNIX_DIR)/tclUnixPort.h $(UNIX_DIR)/tclUnixThrd.h @DTRACE_HDR@; \ do \ - $(INSTALL_DATA) $$i "$(PRIVATE_INCLUDE_INSTALL_DIR)"; \ - done + $(INSTALL_DATA) $$i "$(UNIX_INCLUDE_INSTALL_DIR)"; \ + done; @if test -f tclConfig.h; then\ $(INSTALL_DATA) tclConfig.h "$(PRIVATE_INCLUDE_INSTALL_DIR)"; \ fi