13 Star 58 Fork 26

Gitee 极速下载 / MiniGUI

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
此仓库是为了提升国内下载速度的镜像仓库,每日同步一次。 原始仓库: https://github.com/VincentWei/minigui
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
CMakeLists.txt 39.03 KB
一键复制 编辑 原始数据 按行查看 历史
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704
cmake_minimum_required (VERSION 2.6)
project (MiniGUI)
# use for MiniGUI common.h to find mgconfig.h
add_definitions (-D__CMAKE_PROJECT__)
# define if this is a MiniGUI project
add_definitions (-D__MINIGUI_LIB__)
# define _GNU_SOURCE for pthread_rwlock_t
add_definitions (-D_GNU_SOURCE)
# the version number.
set (MINIGUI_MAJOR_VERSION 3)
set (MINIGUI_MINOR_VERSION 0)
set (MINIGUI_MICRO_VERSION 13)
set (PROJECT_NICKNAME "minigui")
set (MGLIB_SUFFIX "")
set (MINIGUI_VERSION ${MINIGUI_MAJOR_VERSION}.${MINIGUI_MINOR_VERSION}.${MINIGUI_MICRO_VERSION})
set (MINIGUI_SOVERSION ${MINIGUI_MAJOR_VERSION})
set (MINIGUI_INCLUDE_LIST "")
set (MINIGUI_LIBRARIES_LIST "")
set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
# include cmake file
include (common)
include (minigui-private)
############## check the libraries ################
__find_threadslib (MINIGUI_LIBRARIES_LIST MINIGUI_INCLUDE_LIST)
__find_mlib (have_libm MINIGUI_LIBRARIES_LIST MINIGUI_INCLUDE_LIST)
############## check static lib ################
mg_declare_option_and_set_value (_SHAREDLIB_OUTPUT output_sharedlib BOOL ON "whether output the shared lib")
if (_SHAREDLIB_OUTPUT)
set (output_lib_type " Dynamic")
endif (_SHAREDLIB_OUTPUT)
mg_declare_option_and_set_value (_STATICLIB_OUTPUT output_staticlib BOOL OFF "whether output the static lib")
if (_STATICLIB_OUTPUT)
set (output_lib_type "${output_lib_type} Static")
endif(_STATICLIB_OUTPUT)
############## BASE ################
mg_set_value (_HAVE_MATH_LIB ON IF WIN32 OR have_libm)
mg_set_value (_MGTIMER_UNIT_10MS ON)
############ LICENSE ###############
__declare_license_option (_MG_ENABLE_SPLASH license_splash BOOL ON "enable splash")
__declare_license_option (_MG_ENABLE_SCREENSAVER license_screensaver BOOL ON "enable screensaver")
mg_declare_option (with_licensepicture STRING "minigui"
"with license picture: minigui/mdolphin/hybridos")
mg_declare_option_and_set_value (_MG_PRODUCTID license_productid BOOL OFF "insert a productid into the library file")
if (with_licensepicture STREQUAL "minigui")
mg_set_value (LICENSE_PICTURE "minigui")
elseif (with_licensepicture STREQUAL "mdolphin")
mg_set_value (LICENSE_PICTURE "mdolphin")
elseif (with_licensepicture STREQUAL "hybridos")
mg_set_value (LICENSE_PICTURE "hybridos")
else ()
message (FATAL "There is no license picture named ${with_licensepicture}")
endif (with_licensepicture STREQUAL "minigui")
############## GAL ################
# check fbcon
set (code_check_fbcon "
#include <linux/fb.h>
#include <linux/kd.h>
#include <linux/keyboard.h>
int main () {
return 0;
}
")
mg_declare_option_and_set_value_with_compile ("${code_check_fbcon}" _MGGAL_FBCON gal_fbcon BOOL ON "include FrameBuffer console NEWGAL engine")
# check directfb
set (code_check_directfb "
#include <directfb.h>
int main () {
return 0;
}
")
mg_declare_option_and_set_value_with_compile ("${code_check_directfb}" _MGGAL_DFB gal_dfb BOOL OFF "include NEWGAL engine for DirectFB")
mg_declare_option_and_set_value (_MGGAL_DUMMY gal_dummy BOOL ON "include dummy NEWGAL engine")
mg_declare_option_and_set_value (_MGGAL_QVFB gal_qvfb BOOL OFF "include Qt Virtual FrameBuffer NEWGAL engine")
mg_declare_option_and_set_value (_MGGAL_WVFB gal_wvfb BOOL OFF "include windows Virtual FrameBuffer NEWGAL engine")
mg_declare_option_and_set_value (_MGGAL_COMMLCD gal_commlcd BOOL OFF "include NEWGAL engine for Common LCD")
mg_declare_option_and_set_value (_MGGAL_SHADOW gal_shadow BOOL OFF "include Shadow NEWGAL engine")
mg_declare_option_and_set_value (_MGGAL_MLSHADOW gal_mlshadow BOOL OFF "include MLShadow NEWGAL engine")
mg_declare_option_and_set_value (_MGGAL_EM85XXOSD gal_em85xxosd BOOL OFF "include NEWGAL engine for EM85xx OSD")
mg_declare_option_and_set_value (_MGGAL_EM85XXYUV gal_em85xxyuv BOOL OFF "include NEWGAL engine for EM85xx YUV")
mg_declare_option_and_set_value (_MGGAL_EM86GFX gal_em86gfx BOOL OFF "include NEWGAL engine for EM86xx GFX")
mg_declare_option_and_set_value (_MGGAL_SVPXXOSD gal_svpxxosd BOOL OFF "include SVPXXOSD NEWGAL engine")
mg_declare_option_and_set_value (_MGGAL_BF533 gal_bf533 BOOL OFF "include NEWGAL engine for BF533 OSD via SPI")
mg_declare_option_and_set_value (_MGGAL_MB93493 gal_mb93493 BOOL OFF "include NEWGAL engine for mb93493 YUV FrameBuffer driver")
mg_declare_option_and_set_value (_MGGAL_UTPMC gal_utpmc BOOL OFF "include NEWGAL engine for UTPMC")
mg_declare_option_and_set_value (_MGGAL_NEXUS gal_nexus BOOL OFF "include nexus NEWGAL engine")
mg_declare_option_and_set_value (_MGGAL_S3C6410 gal_s3c6410 BOOL OFF "include s3c6410 NEWGAL engine")
mg_declare_option_and_set_value (_MGGAL_CUSTOMGAL gal_custom BOOL OFF "include custom NEWGAL engine")
mg_declare_option_and_set_value (_MGGAL_SIGMA8654 gal_sigma8654 BOOL OFF "include sigma8654 NEWGAL engine")
mg_declare_option_and_set_value (_MGGAL_MSTAR gal_mstar BOOL OFF "include mstar NEWGAL engine")
mg_declare_option_and_set_value (_MGGAL_HI3560A gal_hi3560a BOOL OFF "include hi3560a NEWGAL engine")
mg_declare_option_and_set_value (_MGGAL_GDL gal_gdl BOOL OFF "include gdl NEWGAL engine")
mg_declare_option_and_set_value (_MGGAL_ST7167 gal_ST7167 BOOL OFF "include NEWGAL engine for st7167")
mg_declare_option_and_set_value (_MGGAL_STGFB gal_STGFB BOOL OFF "include stgfb NEWGAL engine ST7105 ST7109")
if (_MGGAL_STGFB)
add_definitions (-D_ST_OSLINUX)
add_definitions (-D_ST_7105)
add_definitions (-DARCHITECTURE_ST40)
add_definitions (-DDEFINED_BOOL)
endif (_MGGAL_STGFB)
# if rtosxvfb enable, pcxvfb must disable
mg_declare_option (gal_rtosxvfb BOOL OFF "include RTOS Virtual FrameBuffer NEWGAL engine. Note: you must disable pcxvfb, if you want to enable rtosxvfb")
mg_declare_option (gal_pcxvfb BOOL ON "include PC Virtual FrameBuffer NEWGAL engine, such as qvfb, mvfb, gvfb or wvfb")
mg_set_value (_MGGAL_PCXVFB gal_pcxvfb IF NOT gal_rtosxvfb)
mg_set_value (_MGGAL_RTOSXVFB ON IF gal_rtosxvfb)
# define _MGGAL_HI3510 and _MGGAL_HI3560 at the same time
mg_declare_option (gal_hi35xx BOOL OFF "include Hi35xx Video NEWGAL engine")
mg_set_value (_MGGAL_HI3510 gal_hi35xx)
mg_set_value (_MGGAL_HI3560 gal_hi35xx)
if (gal_shadow OR gal_mlshadow)
set (MINIGUI_LIBRARIES_LIST "${MINIGUI_LIBRARIES_LIST} -lpthread")
endif (gal_shadow OR gal_mlshadow)
############## IAL ################
mg_declare_option_and_set_value (_MGIAL_CUSTOM ial_custom BOOL OFF "build the IAL engine for customer's board")
mg_declare_option_and_set_value (_MGIAL_NET ial_net BOOL OFF "build the IAL engine for net")
mg_declare_option_and_set_value (_MGIAL_CISCO_TOUCHPAD ial_ciscotouchpad BOOL OFF "build the IAL engine for Cisco Touchpad")
mg_declare_option_and_set_value (_MGIAL_MSTAR ial_mstar BOOL OFF "build the IAL engine for MStar")
mg_declare_option_and_set_value (_MGIAL_IPAQ_H3600 ial_ipaqh3600 BOOL OFF "build the IAL engine for iPAQ H3600")
mg_declare_option_and_set_value (_MGIAL_NEXUS ial_nexus BOOL OFF "build the IAL engine for Nexus")
mg_declare_option_and_set_value (_MGIAL_IPAQ_H5400 ial_ipaqh5400 BOOL OFF "build the IAL engine for iPAQ H5400")
mg_declare_option_and_set_value (_MGIAL_TSLIB ial_tslib BOOL OFF "build the IAL engine for TSLIB")
mg_declare_option_and_set_value (_MGIAL_DUMMY ial_dummy BOOL ON "build the Dummy IAL engine")
mg_declare_option_and_set_value (_MGIAL_AUTO ial_auto BOOL OFF "build the Automatic IAL engine")
mg_declare_option_and_set_value (_MGIAL_RANDOM ial_random BOOL OFF "build the Random IAL engine")
mg_declare_option_and_set_value (_MGIAL_COMM ial_comm BOOL OFF "build the COMM IAL engine")
mg_declare_option_and_set_value (_MGIAL_QVFB ial_qvfb BOOL OFF "build the QVFB IAL engine")
mg_declare_option_and_set_value (_MGIAL_QEMU ial_qemu BOOL OFF "build the QEMU IAL engine")
mg_declare_option_and_set_value (_MGIAL_WVFB ial_wvfb BOOL OFF "build the WVFB IAL engine")
mg_declare_option_and_set_value (_MGIAL_JZ4740 ial_jz4740 BOOL OFF "build the JZ4740 IAL engine")
mg_declare_option_and_set_value (_MGIAL_LIDE ial_lide BOOL OFF "build the lide IAL engine")
mg_declare_option_and_set_value (_MGIAL_2440 ial_2440 BOOL OFF "build the 2440 IAL engine")
mg_declare_option_and_set_value (_MGIAL_DAVINCI6446 ial_davinci6446 BOOL OFF "build the DAVINCI6446 IAL engine")
mg_declare_option_and_set_value (_MGIAL_DFB ial_dfb BOOL OFF "build the DFB IAL engine")
if (WIN32)
mg_declare_option_and_set_value (_MGIAL_CONSOLE ial_console BOOL OFF "build the console (Linux console) IAL engine")
mg_declare_option_and_set_value (_MGIAL_DLCUSTOM ial_dlcustom BOOL OFF "build the dlcustom IAL engine")
else ()
mg_declare_option_and_set_value (_MGIAL_CONSOLE ial_console BOOL ON "build the console (Linux console) IAL engine")
mg_declare_option_and_set_value (_MGIAL_DLCUSTOM ial_dlcustom BOOL ON "build the dlcustom IAL engine")
endif (WIN32)
############## IAL CONSOLE ################
mg_declare_option_and_set_value (_MGCONSOLE_PS2 ial_consoleps2 BOOL ON "build the console engine subdriver for PS2 mouse")
mg_declare_option_and_set_value (_MGCONSOLE_IMPS2 ial_consoleimps2 BOOL ON "build the console engine subdriver for IntelligentMouse (IMPS/2) mouse")
mg_declare_option_and_set_value (_MGCONSOLE_MS ial_consolems BOOL ON "build the console engine subdirver for old MS serial mouse")
mg_declare_option_and_set_value (_MGCONSOLE_MS3 ial_consolems3 BOOL ON "build the console engine subdirver for MS3 mouse")
mg_declare_option_and_set_value (_MGCONSOLE_GPM ial_consolegpm BOOL OFF "build the console engine subdirver for GPM daemon")
mg_declare_option_and_set_value (_MGCONSOLE_TEXTMODE ial_consoletextmode BOOL ON "Linux system have console (text mode) on FrameBuffer")
############## FONT ################
mg_declare_option_and_set_value (_MGFONT_BMPF font_bmpfsupport BOOL ON "build support for Bitmap Font (bmpf)")
mg_declare_option_and_set_value (_MGFONT_UPF font_upfsupport BOOL ON "build support for FMSOft's Unicode Prerendered Font (UPF)")
mg_declare_option_and_set_value (_MGFONT_QPF font_qpfsupport BOOL OFF "build support for Qt Prerendered Font (QPF)")
mg_declare_option_and_set_value (_MGFONT_SEF font_sefsupport BOOL OFF "build support for koxomo scripteasy (SEF)")
mg_declare_option_and_set_value (_MGFONT_RBF font_rbfsupport BOOL ON "include raw bitmap font support")
mg_declare_option_and_set_value (_MGFONT_VBF font_vbfsupport BOOL ON "include var bitmap font support")
mg_declare_option (font_unicodesupport BOOL ON "include UNICODE (ISO-10646-1 and UTF-8 encoding) support")
mg_declare_option (with_fontttfsupport STRING "none" "with_fontttfsupport=ft1/ft2/none")
mg_declare_option (with_ft2includes PATH "" "where the FreeType2 includes are")
mg_declare_option (font_ttfenablecache BOOL OFF "include ttf cache support")
mg_declare_option (font_ttfcachesize STRING "256" "font_ttfcachesize=64/128/256/512/1024")
mg_declare_option (font_ttfcachenum STRING "10" "font_ttfcachenum=10/20/40")
mg_declare_option (font_ttfgrayadjust BOOL OFF "adjust ttf font bitmap gray_value(range(0~255))")
mg_declare_option (font_ttfgrayadjust_value STRING "50" "font_ttfcachesize range(0~255)")
__find_freetype (with_fontttfsupport with_ft1includes with_ft2includes MINIGUI_LIBRARIES_LIST MINIGUI_INCLUDE_LIST)
# mg_set_value (/* Define what to do */ IF with_fontttfsupport STREQUAL "none")
mg_set_value (_MGFONT_TTF ON IF with_fontttfsupport STREQUAL "ft1")
mg_set_value (_MGFONT_FT2 ON IF with_fontttfsupport STREQUAL "ft2")
if (font_ttfgrayadjust)
mg_set_value (_MGFONT_TTF_GRAYADJUST ON)
set (_MGFONT_TTF_GRAYADJUST_VALUE ${font_ttfgrayadjust_value})
message (FATAL ${font_ttfgrayadjust_value})
endif (font_ttfgrayadjust)
if (with_fontttfsupport STREQUAL "none")
else ()
# enable font_unicodesupport
mg_set_variables_on (font_unicodesupport)
if (font_ttfenablecache)
mg_set_value (_MGFONT_TTF_CACHE ON)
mg_set_number_select_value (_MGTTF_CACHE_SIZE font_ttfcachesize 64 128 256 512 1024)
mg_set_number_select_value (_MGMAX_TTF_CACHE font_ttfcachenum 10 20 40)
endif (font_ttfenablecache)
endif (with_fontttfsupport STREQUAL "none")
if (font_bmpfsupport OR font_upfsupport OR font_sefsupport)
mg_set_variables_on (font_unicodesupport)
endif (font_bmpfsupport OR font_upfsupport OR font_sefsupport)
############## INCOREFONT ################
if (font_rbfsupport)
mg_declare_option_and_set_value (_MGINCORERBF_LATIN1_VGAOEM incorefont_rbfvgaoem BOOL ON "include incore RBF font of ISO8859-1 VGAOEM (8x8) font")
mg_declare_option_and_set_value (_MGINCORERBF_LATIN1_TERMINAL incorefont_rbfterminal BOOL ON "include incore RBF font of ISO8859-1 Terminal (8x12) font")
mg_declare_option_and_set_value (_MGINCORERBF_LATIN1_FIXEDSYS incorefont_rbffixedsys BOOL ON "include incore RBF font of ISO8859-1 FixedSys (8x15) font")
endif (font_rbfsupport)
if (font_vbfsupport)
mg_declare_option_and_set_value (_MGINCOREFONT_SANSSERIF incorefont_sserif BOOL ON "include incore font SansSerif (11x13)")
mg_declare_option_and_set_value (_MGINCOREFONT_COURIER incorefont_courier BOOL ON "include incore font Courier (8x13)")
mg_declare_option_and_set_value (_MGINCOREFONT_SYSTEM incorefont_system BOOL ON "include incore font System (14x16)")
endif (font_vbfsupport)
if (font_upfsupport)
mg_declare_option_and_set_value (_MGINCOREFONT_TIMES incorefont_times BOOL ON "include incore Times UPF fonts (12x10 and 17x14)")
endif (font_upfsupport)
############## CHARSET ################
mg_declare_option_and_set_value (_MGCHARSET_LATIN2 charset_latin2support BOOL ON "include East European (Latin 2 ISO8859-2) charset support")
mg_declare_option_and_set_value (_MGCHARSET_LATIN3 charset_latin3support BOOL ON "include South European (Latin 3 ISO8859-3) charset support")
mg_declare_option_and_set_value (_MGCHARSET_LATIN4 charset_latin4support BOOL ON "include North European (Latin 4 ISO8859-4) charset support")
mg_declare_option_and_set_value (_MGCHARSET_LATIN5 charset_latin5support BOOL ON "include Turkish (Latin 5 ISO8859-9) charset support")
mg_declare_option_and_set_value (_MGCHARSET_LATIN6 charset_latin6support BOOL ON "include Nordic Latin 6 ISO8859-10) charset support")
mg_declare_option_and_set_value (_MGCHARSET_LATIN7 charset_latin7support BOOL ON "include Latin 7 (ISO8859-13) charset support")
mg_declare_option_and_set_value (_MGCHARSET_LATIN8 charset_latin8support BOOL ON "include Latin 8 (ISO8859-14) charset support")
mg_declare_option_and_set_value (_MGCHARSET_LATIN9 charset_latin9support BOOL ON "include Latin 9 (ISO8859-15 West Extended) charset support")
mg_declare_option_and_set_value (_MGCHARSET_LATIN10 charset_latin10support BOOL ON "include Latin 10 (ISO8859-16 Romanian) charset support")
mg_declare_option_and_set_value (_MGCHARSET_CYRILLIC charset_cyrillicsupport BOOL ON "include Cyrillic (ISO8859-5) charset support")
mg_declare_option_and_set_value (_MGCHARSET_ARABIC charset_arabicsupport BOOL ON "include Arabic (ISO8859-6) charset support")
mg_declare_option_and_set_value (_MGCHARSET_GREEK charset_greeksupport BOOL ON "include Greek (ISO8859-7) charset support")
mg_declare_option_and_set_value (_MGCHARSET_HEBREW charset_hebrewsupport BOOL ON "include Hebrew (ISO8859-8) charset support")
mg_declare_option_and_set_value (_MGCHARSET_THAI charset_thaisupport BOOL ON "include Thai (ISO8859-11) charset support")
mg_declare_option_and_set_value (_MGCHARSET_GB charset_gbsupport BOOL ON "include EUC encoding of GB2312 charset support")
mg_declare_option_and_set_value (_MGCHARSET_GBK charset_gbksupport BOOL ON "include GBK charset support")
mg_declare_option_and_set_value (_MGCHARSET_GB18030 charset_gb18030support BOOL OFF "include GB18030-0 charset support")
mg_declare_option_and_set_value (_MGCHARSET_BIG5 charset_big5support BOOL ON "include BIG5 charset support")
mg_declare_option_and_set_value (_MGCHARSET_EUCKR charset_euckrsupport BOOL ON "include support for EUC encoding of KSC5636 and KSC5601 charsets")
mg_declare_option_and_set_value (_MGCHARSET_EUCJP charset_eucjpsupport BOOL ON "include support for EUC encoding of JISX0201 and JISX0208 charsets")
mg_declare_option_and_set_value (_MGCHARSET_SHIFTJIS charset_shiftjissupport BOOL ON "include support for Shift-JIS encoding of JISX0201 and JISX0208 charsets")
mg_set_value (_MGCHARSET_UNICODE font_unicodesupport)
############## CTRL ################
mg_declare_option_and_set_value (_MGCTRL_STATIC ctrl_static BOOL ON "include STATIC control")
mg_declare_option_and_set_value (_MGCTRL_BUTTON ctrl_button BOOL ON "include BUTTON control")
mg_declare_option_and_set_value (_MGCTRL_SLEDIT ctrl_sledit BOOL ON "include Single-Line EDIT control")
mg_declare_option_and_set_value (_MGCTRL_BIDISLEDIT ctrl_bidisledit BOOL ON "include Single-Line BIDI EDIT control")
mg_declare_option_and_set_value (_MGCTRL_LISTBOX ctrl_listbox BOOL ON "include LISTBOX control")
mg_declare_option_and_set_value (_MGCTRL_PROGRESSBAR ctrl_progressbar BOOL ON "include PROGRESSBAR control")
mg_declare_option_and_set_value (_MGCTRL_NEWTOOLBAR ctrl_newtoolbar BOOL ON "include NEWTOOLBAR control")
mg_declare_option_and_set_value (_MGCTRL_TRACKBAR ctrl_trackbar BOOL ON "include TRACKBAR control")
mg_declare_option_and_set_value (_MGCTRL_COMBOBOX ctrl_combobox BOOL ON "include COMBOBOX control")
mg_declare_option_and_set_value (_MGCTRL_PROPSHEET ctrl_propsheet BOOL ON "include PROPSHEET control")
mg_declare_option_and_set_value (_MGCTRL_SCROLLVIEW ctrl_scrollview BOOL ON "include SCROLLVIEW and SCROLLWINDOW controls")
mg_declare_option_and_set_value (_MGCTRL_MONTHCAL ctrl_monthcal BOOL ON "include MONTHCALENDAR control")
mg_declare_option_and_set_value (_MGCTRL_TREEVIEW ctrl_treeview BOOL ON "include TREEVIEW control")
mg_declare_option_and_set_value (_MGCTRL_TREEVIEW_RDR ctrl_treeviewrdr BOOL OFF "include TREEVIEWRDR control using LFRDR")
mg_declare_option_and_set_value (_MGCTRL_SPINBOX ctrl_spinbox BOOL ON "include SPINBOX control")
mg_declare_option_and_set_value (_MGCTRL_COOLBAR ctrl_coolbar BOOL ON "include COOLBAR control")
mg_declare_option_and_set_value (_MGCTRL_LISTVIEW ctrl_listview BOOL ON "include LISTVIEW control")
mg_declare_option_and_set_value (_MGCTRL_ICONVIEW ctrl_iconview BOOL ON "include ICONVIEW control")
mg_declare_option_and_set_value (_MGCTRL_GRIDVIEW ctrl_gridview BOOL OFF "include GRIDVIEW control(test)")
mg_declare_option_and_set_value (_MGCTRL_ANIMATION ctrl_animation BOOL ON "include ANIMATION control and GIF87a/GIF89a support")
mg_declare_option_and_set_value (_MGCTRL_SCROLLBAR ctrl_scrollbar BOOL ON "include SCROLLBAR control and GIF87a/GIF89a support")
mg_declare_option_and_set_value (_MGCTRL_TEXTEDIT_USE_NEW_IMPL ctrl_newtextedit BOOL ON "include the new implementation of TEXTEDIT control")
mg_declare_option (ctrl_textedit BOOL OFF "include old TEXTEDIT control implementation")
if (ctrl_newtextedit)
mg_set_variables_on (ctrl_textedit)
endif (ctrl_newtextedit)
mg_set_value (_MGCTRL_TEXTEDIT ctrl_textedit)
############## MISC ################
mg_declare_option_and_set_value (_DEBUG misc_debug BOOL OFF "build with debugging messages")
mg_declare_option_and_set_value (_USE_MINIGUIENTRY misc_miniguientry BOOL OFF "use minigui_entry function in MiniGUI")
mg_declare_option (misc_incoreres BOOL OFF "use incore resource instead file IO to initialize MiniGUI")
mg_declare_option_and_set_value (_MGMISC_DOUBLE_CLICK misc_dblclk BOOL ON "mouse button can do double click")
mg_declare_option_and_set_value (_MGMISC_SAVEBITMAP misc_savebitmap BOOL ON "include SaveBitmap-related functions")
mg_declare_option (misc_aboutdlg BOOL ON "include About Dialog Box")
mg_set_value (_MGMISC_ABOUTDLG misc_aboutdlg IF ctrl_button)
mg_declare_option (misc_savescreen BOOL ON "include code for screenshots")
mg_set_value (_MGMISC_SAVESCREEN misc_savescreen IF misc_savebitmap)
############### MISC_USEOWN ###################
mg_declare_option (misc_useownmalloc BOOL OFF "use own implementation of malloc functions")
mg_declare_option (misc_useownstdio BOOL OFF "use own implementation of stdio functions")
mg_declare_option (misc_useownpthread BOOL OFF "use own implementation of pthread functions")
################## MISC HAVE ######################
mg_declare_option_and_set_value (_MGHAVE_MENU misc_havemenu BOOL ON "include menu support")
mg_declare_option_and_set_value (_MGHAVE_CLIPBOARD misc_haveclipboard BOOL ON "include clipboard support")
mg_declare_option_and_set_value (_MGHAVE_CURSOR misc_havecursor BOOL ON "include cursor support")
mg_declare_option_and_set_value (_MGHAVE_FIXED_MATH misc_havefixedmath BOOL ON "include fixed math routines")
mg_declare_option_and_set_value (_MGHAVE_MOUSECALIBRATE misc_havemousecalibrate BOOL ON "include code doing mouse calibration")
mg_declare_option_and_set_value (_MGHAVE_TRACE_MSG misc_havetracemsg BOOL OFF "trace messages of MiniGUI")
mg_declare_option (misc_havemsgstr BOOL OFF "include symbol name of message")
mg_set_value (_MGHAVE_MSG_STRING misc_havemsgstr IF misc_havetracemsg)
mg_declare_option (misc_haveadv2dapi BOOL ON "include advanced 2D graphics APIs")
mg_set_value (_MGHAVE_ADV_2DAPI misc_haveadv2dapi IF WIN32 OR have_libm)
############## KEYBORADLAYOUT ################
mg_declare_option_and_set_value (_MGKBDLAYOUT_HEBREWPC kbd_hebrewpc BOOL OFF "include keyboard layout for Hebrew PC keyboard")
mg_declare_option_and_set_value (_MGKBDLAYOUT_ARABICPC kbd_arabicpc BOOL OFF "include keyboard layout for Arabic PC keyboard")
mg_declare_option_and_set_value (_MGKBDLAYOUT_FRPC kbd_frpc BOOL OFF "include keyboard layout for French PC keyboard (non-US 102 keys)")
mg_declare_option_and_set_value (_MGKBDLAYOUT_FR kbd_fr BOOL OFF "include keyboard layout for French")
mg_declare_option_and_set_value (_MGKBDLAYOUT_DE kbd_de BOOL OFF "include keyboard layout for German")
mg_declare_option_and_set_value (_MGKBDLAYOUT_DELATIN1 kbd_delatin1 BOOL OFF "include keyboard layout for German Latin1")
mg_declare_option_and_set_value (_MGKBDLAYOUT_IT kbd_it BOOL OFF "include keyboard layout for Italian")
mg_declare_option_and_set_value (_MGKBDLAYOUT_ES kbd_es BOOL OFF "include keyboard layout for Spanish")
mg_declare_option_and_set_value (_MGKBDLAYOUT_ESCP850 kbd_escp850 BOOL OFF "include keyboard layout for Spanish CP850")
############## LF_RDR #######################
mg_declare_option_and_set_value (_MGLF_RDR_FLAT lfrdr_flat BOOL ON "include flat Look and Feel renderer")
mg_declare_option_and_set_value (_MGLF_RDR_SKIN lfrdr_skin BOOL ON "include skin Look and Feel renderer")
############## CHECK OS NAME ################
if (NOT WIN32)
mg_declare_option (with_osname STRING "linux" "select osname: linux/uclinux/ecos/ucos2/swlinux/vxworks/win32/darwin/threadx/cygwin/nucleus/ose/psos")
else ()
mg_declare_option (with_osname STRING "win32" "select osname: linux/uclinux/ecos/ucos2/swlinux/vxworks/win32/darwin/threadx/cygwin/nucleus/ose/psos")
endif (NOT WIN32)
if (with_osname STREQUAL "uclinux")
mg_set_value (__uClinux__ ON)
elseif (with_osname STREQUAL "ecos")
mg_set_value (__ECOS__ ON)
mg_set_value (__NOUNIX__ ON)
elseif (with_osname STREQUAL "ucos2")
mg_set_value (__UCOSII__ ON)
mg_set_value (__NOUNIX__ ON)
mg_set_variables_on (misc_incoreres misc_useownmalloc misc_useownstdio misc_useownpthread)
elseif (with_osname STREQUAL "swlinux")
mg_set_value (__WINBOND_SWLINUX__ ON)
mg_set_value (__NOUNIX__ ON)
elseif (with_osname STREQUAL "vxworks")
mg_set_value (__VXWORKS__ ON)
mg_set_value (__NOUNIX__ ON)
elseif (with_osname STREQUAL "win32")
mg_set_value (WIN32 ON)
mg_set_value (__NOUNIX__ ON)
add_definitions (-D__NOUNIX__)
elseif (with_osname STREQUAL "darwin")
mg_set_value (__DARWIN__ ON)
elseif (with_osname STREQUAL "threadx")
mg_set_value (__THREADX__ ON)
mg_set_value (__NOUNIX__ ON)
mg_set_variables_on (misc_incoreres misc_useownmalloc misc_useownstdio misc_useownpthread)
elseif (with_osname STREQUAL "nucleus")
mg_set_value (__NUCLEUS__ ON)
mg_set_value (__NOUNIX__ ON)
mg_set_variables_on (misc_incoreres misc_useownmalloc misc_useownstdio misc_useownpthread)
elseif (with_osname STREQUAL "ose")
mg_set_value (__OSE__ ON)
mg_set_value (__NOUNIX__ ON)
mg_set_variables_on (misc_incoreres misc_useownpthread)
elseif (with_osname STREQUAL "psos")
mg_set_value (__PSOS__ ON)
mg_set_value (__NOUNIX__ ON)
else ()
mg_set_value (__LINUX__ ON)
set (with_osname "linux")
endif (with_osname STREQUAL "uclinux")
mg_set_value (_MGUSE_OWN_MALLOC ${misc_useownmalloc})
mg_set_value (_MGUSE_OWN_PTHREAD ${misc_useownpthread})
mg_set_value (_MGUSE_OWN_STDIO ${misc_useownstdio})
############## with target name ################
mg_declare_option (with_targetname STRING "unknown"
"with targetname: unknown/stb810/vfanvil/vxi386/qvfb/fbcon/mx21/monaco/c33l05/bfin/vxppc/fmsoft/mstudio/S3C6410/S3C2440/S3C2410/hi3560a")
if (with_targetname STREQUAL "stb810")
mg_set_value (__TARGET_STB810__ ON)
elseif (with_targetname STREQUAL "vfanvil")
mg_set_value (__TARGET_VFANVIL__ ON)
elseif (with_targetname STREQUAL "monaco")
mg_set_value (__TARGET_MONACO__ ON)
elseif (with_targetname STREQUAL "mx21")
mg_set_value (__TARGET_MX21__ ON)
elseif (with_targetname STREQUAL "vxi386")
mg_set_value (__TARGET_VXI386__ ON)
elseif (with_targetname STREQUAL "vxppc")
mg_set_value (__TARGET_PPC__ ON)
elseif (with_targetname STREQUAL "bfin")
mg_set_value (__TARGET_BLACKFIN__ ON)
elseif (with_targetname STREQUAL "c33l05")
mg_set_value (__TARGET_C33L05__ ON)
elseif (with_targetname STREQUAL "fmsoft")
mg_set_value (__TARGET_FMSOFT__ ON)
elseif (with_targetname STREQUAL "mstudio")
mg_set_value (__TARGET_MSTUDIO__ ON)
elseif (with_targetname STREQUAL "S3C6410")
add_definitions (-D_WITH_TARGET_S3C6410)
elseif (with_targetname STREQUAL "S3C2440")
add_definitions (-D_WITH_TARGET_S3C2440)
elseif (with_targetname STREQUAL "S3C2410")
add_definitions (-D_WITH_TARGET_S3C2410)
elseif (with_targetname STREQUAL "hi3560a")
add_definitions (-D_WITH_TARGET_HI3560A)
else ()
mg_set_value (__TARGET_UNKNOWN__ ON)
add_definitions (-D_WITH_TARGET_NONE)
endif (with_targetname STREQUAL "stb810")
################### threads standalone or processes version #########################
mg_declare_option (runmode_standalone BOOL OFF "build MiniGUIStandalone version")
mg_declare_option (runmode_processes BOOL OFF "build MiniGUIProcesses version")
if (runmode_standalone)
mg_set_variables_on (runmode_processes)
endif (runmode_standalone)
if (runmode_processes)
if (runmode_standalone)
mg_set_variables_on (MGRM_STANDALONE)
mg_set_value (_MGRM_STANDALONE ON)
mg_set_value (_STAND_ALONE ON)
set (output_lib_mode Standalone)
else ()
mg_set_value (_MGRM_PROCESSES ON)
set (output_lib_mode Processes)
endif (runmode_standalone)
mg_set_value (_LITE_VERSION ON)
else ()
mg_set_value (_MGRM_THREADS ON)
add_definitions (-D_REENTRANT)
set (output_lib_mode Threads)
endif (runmode_processes)
mg_declare_option_and_set_value (_MG_MINIMALGDI runmode_minimalgdi BOOL OFF "build a minimal GDI library only")
if (runmode_minimalgdi)
set (output_lib_mode "${output_lib_mode} - minimalgdi")
endif (runmode_minimalgdi)
########### ETCFILENAME and LIB_SUFFIX #############
mg_declare_option (with_libsuffix STRING "" "Configure the suffix of MiniGUI library name.")
if (with_libsuffix STREQUAL "mvfb")
set (MINIGUI_CFG "mvfb.cfg")
set (MGLIB_SUFFIX "mvfb")
elseif (with_libsuffix STREQUAL "")
set (MINIGUI_CFG "MiniGUI.cfg")
if (runmode_processes)
if (runmode_standalone)
set (MGLIB_SUFFIX "sa")
else ()
set (MGLIB_SUFFIX "procs")
endif(runmode_standalone)
else ()
set (MGLIB_SUFFIX "ths")
endif(runmode_processes)
else ()
set (MINIGUI_CFG "MiniGUI.cfg")
#TODO: withval=""
set (MGLIB_SUFFIX "${with_libsuffix}")
endif (with_libsuffix STREQUAL "mvfb")
mg_set_value (_MGLIB_SUFFIX ${MGLIB_SUFFIX})
mg_set_value (_MGINCORE_RES misc_incoreres)
mg_set_value (ETCFILENAME ${MINIGUI_CFG} IF NOT misc_incoreres)
#message(STATUS "the mode is ${_MGLIB_SUFFIX}, MINIGUI_CFG is ${MINIGUI_CFG}")
############## check header files ################
include (CheckIncludeFiles)
check_include_files(alloca.h HAVE_ALLOCA_H)
check_include_files(dirent.h HAVE_DIRENT_H)
check_include_files(dlfcn.h HAVE_DLFCN_H)
check_include_files(inttypes.h HAVE_INTTYPES_H)
check_include_files(locale.h HAVE_LOCALE_H)
check_include_files(math.h HAVE_MATH_H)
check_include_files(memory.h HAVE_MEMORY_H)
check_include_files(ndir.h HAVE_NDIR_H)
check_include_files(stdint.h HAVE_STDINT_H)
check_include_files(stdlib.h HAVE_STDLIB_H)
check_include_files(strings.h HAVE_STRINGS_H)
check_include_files(string.h HAVE_STRING_H)
check_include_files(sys/dir.h HAVE_SYS_DIR_H)
check_include_files(sys/ndir.h HAVE_SYS_NDIR_H)
check_include_files(sys/stat.h HAVE_SYS_STAT_H)
check_include_files(sys/time.h HAVE_SYS_TIME_H)
check_include_files(sys/types.h HAVE_SYS_TYPES_H)
check_include_files(termio.h HAVE_TERMIO_H)
check_include_files(unistd.h HAVE_UNISTD_H)
############## check functions ################
include(CheckFunctionExists)
check_function_exists (alloca HAVE_ALLOCA)
check_function_exists (time HAVE_TIME)
check_function_exists (getpagesize HAVE_GETPAGESIZE)
check_function_exists (mktime HAVE_MKTIME)
check_function_exists (localtime HAVE_LOCALTIME)
check_function_exists (strdup HAVE_STRDUP)
check_function_exists (strcasecmp HAVE_STRCASECMP)
check_function_exists (strncasecmp HAVE_STRNCASECMP)
check_function_exists (strerror HAVE_STRERROR)
check_function_exists (getpt HAVE_GETPT)
check_function_exists (mmap HAVE_MMAP)
check_function_exists (setlocale HAVE_SETLOCALE)
check_function_exists (vprintf HAVE_VPRINTF)
############## IMAGE ################
mg_declare_option_and_set_value (_MGIMAGE_PCX image_pcxsupport BOOL OFF "include PCX file support")
mg_declare_option_and_set_value (_MGIMAGE_LBM image_lbmsupport BOOL OFF "include LBM/PBM file support")
mg_declare_option_and_set_value (_MGIMAGE_TGA image_tgasupport BOOL OFF "include TGA file support")
mg_declare_option_and_set_value (_MGIMAGE_GIF image_gifsupport BOOL ON "include GIF file support")
############## ADD LIBRARIES ################
mg_declare_option (image_pngsupport BOOL ON "include PNG file support")
__find_pnglib (image_pngsupport MINIGUI_LIBRARIES_LIST MINIGUI_INCLUDE_LIST)
mg_set_value (_MGIMAGE_PNG image_pngsupport)
mg_declare_option (image_jpgsupport BOOL ON "include JPEG file suppport")
__find_jpeglib (image_jpgsupport MINIGUI_LIBRARIES_LIST MINIGUI_INCLUDE_LIST)
mg_set_value (_MGIMAGE_JPG image_jpgsupport)
if (NOT WIN32 AND ial_dlcustom)
set (MINIGUI_LIBRARIES_LIST "${MINIGUI_LIBRARIES_LIST} -ldl")
endif (NOT WIN32 AND ial_dlcustom)
if (gal_fbcon)
find_library (find_pciaccess pciaccess)
if (find_pciaccess)
mg_set_value (_MGHAVE_PCIACCESS ON) #set libpciaccess.so
set (MINIGUI_LIBRARIES_LIST "${MINIGUI_LIBRARIES_LIST} -lpciaccess")
endif (find_pciaccess)
endif (gal_fbcon)
################CTRL:need misc condition###################
mg_declare_option (ctrl_menubutton BOOL ON "include MENUBUTTON control")
if (NOT misc_havemenu)
set (ctrl_menubutton OFF)
endif (NOT misc_havemenu)
mg_set_value (_MGCTRL_MENUBUTTON ctrl_menubutton)
############################ set conditional ################################
mg_set_conditional(MGRM_PROCESSES runmode_processes ON)
mg_set_conditional(MGRM_STANDALONE runmode_standalone ON)
mg_set_conditional(MGIAL_CONSOLE ial_console ON)
mg_set_conditional(MGIAL_NEXUS ial_nexus ON)
mg_set_conditional(MGIAL_DLCUSTOM ial_dlcustom ON)
mg_set_conditional(UCOSII with_osname "ucos2")
mg_set_conditional(MGUSE_OWN_PTHREAD misc_useownpthread ON)
mg_set_conditional(MGFONT_SEF font_sefsupport ON)
mg_set_conditional(MGIAL_CUSTOM ial_custom ON)
mg_set_conditional(MGIAL_NET ial_net ON)
mg_set_conditional(MGLIB_MVFB with_libsuffix "mvfb")
mg_set_conditional(MG_MINIMALGDI runmode_minimalgdi ON)
if (font_sefsupport)
set (MINIGUI_LIBRARIES_LIST "${MINIGUI_LIBRARIES_LIST} -lscripteasy")
endif (font_sefsupport)
# add sub directory
# it should be set after macros setup
add_subdirectory (src)
################################ .pc and mgconfig.h ################################
# generate the .pc file used by pkg-config
set (prefix ${CMAKE_INSTALL_PREFIX})
set (exec_prefix "\${prefix}")
set (libdir "\${exec_prefix}/lib")
set (includedir "\${prefix}/include")
configure_file(
"${PROJECT_SOURCE_DIR}/minigui.pc.in"
"${PROJECT_BINARY_DIR}/${PROJECT_NICKNAME}.pc")
# configure header file of mgconfig to pass the CMake settings
# to the source code
configure_file(
"${PROJECT_SOURCE_DIR}/cmake_mgconfig.h.in"
"${PROJECT_BINARY_DIR}/mgconfig.h"
)
################################## files to install ####################################
set (etc_files "")
if (MGLIB_MVFB)
set (etc_files "mvfb.cfg")
else ()
set (etc_files "${PROJECT_SOURCE_DIR}/etc/${MINIGUI_CFG}")
endif (MGLIB_MVFB)
# etc
IF (WIN32)
set (RESPATH "$ENV{PREFIX}/share/minigui/res/")
configure_file(
"${PROJECT_SOURCE_DIR}/etc/MiniGUI.cfg.win32.in"
"${PROJECT_BINARY_DIR}/etc/MiniGUI.cfg.win32"
)
install (FILES ${PROJECT_BINARY_DIR}/etc/MiniGUI.cfg.win32
DESTINATION etc
RENAME MiniGUI.cfg)
ELSE()
install (FILES "${etc_files}" DESTINATION etc)
ENDIF (WIN32)
# include
install (FILES "${PROJECT_BINARY_DIR}/mgconfig.h"
DESTINATION include/${PROJECT_NICKNAME}
)
install (DIRECTORY "${PROJECT_SOURCE_DIR}/include/"
DESTINATION include/${PROJECT_NICKNAME}
FILES_MATCHING PATTERN "*.h"
PATTERN "*.c"
PATTERN ".svn" EXCLUDE
)
# pkgconfig
install (FILES "${PROJECT_BINARY_DIR}/${PROJECT_NICKNAME}.pc"
DESTINATION lib/pkgconfig)
# Cmake Modules
install (DIRECTORY "${PROJECT_SOURCE_DIR}/cmake/"
DESTINATION share/minigui/cmake/Modules
FILES_MATCHING PATTERN "*.cmake"
PATTERN "*private*" EXCLUDE
PATTERN ".svn" EXCLUDE
)
##################### make dist package source #########################
set(CPACK_PACKAGE_VERSION_MAJOR ${MINIGUI_MAJOR_VERSION})
set(CPACK_PACKAGE_VERSION_MINOR ${MINIGUI_MINOR_VERSION})
set(CPACK_PACKAGE_VERSION_PATCH ${MINIGUI_MICRO_VERSION})
set(CPACK_SOURCE_GENERATOR "TBZ2")
set(CPACK_SOURCE_IGNORE_FILES
"/build/;/configs/;/ext/;/doc/;/examples/;/pe-scripts/;/scripts/;
/build-adp/;/vcongui/;/mywindows/;/ve-scripts/;/build_dir/;.o$;
/.bzr/;~$;/.svn/;.swp$;Makefile.am$;makefile*;.edited$;.sh$;.old$;
configure.in$;config.log$;
${CPACK_SOURCE_IGNORE_FILES}")
set(CPACK_SOURCE_PACKAGE_FILE_NAME
"${PROJECT_NICKNAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
set(CPACK_SOURCE_PACKAGE_FILE_NAME
"${CPACK_SOURCE_PACKAGE_FILE_NAME}.${CPACK_PACKAGE_VERSION_PATCH}-${with_osname}")
include(CPack)
add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
set_target_properties (dist PROPERTIES OUTPUT_NAME ${CPACK_SOURCE_PACKAGE_FILE_NAME})
##################################cfg info display######################################
message("=============================================")
message("MiniGUI Version : ${MINIGUI_VERSION}")
message("Run mode : ${output_lib_mode}")
message("OS Name : ${with_osname}")
message("Target board : ${with_targetname}")
message("Library type : ${output_lib_type}")
message("=============================================")
message("")
set (module_list "license" "gal" "ial" "lfrdr" "ctrl" "charset" "font" "incorefont" "image" "kbd" "misc")
foreach(i ${module_list})
mg_sort_option_group (${i})
message ("*********************************************")
if (${i} STREQUAL "console")
message ("* ial ${i}")
elseif (${i} STREQUAL "license")
message ("* license-management")
elseif (${i} STREQUAL "lfrdr")
message ("* look and feel renderer")
elseif (${i} STREQUAL "kbd")
message ("* keyboard-layout")
elseif (${i} STREQUAL "ctrl")
message ("* control")
else ()
message("* ${i}")
endif (${i} STREQUAL "console")
message ("*********************************************")
message ("* Enabled:")
mg_print_list (${_group_${i}_ON_})
message ("* Disabled:")
mg_print_list (${_group_${i}_OFF_})
endforeach (i ${module_options})
# message ("=============================================")
# message ("= CFLAGS when building MiniGUI")
# message ("=============================================")
# message ("${CMAKE_C_FLAGS}")
# message ("=============================================")
# message ("= CFLAGS & LDFLAGS when building MiniGUI")
# message ("=============================================")
# message ("= LDFLAGS:
# message (" ${CMAKE_C_FLAGS}")
# message ("-D:")
# message ("-I:${CMAKE_INSTALL_PREFIX}/include")
# message ("-L:${CMAKE_INSTALL_PREFIX}/lib")
# message ("-l:")
# message ("")
# message ("=============================================")
# message ("= CFLAGS & LDFLAGS when building Application")
# message ("=============================================")
# message ("-D:")
# message ("-I:${CMAKE_INSTALL_PREFIX}/include")
# message ("-L:${CMAKE_INSTALL_PREFIX}/lib")
# message ("-l:")
# message ("")
if (NOT license_productid)
message ("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
message ("!!")
message ("!! WARNING")
message ("!!")
message ("!!")
message ("!! Product ID is *DISABLE*")
message ("!!")
message ("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
message ("")
endif(NOT license_productid)
C
1
https://gitee.com/mirrors/MiniGUI.git
git@gitee.com:mirrors/MiniGUI.git
mirrors
MiniGUI
MiniGUI
master

搜索帮助