[sqlite] Problems making sqlite.lib using Embarcadero C++ 7.00

2015-10-28 Thread Dominique Devienne
On Tue, Oct 27, 2015 at 11:05 PM, James K. Lowden 
wrote:

> On Tue, 27 Oct 2015 12:24:03 +0100 Clemens Ladisch 
> wrote:
> > > You've solved the problem by compiling for a
> single-threaded environment.
> > No; the single-threaded environment is the problem.
>
> That's a matter of opinion.  Another way to look at it: threads set
> back computing by 20 years.
>
> Protected memory was invented for good reason.  Then it was uninvented,
> and we're still dealing with the fallout.  Software transactional
> memory has so far failed to pass muster, and communicating sequential
> processes has still not seen implementation support in most languages.


Most languages, true. But one (new'ish) language, Go [1],
embraced CSP from the get go [2].

This talk [3] by Rob Pike, one of the three fathers of Go,
featured on the front page [1] discusses specifically Go's CSP
implementation.
It goes hand-in-hand with this other "classical" Go talk [4]: Concurrency
Is Not Parallelism.

[1] https://golang.org/
[2] https://blog.golang.org/share-memory-by-communicating
[3] https://www.youtube.com/watch?v=f6kdp27TYZs
[4] https://www.youtube.com/watch?v=cN_DpYBzKso


[sqlite] Problems making sqlite.lib using Embarcadero C++ 7.00

2015-10-27 Thread James K. Lowden
On Tue, 27 Oct 2015 12:24:03 +0100
Clemens Ladisch  wrote:

> > You've solved the problem by compiling for a single-threaded
> > environment.
> 
> No; the single-threaded environment is the problem.

That's a matter of opinion.  Another way to look at it: threads set
back computing by 20 years.  

Protected memory was invented for good reason.  Then it was uninvented,
and we're still dealing with the fallout.  Software transactional
memory has so far failed to pass muster, and communicating sequential
processes has still not seen implementation support in most
languages.  

--jkl


[sqlite] Problems making sqlite.lib using Embarcadero C++ 7.00

2015-10-27 Thread Clemens Ladisch
James K. Lowden wrote:
> On Thu, 22 Oct 2015 15:23:38 +0200
> "Marco Turco"  wrote:
>> The problem is when I link the generated library. I receive the
>> following error related to the first two warnings so I'm unable to
>> generate the executable file.
>
> You've solved the problem by compiling for a single-threaded
> environment.

No; the single-threaded environment is the problem.

>> Warning W8065 K:\sqlite_see_2013\sqlite3.c 23909: Call to function
>> '_endthreadex' with no prototype in function sqlite3ThreadProc
>
> That indicates you're notincluding the .h file that declares the
> _endthreadex function.

_endthreadex is declared in process.h, which SQLite includes.
However, that header takes care to omit this declaration when
compiling in single-threaded mode.


Regards,
Clemens


[sqlite] Problems making sqlite.lib using Embarcadero C++ 7.00

2015-10-24 Thread James K. Lowden
On Thu, 22 Oct 2015 15:23:38 +0200
"Marco Turco"  wrote:

> The problem is when I link the generated library. I receive the
> following error related to the first two warnings so I'm unable to
> generate the executable file.

You've solved the problem by compiling for a single-threaded
environment.  I wanted to point you toward the generic solution to the
warnings and errors in case you want to use __beginthreadex.  I suspect
the advice you got about changing your compiler switches is correct;
that's what you would do with Microsoft's compiler.  

> Warning W8065 K:\sqlite_see_2013\sqlite3.c 23909: Call to function
> '_endthreadex' with no prototype in function sqlite3ThreadProc

That indicates you're notincluding the .h file that declares the
_endthreadex function.  

Unlike some other advice you might get, I'm not so sanguine about
prototype warnings. The C language permits, but does not require, the
use of functional prototypes.  When you ignore a warning about a
missing prototype, you deny yourself the parameter checking the
compiler could otherwise provide.  

> Error: Unresolved external '__endthreadex'
> referenced from K:\ACTIVEXP\SOURCE\SQLITE.SEE\SQLITE3.LIB|sqlite3

To be pedantic, that is a linker error, not a compiler error.  In this
case you're missing the library that supplies _endthreadex.  According
to Microsoft [1], it's supplied by the C run-time library.  That almost
certainly means you need to set your compile options accordingly.  

Why change compilation just to link to another library?  Normally you
don't; you just add a library name to the linker command.  In the case
of Microsoft and the C runtime, though, some of the symbols differ
between single- and multi-threaded (and release and debug) builds.  You
call function foo, but it might generate e.g. foo_debug_mt, or might
issue locks, or might replace the call with a bullt-in intrinsic or
macro.  

That's why Microsoft (and likely Embarcadero) use a compiler option.
Because of the tight coupling of compile modes and required library,
they need to be controlled together, and the simplest way to do that is
to give one option to the compiler and let it DTRT. 

> At the end I have added the parameter -DSQLITE_THREADSAFE=0 to
> exclude the multithread code from the library 

Yup, that's the other way; change the SQLite code to be
single-threaded.  

HTH.  

--jkl

[1] https://msdn.microsoft.com/en-us/library/hw264s73.aspx


[sqlite] Problems making sqlite.lib using Embarcadero C++ 7.00

2015-10-22 Thread Marco Turco
Solved.
At the end I have added the parameter -DSQLITE_THREADSAFE=0 to exclude the 
multithread code from the library 

 Thank you.

Marco

-Original Message-
From: sqlite-users-bounces at mailinglists.sqlite.org 
[mailto:sqlite-users-boun...@mailinglists.sqlite.org] On Behalf Of Clemens 
Ladisch
Sent: Thursday, October 22, 2015 8:51 PM
To: sqlite-users at mailinglists.sqlite.org
Subject: Re: [sqlite] Problems making sqlite.lib using Embarcadero C++ 7.00

Marco Turco wrote:
> could you please give me the full Bcc32 string you are using ?

That would not be useful for you; I'm using an incompatible calling convention.

Just replace "-tW" with "-tWM".


Regards,
Clemens
___
sqlite-users mailing list
sqlite-users at mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



[sqlite] Problems making sqlite.lib using Embarcadero C++ 7.00

2015-10-22 Thread Clemens Ladisch
Marco Turco wrote:
> could you please give me the full Bcc32 string you are using ?

That would not be useful for you; I'm using an incompatible calling convention.

Just replace "-tW" with "-tWM".


Regards,
Clemens


[sqlite] Problems making sqlite.lib using Embarcadero C++ 7.00

2015-10-22 Thread Marco Turco
Hi,
could you please give me the full Bcc32 string you are using ?

thank you

Marco

-Original Message-
From: sqlite-users-bounces at mailinglists.sqlite.org 
[mailto:sqlite-users-boun...@mailinglists.sqlite.org] On Behalf Of Clemens 
Ladisch
Sent: Thursday, October 22, 2015 4:22 PM
To: sqlite-users at mailinglists.sqlite.org
Subject: Re: [sqlite] Problems making sqlite.lib using Embarcadero C++ 7.00

Marco Turco wrote:
> I'm trying to generate the sqlite3 library but there is no way with 
> Embercadero C++ 7.00.
>
> I always receive some warnings and the first two related to the 
> _endthreadex' and '_beginthreadex' cannot permit to link me the library.
>
> k:\BCC70\Bin\Bcc32.Exe -DHB_NO_DEFAULT_API_MACROS -M -c -O2 -e  -tW 
> -DHB_NO_DEFAULT_STACK_MACROS -DHB_OS_WIN_USED -DHB_FM_STATISTICS_OFF 
> -D__HARBOUR__ -DSQLITE_HAS_CODEC=1  
> -Ik:\BCC70\Include;k:\XHARBOUR\Include
> -nK:\sqlite_see_2013\Obj K:\sqlite_see_2013\sqlite3.c

My Borland C++ 5.5.1 (the old, free version) needs -tWM for a multithreaded 
program; you're using -tW.


Regards,
Clemens
___
sqlite-users mailing list
sqlite-users at mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



[sqlite] Problems making sqlite.lib using Embarcadero C++ 7.00

2015-10-22 Thread Clemens Ladisch
Marco Turco wrote:
> I'm trying to generate the sqlite3 library but there is no way with
> Embercadero C++ 7.00.
>
> I always receive some warnings and the first two related to the
> _endthreadex' and '_beginthreadex' cannot permit to link me the library.
>
> k:\BCC70\Bin\Bcc32.Exe -DHB_NO_DEFAULT_API_MACROS -M -c -O2 -e  -tW
> -DHB_NO_DEFAULT_STACK_MACROS -DHB_OS_WIN_USED -DHB_FM_STATISTICS_OFF
> -D__HARBOUR__ -DSQLITE_HAS_CODEC=1  -Ik:\BCC70\Include;k:\XHARBOUR\Include
> -nK:\sqlite_see_2013\Obj K:\sqlite_see_2013\sqlite3.c

My Borland C++ 5.5.1 (the old, free version) needs -tWM for a multithreaded
program; you're using -tW.


Regards,
Clemens


[sqlite] Problems making sqlite.lib using Embarcadero C++ 7.00

2015-10-22 Thread Marco Turco
The problem is when I link the generated library. I receive the following error 
related to the first two warnings so I'm unable to generate the executable file.

Embarcadero C++ 7.00 for Win32 Copyright (c) 1993-2015 Embarcadero 
Technologies, Inc.
K:\RENTMNG\Obj\mod306f.c:
k:\BCC70\Bin\iLink32.Exe -Gn -aa -Tpe -s @K:\RENTMNG\RENTMNG.bcl

Turbo Incremental Link 6.70 Copyright (c) 1997-2014 Embarcadero Technologies, 
Inc.
Error: Unresolved external '__endthreadex' referenced from 
K:\ACTIVEXP\SOURCE\SQLITE.SEE\SQLITE3.LIB|sqlite3
Error: Unresolved external '__beginthreadex' referenced from 
K:\ACTIVEXP\SOURCE\SQLITE.SEE\SQLITE3.LIB|sqlite3
Error: Unable to perform link

Marco

-Original Message-
From: sqlite-users-bounces at mailinglists.sqlite.org 
[mailto:sqlite-users-boun...@mailinglists.sqlite.org] On Behalf Of R.Smith
Sent: Thursday, October 22, 2015 12:12 PM
To: sqlite-users at mailinglists.sqlite.org
Subject: Re: [sqlite] Problems making sqlite.lib using Embarcadero C++ 7.00

On 2015-10-22 11:01 AM, Marco Turco wrote:
> Hi all,
>
> I'm trying to generate the sqlite3 library but there is no way with 
> Embercadero C++ 7.00.
>
> I always receive some warnings and the first two related to the 
> _endthreadex' and '_beginthreadex' cannot permit to link me the library.
>
>   
>
> See below.
>
>   
>
> k:\BCC70\Bin\Bcc32.Exe -DHB_NO_DEFAULT_API_MACROS -M -c -O2 -e  -tW 
> -DHB_NO_DEFAULT_STACK_MACROS -DHB_OS_WIN_USED -DHB_FM_STATISTICS_OFF 
> -D__HARBOUR__ -DSQLITE_HAS_CODEC=1  
> -Ik:\BCC70\Include;k:\XHARBOUR\Include
> -nK:\sqlite_see_2013\Obj K:\sqlite_see_2013\sqlite3.c
>
>   
>
> Embarcadero C++ 7.00 for Win32 Copyright (c) 1993-2015 Embarcadero 
> Technologies, Inc.
>
> K:\sqlite_see_2013\sqlite3.c:
>
> Warning W8065 K:\sqlite_see_2013\sqlite3.c 23909: Call to function 
> '_endthreadex' with no prototype in function sqlite3ThreadProc
>
> Warning W8065 K:\sqlite_see_2013\sqlite3.c 23936: Call to function 
> '_beginthreadex' with no prototype in function sqlite3ThreadCreate
>
> Warning W8057 K:\sqlite_see_2013\sqlite3.c 38624: Parameter 'iOff' is 
> never used in function winUnfetch
>
> Warning W8060 K:\sqlite_see_2013\sqlite3.c 80952: Possibly incorrect 
> assignment in function vdbeSorterCompareInt
>
> Warning W8060 K:\sqlite_see_2013\sqlite3.c 82583: Possibly incorrect 
> assignment in function vdbeSorterSetupMerge
>
> Warning W8057 K:\sqlite_see_2013\sqlite3.c 185433: Parameter 'iDb' is 
> never used in function sqlite3CodecGetKey
>
> k:\BCC70\Bin\TLib.Exe K:\sqlite_see_2013\sqlite_see_2013.Lib /P512 
> @K:\sqlite_see_2013\sqlite_see_2013.bcl , 
> K:\sqlite_see_2013\Debug\sqlite_see_2013.Lst

These are just warnings... They are not important and it should still compile.

If it fails to compile you should get a message like this:
"Error : Failed to compile K:\sqlite_see_2013\sqlite3.c 185433: Some 
description of what failed"

The warnings doesn't mean it did not compile. What makes you think the file 
failed to compile, is the actual compiled file missing or such?


>
>   
>
> TLIB 6.4 Copyright (c) 1987-2014 Embarcadero Technologies, Inc.
>
> +K:\sqlite_see_2013\Obj\sqlite3.Obj
>
>   
>
> Any help ? Thank you in advance
>
>   
>
> Marco
>
> ___
> sqlite-users mailing list
> sqlite-users at mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

___
sqlite-users mailing list
sqlite-users at mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



[sqlite] Problems making sqlite.lib using Embarcadero C++ 7.00

2015-10-22 Thread R.Smith
On 2015-10-22 11:01 AM, Marco Turco wrote:
> Hi all,
>
> I'm trying to generate the sqlite3 library but there is no way with
> Embercadero C++ 7.00.
>
> I always receive some warnings and the first two related to the
> _endthreadex' and '_beginthreadex' cannot permit to link me the library.
>
>   
>
> See below.
>
>   
>
> k:\BCC70\Bin\Bcc32.Exe -DHB_NO_DEFAULT_API_MACROS -M -c -O2 -e  -tW
> -DHB_NO_DEFAULT_STACK_MACROS -DHB_OS_WIN_USED -DHB_FM_STATISTICS_OFF
> -D__HARBOUR__ -DSQLITE_HAS_CODEC=1  -Ik:\BCC70\Include;k:\XHARBOUR\Include
> -nK:\sqlite_see_2013\Obj K:\sqlite_see_2013\sqlite3.c
>
>   
>
> Embarcadero C++ 7.00 for Win32 Copyright (c) 1993-2015 Embarcadero
> Technologies, Inc.
>
> K:\sqlite_see_2013\sqlite3.c:
>
> Warning W8065 K:\sqlite_see_2013\sqlite3.c 23909: Call to function
> '_endthreadex' with no prototype in function sqlite3ThreadProc
>
> Warning W8065 K:\sqlite_see_2013\sqlite3.c 23936: Call to function
> '_beginthreadex' with no prototype in function sqlite3ThreadCreate
>
> Warning W8057 K:\sqlite_see_2013\sqlite3.c 38624: Parameter 'iOff' is never
> used in function winUnfetch
>
> Warning W8060 K:\sqlite_see_2013\sqlite3.c 80952: Possibly incorrect
> assignment in function vdbeSorterCompareInt
>
> Warning W8060 K:\sqlite_see_2013\sqlite3.c 82583: Possibly incorrect
> assignment in function vdbeSorterSetupMerge
>
> Warning W8057 K:\sqlite_see_2013\sqlite3.c 185433: Parameter 'iDb' is never
> used in function sqlite3CodecGetKey
>
> k:\BCC70\Bin\TLib.Exe K:\sqlite_see_2013\sqlite_see_2013.Lib /P512
> @K:\sqlite_see_2013\sqlite_see_2013.bcl ,
> K:\sqlite_see_2013\Debug\sqlite_see_2013.Lst

These are just warnings... They are not important and it should still 
compile.

If it fails to compile you should get a message like this:
"Error : Failed to compile K:\sqlite_see_2013\sqlite3.c 185433: Some 
description of what failed"

The warnings doesn't mean it did not compile. What makes you think the 
file failed to compile, is the actual compiled file missing or such?


>
>   
>
> TLIB 6.4 Copyright (c) 1987-2014 Embarcadero Technologies, Inc.
>
> +K:\sqlite_see_2013\Obj\sqlite3.Obj
>
>   
>
> Any help ? Thank you in advance
>
>   
>
> Marco
>
> ___
> sqlite-users mailing list
> sqlite-users at mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users



[sqlite] Problems making sqlite.lib using Embarcadero C++ 7.00

2015-10-22 Thread Marco Turco
Hi all,

I'm trying to generate the sqlite3 library but there is no way with
Embercadero C++ 7.00.

I always receive some warnings and the first two related to the
_endthreadex' and '_beginthreadex' cannot permit to link me the library.



See below.



k:\BCC70\Bin\Bcc32.Exe -DHB_NO_DEFAULT_API_MACROS -M -c -O2 -e  -tW
-DHB_NO_DEFAULT_STACK_MACROS -DHB_OS_WIN_USED -DHB_FM_STATISTICS_OFF
-D__HARBOUR__ -DSQLITE_HAS_CODEC=1  -Ik:\BCC70\Include;k:\XHARBOUR\Include
-nK:\sqlite_see_2013\Obj K:\sqlite_see_2013\sqlite3.c



Embarcadero C++ 7.00 for Win32 Copyright (c) 1993-2015 Embarcadero
Technologies, Inc.

K:\sqlite_see_2013\sqlite3.c:

Warning W8065 K:\sqlite_see_2013\sqlite3.c 23909: Call to function
'_endthreadex' with no prototype in function sqlite3ThreadProc

Warning W8065 K:\sqlite_see_2013\sqlite3.c 23936: Call to function
'_beginthreadex' with no prototype in function sqlite3ThreadCreate

Warning W8057 K:\sqlite_see_2013\sqlite3.c 38624: Parameter 'iOff' is never
used in function winUnfetch

Warning W8060 K:\sqlite_see_2013\sqlite3.c 80952: Possibly incorrect
assignment in function vdbeSorterCompareInt

Warning W8060 K:\sqlite_see_2013\sqlite3.c 82583: Possibly incorrect
assignment in function vdbeSorterSetupMerge

Warning W8057 K:\sqlite_see_2013\sqlite3.c 185433: Parameter 'iDb' is never
used in function sqlite3CodecGetKey

k:\BCC70\Bin\TLib.Exe K:\sqlite_see_2013\sqlite_see_2013.Lib /P512
@K:\sqlite_see_2013\sqlite_see_2013.bcl ,
K:\sqlite_see_2013\Debug\sqlite_see_2013.Lst



TLIB 6.4 Copyright (c) 1987-2014 Embarcadero Technologies, Inc.

+K:\sqlite_see_2013\Obj\sqlite3.Obj



Any help ? Thank you in advance



Marco



[sqlite] Problems making sqlite.lib using Embarcadero C++ 7.00

2015-10-22 Thread Scott Doctor

I am using Embarcadero's development studio and compiling in the sqlite 
amalgamation. You can just turn off those two warnings.

To turn it off for whole project:
Select the Projects menu Options
Under the C++ Compiler options select the warnings
Open the options for selected warnings.
scroll down to those two warnings and disable them.

To turn off the warnings just for sqlite, just right click on the 
sqlite.c file name, select the local options. the same project options 
menu opens, but will apply only to that file.

If you try to compile the SQLite amalgamation with all warnings on, you 
will get over 600 of them. Most warnings are for unused variables, and 
variables that are assigned a value but never used

I examined those particular ones. It is due to assigning a variable 
within an 'if'. Although it has double parenthesis around it, which is 
supposed to indicate that the assignment is intended, it still gives the 
warning for some reason on some of them. That is an important warning as 
that is usually  a nasty bug where a single equals is used instead of a 
double equals for an equivalence comparison.

Although that style makes for more compact code by doing the assignment 
at the same time as the logic test, I find that it is a safer practice 
to do the assignment just before the 'if' then test the variable. From a 
debugging point of view it is much easier to set a break point on the if 
statement and see the actual result being checked. I did a few compile 
tests. with the optimizer, the resulting compiled code was identical 
either way..


Scott Doctor
scott at scottdoctor.com

On 10/22/2015 2:01 AM, Marco Turco wrote:
> Hi all,
>
> I'm trying to generate the sqlite3 library but there is no way with
> Embercadero C++ 7.00.
>
> I always receive some warnings and the first two related to the
> _endthreadex' and '_beginthreadex' cannot permit to link me the library.
>
>   
>
> See below.
>
>   
>
> k:\BCC70\Bin\Bcc32.Exe -DHB_NO_DEFAULT_API_MACROS -M -c -O2 -e  -tW
> -DHB_NO_DEFAULT_STACK_MACROS -DHB_OS_WIN_USED -DHB_FM_STATISTICS_OFF
> -D__HARBOUR__ -DSQLITE_HAS_CODEC=1  -Ik:\BCC70\Include;k:\XHARBOUR\Include
> -nK:\sqlite_see_2013\Obj K:\sqlite_see_2013\sqlite3.c
>
>   
>
> Embarcadero C++ 7.00 for Win32 Copyright (c) 1993-2015 Embarcadero
> Technologies, Inc.
>
> K:\sqlite_see_2013\sqlite3.c:
>
> Warning W8065 K:\sqlite_see_2013\sqlite3.c 23909: Call to function
> '_endthreadex' with no prototype in function sqlite3ThreadProc
>
> Warning W8065 K:\sqlite_see_2013\sqlite3.c 23936: Call to function
> '_beginthreadex' with no prototype in function sqlite3ThreadCreate
>
> Warning W8057 K:\sqlite_see_2013\sqlite3.c 38624: Parameter 'iOff' is never
> used in function winUnfetch
>
> Warning W8060 K:\sqlite_see_2013\sqlite3.c 80952: Possibly incorrect
> assignment in function vdbeSorterCompareInt
>
> Warning W8060 K:\sqlite_see_2013\sqlite3.c 82583: Possibly incorrect
> assignment in function vdbeSorterSetupMerge
>
> Warning W8057 K:\sqlite_see_2013\sqlite3.c 185433: Parameter 'iDb' is never
> used in function sqlite3CodecGetKey
>
> k:\BCC70\Bin\TLib.Exe K:\sqlite_see_2013\sqlite_see_2013.Lib /P512
> @K:\sqlite_see_2013\sqlite_see_2013.bcl ,
> K:\sqlite_see_2013\Debug\sqlite_see_2013.Lst
>
>   
>
> TLIB 6.4 Copyright (c) 1987-2014 Embarcadero Technologies, Inc.
>
> +K:\sqlite_see_2013\Obj\sqlite3.Obj
>
>   
>
> Any help ? Thank you in advance
>
>   
>
> Marco
>
> ___
> sqlite-users mailing list
> sqlite-users at mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>
>