Olá, pessoal!
Meu objetivo foi alcançado. Eu precisava usar a biblioteca "hbsqlit3" do Harbour que dá acesso ao "banco de dados" SQLite3.
Agradeço ao Itamar e ao José Quintas pelas mensagens.
Vou mostrar o que fiz para chegar lá. Pode não ser o melhor caminho, mas pelo menos para mim, funcionou.
Para quem usar estes passos como referência, ou tutorial, preste atenção na mudança de diretórios.
01) Instalei a biblioteca do Harbour, a lib "hbsqlit3":~/workspace/core/contrib$
$ sudo hbmk2 make.hb hbsqlit3 install
[sudo] password for sergio:
! Package build and install... 1 project(s)
/usr/bin/hbmk2 -quiet -width=0 -autohbm- @../hbpre -inc ../3rd/sqlite3/sqlite3.hbp @../hbpost
/usr/bin/hbmk2 -quiet -width=0 -autohbm- @../hbpre -inc ../hbsqlit3/hbsqlit3.hbp @../hbpost
02) Instalei o pacote "libsqlite3-dev" do SQLite3 para o Linux ~/workspace/core/contrib$
$ sudo apt install libsqlite3-dev -y
[sudo] password for sergio:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
sqlite3-doc
The following NEW packages will be installed:
libsqlite3-dev
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 696 kB of archives.
After this operation, 2.372 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libsqlite3-dev amd64 3.31.1-4ubuntu0.2 [696 kB]
Fetched 696 kB in 2s (327 kB/s)
Selecting previously unselected package libsqlite3-dev:amd64.
(Reading database ... 367450 files and directories currently installed.)
Preparing to unpack .../libsqlite3-dev_3.31.1-4ubuntu0.2_amd64.deb ...
Unpacking libsqlite3-dev:amd64 (3.31.1-4ubuntu0.2) ...
Setting up libsqlite3-dev:amd64 (3.31.1-4ubuntu0.2) ...
03) Gerei uma lib chamada "libsqlite3.a"~/workspace/core/contrib/3rd/sqlite3$
$ hbmk2 sqlite3.hbp
hbmk2: Compiling...
hbmk2: Creating static library... libsqlite3.a
sergio@sergio-Parallels-Virtual-Platform:~/workspace/core/contrib/3rd/sqlite3$
$ ll
total 6756
drwxrwxr-x 3 sergio sergio 4096 Jun 28 19:19 ./
drwxrwxr-x 3 sergio sergio 4096 Jun 27 14:02 ../
drwxrwxr-x 3 sergio sergio 4096 Jun 28 19:18 .hbmk/
-rw-rw-r-- 1 sergio sergio 1362764 Jun 28 19:19 libsqlite3.a
-rw-rw-r-- 1 sergio sergio 5143905 Jun 27 14:02 sqlite3.c
-rw-rw-r-- 1 sergio sergio 1507 Jun 27 14:02 sqlite3.diff
-rw-rw-r-- 1 sergio sergio 353468 Jun 27 14:02 sqlite3.h
-rw-rw-r-- 1 sergio sergio 62 Jun 27 14:02 sqlite3.hbc
-rw-rw-r-- 1 sergio sergio 1505 Jun 27 14:02 sqlite3.hbp
-rw-rw-r-- 1 sergio sergio 26110 Jun 27 14:02 sqlite3x.h
04) Aqui eu tive que interferir em um arquivo da biblioteca hbsqlite3.
Mudei um caminho que estava dentro do arquivo pois impedia de achar o arquivo
"sqlite3.hbc"$ cat /usr/share/harbour/contrib/hbsqlit3/hbsqlit3.hbc
description=SQLite3 wrapper (SQL)
incpaths=.
headers=${hb_name}.ch
libs=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF}
# libs=../3rd/sqlite3/sqlite3.hbc
# mudei para a linha abaixo:
libs=/home/sergio/workspace/core/contrib/3rd/sqlite3/sqlite3.hbc
05) Agora eu consigo compilar e gerar um demo para testar e criar um banco de dados SQLite3~/workspace/core/contrib/hbsqlit3/tests$
$ hbmk2 demo.prg -ldl -lpthread
hbmk2: Processing local make script: hbmk.hbm
Harbour 3.2.0dev (r1712151853)
Copyright (c) 1999-2016, http://harbour-project.org/
Compiling 'demo.prg'...
Lines 274, Functions/Procedures 3
Generating C source output to '/tmp/hbmk_7sP9aZ.dir/demo.c'... Done.
06) Executo o arquivo "demo" que cria um banco de dados SQLite3,
chamado "new.s3db", e insere dados dentro dele.~/workspace/core/contrib/hbsqlit3/tests$
$ ./demo
3.8.2
CREATE TABLE t1 - Ok
BEGIN TRANSACTION
INSERT INTO t1( name, age ) VALUES( 'Bob', 52 )
INSERT INTO t1( name, age ) VALUES( 'Fred', 40 )
INSERT INTO t1( name, age ) VALUES( 'Sasha', 25 )
INSERT INTO t1( name, age ) VALUES( 'Ivet', 28 )
COMMIT
The number of database rows that were changed: 1
Total changes: 4
INSERT INTO t1( name, age ) VALUES( 'Andy', 17 ) - Done
INSERT INTO t1( name, age ) VALUES( 'Mary', 19 ) - Done
The number of database rows that were changed: 1
Total changes: 6
Last _ROWID_: 6
SELECT * FROM t1 WHERE name == 'Andy'
Record # 1
Column name :
Column type : SQLITE_NULL
Column value: NULL
Column name : id
Column type : SQLITE_INTEGER
Column value: 5
Column name : name
Column type : SQLITE_TEXT
Column value: Andy
Total records - 1
SELECT * FROM t1 WHERE age >= 40
Record # 1
Column name : id
Column type : SQLITE_INTEGER
Column value: 1
Column name : name
Column type : SQLITE_TEXT
Column value: Bob
Column name : age
Column type : SQLITE_INTEGER
Column value: 52
Record # 2
Column name : id
Column type : SQLITE_INTEGER
Column value: 2
Column name : name
Column type : SQLITE_TEXT
Column value: Fred
Column name : age
Column type : SQLITE_INTEGER
Column value: 40
Total records - 2
SELECT id, name, age + 5 FROM t1
id
name
age + 5
SQLITE_NULL
SQLITE_NULL
SQLITE_NULL
INTEGER
TEXT
sqlite3_get_table
name age
Andy 17
Mary 19
sergio@sergio-Parallels-Virtual-Platform:~/workspace/core/contrib/hbsqlit3/tests$
$ ll
total 1208
drwxrwxr-x 2 sergio sergio 4096 Jun 28 19:29 ./
drwxrwxr-x 3 sergio sergio 4096 Jun 27 14:02 ../
-rw-rw-r-- 1 sergio sergio 6814 Jun 27 14:02 authoriz.prg
-rw-rw-r-- 1 sergio sergio 5623 Jun 27 14:02 backup.prg
-rw-rw-r-- 1 sergio sergio 4789 Jun 27 14:02 blob.prg
-rwxrwxr-x 1 sergio sergio 1138488 Jun 28 19:28 demo*
-rw-rw-r-- 1 sergio sergio 8536 Jun 27 14:02 demo.prg
-rw-rw-r-- 1 sergio sergio 23 Jun 27 14:02 hbmk.hbm
-rw-rw-r-- 1 sergio sergio 667 Jun 28 19:29 hbsq3_pr.log
-rw-rw-r-- 1 sergio sergio 574 Jun 28 19:29 hbsq3_tr.log
-rw-rw-r-- 1 sergio sergio 4814 Jun 27 14:02 hdbc.prg
-rw-rw-r-- 1 sergio sergio 5854 Jun 27 14:02 hooks.prg
-rw-rw-r-- 1 sergio sergio 3592 Jun 27 14:02 metadata.prg
-rw-r--r-- 1 sergio sergio 12288 Jun 28 19:29 new.s3db
-rw-rw-r-- 1 sergio sergio 2411 Jun 27 14:02 pack.prg
-rw-rw-r-- 1 sergio sergio 3614 Jun 27 14:02 pngtest.png
07) Finalmente consigo responder à minha pergunta inicial:
O que mais tenho que fazer no "hbp" para ligar meu fonte às bibliotecas "hbsqlit3", e usar o SQLite3?
Tive que incluir as linhas:
-ldl -lpthread
hbsqlit3.hbc
Então meu arquivo "compila.hbp" ficou assim:
#
# $Id: compila.hbp $
#
-w2
-gc3
-ocontas_receber
-ldl -lpthread
hbsqlit3.hbc
crmenu.prg
modcli.prg
modlib.prg
moduti.prg
08) E usei somente uma função da biblioteca para testar e funcionou:#include "hbclass.ch"
#require "hbsqlit3"
? "=========="
? sqlite3_libversion()
? "=========="
Inkey(0)
==========
3.8.2
==========
É isso! Espero que seja útil para alguém.
Sergio Lima