diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index 8eb5b96096..db4e63cdb2 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -49,7 +49,7 @@ PROJECT_LOGO = # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. -OUTPUT_DIRECTORY = . +OUTPUT_DIRECTORY = @top_builddir@/ # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output @@ -594,7 +594,8 @@ WARN_LOGFILE = # with spaces. INPUT = @top_srcdir@/src/lib \ - @top_srcdir@/elm_intro.h \ + @top_builddir@/src/lib \ + @top_builddir@/elm_intro.h \ @srcdir@/index_elm.dox \ @srcdir@/main.dox \ @srcdir@/pkgconfig.dox \ diff --git a/doc/meson.build b/doc/meson.build new file mode 100644 index 0000000000..a24c528d76 --- /dev/null +++ b/doc/meson.build @@ -0,0 +1,202 @@ +doc_target = [] + +text_filter_properties= [ + ['Blend Example', 'Sans', '24', 'blend'], + ['Blur', 'Sans:style=bold', '32', 'blur'], + ['Bump', 'Sans:style=bold', '64', 'bump'], + ['Curve', 'Sans:style=bold', '64', 'curve'], + ['Grow - Contour', 'Sans:style=bold', '32', 'grow'], + ['Mask', 'Sans:style=bold', '64', 'mask'], + ['Transform - Mirror effect', 'Sans', '50', 'transform'], +] +widget_previews = [ + ['actionslider', 'preview-00.png', 'widget_preview_actionslider', '120', '30'], + ['bg', 'preview-00.png', 'widget_preview_bg', '50', '50'], + ['box', 'preview-00.png', 'widget_preview_box', '200', '160'], + ['bubble', 'preview-00.png', 'widget_preview_bubble1', '160', '50'], + ['bubble', 'preview-01.png', 'widget_preview_bubble2', '160', '50'], + ['bubble', 'preview-02.png', 'widget_preview_bubble3', '160', '50'], + ['button', 'preview-00.png', 'widget_preview_button1', '160', '50'], + ['button', 'preview-01.png', 'widget_preview_button2', '160', '50'], + ['button', 'preview-02.png', 'widget_preview_button3', '160', '50'], + ['calendar', 'preview-00.png', 'widget_preview_calendar', '300', '300'], + ['check', 'preview-00.png', 'widget_preview_check1', '160', '50'], + ['check', 'preview-01.png', 'widget_preview_check2', '160', '50'], + ['check', 'preview-02.png', 'widget_preview_check3', '160', '50'], + ['clock', 'preview-00.png', 'widget_preview_clock', '200', '100'], + ['colorselector', 'preview-00.png', 'widget_preview_colorselector', '320', '300'], + ['conformant', 'preview-00.png', 'widget_preview_conformant', '200', '400'], + ['combobox', 'preview-00.png', 'widget_preview_combobox', '300', '300'], + ['ctxpopup', 'preview-00.png', 'widget_preview_ctxpopup', '200', '130'], + ['datetime', 'preview-00.png', 'widget_preview_datetime1', '360', '60'], + ['datetime', 'preview-01.png', 'widget_preview_datetime2', '200', '60'], + ['datetime', 'preview-02.png', 'widget_preview_datetime3', '200', '60'], + ['dayselector', 'preview-00.png', 'widget_preview_dayselector', '350', '50'], + ['diskselector', 'preview-00.png', 'widget_preview_diskselector', '120', '50'], + ['entry', 'preview-00.png', 'widget_preview_entry1', '160', '50'], + ['entry', 'preview-01.png', 'widget_preview_entry2', '160', '50'], + ['entry', 'preview-02.png', 'widget_preview_entry3', '160', '50'], + ['entry', 'preview-03.png', 'widget_preview_entry4', '160', '50'], + ['fileselector', 'preview-00.png', 'widget_preview_fileselector', '300', '300'], + ['fileselector_button', 'preview-00.png', 'widget_preview_fileselector_button1', '200', '50'], + ['fileselector_button', 'preview-01.png', 'widget_preview_fileselector_button2', '200', '50'], + ['fileselector_button', 'preview-02.png', 'widget_preview_fileselector_button3', '160', '50'], + ['fileselector_entry', 'preview-00.png', 'widget_preview_fileselector_entry', '70', '50'], + ['flip', 'preview-00.png', 'widget_preview_flip', '100', '100'], + ['flipselector', 'preview-00.png', 'widget_preview_flipselector', '100', '60'], + ['frame', 'preview-00.png', 'widget_preview_frame', '100', '50'], + ['gengrid', 'preview-00.png', 'widget_preview_gengrid', '200', '160'], + ['genlist', 'preview-00.png', 'widget_preview_genlist1', '200', '200'], + ['genlist', 'preview-01.png', 'widget_preview_genlist2', '200', '160'], + ['genlist', 'preview-02.png', 'widget_preview_genlist3', '200', '160'], + ['genlist', 'preview-03.png', 'widget_preview_genlist4', '200', '160'], + ['genlist', 'preview-04.png', 'widget_preview_genlist5', '200', '160'], + ['hover', 'preview-00.png', 'widget_preview_hover', '90', '170'], + ['hoversel', 'preview-00.png', 'widget_preview_hoversel', '90', '170'], + ['icon', 'preview-00.png', 'widget_preview_icon', '50', '50'], + ['image', 'preview-00.png', 'widget_preview_image', '50', '50'], + ['index', 'preview-00.png', 'widget_preview_index', '200', '160'], + ['inwin', 'preview-00.png', 'widget_preview_inwin1', '200', '160'], + ['inwin', 'preview-01.png', 'widget_preview_inwin2', '200', '160'], + ['inwin', 'preview-02.png', 'widget_preview_inwin3', '200', '160'], + ['label', 'preview-00.png', 'widget_preview_label', '70', '30'], + ['layout', 'preview-00.png', 'widget_preview_layout', '200', '160'], + ['list', 'preview-00.png', 'widget_preview_list', '200', '200'], + ['map', 'preview-00.png', 'widget_preview_map', '256', '256'], + ['mapbuf', 'preview-00.png', 'widget_preview_mapbuf', '200', '200'], + ['menu', 'preview-00.png', 'widget_preview_menu', '100', '100'], + ['notify', 'preview-00.png', 'widget_preview_notify', '60', '30'], + ['nstate', 'preview-00.png', 'widget_preview_nstate', '45', '28'], + ['panel', 'preview-00.png', 'widget_preview_panel', '150', '50'], + ['panes', 'preview-00.png', 'widget_preview_panes', '200', '100'], + ['photocam', 'preview-00.png', 'widget_preview_photocam', '243', '162'], + ['popup', 'preview-00.png', 'widget_preview_popup', '480', '400'], + ['prefs', 'preview-00.png', 'widget_preview_prefs', '200', '160'], + ['prefs', 'preview-00.png', 'widget_preview_prefs', '280', '250'], + ['progressbar', 'preview-00.png', 'widget_preview_progressbar', '150', '50'], + ['radio', 'preview-00.png', 'widget_preview_radio', '60', '20'], + ['scroller', 'preview-00.png', 'widget_preview_scroller', '100', '30'], + ['segment_control', 'preview-00.png', 'widget_preview_segment_control', '240', '120'], + ['separator', 'preview-00.png', 'widget_preview_separator', '10', '80'], + ['slider', 'preview-00.png', 'widget_preview_slider', '200', '100'], + ['slideshow', 'preview-00.png', 'widget_preview_slideshow', '50', '50'], + ['spinner', 'preview-00.png', 'widget_preview_spinner', '160', '30'], + ['table', 'preview-00.png', 'widget_preview_table', '100', '100'], + ['thumb', 'preview-00.png', 'widget_preview_thumb', '100', '100'], + ['toolbar', 'preview-00.png', 'widget_preview_toolbar', '300', '100'], + ['web', 'preview-00.png', 'widget_preview_web', '300', '300'], + ['win', 'preview-00.png', 'widget_preview_win', '200', '200'], +] + +preview_text_filter = executable('preview_text_filter', + join_paths('previews', 'preview_text_filter.c'), + include_directories : config_dir, + dependencies: [ecore_evas], + build_by_default: false, +) + +widget_preview_eps = custom_target('widget_preview_prefs_epc', + input: join_paths('widgets', 'widget_preview_prefs.epc'), + output: 'widget_preview_prefs.epb', + command: elm_prefs_cc_exe + ['@INPUT@', '@OUTPUT@'], + build_by_default: false, + depends: [elm_prefs_cc] +) + +shot_sh = find_program('shot.sh') +tar = find_program('tar') +convert = find_program('convert') + +foreach text_filter_property : text_filter_properties + text = text_filter_property[0] + font = text_filter_property[1] + size = text_filter_property[2] + name = text_filter_property[3] + filter_code = run_command('cat', join_paths(meson.source_root(), 'src', 'examples', 'evas', 'filters', 'filter_'+name+'.lua')) + + doc_target += custom_target('preview_text_filters_'+name, + command: [env, 'EFL_RUN_IN_TREE=1', preview_text_filter.full_path(), text, filter_code.stdout(), '@OUTPUT@', font, size], + depends: preview_text_filter, + output: 'filter_'+name+'.png', + build_by_default: false + ) +endforeach + +foreach widget_preview : widget_previews + binary = widget_preview[2] + + if get_variable(binary, preview_text_filter) == preview_text_filter + tmp = executable(binary, + join_paths('widgets', binary+'.c'), + dependencies: elementary, + build_by_default: false, + c_args : [ + '-DPACKAGE_DATA_DIR="'+meson.current_build_dir()+'"', + '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"', + '-DTESTS_SRC_DIR="'+meson.current_source_dir()+'"', + '-DDOCW_DIR="'+meson.current_build_dir()+'"'] + ) + set_variable(binary, tmp) + endif +endforeach + +foreach widget_preview : widget_previews + directory = widget_preview[0] + ss = widget_preview[1] + binary = widget_preview[2] + x = widget_preview[3] + y = widget_preview[4] + + widget_executable = get_variable(binary) + + screen_shot_dir = join_paths(meson.build_root(), 'html', 'img', 'widget', directory) + + create_preview = custom_target('widget_preview_'+('_'.join([directory, ss, x, y])), + command: [shot_sh, screen_shot_dir, ss, widget_executable.full_path(), x, y], + output: '-'.join([directory, ss, x, y]), + depends: [widget_executable, widget_preview_eps], + build_by_default: false, + ) + convert_preview = [] + # + # This does not work see https://github.com/the-paperless-project/paperless/issues/439 for more details + # for now this means that no images will be in the latex documentation + # + #convert_preview = custom_target('convert_preview_'+('_'.join([directory, ss, x, y])), + # command: [convert, join_paths(screen_shot_dir, ss), join_paths(screen_shot_dir, ss.split('.')[0]+'.eps')], + # output: '-'.join([directory, ss, x, y])+'.eps', + # depends: [create_preview], + # build_by_default: false, + #) + doc_target += [create_preview, convert_preview] +endforeach + +doc_target += custom_target('doxygen', + command: [doxygen, join_paths(meson.current_build_dir(), 'Doxyfile')], + output: ['empty'], + build_by_default: false +) + +compress_target = custom_target('package_doc_tar', + command: [tar, '-C', meson.build_root(), '-cf', 'efl-'+meson.version()+'.tar', 'html', 'man'], + output: 'efl-'+meson.version()+'.tar', + depends: doc_target, + build_by_default: false +) + +run_target('doc', + command: ['echo', 'Documentation sucessfully build!'], + depends: compress_target, +) + +doxyfile_conf = configuration_data() +doxyfile_conf.merge_from(config_h) +doxyfile_conf.set('srcdir', meson.current_source_dir()) +doxyfile_conf.set('top_builddir', meson.build_root()) +doxyfile_conf.set('top_srcdir', meson.source_root()) + +configure_file( + input: 'Doxyfile.in', + output: 'Doxyfile', + configuration: doxyfile_conf, +) diff --git a/doc/shot.sh b/doc/shot.sh index b67be7074c..b6d066f1e9 100755 --- a/doc/shot.sh +++ b/doc/shot.sh @@ -12,6 +12,7 @@ export ELM_DISPLAY=shot export ILLUME_KBD=0,0,240,123 export ILLUME_IND=0,0,240,32 export ILLUME_STK=0,288,240,32 +export EFL_RUN_IN_TREE=1 mkdir -p $DIR || true diff --git a/meson.build b/meson.build index 9af4f86505..d4e5644f2d 100644 --- a/meson.build +++ b/meson.build @@ -478,6 +478,12 @@ foreach evas_loader_map_inst : evas_loader_map meson.add_install_script('meson/evas_loader_conf.sh', evas_loader_original, evas_loader_link_types) endforeach +doxygen = find_program('doxygen', required : false) + +if get_option('eolian-bootstrap') == false and doxygen.found() + subdir('doc') +endif + # # Configure files #