prebuilt libs for the yat && yat4tango

Is there prebuilt lib for the yat && yat4tango?
Or do I have to build from the source by myself?

The prebuilt zip file of the two files do not contail them.
- tango922_win64_vc10.zip
- tango922_win32_vc10.zip

Edited 2 years ago
Hi,
yat & yat4tango are not part of the Tango core components. That's why there's no binary package available.
On which platform do you want to compile the libraries?

The auto tools are supported on Linux (thanks to Frederic Picca's contribution).
Type ./autogen.sh to generate the configure file.
Compiling yat4tango requires the pkg-config stuffs to be properly setup.
Type ./configure –help to see what are the available options to locate the dependencies.

On Windows, both libraries come with their own msvc project (I recently updated the ones for msvc12).
yat has no dependencies and is straightforward to compile.
For yat4tango, the simplest way to compile the library is to modify the provided "edit_then_launch_to_compile.bat" (same location the msvc project itself).

Hello Nicolas,
I tried to compile yat on a debian 8+TANGO 8 server installed on it.

Following your instructions, I tried to generate config files for yat with ./autogen.sh but I got the following error:

$ ./autogen.sh 
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal –force -I m4
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize –copy –force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: copying file `config/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
autoreconf: running: /usr/bin/autoconf –force
autoreconf: running: /usr/bin/autoheader –force
autoreconf: running: automake –add-missing –copy –force-missing
automake: warnings are treated as errors
/usr/share/automake-1.14/am/ltlibrary.am: warning: 'libyat.la': linking libtool libraries using a non-POSIX
/usr/share/automake-1.14/am/ltlibrary.am: archiver requires 'AM_PROG_AR' in 'configure.ac'
src/Makefile.am:5:   while processing Libtool library 'libyat.la'
autoreconf: automake failed with exit status: 1

I have a similar error on a TANGO 9 server installed on a debian 9.

Reading https://github.com/vmt/udis86/issues/6, I added on line 16 of configure.ac file : m4_ifdef([AM_PROG_AR], [AM_PROG_AR])

It seems to solve this issue.

Note: perhaps mentionning need of dh-autoreconf package could be mentionned into README/INSTALL.
Regards.
- Philippe
For yat4tango, libtool package is needed.
Same correction is needed into configure.ac that for yat.
- Philippe
Philippe,
I think we are going to deprecate auto(hell)tools and switch to cmake - the latter is already supported and my humble advice is to use it.
n.

be sure your using the proper pkg-config directory:
export PKG_CONFIG_PATH=<your-prefix>/lib/pkgconfig

yat & yat4tango compilation:
cmake -DCMAKE_INSTALL_PREFIX:PATH=<path-to-install-dir>
make 
make install
Edited 1 year ago
+1 for using cmake.
Thank you for these explanations Nicolas.
I didn't notice that Cmake files can be used, this is much more easier! :)
- Philippe
Hello,
while building AttributeSequenceWriter DS, I got some errors due to yat4tango unfound references.
I installed and built YAT-1.14.5 and YAT4Tango-1.11.4

Here is the output I got when building AttributeSequenceWriter:

$ make
Compiling AttributeSequenceWriter.cpp …
g++ -g -D_DEBUG -D_REENTRANT -W -I/home/ccthomx/LIB-LAL/Lib/include -I../include -I. -I/usr/include/tango -I/usr/include -I/usr/local/include -m64 -D_PS_AVAILABLE_ -std=c++0x -Dlinux -c AttributeSequenceWriter.cpp -o obj/AttributeSequenceWriter.o
Compiling AttributeSequenceWriterClass.cpp …
g++ -g -D_DEBUG -D_REENTRANT -W -I/home/ccthomx/LIB-LAL/Lib/include -I../include -I. -I/usr/include/tango -I/usr/include -I/usr/local/include -m64 -D_PS_AVAILABLE_ -std=c++0x -Dlinux -c AttributeSequenceWriterClass.cpp -o obj/AttributeSequenceWriterClass.o
Compiling AttributeSequenceWriterStateMachine.cpp …
g++ -g -D_DEBUG -D_REENTRANT -W -I/home/ccthomx/LIB-LAL/Lib/include -I../include -I. -I/usr/include/tango -I/usr/include -I/usr/local/include -m64 -D_PS_AVAILABLE_ -std=c++0x -Dlinux -c AttributeSequenceWriterStateMachine.cpp -o obj/AttributeSequenceWriterStateMachine.o
Compiling AttributeSequenceWriterTask.cpp …
g++ -g -D_DEBUG -D_REENTRANT -W -I/home/ccthomx/LIB-LAL/Lib/include -I../include -I. -I/usr/include/tango -I/usr/include -I/usr/local/include -m64 -D_PS_AVAILABLE_ -std=c++0x -Dlinux -c AttributeSequenceWriterTask.cpp -o obj/AttributeSequenceWriterTask.o
Compiling AttributesHelper.cpp …
g++ -g -D_DEBUG -D_REENTRANT -W -I/home/ccthomx/LIB-LAL/Lib/include -I../include -I. -I/usr/include/tango -I/usr/include -I/usr/local/include -m64 -D_PS_AVAILABLE_ -std=c++0x -Dlinux -c AttributesHelper.cpp -o obj/AttributesHelper.o
Compiling ClassFactory.cpp …
g++ -g -D_DEBUG -D_REENTRANT -W -I/home/ccthomx/LIB-LAL/Lib/include -I../include -I. -I/usr/include/tango -I/usr/include -I/usr/local/include -m64 -D_PS_AVAILABLE_ -std=c++0x -Dlinux -c ClassFactory.cpp -o obj/ClassFactory.o
Compiling main.cpp …
g++ -g -D_DEBUG -D_REENTRANT -W -I/home/ccthomx/LIB-LAL/Lib/include -I../include -I. -I/usr/include/tango -I/usr/include -I/usr/local/include -m64 -D_PS_AVAILABLE_ -std=c++0x -Dlinux -c main.cpp -o obj/main.o
Linking TANGO device server ../bin/bin64/AttributeSequenceWriter …
g++ ./obj/AttributeSequenceWriter.o ./obj/AttributeSequenceWriterClass.o ./obj/AttributeSequenceWriterStateMachine.o ./obj/AttributeSequenceWriterTask.o ./obj/AttributesHelper.o ./obj/ClassFactory.o ./obj/main.o -lyat -lyat4tango -L/home/ccthomx/LIB-LAL/Lib -ltango -lomniDynamic4 -lCOS4 -lomniORB4 -lomnithread -llog4tango -lzmq -ldl -lpthread -lstdc++ -o ../bin/bin64/AttributeSequenceWriter
./obj/AttributeSequenceWriterTask.o : Dans la fonction « AttributeSequenceWriter_ns::AttributeSequenceWriterTask::AttributeSequenceWriterTask(AttributeSequenceWriter_ns::AttributeSequenceWriterTask::Config const&) » :
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:44 : référence indéfinie vers « yat4tango::DeviceTask::enable_timeout_msg(bool) »
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:45 : référence indéfinie vers « yat4tango::DeviceTask::enable_periodic_msg(bool) »
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:46 : référence indéfinie vers « yat4tango::DeviceTask::set_periodic_msg_period(unsigned long) »
./obj/AttributeSequenceWriterTask.o : Dans la fonction « AttributeSequenceWriter_ns::AttributeSequenceWriterTask::process_message(yat::Message&) » :
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:74 : référence indéfinie vers « yat::Message::type() const »
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:125 : référence indéfinie vers « yat4tango::DeviceTask::enable_periodic_msg(bool) »
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:133 : référence indéfinie vers « yat4tango::DeviceTask::enable_periodic_msg(bool) »
./obj/AttributeSequenceWriterTask.o : Dans la fonction « AttributeSequenceWriter_ns::AttributeSequenceWriterTask::start_periodic_activity(unsigned long) » :
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:275 : référence indéfinie vers « yat4tango::DeviceTask::wait_msg_handled(unsigned long, unsigned long) »
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:278 : référence indéfinie vers « yat4tango::DeviceTask::post(unsigned long, unsigned long) »
./obj/AttributeSequenceWriterTask.o : Dans la fonction « AttributeSequenceWriter_ns::AttributeSequenceWriterTask::stop_periodic_activity(unsigned long) » :
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:299 : référence indéfinie vers « yat4tango::DeviceTask::wait_msg_handled(unsigned long, unsigned long) »
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:302 : référence indéfinie vers « yat4tango::DeviceTask::post(unsigned long, unsigned long) »
./obj/AttributeSequenceWriterTask.o : Dans la fonction « AttributeSequenceWriter_ns::AttributeSequenceWriterTask::start(unsigned long) » :
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:347 : référence indéfinie vers « yat4tango::DeviceTask::wait_msg_handled(unsigned long, unsigned long) »
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:350 : référence indéfinie vers « yat4tango::DeviceTask::post(unsigned long, unsigned long) »
./obj/AttributeSequenceWriterTask.o : Dans la fonction « AttributeSequenceWriter_ns::AttributeSequenceWriterTask::stop(unsigned long) » :
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:376 : référence indéfinie vers « yat::Semaphore::post() »
./obj/AttributeSequenceWriterTask.o : Dans la fonction « AttributeSequenceWriter_ns::AttributeSequenceWriterTask::resume(unsigned long) » :
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:406 : référence indéfinie vers « yat::Semaphore::post() »
./obj/AttributeSequenceWriterTask.o : Dans la fonction « AttributeSequenceWriter_ns::AttributeSequenceWriterTask::start_i() » :
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:430 : référence indéfinie vers « yat4tango::DeviceTask::enable_periodic_msg(bool) »
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:431 : référence indéfinie vers « yat4tango::DeviceTask::set_periodic_msg_period(unsigned long) »
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:571 : référence indéfinie vers « yat::Semaphore::wait() »
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:628 : référence indéfinie vers « yat::Semaphore::wait() »
/home/USER/DS-LAL/AttributeSequenceWriter/src/AttributeSequenceWriterTask.cpp:679 : référence indéfinie vers « yat::Semaphore::wait() »
./obj/AttributeSequenceWriterTask.o : Dans la fonction « void yat4tango::DeviceTask::post<yat::Buffer<double> >(unsigned long, yat::Buffer<double> const&, unsigned long) » :
/usr/include/yat4tango/DeviceTask.h:332 : référence indéfinie vers « yat4tango::DeviceTask::yt() const »
./obj/AttributeSequenceWriterTask.o : Dans la fonction « yat::AutoMutex<yat::Mutex>::AutoMutex(yat::Mutex&) » :
/usr/include/yat/threading/Mutex.h:262 : référence indéfinie vers « yat::Mutex::lock() »
./obj/AttributeSequenceWriterTask.o : Dans la fonction « yat::AutoMutex<yat::Mutex>::~AutoMutex() » :
/usr/include/yat/threading/Mutex.h:268 : référence indéfinie vers « yat::Mutex::unlock() »
./obj/AttributeSequenceWriterTask.o : Dans la fonction « void yat::Task::post<yat::Buffer<double> >(unsigned long, yat::Buffer<double> const&, unsigned long) » :
/usr/include/yat/threading/Task.h:407 : référence indéfinie vers « yat::Task::post(yat::Message*, unsigned long) »
collect2: error: ld returned 1 exit status
/usr/share/pogo/preferences/common_target.opt:100 : la recette pour la cible « ../bin/bin64/AttributeSequenceWriter » a échouée
make: *** [../bin/bin64/AttributeSequenceWriter] Erreur 1


Do you have any idea how to solve this issue?

Regards.
- Philippe
Hello Philippe,

All the unreferenced methods are implemented in '.i' files.
if YAT_INLINE_IMPL is defined when compiling YAT/YAT4TANGO (and your project) then those files are included at the end of header files otherwise at the beginning of .cpp files.

Example:
The method yat::Mutex::lock() is implemented in yat/threading/impl/PosixMutexImpl.i (line 108).
This file in included in yat/threading/Mutex.h (line 300) if YAT_INLINE_IMPL is set.
This file in included in src/threading/PosixThreadingImpl.cpp (line 58) if YAT_INLINE_IMPL is not set.

Hope this help…

Regards
Stéphane
Edited 2 weeks ago
Thank you Stephane.
However, I probably missed something about the use of YAT_INLINE_IMPL. I understand this variable is not mandatory since I did not see it into the doc, and since the .i are included in .cpp if it is not defined.

So whether YAT_INLINE_IMPL is defined or not, I understand yat and yat4tango methods should be available, shouldn't they?

Anyway, I tried to build AttributeSequenceWriter by adding YAT_INLINE_IMPL=1 in Makefile but it fails the same.

Did I miss some step?
- Philippe
Edited 6 days ago
 
Register or login to create to post a reply.