From 503412b02356cd0dd92f0fc0900f48eab3afce24 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Fri, 7 Feb 2020 10:52:16 -0500 Subject: meson build --- org/spine_build_scaffold.org | 354 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 311 insertions(+), 43 deletions(-) (limited to 'org') diff --git a/org/spine_build_scaffold.org b/org/spine_build_scaffold.org index bbd23d5..cd21833 100644 --- a/org/spine_build_scaffold.org +++ b/org/spine_build_scaffold.org @@ -152,6 +152,11 @@ data/sisudir/media/text/viral_spiral.david_bollier.sst ****** all builds ******* default +#+BEGIN_SRC makefile :tangle ../makefile +dub_upgrade: + $(DUB) upgrade +#+END_SRC + #+BEGIN_SRC makefile :tangle ../makefile default: ldc #+END_SRC @@ -196,15 +201,16 @@ all_debug: dmd_debug gdc_debug ldc_debug ******** _meson_ build :meson: #+BEGIN_SRC makefile :tangle ../makefile -meson: - rm -r build && mkdir build +meson: dub_upgrade + rm -r build; mkdir build meson --buildtype=debugoptimized build ninja -C build + notify-send -t 0 'D meson build ldc compiled test release executable ready' 'spine' mesonredo: - rm -r build && mkdir build + rm -r build; mkdir build meson --buildtype=debugoptimized build ninja -C build -mesonclean: clean skel tangle +mesonclean: clean skel tangle dub_upgrade meson --buildtype=debugoptimized build ninja -C build #+END_SRC @@ -235,8 +241,9 @@ all_debug_clean_ver: clean tangle dmd_debug_ver gdc_debug_ver ldc_debug_ver ******** default :default: #+BEGIN_SRC makefile :tangle ../makefile -dmd: +dmd: dub_upgrade $(DUB) --compiler=dmd --config=dmd -b release + notify-send -t 0 'D dmd compiled test release executable ready' 'spine-dmd' #+END_SRC ******** debug :debug: @@ -251,7 +258,7 @@ dmd_debug: - assumes git tags with program version #+BEGIN_SRC makefile :tangle ../makefile -dmd_ver: +dmd_ver: dub_upgrade $(DUB) --compiler=dmd --config=dmd-version mv bin/spine-dmd-ver bin-archive/spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-dmd notify-send -t 0 'D dmd compiled test release executable ready' 'spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-dmd' @@ -275,8 +282,9 @@ dmd_debug_tangle: tangle ******** default :default: #+BEGIN_SRC makefile :tangle ../makefile -gdc: +gdc: dub_upgrade $(DUB) --compiler=gdc --config=gdc -b release + notify-send -t 0 'D gdc compiled test release executable ready' 'spine-gdc' #+END_SRC ******** debug :debug: @@ -291,7 +299,7 @@ gdc_debug: - assumes git tags with program version #+BEGIN_SRC makefile :tangle ../makefile -gdc_ver: +gdc_ver: dub_upgrade $(DUB) --compiler=gdc --config=gdc-version mv bin/spine-gdc-ver bin-archive/spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-gdc notify-send -t 0 'D gdc compiled test release executable ready' 'spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-gdc' @@ -315,8 +323,9 @@ gdc_debug_tangle: tangle ******** default :default: #+BEGIN_SRC makefile :tangle ../makefile -ldc: +ldc: dub_upgrade $(DUB) --compiler=ldc2 --config=ldc -b release + notify-send -t 0 'D ldc compiled test release executable ready' 'spine-ldc' #+END_SRC ******** debug :debug: @@ -331,7 +340,7 @@ ldc_debug: - assumes git tags with program version #+BEGIN_SRC makefile :tangle ../makefile -ldc_ver: +ldc_ver: dub_upgrade $(DUB) --compiler=ldc2 --config=ldc-version mv bin/spine-ldc-ver bin-archive/spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-ldc notify-send -t 0 'D ldc2 compiled test release executable ready' 'spine-$(PROG_VER_DECLARED)-tag-$(PROG_VER_GIT)-ldc' @@ -851,11 +860,11 @@ stringImportPaths "./views" buildRequirements "allowWarnings" targetType "executable" platforms "posix" -dependency "d2sqlite3" version="~>0.18.3" # https://code.dlang.org/packages/d2sqlite3 http://biozic.github.io/d2sqlite3/d2sqlite3.html +dependency "d2sqlite3" version="~>0.18.3" # https://code.dlang.org/packages/d2sqlite3 http://biozic.github.io/d2sqlite3/d2sqlite3 subconfiguration "d2sqlite3" "all-included" -dependency "imageformats" version="~>7.0.1" # https://code.dlang.org/packages/imageformats https://github.com/lgvz/imageformats -dependency "dyaml" version="~>0.8.0" -dependency "tinyendian" version="~>0.2.0" // for dyaml +dependency "imageformats" version="~>7.0.2" # https://code.dlang.org/packages/imageformats https://github.com/lgvz/imageformats +dependency "dyaml" version="~>0.8.0" # https://code.dlang.org/packages/dyaml https://github.com/dlang-community/D-YAML +dependency "tinyendian" version="~>0.2.0" # http://code.dlang.org/packages/tinyendian https://github.com/dlang-community/tinyendian // dyaml dependency #+END_SRC ** default @@ -999,14 +1008,18 @@ http://mesonbuild.com/Dependencies.html#Dub *** projects +ls -1 ./src/*/**/*.d tree -fi ./src |rg "\.d$" #+BEGIN_SRC sh :tangle ../meson.build project('spine', 'd', license: 'AGPL3', - version: '0.26.5', + version: '0.9.2', meson_version: '>=0.46' ) +#if meson.get_compiler('d').get_id() == 'gcc' +# error('spine cannot be compiled with GDC at time. Sorry.') +#endif spine_sources = [ 'src/doc_reform/spine.d', 'src/doc_reform/conf/compile_time_info.d', @@ -1019,6 +1032,7 @@ spine_sources = [ 'src/doc_reform/io_out/html.d', 'src/doc_reform/io_out/hub.d', 'src/doc_reform/io_out/latex.d', + 'src/doc_reform/io_out/metadata.d', 'src/doc_reform/io_out/odt.d', 'src/doc_reform/io_out/package.d', 'src/doc_reform/io_out/paths_output.d', @@ -1049,14 +1063,16 @@ spine_sources = [ source_root = meson.source_root() sources_dir = include_directories('src/') # Dependencies -dep_d2sqlite3 = dependency('d2sqlite3', version: '>= 0.16.2', fallback: ['d2sqlite3', 'd2sqlite3_dep']) -dep_imageformats = dependency('imageformats-d', version: '>= 7.0.0', fallback: ['imageformats-d', 'imageformats_dep']) -# executable -spine_exe = executable('dr', +dep_dyaml = dependency('dyaml', version: '>= 0.8.0', fallback: ['dyaml', 'dyaml_dep']) +dep_d2sqlite3 = dependency('d2sqlite3', version: '>= 0.18.3', fallback: ['d2sqlite3', 'd2sqlite3_dep']) +dep_imageformats = dependency('imageformats', version: '>= 7.0.0', fallback: ['imageformats', 'imageformats_dep']) +# Executable +spine_exe = executable('spine', [spine_sources], include_directories : [sources_dir], d_import_dirs: [include_directories('views')], dependencies : [ + dep_dyaml, dep_d2sqlite3, dep_imageformats, ], @@ -1066,42 +1082,290 @@ spine_exe = executable('dr', ** subprojects -#+BEGIN_SRC sh :tangle ../subprojects/README -d2sqlite3 -- dub - - https://code.dlang.org/packages/d2sqlite3 -- upstream - - https://github.com/biozic/d2sqlite3 -- mathias - - https://github.com/ximion/d2sqlite3.git - -imageformats -- dub - - https://code.dlang.org/packages/imageformats -- upstream - - https://github.com/lgvz/imageformats -- mathias - - https://github.com/ximion/imageformats.git +#+BEGIN_SRC txt :tangle ../subprojects/README +- d2sqlite3 + - dub + - https://code.dlang.org/packages/d2sqlite3 + - upstream + - https://github.com/biozic/d2sqlite3 +- dyaml + - dub + - https://code.dlang.org/packages/dyaml + - upstream + - https://github.com/dlang-community/D-YAML + - upstream git clone + - https://github.com/dlang-community/D-YAML.git +- imageformats + - dub + - https://code.dlang.org/packages/imageformats + - upstream git clone + - https://github.com/lgvz/imageformats +- tinyendian (dyaml dependency) + - dub + - http://code.dlang.org/packages/tinyendian + - upstream git clone + - https://github.com/dlang-community/tinyendian.git #+END_SRC *** d2sqlite3 +**** wrap #+BEGIN_SRC sh :tangle ../subprojects/d2sqlite3.wrap [wrap-git] directory = d2sqlite3 -url = https://github.com/ximion/d2sqlite3.git +url = https://github.com/biozic/d2sqlite3.git +revision = head +#+END_SRC + +**** meson.build + +#+BEGIN_SRC sh :tangle ../subprojects/d2sqlite3/meson.build +project('d2sqlite3', 'd', + meson_version: '>=0.46', + license: 'BSL-1.0', + version: '0.18.3' +) + +project_soversion = '0' + +src_dir = include_directories('source/') +pkgc = import('pkgconfig') + +sqlite_dep = dependency('sqlite3') + +d2sqlite3_src = [ + 'source/d2sqlite3/database.d', + 'source/d2sqlite3/internal/memory.d', + 'source/d2sqlite3/internal/util.d', + 'source/d2sqlite3/library.d', + 'source/d2sqlite3/package.d', + 'source/d2sqlite3/results.d', + 'source/d2sqlite3/sqlite3.d', + 'source/d2sqlite3/statement.d', +] +install_subdir('source/d2sqlite3/', install_dir: 'include/d/d2sqlite3/') + +d2sqlite3_lib = library('d2sqlite3', + [d2sqlite3_src], + include_directories: [src_dir], + dependencies: [sqlite_dep], + install: true, + version: meson.project_version(), + soversion: project_soversion +) + +pkgc.generate(name: 'd2sqlite3', + libraries: d2sqlite3_lib, + subdirs: 'd/d2sqlite3/', + version: meson.project_version(), + requires: ['sqlite3'], + description: 'A small wrapper around SQLite for the D programming language.' +) + +# for use by others which embed this as subproject +d2sqlite3_dep = declare_dependency( + link_with: [d2sqlite3_lib], + dependencies: [sqlite_dep], + include_directories: [src_dir] +) +#+END_SRC + +*** dyaml +**** wrap + +#+BEGIN_SRC sh :tangle ../subprojects/dyaml.wrap +[wrap-git] +directory = dyaml +url = https://github.com/dlang-community/D-YAML.git +revision = head +#+END_SRC + +**** meson.build (provided by upstream) + +#+BEGIN_SRC sh :NO-tangle ../subprojects/D-YAML/meson.build +project('D-YAML', 'd', + meson_version: '>=0.40.0', + subproject_dir: 'contrib', + version: '0.8.0' +) + +project_soversion = '0' + +src_dir = include_directories('source/') +pkgc = import('pkgconfig') + +dyaml_src = [ + 'source/dyaml/composer.d', + 'source/dyaml/constructor.d', + 'source/dyaml/dumper.d', + 'source/dyaml/emitter.d', + 'source/dyaml/encoding.d', + 'source/dyaml/escapes.d', + 'source/dyaml/event.d', + 'source/dyaml/exception.d', + 'source/dyaml/linebreak.d', + 'source/dyaml/loader.d', + 'source/dyaml/node.d', + 'source/dyaml/package.d', + 'source/dyaml/parser.d', + 'source/dyaml/queue.d', + 'source/dyaml/reader.d', + 'source/dyaml/representer.d', + 'source/dyaml/resolver.d', + 'source/dyaml/scanner.d', + 'source/dyaml/serializer.d', + 'source/dyaml/style.d', + 'source/dyaml/tagdirective.d', + 'source/dyaml/test/common.d', + 'source/dyaml/test/compare.d', + 'source/dyaml/test/constructor.d', + 'source/dyaml/test/emitter.d', + 'source/dyaml/test/errors.d', + 'source/dyaml/test/inputoutput.d', + 'source/dyaml/test/reader.d', + 'source/dyaml/test/representer.d', + 'source/dyaml/test/resolver.d', + 'source/dyaml/test/tokens.d', + 'source/dyaml/token.d' +] +install_subdir('source/dyaml', install_dir: 'include/d/yaml/') + +tinyendian_dep = dependency('tinyendian', version: '>=0.2.0', fallback: ['tinyendian', 'tinyendian_dep']) + +dyaml_lib = library('dyaml', + [dyaml_src], + include_directories: [src_dir], + dependencies: [tinyendian_dep], + install: true, + version: meson.project_version(), + soversion: project_soversion +) +pkgc.generate(name: 'dyaml', + libraries: dyaml_lib, + subdirs: 'd/yaml/', + version: meson.project_version(), + description: 'YAML parser and emitter for the D programming language.' +) + +# Make D-YAML easy to use as subproject +dyaml_dep = declare_dependency( + link_with: dyaml_lib, + include_directories: [src_dir], + dependencies: [tinyendian_dep] +) +#+END_SRC + +*** imageformats +**** wrap + +#+BEGIN_SRC sh :tangle ../subprojects/imageformats.wrap +[wrap-git] +directory = imageformats +url = https://github.com/lgvz/imageformats.git revision = head #+END_SRC -*** imageformats-d +**** meson.build + +#+BEGIN_SRC sh :tangle ../subprojects/imageformats/meson.build +project('imageformats', 'd', + meson_version: '>=0.46', + license: 'BSL-1.0', + version: '7.0.0' +) + +project_soversion = '0' + +src_dir = include_directories('.') +pkgc = import('pkgconfig') + +imageformats_src = [ + 'imageformats/bmp.d', + 'imageformats/jpeg.d', + 'imageformats/package.d', + 'imageformats/png.d', + 'imageformats/tga.d' +] +install_subdir('imageformats/', install_dir: 'include/d/imageformats-d/') + +imageformats_lib = library('imageformats-d', + [imageformats_src], + include_directories: [src_dir], + install: true, + version: meson.project_version(), + soversion: project_soversion +) + +pkgc.generate(name: 'imageformats-d', + libraries: imageformats_lib, + subdirs: 'd/imageformats-d/', + version: meson.project_version(), + description: 'Decoders for PNG, TGA, BMP, JPEG and encoders for PNG, TGA, BMP.' +) + +# for use by others which embed this as subproject +imageformats_dep = declare_dependency( + link_with: [imageformats_lib], + include_directories: [src_dir] +) +#+END_SRC + +*** tinyendian (dyaml dependency) +**** wrap -#+BEGIN_SRC sh :tangle ../subprojects/imageformats-d.wrap +#+BEGIN_SRC sh :NO-tangle ../subprojects/tinyendian.wrap [wrap-git] -directory = imageformats-d -url = https://github.com/ximion/imageformats.git +directory = tinyendian +url = https://github.com/dlang-community/tinyendian.git revision = head #+END_SRC +**** meson.build (provided by upstream) + +#+BEGIN_SRC sh :NO-tangle ../subprojects/tinyendian/meson.build +# -*- mode: python; -*- + +project( + 'tinyendian', + 'd', + meson_version: '>=0.41', + version: '0.2.0', + default_options: ['buildtype=release'], +) + +src_dir = include_directories('source/') +pkgc = import('pkgconfig') + +tinyendian_src = [ + 'source/tinyendian.d' +] + +install_headers(tinyendian_src, subdir: 'd/') + +tinyendian_lib = library( + meson.project_name(), + [tinyendian_src], + include_directories: [src_dir], + version: meson.project_version(), + pic: true, + install: true, +) + +pkgc.generate( + name: meson.project_name(), + libraries: tinyendian_lib, + subdirs: 'd/', + version: meson.project_version(), + description: 'Lightweight endianness library for D.' +) + +# Make Tinyendian easy to use as subproject +tinyendian_dep = declare_dependency( + link_with: tinyendian_lib, + include_directories: [src_dir] +) +#+END_SRC + * .gitignore :gitignore: #+BEGIN_SRC sh :tangle ../.gitignore @@ -1113,7 +1377,7 @@ revision = head !README !makefile !version.txt -!dub*.json +!dub.json !dub.sdl !meson.build !tangle @@ -1140,8 +1404,12 @@ revision = head !**/*.sst !**/*.ssm !subprojects -!**/*.wrap !subprojects/*.wrap +# !subprojects/dyaml +!subprojects/d2sqlite3 +!subprojects/imageformats +# !subprojects/tinyendian +subprojects/*/.gitignore !pod.manifest !sisu_document_make !config_local_site @@ -1168,7 +1436,7 @@ tmp/** #\#* #*.\#* #!debian -#!debian/* +#!debian/** #.reggae/** #+END_SRC -- cgit v1.2.3