How to compile ASL (thread-based core of the Java C ++ library) in linux?

Introduction

So we spent a few days with our entire team, which consists of 2 people, including me (which means that our efforts were not as professional as yours), CloudObserver , to do this using ASL .

We found how to compile ASL for Windows and Mac OS.

We created a graphical GUI with simple tutorials in ASL that worked great with Mac OS X and Windows, so we saw that Adobe Source Libraries work to create at least a simple interface and dialogs.

Then we started trying to get it working with linux.

Meat

We started by compiling ASL on linux, first installing the deprecated asl_1.0.43_net_setup.sh . It was pretty eazy here is our code:

#!/bin/bash ASL_DISTRO_NAME=asl_1.0.43.tgz ASL_NAME=source_release APL_DISTRO_NAME=apl_1.0.43.tgz APL_VERSION=1.0.43 APL_NAME=platform_release ASL_DISTRO_SITE=surfnet.dl.sourceforge.net BOOST_NAME=boost_1_44_0 BOOST_VERSION=1.44.0 BOOST_DISTRO_NAME="$BOOST_NAME".tar.gz #-L protects against redirects CURL_CMD=curl\ -L INTEL_TBB_NAME=tbb30_018oss INTEL_TBB_DISTRO_NAME="$INTEL_TBB_NAME"_src.tgz # Run a command, and echo before doing so. Also checks the exit # status and quits if there was an error. # # WARNING : Does *not* work when the command uses the redirection operator (>) # echo_run () { echo " $@ " " $@ " r=$? if test $r -ne 0 ; then exit $r fi } test_path() { hash $1 1>/dev/null 2>/dev/null } WD=`pwd` MACHINE=`uname` HERE=`dirname $0` cd $HERE if [ "$1" != "" ]; then ASL_DISTRO_SITE="$1" fi #http://surfnet.dl.sourceforge.net/project/adobe-source/adobe-source/1.0.43/asl_1.0.43.tgz if [ ! -e $ASL_DISTRO_NAME ]; then echo_run ${CURL_CMD} http://$ASL_DISTRO_SITE/project/adobe-source/adobe-source/$APL_VERSION/$ASL_DISTRO_NAME -o $ASL_DISTRO_NAME fi if [ ! -e $APL_DISTRO_NAME ]; then echo_run ${CURL_CMD} http://$ASL_DISTRO_SITE/project/adobe-source/adobe-source/$APL_VERSION/$APL_DISTRO_NAME -o $APL_DISTRO_NAME fi if [ ! -e $BOOST_DISTRO_NAME ]; then echo_run ${CURL_CMD} http://$ASL_DISTRO_SITE/project/boost/boost/$BOOST_VERSION/$BOOST_DISTRO_NAME -o $BOOST_DISTRO_NAME fi if [ ! -e $INTEL_TBB_DISTRO_NAME ]; then echo_run ${CURL_CMD} http://www.threadingbuildingblocks.org/uploads/78/154/3.0/$INTEL_TBB_DISTRO_NAME -o $INTEL_TBB_DISTRO_NAME fi if [ ! -d adobe_root ]; then echo_run mkdir adobe_root fi if [ ! -d adobe_root/adobe_source_libraries ]; then echo_run tar -xzf $ASL_DISTRO_NAME echo_run mv $ASL_NAME adobe_root/adobe_source_libraries fi if [ ! -d adobe_root/adobe_platform_libraries ]; then echo_run tar -xzf $APL_DISTRO_NAME echo_run mv $APL_NAME adobe_root/adobe_platform_libraries fi if [ ! -e adobe_root/boost_libraries/INSTALL ]; then # move the boost distro into place echo_run tar -xzf $BOOST_DISTRO_NAME echo_run rm -rf adobe_root/boost_libraries echo_run mv $BOOST_NAME adobe_root/boost_libraries fi if [ ! -e adobe_root/intel_tbb_libraries/README ]; then # move the intel_tbb distro into place echo_run tar -xzf $INTEL_TBB_DISTRO_NAME echo_run rm -rf adobe_root/intel_tbb_libraries echo_run mv $INTEL_TBB_NAME adobe_root/intel_tbb_libraries fi cd $HERE echo_run adobe_root/adobe_source_libraries/tools/patch_boost.sh if [[ $MACHINE == "Darwin" ]] then cd adobe_root/adobe_platform_libraries else cd adobe_root/adobe_source_libraries fi echo_run ../adobe_source_libraries/tools/build.sh echo Done! exit 0 

