aboutsummaryrefslogtreecommitdiffhomepage
path: root/org
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2020-02-07 10:52:16 -0500
committerRalph Amissah <ralph@amissah.com>2020-03-06 15:13:53 -0500
commit503412b02356cd0dd92f0fc0900f48eab3afce24 (patch)
tree0e8ee05bcb814db5d414386c42fd9cd64804d892 /org
parentlatex outputs (various paper sizes & orientation) (diff)
meson build
Diffstat (limited to 'org')
-rw-r--r--org/spine_build_scaffold.org354
1 files changed, 311 insertions, 43 deletions
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
@@ -153,6 +153,11 @@ data/sisudir/media/text/viral_spiral.david_bollier.sst
******* 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