Browse Source
Add basic cmake build instructions. Rework of the README file. Signed-off-by: gregory guy <gregory-tde@laposte.net>pull/4/head
6 changed files with 29 additions and 569 deletions
@ -1,12 +1,18 @@
|
||||
Installing QCA |
||||
-------------- |
||||
Basic Installation |
||||
================== |
||||
|
||||
Installation should be straightforward: |
||||
tqca relies on cmake to build. |
||||
|
||||
./configure |
||||
make |
||||
make install |
||||
Here are suggested default options: |
||||
|
||||
NOTE: You may also need to run '/sbin/ldconfig' or a similar tool to |
||||
get the new library files recognized by the system. If you are |
||||
using Linux, just run it for good measure. |
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS="ON" \ |
||||
-DCMAKE_SKIP_RPATH="OFF" \ |
||||
-DCMAKE_VERBOSE_MAKEFILE="ON" \ |
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \ |
||||
-DWITH_ALL_OPTIONS="ON" |
||||
|
||||
|
||||
Requirements: |
||||
============= |
||||
|
||||
- tqtinterface |
||||
|
@ -1,499 +0,0 @@
|
||||
#!/bin/sh |
||||
|
||||
show_usage() { |
||||
cat <<EOT |
||||
Usage: ./configure [OPTION]... |
||||
|
||||
This script creates necessary configuration files to build/install. |
||||
|
||||
Main options: |
||||
--prefix=[path] Base path for build/install. Default: /usr/local |
||||
--tqtdir=[path] Directory where TQt is installed. |
||||
--help This help text. |
||||
|
||||
EOT |
||||
} |
||||
|
||||
while [ $# -gt 0 ]; do |
||||
case "$1" in |
||||
--prefix=*) |
||||
PREFIX=`expr "${1}" : "--prefix=\(.*\)"` |
||||
shift |
||||
;; |
||||
|
||||
--tqtdir=*) |
||||
TQTDIR=`expr "${1}" : "--tqtdir=\(.*\)"` |
||||
shift |
||||
;; |
||||
|
||||
--debug) |
||||
QC_DEBUG="Y" |
||||
shift |
||||
;; |
||||
--help) show_usage; exit ;; |
||||
*) show_usage; exit ;; |
||||
esac |
||||
done |
||||
|
||||
PREFIX=${PREFIX:-/usr/local} |
||||
|
||||
echo "Configuring TQt Cryptographic Architecture (QCA) ..." |
||||
|
||||
if [ "$QC_DEBUG" = "Y" ]; then |
||||
echo |
||||
echo PREFIX=$PREFIX |
||||
echo TQTDIR=$TQTDIR |
||||
echo |
||||
fi |
||||
|
||||
printf "Verifying TQt 3.x Multithreaded (MT) build environment ... " |
||||
|
||||
if [ -z "$TQTDIR" ]; then |
||||
if [ "$QC_DEBUG" = "Y" ]; then |
||||
echo \$TQTDIR not set... trying to find TQt manually |
||||
fi |
||||
for p in /usr/lib/tqt /usr/share/tqt /usr/share/tqt3 /usr/local/lib/tqt /usr/local/share/tqt /usr/lib/tqt3 /usr/local/lib/tqt3 /usr/lib/qt /usr/share/qt /usr/share/qt3 /usr/local/lib/qt /usr/local/share/qt /usr/lib/qt3 /usr/local/lib/qt3 /usr/lib64/tqt /usr/local/lib64/tqt /usr/lib64/tqt3 /usr/local/lib64/tqt3 /usr/lib64/qt /usr/local/lib64/qt /usr/lib64/qt3 /usr/local/lib64/qt3 /usr/X11R6/share/qt /usr/qt/3 ; do |
||||
if [ -d "$p/mkspecs" ]; then |
||||
TQTDIR=$p |
||||
break; |
||||
fi; |
||||
done |
||||
if [ -z "$TQTDIR" ]; then |
||||
echo fail |
||||
echo |
||||
echo Unable to find TQt 'mkspecs'. Please set TQTDIR |
||||
echo manually. Perhaps you need to install TQt 3 |
||||
echo development utilities. You may download them |
||||
echo from the the repos of your distribution or from |
||||
echo https://mirror.git.trinitydesktop.org/gitea/TDE/tqt3/. |
||||
echo |
||||
exit 1; |
||||
fi |
||||
fi |
||||
|
||||
if [ ! -x "$TQTDIR/bin/tqmake" ]; then |
||||
if [ "$QC_DEBUG" = "Y" ]; then |
||||
echo Warning: tqmake not in \$TQTDIR/bin/tqmake |
||||
echo trying to find it in \$PATH |
||||
fi |
||||
qm=`type -p tqmake` |
||||
if [ -x "$qm" ]; then |
||||
if [ "$QC_DEBUG" = "Y" ]; then |
||||
echo tqmake found in $qm |
||||
fi |
||||
else |
||||
echo fail |
||||
echo |
||||
echo Sorry, you seem to have a very unusual setup, |
||||
echo or I missdetected \$TQTDIR=$TQTDIR |
||||
echo |
||||
echo Please set \$TQTDIR manually and make sure that |
||||
echo \$TQTDIR/bin/tqmake exists. |
||||
echo |
||||
exit 1; |
||||
fi |
||||
else |
||||
qm=$TQTDIR/bin/tqmake |
||||
fi |
||||
|
||||
gen_files() { |
||||
cat >$1/modules.cpp <<EOT |
||||
|
||||
EOT |
||||
cat >$1/modules_new.cpp <<EOT |
||||
|
||||
EOT |
||||
cat >$1/conf.cpp <<EOT |
||||
#include<stdio.h> |
||||
#include<stdlib.h> |
||||
#include<tqstring.h> |
||||
#include<tqdict.h> |
||||
#include<tqptrlist.h> |
||||
#include<tqfileinfo.h> |
||||
#include<tqfile.h> |
||||
#include<tqdir.h> |
||||
#include<tqstringlist.h> |
||||
|
||||
class Conf; |
||||
|
||||
class ConfObj |
||||
{ |
||||
public: |
||||
ConfObj(Conf *c); |
||||
virtual ~ConfObj(); |
||||
|
||||
virtual TQString name() const=0; |
||||
virtual TQString shortname() const=0; |
||||
virtual bool exec()=0; |
||||
|
||||
Conf *conf; |
||||
bool required; |
||||
bool disabled; |
||||
}; |
||||
|
||||
typedef TQPtrList<ConfObj> ConfObjList; |
||||
typedef TQPtrListIterator<ConfObj> ConfObjListIt; |
||||
|
||||
class Conf |
||||
{ |
||||
public: |
||||
Conf() : vars(17) |
||||
{ |
||||
list.setAutoDelete(true); |
||||
vars.setAutoDelete(true); |
||||
|
||||
vars.insert("QMAKE_INCDIR_X11", new TQString(X11_INC)); |
||||
vars.insert("QMAKE_LIBDIR_X11", new TQString(X11_LIBDIR)); |
||||
vars.insert("QMAKE_LIBS_X11", new TQString(X11_LIB)); |
||||
vars.insert("QMAKE_CC", new TQString(CC)); |
||||
} |
||||
|
||||
~Conf() |
||||
{ |
||||
} |
||||
|
||||
void added(ConfObj *o) |
||||
{ |
||||
list.append(o); |
||||
} |
||||
|
||||
TQString getenv(const TQString &var) |
||||
{ |
||||
char *p = ::getenv(var.latin1()); |
||||
if(!p) |
||||
return TQString::null; |
||||
return TQString(p); |
||||
} |
||||
|
||||
bool exec() |
||||
{ |
||||
ConfObjListIt it(list); |
||||
for(ConfObj *o; (o = it.current()); ++it) { |
||||
// if this was a disabled-by-default option, check if it was enabled |
||||
if(o->disabled) { |
||||
TQString v = TQString("QC_ENABLE_") + o->shortname(); |
||||
if(getenv(v) != "Y") |
||||
continue; |
||||
} |
||||
// and the opposite? |
||||
else { |
||||
TQString v = TQString("QC_DISABLE_") + o->shortname(); |
||||
if(getenv(v) == "Y") |
||||
continue; |
||||
} |
||||
|
||||
printf("Checking for %s ...", o->name().latin1()); |
||||
fflush(stdout); |
||||
bool ok = o->exec(); |
||||
if(ok) |
||||
printf(" yes\n"); |
||||
else |
||||
printf(" no\n"); |
||||
if(!ok && o->required) { |
||||
printf("\nError: need %s!\n", o->name().latin1()); |
||||
return false; |
||||
} |
||||
} |
||||
return true; |
||||
} |
||||
|
||||
const TQString & qvar(const TQString &s) |
||||
{ |
||||
TQString *p = vars.find(s); |
||||
if(p) |
||||
return *p; |
||||
else |
||||
return blank; |
||||
} |
||||
|
||||
TQString expandIncludes(const TQString &inc) |
||||
{ |
||||
return TQString("-I") + inc; |
||||
} |
||||
|
||||
TQString expandLibs(const TQString &lib) |
||||
{ |
||||
return TQString("-L") + lib; |
||||
} |
||||
|
||||
int doCommand(const TQString &s) |
||||
{ |
||||
//printf("[%s]\n", s.latin1()); |
||||
int r = system((s + " 1>/dev/null 2>/dev/null").latin1()); |
||||
//printf("returned: %d\n", r); |
||||
return r; |
||||
} |
||||
|
||||
bool doCompileAndLink(const TQString &filedata, const TQString &flags, int *retcode=0) |
||||
{ |
||||
TQDir dir("."); |
||||
TQString fname = "atest.c"; |
||||
TQString out = "atest"; |
||||
TQFile f(fname); |
||||
TQCString cs = filedata.latin1(); |
||||
if(!f.open(IO_WriteOnly | IO_Truncate)) |
||||
return false; |
||||
f.writeBlock(cs.data(), cs.length()); |
||||
f.close(); |
||||
|
||||
TQString str = qvar("QMAKE_CC") + ' ' + fname + " -o " + out + ' ' + flags; |
||||
int r = doCommand(str); |
||||
if(r == 0 && retcode) |
||||
*retcode = doCommand(TQString("./") + out); |
||||
dir.remove(fname); |
||||
dir.remove(out); |
||||
if(r != 0) |
||||
return false; |
||||
return true; |
||||
} |
||||
|
||||
bool checkHeader(const TQString &path, const TQString &h) |
||||
{ |
||||
TQFileInfo fi(path + '/' + h); |
||||
if(fi.exists()) |
||||
return true; |
||||
return false; |
||||
} |
||||
|
||||
bool findHeader(const TQString &h, const TQStringList &ext, TQString *inc) |
||||
{ |
||||
if(checkHeader("/usr/include", h)) { |
||||
*inc = ""; |
||||
return true; |
||||
} |
||||
TQStringList dirs; |
||||
dirs += "/usr/local/include"; |
||||
dirs += ext; |
||||
for(TQStringList::ConstIterator it = dirs.begin(); it != dirs.end(); ++it) { |
||||
if(checkHeader(*it, h)) { |
||||
*inc = *it; |
||||
return true; |
||||
} |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
bool checkLibrary(const TQString &path, const TQString &name) |
||||
{ |
||||
TQString str = |
||||
"int main()\n" |
||||
"{\n" |
||||
" return 0;\n" |
||||
"}\n"; |
||||
|
||||
TQString extra; |
||||
if(!path.isEmpty()) |
||||
extra += TQString("-L") + path + ' '; |
||||
extra += TQString("-l") + name; |
||||
if(!doCompileAndLink(str, extra)) |
||||
return false; |
||||
return true; |
||||
} |
||||
|
||||
bool findLibrary(const TQString &name, TQString *lib) |
||||
{ |
||||
if(checkLibrary("", name)) { |
||||
*lib = ""; |
||||
return true; |
||||
} |
||||
if(checkLibrary("/usr/local/lib", name)) { |
||||
*lib = "/usr/local/lib"; |
||||
return true; |
||||
} |
||||
if(checkLibrary("/usr/local/lib64", name)) { |
||||
*lib = "/usr/local/lib64"; |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
void addDefine(const TQString &str) |
||||
{ |
||||
if(DEFINES.isEmpty()) |
||||
DEFINES = str; |
||||
else |
||||
DEFINES += TQString(" ") + str; |
||||
} |
||||
|
||||
void addLib(const TQString &str) |
||||
{ |
||||
if(LIBS.isEmpty()) |
||||
LIBS = str; |
||||
else |
||||
LIBS += TQString(" ") + str; |
||||
} |
||||
|
||||
void addIncludePath(const TQString &str) |
||||
{ |
||||
if(INCLUDEPATH.isEmpty()) |
||||
INCLUDEPATH = str; |
||||
else |
||||
INCLUDEPATH += TQString(" ") + str; |
||||
} |
||||
|
||||
void addExtra(const TQString &str) |
||||
{ |
||||
extra += str + '\n'; |
||||
} |
||||
|
||||
TQString DEFINES; |
||||
TQString INCLUDEPATH; |
||||
TQString LIBS; |
||||
TQString extra; |
||||
|
||||
private: |
||||
ConfObjList list; |
||||
TQDict<TQString> vars; |
||||
TQString blank; |
||||
}; |
||||
|
||||
ConfObj::ConfObj(Conf *c) |
||||
{ |
||||
conf = c; |
||||
conf->added(this); |
||||
required = false; |
||||
disabled = false; |
||||
} |
||||
|
||||
ConfObj::~ConfObj() |
||||
{ |
||||
} |
||||
|
||||
#include"modules.cpp" |
||||
|
||||
//---------------------------------------------------------------------------- |
||||
// main |
||||
//---------------------------------------------------------------------------- |
||||
int main() |
||||
{ |
||||
Conf *conf = new Conf; |
||||
ConfObj *o; |
||||
o = 0; |
||||
#include"modules_new.cpp" |
||||
|
||||
printf("ok\n"); |
||||
bool success = false; |
||||
if(conf->exec()) { |
||||
TQFile f("conf.pri"); |
||||
if(!f.open(IO_WriteOnly | IO_Truncate)) { |
||||
printf("Error writing %s\n", f.name().latin1()); |
||||
return 1; |
||||
} |
||||
|
||||
TQString str; |
||||
str += "# qconf\n"; |
||||
str += "QT_PATH_PLUGINS = " + TQString(tqInstallPathPlugins()) + '\n'; |
||||
if(!conf->DEFINES.isEmpty()) |
||||
str += "DEFINES += " + conf->DEFINES + '\n'; |
||||
if(!conf->INCLUDEPATH.isEmpty()) |
||||
str += "INCLUDEPATH += " + conf->INCLUDEPATH + '\n'; |
||||
if(!conf->LIBS.isEmpty()) |
||||
str += "LIBS += " + conf->LIBS + '\n'; |
||||
if(!conf->extra.isEmpty()) |
||||
str += conf->extra; |
||||
str += '\n'; |
||||
|
||||
char *p = getenv("BINDIR"); |
||||
if(p) { |
||||
str += TQString("target.path = ") + p + '\n'; |
||||
str += "INSTALLS += target\n"; |
||||
} |
||||
|
||||
TQCString cs = str.latin1(); |
||||
f.writeBlock(cs.data(), cs.length()); |
||||
f.close(); |
||||
success = true; |
||||
} |
||||
delete conf; |
||||
|
||||
if(success) |
||||
return 0; |
||||
else |
||||
return 1; |
||||
} |
||||
|
||||
EOT |
||||
cat >$1/conf.pro <<EOT |
||||
TEMPLATE = app |
||||
CONFIG += qt x11 thread console |
||||
TARGET = conf |
||||
INCLUDEPATH += '/usr/include/tqt' |
||||
|
||||
DEFINES += X11_INC='"\$\$QMAKE_INCDIR_X11"' |
||||
DEFINES += X11_LIBDIR='"\$\$QMAKE_LIBDIR_X11"' |
||||
DEFINES += X11_LIB='"\$\$QMAKE_LIBS_X11"' |
||||
DEFINES += CC='"\$\$QMAKE_CC"' |
||||
|
||||
SOURCES += conf.cpp |
||||
|
||||
EOT |
||||
} |
||||
|
||||
export PREFIX |
||||
export TQTDIR |
||||
rm -rf .qconftemp |
||||
( |
||||
mkdir .qconftemp |
||||
gen_files .qconftemp |
||||
cd .qconftemp |
||||
$qm conf.pro >/dev/null |
||||
TQTDIR=$TQTDIR make clean >/dev/null 2>&1 |
||||
TQTDIR=$TQTDIR make >../conf.log 2>&1 |
||||
) |
||||
|
||||
if [ "$?" != "0" ]; then |
||||
rm -rf .qconftemp |
||||
echo fail |
||||
echo |
||||
echo "There was an error compiling 'conf'. Be sure you have a proper" |
||||
echo "TQt 3.x Multithreaded (MT) build environment set up." |
||||
if [ ! -f "$TQTDIR/lib/libtqt-mt.so.3" ]; then |
||||
if [ ! -f "$TQTDIR/lib64/libtqt-mt.so.3" ]; then |
||||
echo |
||||
echo "One possible reason is that you don't have" |
||||
echo "libtqt-mt.so.3 installed in $TQTDIR/lib/" |
||||
echo "or $TQTDIR/lib64/." |
||||
fi |
||||
fi |
||||
echo |
||||
exit 1; |
||||
fi |
||||
|
||||
.qconftemp/conf |
||||
ret="$?" |
||||
if [ "$ret" = "1" ]; then |
||||
rm -rf .qconftemp |
||||
echo |
||||
exit 1; |
||||
else |
||||
if [ "$ret" != "0" ]; then |
||||
rm -rf .qconftemp |
||||
echo fail |
||||
echo |
||||
echo Unexpected error launching 'conf' |
||||
echo |
||||
exit 1; |
||||
fi |
||||
fi |
||||
rm -rf .qconftemp |
||||
|
||||
if [ -x "./qcextra" ]; then |
||||
./qcextra |
||||
fi |
||||
# run tqmake |
||||
$qm qca.pro |
||||
if [ "$?" != "0" ]; then |
||||
echo |
||||
exit 1; |
||||
fi |
||||
cat >Makefile.tmp <<EOT |
||||
export TQTDIR = $TQTDIR |
||||
EOT |
||||
cat Makefile >> Makefile.tmp |
||||
rm -f Makefile |
||||
cp -f Makefile.tmp Makefile |
||||
rm -f Makefile.tmp |
||||
|
||||
echo |
||||
echo Good, your configure finished. Now run \'make\'. |
||||
echo |
@ -1,33 +0,0 @@
|
||||
# qca qmake profile |
||||
|
||||
TEMPLATE = lib |
||||
CONFIG += qt thread release |
||||
TARGET = qca |
||||
|
||||
MOC_DIR = .moc |
||||
OBJECTS_DIR = .obj |
||||
UI_DIR = .ui |
||||
|
||||
VER_MAJ = 1 |
||||
VER_MIN = 0 |
||||
|
||||
# make DLL |
||||
win32:{ |
||||
CONFIG += dll |
||||
DEFINES += QCA_MAKEDLL |
||||
} |
||||
|
||||
QCA_CPP = src |
||||
INCLUDEPATH += $$QCA_CPP |
||||
INCLUDEPATH += /usr/include/tqt |
||||
|
||||
HEADERS += \ |
||||
$$QCA_CPP/qca.h \ |
||||
$$QCA_CPP/qcaprovider.h |
||||
|
||||
SOURCES += \ |
||||
$$QCA_CPP/qca.cpp |
||||
|
||||
include(conf.pri) |
||||
include(extra.pri) |
||||
|
@ -1,5 +0,0 @@
|
||||
<qconf> |
||||
<name>Qt Cryptographic Architecture (QCA)</name> |
||||
<profile>qca.pro</profile> |
||||
<nobindir/> |
||||
</qconf> |
Loading…
Reference in new issue