So we have compiled libasl_dev.a. Unfortunately, just that. This is completely useless to us, because we want a graphical interface , and not just an Adam reader.

So, we needed an analog of libasl_widgets.dll on Windows - libasl_widgets_dev.a. I quote ASL/platform_release/jamroot.jam

APL does not support gcc cygwin, although ASL does. Only supported toolkits for mslc and darwin APL

So adobe reminds us that it supports Linux. This is just sad! Way 2 Garden! So we discovered the missioncode project .

It was dated 2006 and increased 1.33.1, so it was sad. It was also sad in here

The external libraries that are used by the mission are stored here.

This keeps them in our assembly and means that we do not need magic build scripts / rules to get prereqs installed.

The point is that they do not have separate assembly files for libraries - libraries are embedded in the project. But the whole project is compiled through bjam, and inside the project, Boost, ASL and other libraries are divided into projects . This means that each of these subprojects is compiled in order and inan exequtable or in lib.

But all we really needed from ASL was a simple GUI for the simple needs of a non-GUI-oriented small open source cross-platform project. We needed a button, a scale (aka slider, aka trackbar) and text input feild. And some large-scale options for future development. So we thought - allows compele ASL from the codecode project in any way.

First we tried some modern Ubuntu 11 and 11 and OpenSuse (Mono for VMware from here ) that we use every day. But he constantly failed with errors. Therefore, we thought - let's compile it earlier, more suitable for the OS by age. We started working with Ubuntu 4 and were going to version. It compiled on 6.10 with some minor fixes, for example

 diff -crB original/external/adobe/adobe/basic_sheet.hpp modified/external/adobe/adobe/basic_sheet.hpp *** original/external/adobe/adobe/basic_sheet.hpp 2011-06-25 08:21:48.000000000 +0400 --- modified/external/adobe/adobe/basic_sheet.hpp 2011-06-25 08:24:33.000000000 +0400 *************** *** 13,18 **** --- 13,19 ---- #include <deque> #include <map> + #include <vector> #include <adobe/name.hpp> #include <adobe/any_regular.hpp> diff -crB original/external/adobe/source/xstring.cpp modified/external/adobe/source/xstring.cpp *** original/external/adobe/source/xstring.cpp 2011-06-25 08:21:46.000000000 +0400 --- modified/external/adobe/source/xstring.cpp 2011-06-25 08:24:10.000000000 +0400 *************** *** 331,337 **** { typedef std::iterator_traits<store_iterator>::difference_type difference_type; ! difference_type range_size(boost::size(range)); if (!range_size) return glossary_m.end(); --- 331,337 ---- { typedef std::iterator_traits<store_iterator>::difference_type difference_type; ! difference_type range_size(boost::distance(range)); if (!range_size) return glossary_m.end(); 

we had a Missioncode compiling ASL with Widgets. Widgets were completely created using the mission code, so there was no military action if that worked .. but we had compiled the full trunk code (also an application called missionPhoto), and the application worked fine.

We tried to compile our code with this full ASL, but it turned out that the ASL api that we had on the window does not work on the ASL that we had on the windows ... more or less at all. = (

Not the end

But still there is hope that any of you, dear SO users with extensive experience, will look at the ASL that is in MissionCode and at the current ASL, and provide all of us with ASL 1.0.43 for Linux.

+7
source share
1 answer


It seems that the current version of apl does not support creation for Linux. The docs say: http://stlab.adobe.com/asl_readme.html#Building_for_Mac.2C_.2ANIX . You can also see it in the apl directory structure. There are $ APL_ROOT / windows and $ APL_ROOT / macintosh directories, but no Linux-related directory (something like gtk, qt, etc.)
About the project "mission code": they use some older version of adobe libraries (it does not have a separation for asl and apl, etc.). It is possible that previous versions of adobe libs supported creation for linux (or perhaps mission code programmers added spport for gtk themselves).
Theoretically, you can add support for the new platform by implementing similar functionality implemented for win and macos (in the current version, this code is about 6 ... 8 thousand lines for each of them), but I do not think this work is too easy.
Anyway, goodluck! :)

+4
source

All Articles