diff --git a/net-im/icq/additional-files/icq.rdef b/net-im/icq/additional-files/icq.rdef new file mode 100644 index 000000000..ac21adc0a --- /dev/null +++ b/net-im/icq/additional-files/icq.rdef @@ -0,0 +1,17 @@ + +resource app_signature "application/x-vnd.icq"; + +resource app_flags B_MULTIPLE_LAUNCH; + +resource app_version { + major = 1, + middle = 0, + minor = 0, + + variety = B_APPV_DEVELOPMENT, + internal = 0, + + short_info = "ICQ 10.0", + long_info = "ICQ desktop client 10.0" +}; + diff --git a/net-im/icq/icq-10_git.recipe b/net-im/icq/icq-10_git.recipe new file mode 100644 index 000000000..dc1db7a2c --- /dev/null +++ b/net-im/icq/icq-10_git.recipe @@ -0,0 +1,92 @@ +SUMMARY="Official ICQ desktop client" +DESCRIPTION="ICQ desktop client for Haiku." +HOMEPAGE="http://www.icq.com" +COPYRIGHT="2016 ICQ LLC (Mail.Ru Group)" +LICENSE="Apache v2" +REVISION="1" +SOURCE_URI="https://github.com/mailru/icqdesktop/archive/fad5b8b0412aae4b23554ba7f63e0dcee92d16a7.zip" +CHECKSUM_SHA256="7416858d72937c8dd427dcff593226356b1bfa00cdc162f8368aadb1928ae53a" +SOURCE_DIR="icqdesktop-fad5b8b0412aae4b23554ba7f63e0dcee92d16a7" +PATCHES="icq-10_git.patchset" +ADDITIONAL_FILES="icq.rdef" + +ARCHITECTURES="!x86_gcc2 ?x86 ?x86_64" +SECONDARY_ARCHITECTURES="x86 !x86_gcc2" + +PROVIDES=" + icq$secondaryArchSuffix = $portVersion + app:ICQ$secondaryArchSuffix + " +REQUIRES=" + haiku${secondaryArchSuffix} + lib:libidn$secondaryArchSuffix + lib:libboost_system$secondaryArchSuffix + lib:libcurl$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libexpat$secondaryArchSuffix + lib:libffi$secondaryArchSuffix + lib:libgcrypt$secondaryArchSuffix + lib:libGl$secondaryArchSuffix + lib:libgnutls$secondaryArchSuffix + lib:libgpg_error$secondaryArchSuffix + lib:libopenal$secondaryArchSuffix + lib:libpcre$secondaryArchSuffix + lib:libqt5$secondaryArchSuffix + lib:librtmp$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libtasn1$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libavcodec$secondaryArchSuffix + devel:libidn$secondaryArchSuffix + devel:libboost_system$secondaryArchSuffix + devel:libcurl$secondaryArchSuffix + devel:libcrypto$secondaryArchSuffix + devel:libexpat$secondaryArchSuffix + devel:libffi$secondaryArchSuffix + devel:libgcrypt$secondaryArchSuffix + devel:libGl$secondaryArchSuffix + devel:libgnutls$secondaryArchSuffix + devel:libgpg_error$secondaryArchSuffix + devel:libopenal$secondaryArchSuffix + devel:libpcre$secondaryArchSuffix + devel:libqt5$secondaryArchSuffix + devel:librtmp$secondaryArchSuffix + devel:libssl$secondaryArchSuffix + devel:libtasn1$secondaryArchSuffix + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:gcc$secondaryArchSuffix + cmd:make + cmd:python + " + +BUILD() +{ + cd corelib/corelib + qmake + make $jobArgs + + cd ../../gui + python qt_prebuild_linux.py + qmake + # g++ runs out of memory on qrc_resource.cpp (it is huge!) + # as a workaround cut a significant part out of it + make $jobArgs LDFLAGS=-lboost_filesystem +} + +INSTALL() +{ + mkdir $appsDir/ICQ/lib + cp gui/icq $appsDir/ICQ/ICQ + cp corelib/corelib/libcorelib.so* $appsDir/ICQ/lib + ln -s $addOnsDir/Qt5/platforms $appsDir/ICQ/plugins + + addResourcesToBinaries $portDir/additional-files/icq.rdef \ + $appsDir/ICQ/ICQ + addAppDeskbarSymlink $appsDir/ICQ/ICQ +} diff --git a/net-im/icq/patches/icq-10_git.patchset b/net-im/icq/patches/icq-10_git.patchset new file mode 100644 index 000000000..62d897de1 --- /dev/null +++ b/net-im/icq/patches/icq-10_git.patchset @@ -0,0 +1,393 @@ +From a6bdc20b64cd8b2555ad338219531bd66d1ebb0a Mon Sep 17 00:00:00 2001 +From: Sergei Reznikov +Date: Thu, 31 Mar 2016 11:08:17 +0300 +Subject: build fixes for boost 1.55.0 + + +diff --git a/core/connections/wim/packets/send_feedback.cpp b/core/connections/wim/packets/send_feedback.cpp +index 230da06..44afd32 100644 +--- a/core/connections/wim/packets/send_feedback.cpp ++++ b/core/connections/wim/packets/send_feedback.cpp +@@ -37,7 +37,7 @@ int32_t send_feedback::init_request(std::shared_ptr _ + auto fromCurr = boost::filesystem::wpath(g_core->get_network_log().file_names_history().second); + if (boost::filesystem::exists(fromCurr)) + { +- auto tempCurr = fromCurr.parent_path().append(L"feedback_log_current.tmp"); ++ auto tempCurr = fromCurr.parent_path().append(L"feedback_log_current.tmp", boost::filesystem::path::codecvt()); + boost::filesystem::copy_file(fromCurr, tempCurr, boost::filesystem::copy_option::overwrite_if_exists); + const long sizeCurr = boost::filesystem::file_size(tempCurr); + { +@@ -61,7 +61,7 @@ int32_t send_feedback::init_request(std::shared_ptr _ + auto fromPrev = boost::filesystem::wpath(g_core->get_network_log().file_names_history().first); + if (boost::filesystem::exists(fromPrev)) + { +- auto tempPrev = fromPrev.parent_path().append(L"feedback_log_previous.tmp"); ++ auto tempPrev = fromPrev.parent_path().append(L"feedback_log_previous.tmp", boost::filesystem::path::codecvt()); + boost::filesystem::copy_file(fromPrev, tempPrev, boost::filesystem::copy_option::overwrite_if_exists); + const long sizePrev = boost::filesystem::file_size(tempPrev); + { +@@ -79,7 +79,7 @@ int32_t send_feedback::init_request(std::shared_ptr _ + } + } + +- log_ = fromCurr.parent_path().append("feedbacklog.txt").wstring(); ++ log_ = fromCurr.parent_path().append("feedbacklog.txt", boost::filesystem::path::codecvt()).wstring(); + + auto to = boost::filesystem::wpath(log_); + if (boost::filesystem::exists(to)) +diff --git a/core/log/log.cpp b/core/log/log.cpp +index 59a9bf3..9b233ce 100644 +--- a/core/log/log.cpp ++++ b/core/log/log.cpp +@@ -410,7 +410,7 @@ namespace + area_filename % log_file_index_ % w_area % log_files_ext_; + + fs::wpath path = logs_dir_; +- path.append(area_filename.str()); ++ path.append(area_filename.str(), boost::filesystem::path::codecvt()); + + return path; + } +@@ -613,4 +613,4 @@ namespace core + + } + +-} +\ No newline at end of file ++} +diff --git a/core/network_log.cpp b/core/network_log.cpp +index c644a51..7f3c4a0 100644 +--- a/core/network_log.cpp ++++ b/core/network_log.cpp +@@ -69,7 +69,7 @@ namespace core + area_filename % _index % L"net" % L"txt"; + + boost::filesystem::wpath path = _logs_directory; +- path.append(area_filename.str()); ++ path.append(area_filename.str(), boost::filesystem::path::codecvt()); + + return path; + } +@@ -112,7 +112,7 @@ namespace core + for (auto iter = files.rbegin(); iter != files.rend(); ++iter) + { + boost::filesystem::wpath file_path = _logs_directory; +- file_path.append(tools::from_utf8(iter->second)); ++ file_path.append(tools::from_utf8(iter->second), boost::filesystem::path::codecvt()); + + if (boost::filesystem::exists(file_path)) + { +diff --git a/core/stdafx.h b/core/stdafx.h +index fe8eb2a..70a547e 100644 +--- a/core/stdafx.h ++++ b/core/stdafx.h +@@ -46,6 +46,7 @@ + #include + + #include ++#define BOOST_NO_CXX11_SCOPED_ENUMS + #include + #include + #include +diff --git a/core/utils.cpp b/core/utils.cpp +index e146ff1..1382be7 100644 +--- a/core/utils.cpp ++++ b/core/utils.cpp +@@ -84,7 +84,7 @@ namespace core + { + boost::filesystem::wpath logs_dir(get_product_data_path()); + +- logs_dir.append(L"logs"); ++ logs_dir.append(L"logs", boost::filesystem::path::codecvt()); + + return logs_dir; + } +-- +2.7.0 + + +From 356e673e8cd1c90dd5b896b2a77a99c8c1d852c1 Mon Sep 17 00:00:00 2001 +From: Sergei Reznikov +Date: Thu, 31 Mar 2016 11:09:34 +0300 +Subject: initial Haiku support + + +diff --git a/core/tools/strings.cpp b/core/tools/strings.cpp +index 000a4b7..c04048d 100644 +--- a/core/tools/strings.cpp ++++ b/core/tools/strings.cpp +@@ -146,13 +146,13 @@ namespace core + + const std::string wstring_to_string(const std::wstring& _wstr) + { +-#if defined(__linux__) ++#if defined(__linux__) || defined(__HAIKU__) + return std::wstring_convert, wchar_t>().to_bytes(_wstr); + #elif defined(__APPLE__) + return std::wstring_convert, wchar_t>().to_bytes(_wstr); + #else + return from_utf16(short_path_for(_wstr)); +-#endif //__linux__ ++#endif + } + + std::string adler32(const std::string& _input) +diff --git a/core/tools/system_common.cpp b/core/tools/system_common.cpp +index 494f46d..1c51a36 100644 +--- a/core/tools/system_common.cpp ++++ b/core/tools/system_common.cpp +@@ -4,7 +4,7 @@ + #if defined(_WIN32) + #include + +-#elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__)) ++#elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__)) || defined(__HAIKU__) + #include + #include + #include +@@ -41,7 +41,7 @@ size_t get_memory_size_mb() + GlobalMemoryStatusEx( &status ); + return (size_t) (status.ullTotalPhys / mb); + +-#elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__)) ++#elif defined(__unix__) || defined(__unix) || defined(unix) || (defined(__APPLE__) && defined(__MACH__)) || defined(__HAIKU__) + /* UNIX variants. ------------------------------------------- */ + /* Prefer sysctl() over sysconf() except sysctl() HW_REALMEM and HW_PHYSMEM */ + +@@ -94,4 +94,4 @@ size_t get_memory_size_mb() + #endif + } + +-}}} +\ No newline at end of file ++}}} +diff --git a/core/utils.cpp b/core/utils.cpp +index 1382be7..da55cb0 100644 +--- a/core/utils.cpp ++++ b/core/utils.cpp +@@ -12,9 +12,12 @@ namespace core + { + #ifdef __linux__ + return (core::tools::system::get_user_profile() + L"/.config/" + L"ICQ"); ++#ifdef __HAIKU__ ++ return (core::tools::system::get_user_profile() + L"/config/settings/" + L"ICQ"); + #else + return (core::tools::system::get_user_profile() + L"/" + L"ICQ"); +-#endif //__linux__ ++#endif // haiku ++#endif // linux + } + + std::string get_product_name() +@@ -32,6 +35,10 @@ namespace core + { + return "Mail.ru Mac OS X ICQ"; + } ++ else if (platform::is_haiku()) ++ { ++ return "Mail.ru Haiku ICQ"; ++ } + else if (platform::is_linux()) + { + return "Mail.ru Linux ICQ"; +@@ -58,6 +65,10 @@ namespace core + { + return "Apple"; + } ++ else if (platform::is_haiku()) ++ { ++ return "Haiku"; ++ } + else + { + assert(false); +diff --git a/corelib/common.h b/corelib/common.h +index b62986c..d72ac44 100644 +--- a/corelib/common.h ++++ b/corelib/common.h +@@ -131,6 +131,15 @@ namespace platform + #endif + } + ++ inline bool is_haiku() ++ { ++ #if defined(__HAIKU__) ++ return true; ++ #else ++ return false; ++ #endif ++ } ++ + inline bool is_linux() + { + #if defined(__linux__) +diff --git a/gui/core_dispatcher.cpp b/gui/core_dispatcher.cpp +index 33b9a8c..e29071b 100644 +--- a/gui/core_dispatcher.cpp ++++ b/gui/core_dispatcher.cpp +@@ -197,7 +197,7 @@ qint64 core_dispatcher::delete_message(const int64_t _message_id) + + bool core_dispatcher::init() + { +-#ifndef __linux__ ++#if !defined(__linux__) && !defined(__HAIKU__) + QLibrary libcore(CORELIBRARY); + if (!libcore.load()) + { +@@ -224,7 +224,7 @@ bool core_dispatcher::init() + return false; + } + core_face_ = core_face; +-#endif //__linux__ ++#endif + core_connector_ = core_face_->get_core_connector(); + if (!core_connector_) + return false; +diff --git a/gui/gui.pro b/gui/gui.pro +index fb211cb..ad54b08 100644 +--- a/gui/gui.pro ++++ b/gui/gui.pro +@@ -15,7 +15,7 @@ CONFIG += 64 + + CONFIG += res_internal + +-CORELIB_PATH = ../corelib ++CORELIB_PATH = ../corelib/corelib + + PRECOMPILED_HEADER = stdafx.h + +@@ -320,17 +320,17 @@ HEADERS += \ + + DEFINES += STRIP_VOIP + QMAKE_CXXFLAGS += -std=c++0x +-QMAKE_LIBS += -lopenal -lavformat -lavcodec -lswresample -lavfilter -lavutil -lcorelib -lboost_system -lcurl_static -lssl_static -lcrypto_static -lboost_filesystem -lidn -lrtmp -lgcrypt -lgnutls -lgpg-error -ltasn1 -lz -lstdc++ -lrt -lxcb-util ++QMAKE_LIBS += -lopenal -lavformat -lavcodec -lswresample -lavfilter -lavutil -lcorelib -lboost_system -lcurl -lssl -lcrypto -lboost_filesystem -lidn -lrtmp -lgcrypt -lgnutls -lgpg-error -ltasn1 -lz -lstdc++ + CONFIG(32, 64|32) { + QMAKE_LIBS += -lp11-kit + } + +-QMAKE_LIBS_THREAD = -lxcb-util -lffi -lpcre -lexpat -lXext -lXau -lXdmcp -lz -Wl,-Bdynamic -ldl -lpthread -lX11 ++QMAKE_LIBS_THREAD = -lffi -lpcre -lexpat -lz -Wl,-Bstatic + +-QMAKE_LFLAGS += -Wl,-Bstatic -static-libgcc -static-libstdc++ -L$$CORELIB_PATH ++QMAKE_LFLAGS += -Wl,-Bdynamic -static-libgcc -static-libstdc++ -L$$CORELIB_PATH + + CONFIG(64, 64|32) { +- QMAKE_LFLAGS += -L$${PWD}/../external/linux/x64 -L$${PWD}/../external/OpenAl/lib/linux/x64 -L$${PWD}/../external/ffmpeg/lib/linux/x64 -L/x64 ++ QMAKE_LFLAGS += #-L$${PWD}/../external/linux/x64 -L$${PWD}/../external/OpenAl/lib/linux/x64 -L$${PWD}/../external/ffmpeg/lib/linux/x64 -L/x64 + } else { + QMAKE_LFLAGS += -L$${PWD}/../external/linux -L$${PWD}/../external/OpenAl/lib/linux -L$${PWD}/../external/ffmpeg/lib/linux -L/x32 + } +diff --git a/gui/main_window/settings/ContactUs.cpp b/gui/main_window/settings/ContactUs.cpp +index dee90e8..ad358e4 100644 +--- a/gui/main_window/settings/ContactUs.cpp ++++ b/gui/main_window/settings/ContactUs.cpp +@@ -507,6 +507,8 @@ void GeneralSettingsWidget::Creator::initContactUs(QWidget* parent, std::mapsetVisible(false); + scroll_area_content_layout->addWidget(successPage); + } +-} +\ No newline at end of file ++} +diff --git a/gui/main_window/sounds/MpegLoader.h b/gui/main_window/sounds/MpegLoader.h +index b7cbacb..ed253eb 100644 +--- a/gui/main_window/sounds/MpegLoader.h ++++ b/gui/main_window/sounds/MpegLoader.h +@@ -1,5 +1,9 @@ + #pragma once + ++#ifndef UINT64_C ++#define UINT64_C(c) (c ## ULL) ++#endif ++ + extern "C" + { + #include +@@ -62,4 +66,4 @@ namespace Ui + AVFrame* Frame_; + SwrContext* SwrContext_; + }; +-} +\ No newline at end of file ++} +diff --git a/gui/stdafx.h b/gui/stdafx.h +index 5c6fa22..91ecb85 100644 +--- a/gui/stdafx.h ++++ b/gui/stdafx.h +@@ -388,10 +388,10 @@ + #import + #import + #import +-#import ++#import + #import + #import +-#import ++#import + /* + #import + #import +@@ -402,7 +402,7 @@ + + #define assert(e) { if (!(e)) puts("ASSERT: " #e); } + +-#include "macconfig.h" ++//#include "macconfig.h" + + //#include + //#include +diff --git a/gui/voip/DetachedVideoWnd.cpp b/gui/voip/DetachedVideoWnd.cpp +index 84d6cf6..1d71309 100644 +--- a/gui/voip/DetachedVideoWnd.cpp ++++ b/gui/voip/DetachedVideoWnd.cpp +@@ -345,7 +345,7 @@ Ui::DetachedVideoWindow::DetachedVideoWindow(QWidget* parent) + #endif + + video_panel_header_effect_ = new UIEffects(*video_panel_header_.get()); +-#ifndef __linux__ ++#if !defined(__linux__) && !defined(__HAIKU__) + std::vector panels; + panels.push_back(video_panel_header_.get()); + _rootWidget = platform_specific::GraphicsPanel::create(this, panels); +@@ -354,7 +354,7 @@ Ui::DetachedVideoWindow::DetachedVideoWindow(QWidget* parent) + _rootWidget->setAttribute(Qt::WA_UpdatesDisabled); + _rootWidget->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); + layout()->addWidget(_rootWidget); +-#endif //__linux__ ++#endif + std::vector topPanels; + topPanels.push_back(video_panel_header_.get()); + std::vector bottomPanels; +diff --git a/gui/voip/VideoWindow.cpp b/gui/voip/VideoWindow.cpp +index 4562567..35151d2 100644 +--- a/gui/voip/VideoWindow.cpp ++++ b/gui/voip/VideoWindow.cpp +@@ -190,14 +190,14 @@ Ui::VideoWindow::VideoWindow() + panels.push_back(video_panel_.get()); + panels.push_back(video_panel_header_.get()); + panels.push_back(video_panel_header_with_avatars_.get()); +-#ifndef __linux__ ++#if !defined(__linux__) && !defined(__HAIKU__) + _rootWidget = platform_specific::GraphicsPanel::create(this, panels); + _rootWidget->setContentsMargins(0, 0, 0, 0); + //_rootWidget->setProperty("WidgetWithBG", true); + _rootWidget->setAttribute(Qt::WA_UpdatesDisabled); + _rootWidget->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); + layout()->addWidget(_rootWidget); +-#endif //__linux__ ++#endif + QIcon icon(":/resources/main_window/appicon.ico"); + setWindowIcon(icon); + +-- +2.7.0 +