Tcl Extension Architecture (TEA) Sample Extension

Check-in [f5f3d48f4e]
Login
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2019 Conference, Houston/TX, US, Nov 4-8
Send your abstracts to tclconference@googlegroups.com
or submit via the online form by Sep 9.

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Moved pkgindex to rules and cleaned up
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | vc-reform
Files: files | file ages | folders
SHA1:f5f3d48f4e92bb244d88dbf2af4cac1741c89e33
User & Date: ashok 2017-10-05 17:07:15
Context
2017-10-06
13:43
Use standard targets from targets.vc check-in: 9107449556 user: ashok tags: vc-reform
2017-10-05
17:07
Moved pkgindex to rules and cleaned up check-in: f5f3d48f4e user: ashok tags: vc-reform
2017-10-04
13:36
Use macros and targets from reworked rules.vc check-in: e2ca4bafe0 user: ashok tags: vc-reform
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to generic/sample.h.

23
24
25
26
27
28
29

30
31
32
33
34
35
36
#else
#   if ((1<<31)<0)
typedef unsigned long sha_uint32_t;
#   else
typedef unsigned int sha_uint32_t;
#   endif
#endif


/*
 * For C++ compilers, use extern "C"
 */

#ifdef __cplusplus
extern "C" {







>







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#else
#   if ((1<<31)<0)
typedef unsigned long sha_uint32_t;
#   else
typedef unsigned int sha_uint32_t;
#   endif
#endif


/*
 * For C++ compilers, use extern "C"
 */

#ifdef __cplusplus
extern "C" {

Changes to win/makefile.vc.

135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169




170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195


196
197



198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248




249
250
251
252
253
254
255
#       Targeting Windows pre64 RETAIL
#       c:\tcl_src\win\>nmake -f makefile.vc MACHINE=IA64
#
#------------------------------------------------------------------------------
#==============================================================================
#------------------------------------------------------------------------------

!if !exist("makefile.vc")
MSG = ^
You must run this makefile only from the directory it is in.^
Please `cd` to its location first.
!error $(MSG)
!endif

#-------------------------------------------------------------------------
# Project specific information (EDIT)
#
# You should edit this with the name and version of your project. This
# information is used to generate the name of the package library and
# it's install location.
#
# For example, the sample extension is  going to build sample05.dll and
# would install it into $(INSTALLDIR)\lib\sample05
#
# You need to specify the object files that need to be linked into your
# binary here.
#
#-------------------------------------------------------------------------

PROJECT = sample

# Uncomment the following line if this is a Tk extension.
#PROJECT_REQUIRES_TK=1
!include "rules-ext.vc"





PRJ_OBJS = \
	$(TMP_DIR)\tclsample.obj \
	$(TMP_DIR)\sample.obj \
!if !$(STATIC_BUILD)
	$(TMP_DIR)\sample.res
!endif

# Additional compiler defines needed for this project
PRJ_DEFINES = -DMODULE_SCOPE=extern \
	      -DPACKAGE_NAME="\"$(PROJECT)\"" \
              -DPACKAGE_VERSION="\"$(DOTVERSION)\"" \
              -D_CRT_SECURE_NO_WARNINGS


#---------------------------------------------------------------------
# TclTest flags
#---------------------------------------------------------------------

!if "$(TESTPAT)" != ""
TESTFLAGS = $(TESTFLAGS) -file $(TESTPAT)
!endif

#---------------------------------------------------------------------
# Project specific targets (EDIT)
#---------------------------------------------------------------------



all:	    setup pkgIndex $(PRJLIB)




$(PRJLIB): $(PRJ_OBJS)
       $(MAKEBINCMD) $**
       $(_VC_MANIFEST_EMBED_DLL)
       -@del $*.exp

pkgIndex:   $(OUT_DIR)\pkgIndex.tcl

test: setup $(PROJECT)
	@set TCL_LIBRARY=$(TCL_LIBRARY:\=/)
	@set TCLLIBPATH=$(OUT_DIR_PATH:\=/)
!if $(TCLINSTALL)
	@set PATH=$(_TCLDIR)\bin;$(PATH)
!else
	@set PATH=$(_TCLDIR)\win\$(BUILDDIRTOP);$(PATH)
!endif
	$(DEBUGGER) $(TCLSH) "$(ROOT)/tests/all.tcl" $(TESTFLAGS)

shell: setup $(PROJECT)
	@set VLERQ_LIBRARY=$(LIBDIR:\=/)
	@set TCL_LIBRARY=$(TCL_LIBRARY:\=/)
	@set TCLLIBPATH=$(OUT_DIR_PATH:\=/)
!if $(TCLINSTALL)
	@set PATH=$(_TCLDIR)\bin;$(PATH)
!else
	@set PATH=$(_TCLDIR)\win\$(BUILDDIRTOP);$(PATH)
!endif
	$(DEBUGGER) $(TCLSH) $(SCRIPT)


#-------------------------------------------------------------------------
# Explicit dependency rules
#
#-------------------------------------------------------------------------

$(OUT_DIR)\pkgIndex.tcl: $(ROOT)\pkgIndex.tcl.in
	@nmakehlp -s << $** > $@
@PACKAGE_VERSION@    $(DOTVERSION)
@PACKAGE_NAME@       $(PROJECT)
@PKG_LIB_FILE@       $(PRJLIBNAME)
<<
	@echo package ifneeded sample $(DOTVERSION) \
	    [list load [file join $$dir $(PRJLIBNAME)] Sample] >> $@

#---------------------------------------------------------------------
# Installation. (EDIT)
#
# You may need to modify this section to reflect the final distribution
# of your files and possibly to generate documentation.
#
#---------------------------------------------------------------------





install: install-docs

install-docs:
	@echo Installing documentation files to '$(DOC_INSTALL_DIR)'
	@if exist $(DOCDIR) $(CPY) $(DOCDIR)\*.n "$(DOC_INSTALL_DIR)"









<
<
<
<
<
<
<
<
<
<
<
|
<
<
<
<
<
<
<
<
<
<






>
>
>
>







|
<
<
<
|

<
<
<
<
<
<
<
<
<
<
<
<
<
>
>
|

>
>
>





<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
>
>
>
>







135
136
137
138
139
140
141











142










143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160



161
162













163
164
165
166
167
168
169
170
171
172
173
174














































175
176
177
178
179
180
181
182
183
184
185
#       Targeting Windows pre64 RETAIL
#       c:\tcl_src\win\>nmake -f makefile.vc MACHINE=IA64
#
#------------------------------------------------------------------------------
#==============================================================================
#------------------------------------------------------------------------------












# The name of the package










PROJECT = sample

# Uncomment the following line if this is a Tk extension.
#PROJECT_REQUIRES_TK=1
!include "rules-ext.vc"

# Define the object files and resource file that make up the extension.
# Note the resource file does not makes sense if doing a static library build
# hence it is under that condition. TMP_DIR is the output directory
# defined by rules for object files.
PRJ_OBJS = \
	$(TMP_DIR)\tclsample.obj \
	$(TMP_DIR)\sample.obj \
!if !$(STATIC_BUILD)
	$(TMP_DIR)\sample.res
!endif

# Define any additional compiler flags that might be required for the project



PRJ_DEFINES = -D_CRT_SECURE_NO_DEPRECATE














# Default target is all which in turn uses the setup and pkgindex generation
# targets from rules.
all:	    setup pkgindex $(PRJLIB)

# MAKEBINCMD will do shared, static and debug links as appropriate
# _VC_MANIFEST_EMBED_DLL embeds the manifest for shared libraries
# and is a no-op for static libraries
$(PRJLIB): $(PRJ_OBJS)
       $(MAKEBINCMD) $**
       $(_VC_MANIFEST_EMBED_DLL)
       -@del $*.exp















































# The default install target only installs binaries and scripts so add
# an additional target for our documentation. Note this *adds* a target
# since no commands are listed after it. The original targets for
# install (from rules.vc) will remain.
install: install-docs

install-docs:
	@echo Installing documentation files to '$(DOC_INSTALL_DIR)'
	@if exist $(DOCDIR) $(CPY) $(DOCDIR)\*.n "$(DOC_INSTALL_DIR)"