History Of Ticket 604bb68b5c25a5c6
Bounty program for improvements to Tcl and certain Tcl packages.

Artifacts Associated With Ticket 604bb68b5c25a5c6

  1. Ticket change [bc36d8b739] (rid 1417) by anonymous on 2019-05-22 08:17:11:

    1. foundin initialized to: "1.7.16"
    2. icomment:
      no ./win folder with makefile.vc does exist. Any idea ?
      
    3. login: "anonymous"
    4. mimetype: "text/x-fossil-plain"
    5. private_contact initialized to: "ae8d3001d6e30dbc70d115dbfe4526c4883e8623"
    6. severity initialized to: "Important"
    7. status initialized to: "Open"
    8. title initialized to:
      How to build Tcl tls on Windows 64 bit (VisualStudio 12) from scratch?
      
    9. type initialized to: "Build Problem"
  2. Ticket change [b15c73c62c] (rid 1451) by anonymous on 2019-09-26 14:36:00:

    1. icomment: "See also ticket 740a7ac60d of 2017-05-03."
    2. login: "anonymous"
    3. mimetype: "text/x-fossil-plain"
    4. priority changed to: "Immediate"
    5. resolution changed to: "Open"
    6. username: "R. J. Mathar"
  3. Ticket change [b2b6ac0b93] (rid 1540) by oehhar on 2020-10-15 10:40:53:

    1. icomment:
      I have build-up a fist sketch of an nmake build system.
      
      I have prepared a branch [bug-604bb68b5c-nmake] with commit [2babef91c5].
      Unfortunately, user "oehhar" has no write access to the repository, so it did not commit.
      
      May I ask for commit rights for oehhar or do you prefer a patch ?
      
      Thank you,
      Harald
      
    2. login: "oehhar"
    3. mimetype: "text/x-fossil-wiki"
    4. username: "oehhar"
  4. Ticket change [321d35e5f7] (rid 1541) by oehhar on 2020-10-20 16:11:58:

    1. icomment:
      Here is the patch starting from checkin [9c32a526ed] for your convenience.
      
      Enjoy,
      Harald
      
      <verbatim>
      Index: tls.c
      ==================================================================
      --- tls.c
      +++ tls.c
      @@ -1774,11 +1774,11 @@
        *	 create the ssl command, initialise ssl context
        *
        *-------------------------------------------------------------------
        */
       
      -int Tls_Init(Tcl_Interp *interp) {
      +DLLEXPORT int Tls_Init(Tcl_Interp *interp) {
       	const char tlsTclInitScript[] = {
       #include "tls.tcl.h"
                   0x00
       	};
       
      @@ -1834,11 +1834,11 @@
        *		A standard Tcl error code.
        *
        *------------------------------------------------------*
        */
       
      -int Tls_SafeInit(Tcl_Interp *interp) {
      +DLLEXPORT int Tls_SafeInit(Tcl_Interp *interp) {
       	dprintf("Called");
       	return(Tls_Init(interp));
       }
       
       /*
      
      Index: tls.h
      ==================================================================
      --- tls.h
      +++ tls.h
      @@ -21,9 +21,9 @@
       #include <tcl.h>
       
       /*
        * Initialization routines -- our entire public C API.
        */
      -int Tls_Init(Tcl_Interp *interp);
      -int Tls_SafeInit(Tcl_Interp *interp);
      +DLLEXPORT int Tls_Init(Tcl_Interp *interp);
      +DLLEXPORT int Tls_SafeInit(Tcl_Interp *interp);
       
       #endif /* _TLS_H */
      
      ADDED   win/README.txt
      Index: win/README.txt
      ==================================================================
      --- win/README.txt
      +++ win/README.txt
      @@ -0,0 +1,66 @@
      +	Windows DLL Build instructions using nmake build system
      +	2020-10-15 [email protected]
      +
      +Properties:
      +- 32 bit DLL
      +- VisualStudio 2015
      +Note: Vuisual C++ 6 does not build OpenSSL (long long syntax error)
      +- Cygwin32 (temporary helper, please help to replace by tclsh)
      +- OpenSSL statically linked to TCLTLS DLL.
      +Note: Dynamic linking also works but results in a DLL dependeny on OPENSSL DLL's
      +
      +1) Build OpenSSL static libraries:
      +
      +OpenSSL source distribtution unpacked in:
      +c:\test\tcltls\Openssl_1_1_1h
      +
      +- Install Perl from http://strawberryperl.com/download/5.32.0.1/strawberry-perl-5.32.0.1-32bit.msi
      +  to C:\perl
      +  (ActivePerl failed due to missing 32 bit console module)
      +- Install NASM Assembler:
      +
      +https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/win32/nasm-2.15.05-installer-x86.exe
      +  to C:\Program Files (x86)\NASM
      +  
      +-> Visual Studio x86 native prompt.
      +
      +set Path=%PATH%;C:\Program Files (x86)\NASM;C:\Perl\perl\bin
      +
      +perl Configure VC-WIN32 --prefix=c:\test\tcltls\openssl --openssldir=c:\test\tcltls\openssldir no-shared no-filenames threads
      +
      +nmake
      +nmake test
      +namke install
      +
      +2) Build TCLTLS
      +
      +Unzip distribution in:
      +c:\test\tcltls\tcltls-1.7.22
      +
      +-> start cygwin bash prompt
      +
      +cd /cygdrive/c/test/tcltls/tcltls-1.7.22
      +./gen_dh_params > dh_params.h
      +
      +od -A n -v -t xC < 'tls.tcl' > tls.tcl.h.new.1
      +sed '[email protected][^0-9A-Fa-f]@@g;[email protected]@0x&, @g' < tls.tcl.h.new.1 > tls.tcl.h
      +rm -f tls.tcl.h.new.1
      +
      +-> Visual Studio x86 native prompt.
      +
      +cd C:\test\tcltls\tcltls-1.7.22\win
      +
      +nmake -f makefile.vc TCLDIR=c:\test\tcl8610 SSL_INSTALL_FOLDER=C:\test\tcltls\openssl
      +
      +nmake -f makefile.vc install TCLDIR=c:\test\tcl8610 INSTALLDIR=c:\test\tcltls SSL_INSTALL_FOLDER=C:\test\tcltls\openssl
      +
      +tls.c: 
      +Lines 1779, 1839: replace
      +int Tls_Init by
      +DLLEXPORT int  Tls_Init
      +
      +tls.h: same change
      +
      +lappend auto_path {C:\test\tcltls\tls1.7.22}
      +package require tls
      +
      
      ADDED   win/makefile.vc
      Index: win/makefile.vc
      ==================================================================
      --- win/makefile.vc
      +++ win/makefile.vc
      @@ -0,0 +1,24 @@
      +# call nmake with additional parameter SSL_INSTALL_FOLDER= with the
      +# OpenSSL instalation folder following.
      +
      +PROJECT=tls
      +DOTVERSION = 1.7.22
      +
      +PRJ_INCLUDES	= -I"$(SSL_INSTALL_FOLDER)\include"
      +PRJ_DEFINES =  -D NO_SSL2 -D NO_SSL3 -D _CRT_SECURE_NO_WARNINGS
      +
      +PRJ_LIBS = \
      +	"$(SSL_INSTALL_FOLDER)\lib\libssl.lib" \
      +	"$(SSL_INSTALL_FOLDER)\lib\libcrypto.lib" \
      +	WS2_32.LIB GDI32.LIB ADVAPI32.LIB CRYPT32.LIB USER32.LIB
      +
      +PRJ_OBJS = $(TMP_DIR)\tls.obj \
      +               $(TMP_DIR)\tlsBIO.obj \
      +               $(TMP_DIR)\tlsIO.obj \
      +               $(TMP_DIR)\tlsX509.obj
      +
      +!include "rules-ext.vc"
      +!include "targets.vc"
      +
      +pkgindex: default-pkgindex
      +
      
      ADDED   win/targets.vc
      Index: win/targets.vc
      ==================================================================
      --- win/targets.vc
      +++ win/targets.vc
      @@ -0,0 +1,98 @@
      +#------------------------------------------------------------- -*- makefile -*-
      +# targets.vc --
      +#
      +# Part of the nmake based build system for Tcl and its extensions.
      +# This file defines some standard targets for the convenience of extensions
      +# and can be optionally included by the extension makefile.
      +# See TIP 477 (https://core.tcl-lang.org/tips/doc/trunk/tip/477.md) for docs.
      +
      +$(PROJECT): setup pkgindex $(PRJLIB)
      +
      +!ifdef PRJ_STUBOBJS
      +$(PROJECT): $(PRJSTUBLIB)
      +$(PRJSTUBLIB): $(PRJ_STUBOBJS)
      +	$(LIBCMD) $**
      +
      +$(PRJ_STUBOBJS):
      +	$(CCSTUBSCMD) %s
      +!endif # PRJ_STUBOBJS
      +
      +!ifdef PRJ_MANIFEST
      +$(PROJECT): $(PRJLIB).manifest
      +$(PRJLIB).manifest: $(PRJ_MANIFEST)
      +	@nmakehlp -s << $** >[email protected]
      [email protected]@	  $(MACHINE:IX86=X86)
      +<<
      +!endif
      +
      +!if "$(PROJECT)" != "tcl" && "$(PROJECT)" != "tk"
      +$(PRJLIB): $(PRJ_OBJS) $(RESFILE)
      +!if $(STATIC_BUILD)
      +       $(LIBCMD) $**
      +!else
      +       $(DLLCMD) $**
      +       $(_VC_MANIFEST_EMBED_DLL)
      +!endif
      +       [email protected] $*.exp
      +!endif
      +
      +!if "$(PRJ_HEADERS)" != "" && "$(PRJ_OBJS)" != ""
      +$(PRJ_OBJS): $(PRJ_HEADERS)
      +!endif
      +
      +# If parent makefile has defined stub objects, add their installation
      +# to the default install
      +!if "$(PRJ_STUBOBJS)" != ""
      +default-install: default-install-stubs
      +!endif
      +
      +# Unlike the other default targets, these cannot be in rules.vc because
      +# the executed command depends on existence of macro PRJ_HEADERS_PUBLIC
      +# that the parent makefile will not define until after including rules-ext.vc
      +!if "$(PRJ_HEADERS_PUBLIC)" != ""
      +default-install: default-install-headers
      +default-install-headers:
      +	@echo Installing headers to '$(INCLUDE_INSTALL_DIR)'
      +	@for %f in ($(PRJ_HEADERS_PUBLIC)) do @$(COPY) %f "$(INCLUDE_INSTALL_DIR)"
      +!endif
      +
      +!if "$(DISABLE_STANDARD_TARGETS)" == ""
      +DISABLE_STANDARD_TARGETS = 0
      +!endif
      +
      +!if "$(DISABLE_TARGET_setup)" == ""
      +DISABLE_TARGET_setup = 0
      +!endif
      +!if "$(DISABLE_TARGET_install)" == ""
      +DISABLE_TARGET_install = 0
      +!endif
      +!if "$(DISABLE_TARGET_clean)" == ""
      +DISABLE_TARGET_clean = 0
      +!endif
      +!if "$(DISABLE_TARGET_test)" == ""
      +DISABLE_TARGET_test = 0
      +!endif
      +!if "$(DISABLE_TARGET_shell)" == ""
      +DISABLE_TARGET_shell = 0
      +!endif
      +
      +!if !$(DISABLE_STANDARD_TARGETS)
      +!if !$(DISABLE_TARGET_setup)
      +setup: default-setup
      +!endif
      +!if !$(DISABLE_TARGET_install)
      +install: default-install
      +!endif
      +!if !$(DISABLE_TARGET_clean)
      +clean: default-clean
      +realclean: hose
      +hose: default-hose
      +distclean: realclean default-distclean
      +!endif
      +!if !$(DISABLE_TARGET_test)
      +test: default-test
      +!endif
      +!if !$(DISABLE_TARGET_shell)
      +shell: default-shell
      +!endif
      +!endif # DISABLE_STANDARD_TARGETS
      
      </verbatim>
      
    2. login: "oehhar"
    3. mimetype: "text/x-fossil-wiki"
    4. username: "oehhar"
  5. Ticket change [55a6899182] (rid 1550) by oehhar on 2021-01-14 12:18:20:

    1. icomment:
      Thank you, Kevin.
      
      The sync passed now.
      
      Thanks,
      Harald
      
    2. login: "oehhar"
    3. mimetype: "text/x-fossil-wiki"
    4. username: "oehhar"
  6. Ticket change [07b6b5a31e] (rid 1554) by oehhar on 2021-01-14 13:01:59:

    1. icomment:
      Merged by commit [b5c41cdeb6].
      
      The build requires cygwin or linux to prepare the build.
      Alex and/or Christian may care to solve those dependencies by working on a TEA build.
      
      Bug closed.
      
      Thank you,
      Harald
      
    2. login: "oehhar"
    3. mimetype: "text/x-fossil-wiki"
    4. resolution changed to: "Fixed"
    5. status changed to: "Closed"
    6. username: "oehhar"