"Fossies" - the Fresh Open Source Software Archive

Member "sqlite-autoconf-3320300/tea/win/makefile.vc" (18 Jun 2020, 14341 Bytes) of package /linux/misc/sqlite-autoconf-3320300.tar.gz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 # makefile.vc --                                               -*- Makefile -*-
    2 #
    3 # Microsoft Visual C++ makefile for use with nmake.exe v1.62+ (VC++ 5.0+)
    4 #
    5 # This makefile is based upon the Tcl 8.4 Makefile.vc and modified to 
    6 # make it suitable as a general package makefile. Look for the word EDIT
    7 # which marks sections that may need modification. As a minumum you will
    8 # need to change the PROJECT, DOTVERSION and DLLOBJS variables to values
    9 # relevant to your package.
   10 #
   11 # See the file "license.terms" for information on usage and redistribution
   12 # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
   13 # 
   14 # Copyright (c) 1995-1996 Sun Microsystems, Inc.
   15 # Copyright (c) 1998-2000 Ajuba Solutions.
   16 # Copyright (c) 2001 ActiveState Corporation.
   17 # Copyright (c) 2001-2002 David Gravereaux.
   18 # Copyright (c) 2003 Pat Thoyts
   19 #
   20 #-------------------------------------------------------------------------
   21 # RCS: @(#)$Id: makefile.vc,v 1.4 2004/07/26 08:22:05 patthoyts Exp $
   22 #-------------------------------------------------------------------------
   23 
   24 !if !defined(MSDEVDIR) && !defined(MSVCDIR) && !defined(VCINSTALLDIR) && !defined(MSSDK) && !defined(WINDOWSSDKDIR)
   25 MSG = ^
   26 You will need to run vcvars32.bat from Developer Studio, first, to setup^
   27 the environment.  Jump to this line to read the new instructions.
   28 !error $(MSG)
   29 !endif
   30 
   31 #------------------------------------------------------------------------------
   32 # HOW TO USE this makefile:
   33 #
   34 # 1)  It is now necessary to have %MSVCDir% set in the environment.  This is
   35 #     used  as a check to see if vcvars32.bat had been run prior to running
   36 #     nmake or during the installation of Microsoft Visual C++, MSVCDir had
   37 #     been set globally and the PATH adjusted.  Either way is valid.
   38 #
   39 #     You'll need to run vcvars32.bat contained in the MsDev's vc(98)/bin
   40 #     directory to setup the proper environment, if needed, for your current
   41 #     setup.  This is a needed bootstrap requirement and allows the swapping of
   42 #     different environments to be easier.
   43 #
   44 # 2)  To use the Platform SDK (not expressly needed), run setenv.bat after
   45 #     vcvars32.bat according to the instructions for it.  This can also turn on
   46 #     the 64-bit compiler, if your SDK has it.
   47 #
   48 # 3)  Targets are:
   49 #	all       -- Builds everything.
   50 #       <project> -- Builds the project (eg: nmake sample)
   51 #	test      -- Builds and runs the test suite.
   52 #	install   -- Installs the built binaries and libraries to $(INSTALLDIR)
   53 #		     in an appropriate subdirectory.
   54 #	clean/realclean/distclean -- varying levels of cleaning.
   55 #
   56 # 4)  Macros usable on the commandline:
   57 #	INSTALLDIR=<path>
   58 #		Sets where to install Tcl from the built binaries.
   59 #		C:\Progra~1\Tcl is assumed when not specified.
   60 #
   61 #	OPTS=static,msvcrt,staticpkg,threads,symbols,profile,loimpact,none
   62 #		Sets special options for the core.  The default is for none.
   63 #		Any combination of the above may be used (comma separated).
   64 #		'none' will over-ride everything to nothing.
   65 #
   66 #		static  =  Builds a static library of the core instead of a
   67 #			   dll.  The shell will be static (and large), as well.
   68 #		msvcrt  =  Effects the static option only to switch it from
   69 #			   using libcmt(d) as the C runtime [by default] to
   70 #			   msvcrt(d). This is useful for static embedding
   71 #			   support.
   72 #		staticpkg = Effects the static option only to switch
   73 #			   tclshXX.exe to have the dde and reg extension linked
   74 #			   inside it.
   75 #		threads =  Turns on full multithreading support.
   76 #		thrdalloc = Use the thread allocator (shared global free pool).
   77 #		symbols =  Adds symbols for step debugging.
   78 #		profile =  Adds profiling hooks.  Map file is assumed.
   79 #		loimpact =  Adds a flag for how NT treats the heap to keep memory
   80 #			   in use, low.  This is said to impact alloc performance.
   81 #
   82 #	STATS=memdbg,compdbg,none
   83 #		Sets optional memory and bytecode compiler debugging code added
   84 #		to the core.  The default is for none.  Any combination of the
   85 #		above may be used (comma separated).  'none' will over-ride
   86 #		everything to nothing.
   87 #
   88 #		memdbg   = Enables the debugging memory allocator.
   89 #		compdbg  = Enables byte compilation logging.
   90 #
   91 #	MACHINE=(IX86|IA64|ALPHA)
   92 #		Set the machine type used for the compiler, linker, and
   93 #		resource compiler.  This hook is needed to tell the tools
   94 #		when alternate platforms are requested.  IX86 is the default
   95 #		when not specified.
   96 #
   97 #	TMP_DIR=<path>
   98 #	OUT_DIR=<path>
   99 #		Hooks to allow the intermediate and output directories to be
  100 #		changed.  $(OUT_DIR) is assumed to be 
  101 #		$(BINROOT)\(Release|Debug) based on if symbols are requested.
  102 #		$(TMP_DIR) will de $(OUT_DIR)\<buildtype> by default.
  103 #
  104 #	TESTPAT=<file>
  105 #		Reads the tests requested to be run from this file.
  106 #
  107 #	CFG_ENCODING=encoding
  108 #		name of encoding for configuration information. Defaults
  109 #		to cp1252
  110 #
  111 # 5)  Examples:
  112 #
  113 #	Basic syntax of calling nmake looks like this:
  114 #	nmake [-nologo] -f makefile.vc [target|macrodef [target|macrodef] [...]]
  115 #
  116 #                        Standard (no frills)
  117 #       c:\tcl_src\win\>c:\progra~1\micros~1\vc98\bin\vcvars32.bat
  118 #       Setting environment for using Microsoft Visual C++ tools.
  119 #       c:\tcl_src\win\>nmake -f makefile.vc all
  120 #       c:\tcl_src\win\>nmake -f makefile.vc install INSTALLDIR=c:\progra~1\tcl
  121 #
  122 #                         Building for Win64
  123 #       c:\tcl_src\win\>c:\progra~1\micros~1\vc98\bin\vcvars32.bat
  124 #       Setting environment for using Microsoft Visual C++ tools.
  125 #       c:\tcl_src\win\>c:\progra~1\platfo~1\setenv.bat /pre64 /RETAIL
  126 #       Targeting Windows pre64 RETAIL
  127 #       c:\tcl_src\win\>nmake -f makefile.vc MACHINE=IA64
  128 #
  129 #------------------------------------------------------------------------------
  130 #==============================================================================
  131 ###############################################################################
  132 #------------------------------------------------------------------------------
  133 
  134 !if !exist("makefile.vc")
  135 MSG = ^
  136 You must run this makefile only from the directory it is in.^
  137 Please `cd` to its location first.
  138 !error $(MSG)
  139 !endif
  140 
  141 #-------------------------------------------------------------------------
  142 # Project specific information (EDIT)
  143 #
  144 # You should edit this with the name and version of your project. This
  145 # information is used to generate the name of the package library and
  146 # it's install location.
  147 #
  148 # For example, the sample extension is  going to build sample04.dll and
  149 # would install it into $(INSTALLDIR)\lib\sample04
  150 #
  151 # You need to specify the object files that need to be linked into your
  152 # binary here.
  153 #
  154 #-------------------------------------------------------------------------
  155 
  156 PROJECT = tclsqlite3
  157 !include "rules.vc"
  158 
  159 # nmakehelp -V <file> <tag> will search the file for tag, skips until a
  160 #	number and returns all character until a character not in [0-9.ab]
  161 #	is read.
  162 
  163 !if [echo REM = This file is generated from Makefile.vc > versions.vc]
  164 !endif
  165 # get project version from row "AC_INIT([sqlite], [3.x.y])"
  166 !if [echo DOTVERSION = \>> versions.vc] \
  167    && [nmakehlp -V ..\configure.ac AC_INIT >> versions.vc]
  168 !endif
  169 !include "versions.vc"
  170 
  171 VERSION         = $(DOTVERSION:.=)
  172 STUBPREFIX      = $(PROJECT)stub
  173 
  174 #-------------------------------------------------------------------------
  175 # Target names and paths ( shouldn't need changing )
  176 #-------------------------------------------------------------------------
  177 
  178 BINROOT		= .
  179 ROOT            = ..
  180 
  181 PRJIMPLIB	= $(OUT_DIR)\$(PROJECT)$(VERSION)$(SUFX).lib
  182 PRJLIBNAME	= $(PROJECT).$(EXT)
  183 PRJLIB		= $(OUT_DIR)\$(PRJLIBNAME)
  184 
  185 PRJSTUBLIBNAME	= $(STUBPREFIX)$(VERSION).lib
  186 PRJSTUBLIB	= $(OUT_DIR)\$(PRJSTUBLIBNAME)
  187 
  188 ### Make sure we use backslash only.
  189 PRJ_INSTALL_DIR         = $(_INSTALLDIR)\$(PROJECT)$(DOTVERSION)
  190 LIB_INSTALL_DIR		= $(PRJ_INSTALL_DIR)
  191 BIN_INSTALL_DIR		= $(PRJ_INSTALL_DIR)
  192 DOC_INSTALL_DIR		= $(PRJ_INSTALL_DIR)
  193 SCRIPT_INSTALL_DIR	= $(PRJ_INSTALL_DIR)
  194 INCLUDE_INSTALL_DIR	= $(_TCLDIR)\include
  195 
  196 ### The following paths CANNOT have spaces in them.
  197 GENERICDIR	= $(ROOT)\generic
  198 WINDIR		= $(ROOT)\win
  199 LIBDIR          = $(ROOT)\library
  200 DOCDIR		= $(ROOT)\doc
  201 TOOLSDIR	= $(ROOT)\tools
  202 COMPATDIR	= $(ROOT)\compat
  203 
  204 ### Figure out where the primary source code file(s) is/are.
  205 !if exist("$(ROOT)\..\..\sqlite3.c") && exist("$(ROOT)\..\..\src\tclsqlite.c")
  206 SQL_INCLUDES = -I"$(ROOT)\..\.."
  207 SQLITE_SRCDIR = $(ROOT)\..\..
  208 TCLSQLITE_SRCDIR = $(ROOT)\..\..\src
  209 DLLOBJS = $(TMP_DIR)\sqlite3.obj $(TMP_DIR)\tclsqlite.obj
  210 !else
  211 TCLSQLITE_SRCDIR = $(ROOT)\generic
  212 DLLOBJS = $(TMP_DIR)\tclsqlite3.obj
  213 !endif
  214 
  215 #---------------------------------------------------------------------
  216 # Compile flags
  217 #---------------------------------------------------------------------
  218 
  219 !if !$(DEBUG)
  220 !if $(OPTIMIZING)
  221 ### This cranks the optimization level to maximize speed
  222 cdebug	= -O2 -Op -Gs
  223 !else
  224 cdebug	=
  225 !endif
  226 !else if "$(MACHINE)" == "IA64"
  227 ### Warnings are too many, can't support warnings into errors.
  228 cdebug	= -Z7 -Od -GZ
  229 !else
  230 cdebug	= -Z7 -WX -Od -GZ
  231 !endif
  232 
  233 ### Declarations common to all compiler options
  234 cflags = -nologo -c -W3 -D_CRT_SECURE_NO_WARNINGS -YX -Fp$(TMP_DIR)^\
  235 
  236 !if $(MSVCRT)
  237 !if $(DEBUG)
  238 crt = -MDd
  239 !else
  240 crt = -MD
  241 !endif
  242 !else
  243 !if $(DEBUG)
  244 crt = -MTd
  245 !else
  246 crt = -MT
  247 !endif
  248 !endif
  249 
  250 INCLUDES	= $(SQL_INCLUDES) $(TCL_INCLUDES) -I"$(WINDIR)" \
  251                   -I"$(GENERICDIR)" -I"$(ROOT)\.."
  252 BASE_CLFAGS	= $(cflags) $(cdebug) $(crt) $(INCLUDES) \
  253                   -DSQLITE_3_SUFFIX_ONLY=1 -DSQLITE_ENABLE_RTREE=1 \
  254                   -DSQLITE_ENABLE_FTS3=1 -DSQLITE_OMIT_DEPRECATED=1
  255 CON_CFLAGS	= $(cflags) $(cdebug) $(crt) -DCONSOLE -DSQLITE_ENABLE_FTS3=1
  256 TCL_CFLAGS	= -DBUILD_sqlite -DUSE_TCL_STUBS \
  257                   -DPACKAGE_VERSION="\"$(DOTVERSION)\"" $(BASE_CLFAGS) \
  258                   $(OPTDEFINES)
  259 
  260 #---------------------------------------------------------------------
  261 # Link flags
  262 #---------------------------------------------------------------------
  263 
  264 !if $(DEBUG)
  265 ldebug	= -debug:full -debugtype:cv
  266 !else
  267 ldebug	= -release -opt:ref -opt:icf,3
  268 !endif
  269 
  270 ### Declarations common to all linker options
  271 lflags	= -nologo -machine:$(MACHINE) $(ldebug)
  272 
  273 !if $(PROFILE)
  274 lflags	= $(lflags) -profile
  275 !endif
  276 
  277 !if $(ALIGN98_HACK) && !$(STATIC_BUILD)
  278 ### Align sections for PE size savings.
  279 lflags	= $(lflags) -opt:nowin98
  280 !else if !$(ALIGN98_HACK) && $(STATIC_BUILD)
  281 ### Align sections for speed in loading by choosing the virtual page size.
  282 lflags	= $(lflags) -align:4096
  283 !endif
  284 
  285 !if $(LOIMPACT)
  286 lflags	= $(lflags) -ws:aggressive
  287 !endif
  288 
  289 dlllflags = $(lflags) -dll
  290 conlflags = $(lflags) -subsystem:console
  291 guilflags = $(lflags) -subsystem:windows
  292 baselibs   = $(TCLSTUBLIB)
  293 
  294 #---------------------------------------------------------------------
  295 # TclTest flags
  296 #---------------------------------------------------------------------
  297 
  298 !IF "$(TESTPAT)" != ""
  299 TESTFLAGS = $(TESTFLAGS) -file $(TESTPAT)
  300 !ENDIF
  301 
  302 #---------------------------------------------------------------------
  303 # Project specific targets (EDIT)
  304 #---------------------------------------------------------------------
  305 
  306 all:	    setup $(PROJECT)
  307 $(PROJECT): setup $(PRJLIB)
  308 install:    install-binaries install-libraries install-docs
  309 
  310 # Tests need to ensure we load the right dll file we
  311 # have to handle the output differently on Win9x.
  312 #
  313 !if "$(OS)" == "Windows_NT"  || "$(MSVCDIR)" == "IDE"
  314 test: setup $(PROJECT)
  315         set TCL_LIBRARY=$(ROOT)/library
  316         $(TCLSH) <<
  317 load $(PRJLIB:\=/)
  318 cd "$(ROOT)/tests"
  319 set argv "$(TESTFLAGS)"
  320 source all.tcl
  321 <<
  322 !else
  323 test: setup $(PROJECT)
  324         echo Please wait while the test results are collected
  325         set TCL_LIBRARY=$(ROOT)/library
  326         $(TCLSH) << >tests.log
  327 load $(PRJLIB:\=/)
  328 cd "$(ROOT)/tests"
  329 set argv "$(TESTFLAGS)"
  330 source all.tcl
  331 <<
  332         type tests.log | more
  333 !endif
  334 
  335 setup:
  336 	@if not exist $(OUT_DIR)\nul mkdir $(OUT_DIR)
  337 	@if not exist $(TMP_DIR)\nul mkdir $(TMP_DIR)
  338 
  339 $(PRJLIB): $(DLLOBJS)
  340 	$(link32) $(dlllflags) -out:$@ $(baselibs) @<<
  341 $**
  342 <<
  343 	-@del $*.exp
  344 
  345 $(PRJSTUBLIB): $(PRJSTUBOBJS)
  346 	$(lib32) -nologo -out:$@ $(PRJSTUBOBJS)
  347 
  348 #---------------------------------------------------------------------
  349 # Implicit rules
  350 #---------------------------------------------------------------------
  351 
  352 $(TMP_DIR)\sqlite3.obj:		$(SQLITE_SRCDIR)\sqlite3.c
  353 	$(cc32) $(TCL_CFLAGS) -DBUILD_$(PROJECT) -Fo$(TMP_DIR)\ \
  354 		-c $(SQLITE_SRCDIR)\sqlite3.c
  355 
  356 $(TMP_DIR)\tclsqlite.obj:	$(TCLSQLITE_SRCDIR)\tclsqlite.c
  357 	$(cc32) $(TCL_CFLAGS) -DBUILD_$(PROJECT) -Fo$(TMP_DIR)\ \
  358 		-c $(TCLSQLITE_SRCDIR)\tclsqlite.c
  359 
  360 $(TMP_DIR)\tclsqlite3.obj:	$(TCLSQLITE_SRCDIR)\tclsqlite3.c
  361 	$(cc32) $(TCL_CFLAGS) -DBUILD_$(PROJECT) -Fo$(TMP_DIR)\ \
  362 		-c $(TCLSQLITE_SRCDIR)\tclsqlite3.c
  363 
  364 {$(WINDIR)}.rc{$(TMP_DIR)}.res:
  365 	$(rc32) -fo $@ -r -i "$(GENERICDIR)" -D__WIN32__ \
  366 !if $(DEBUG)
  367 	-d DEBUG \
  368 !endif
  369 !if $(TCL_THREADS)
  370 	-d TCL_THREADS \
  371 !endif
  372 !if $(STATIC_BUILD)
  373 	-d STATIC_BUILD \
  374 !endif
  375 	$<
  376 
  377 .SUFFIXES:
  378 .SUFFIXES:.c .rc
  379 
  380 #---------------------------------------------------------------------
  381 # Installation. (EDIT)
  382 #
  383 # You may need to modify this section to reflect the final distribution
  384 # of your files and possibly to generate documentation.
  385 #
  386 #---------------------------------------------------------------------
  387 
  388 install-binaries:
  389 	@echo Installing binaries to '$(SCRIPT_INSTALL_DIR)'
  390 	@if not exist "$(SCRIPT_INSTALL_DIR)" mkdir "$(SCRIPT_INSTALL_DIR)"
  391 	@$(CPY) $(PRJLIB) "$(SCRIPT_INSTALL_DIR)" >NUL
  392 
  393 install-libraries:
  394         @echo Installing libraries to '$(SCRIPT_INSTALL_DIR)'
  395         @if exist $(LIBDIR) $(CPY) $(LIBDIR)\*.tcl "$(SCRIPT_INSTALL_DIR)"
  396         @echo Installing package index in '$(SCRIPT_INSTALL_DIR)'
  397         @type << >"$(SCRIPT_INSTALL_DIR)\pkgIndex.tcl"
  398 package ifneeded $(PROJECT) $(DOTVERSION) \
  399     [list load [file join $$dir $(PRJLIBNAME)] sqlite3]
  400 <<
  401 
  402 install-docs:
  403 	@echo Installing documentation files to '$(DOC_INSTALL_DIR)'
  404 	@if exist $(DOCDIR) $(CPY) $(DOCDIR)\*.n "$(DOC_INSTALL_DIR)"
  405 
  406 #---------------------------------------------------------------------
  407 # Clean up
  408 #---------------------------------------------------------------------
  409 
  410 clean:
  411 	@if exist $(TMP_DIR)\nul $(RMDIR) $(TMP_DIR)
  412 	@if exist $(WINDIR)\version.vc del $(WINDIR)\version.vc
  413 
  414 realclean: clean
  415 	@if exist $(OUT_DIR)\nul $(RMDIR) $(OUT_DIR)
  416 
  417 distclean: realclean
  418 	@if exist $(WINDIR)\nmakehlp.exe del $(WINDIR)\nmakehlp.exe
  419 	@if exist $(WINDIR)\nmakehlp.obj del $(WINDIR)\nmakehlp.obj