Skip to content

Merge upstream #5

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 379 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
379 commits
Select commit Hold shift + click to select a range
9583e83
adding new openGL4 examples
ch-nry Apr 29, 2024
963c80d
debug shader path
ch-nry Apr 29, 2024
f0eaac8
change the error message to reflet the arguments need by atribute mes…
ch-nry Apr 30, 2024
55f134c
add sources
ch-nry Apr 30, 2024
1c82b8a
tidy up
ch-nry Apr 30, 2024
157d65e
rename the shader
ch-nry Apr 30, 2024
39fd237
transformation matrix new axample
ch-nry Apr 30, 2024
356c329
transformation matrix new example
ch-nry Apr 30, 2024
5391eb5
Merge branch 'master' of github.com:ch-nry/Gem
ch-nry Apr 30, 2024
02b6e69
move image to the data folder
ch-nry Apr 30, 2024
6bc5896
simple texture example
ch-nry Apr 30, 2024
7efc994
adapt to the example directory restructuration
ch-nry Apr 30, 2024
7012797
1 more example (about lighting)
ch-nry May 1, 2024
2ff01f3
update makefile to include newest examples
ch-nry May 1, 2024
f4d13ef
replace until loop with the dedicated abstraction "gemrepeat"
ch-nry May 2, 2024
68c2932
remove trailing whitespace
May 2, 2024
ffc754e
Use modern-style initialization
May 2, 2024
d5a02cd
add an example that show how to use modelfiler to load a geometry
ch-nry May 2, 2024
4b64988
remove trailing whitespace
May 2, 2024
b3b41ec
[gemglxwindow] pick *best* framebuffer, rather first matching
May 3, 2024
1ab705d
[gemglxwindow] honour FSAA message
May 3, 2024
bc69202
gemglxwindow: drop manual enumeration of fbconfigs
May 3, 2024
6b54846
gemglxwindow: output transparency
May 3, 2024
87cc357
[gemglxwindow] cleanup
May 3, 2024
8521341
[ci] use new libvirt based runners for Windows builds
umlaeute May 23, 2024
add7373
[ci] only a single image is a allowed for a job
umlaeute May 23, 2024
1659d62
[ci] on WIndows, only install packages that actually exist
umlaeute May 23, 2024
a4409e9
Add "--floatsize" configureflag
Jun 17, 2024
a4ed44a
"--disable-plugins" to not build (or configure) any plugins
umlaeute Jun 18, 2024
434233a
[ci] Use template jobs to select Windows/macOS runners
umlaeute Jun 19, 2024
7199a93
[ci] switch windows runners to sardinecake
umlaeute Jun 19, 2024
65755ed
[ci] print more build information
umlaeute Jun 19, 2024
ab2c2a2
[ci] also print the paths
umlaeute Jun 19, 2024
d37417f
m4/gem: moved floatsize checks at the beginning of RTE checks
umlaeute Jun 20, 2024
235faf1
take floatsize into account when searching for pd binaries
umlaeute Jun 20, 2024
8a66a80
subst (and print) RTE executable
umlaeute Jun 20, 2024
549bbf6
drop GEM_RTE_CPPFLAGS and GEM_RTE_CXXFLAGS
umlaeute Jun 20, 2024
c5b9093
On Windows, link against Gem with custom extension
umlaeute Jun 20, 2024
d9bfb64
[ci] lowercase jobnames
Jun 19, 2024
7480a24
[ci] set pd_extension for jobs
umlaeute Jun 20, 2024
5863d3b
[ci] terse version prints of tools
Jun 21, 2024
0d39df4
[ci] trick syntax highlighter in emacs
Jun 19, 2024
b2b9ec3
[ci] use a helpervar for the download URL and calculcate the filename…
umlaeute Jun 20, 2024
aa03dcb
[ci] all /.git* stuff is not-distributed
umlaeute Jun 19, 2024
5e808cf
[ci] do not delete .gitignore from submodules
Jun 19, 2024
1eb7355
[ci] Add iem-ci as submodule (for improved localdeps)
umlaeute Jun 19, 2024
bfc9cc1
[ci] use improved localdeps scripts
umlaeute Jun 19, 2024
262a3c9
[ci] helper-script to inject an arch-specifier into a filename
umlaeute Jun 19, 2024
4dfdb35
[ci] Inject gnutriplet into Gem plugin filenames
umlaeute Jun 19, 2024
b9aaa58
[ci] Use job-name (without floatsize) to separate Gem plugins
Jun 19, 2024
e1da7f6
[ci] puts localdeps into subdir
Jun 19, 2024
b431596
[ci] calculate "gnutriplet" from jobname
Jun 19, 2024
21d79ee
[ci] jobs ending with "-64" build for Pd64
Jun 19, 2024
0d44a15
[ci] fix typos
Jun 20, 2024
dafb24e
[ci] enable Pd64-jobs
Jun 19, 2024
b7ff89b
[ci] disable all plugins when building Pd64 variants
Jun 20, 2024
85480a9
[ci] manually set pd_download_url for windows-amd64-64 build
umlaeute Jun 20, 2024
c385284
[ci] centralize "set DESTDIR"
Jun 21, 2024
d63cf49
[ci] on Windows, make sure that the Gem-plugins have per-job extensions
Jun 21, 2024
c6ac62b
[ci] on Windows, build plugins per floatsize
Jun 21, 2024
919f36f
[ci] fix configure flag for floatsize
Jun 21, 2024
92ae7ea
[ci] print info if split-debug has not matches
Jun 21, 2024
d667259
[ci] notarize darwin-fat-64 as well
umlaeute Jun 26, 2024
b6fd20a
moved text/objects into positive coordinate space
umlaeute Jun 27, 2024
9beb39d
Add meta information to help-patches
umlaeute Jun 27, 2024
23fe821
fix line/point rendering for [sphere] and [sphere3d]
umlaeute Aug 12, 2024
39818e0
fix line/point rendering of [disk] and [cylinder] (esp with textures)
umlaeute Aug 12, 2024
fe64422
most simple multitexture example
ch-nry Sep 24, 2024
2cfaf0a
Add basic multitexture example to build-system
umlaeute Sep 24, 2024
9eb6bee
massive additive audio syntesis in the GPU
ch-nry Sep 25, 2024
33bdc82
small debug and remove custom abstraction
ch-nry Sep 25, 2024
f4fc91c
Add volume slider and use spaces in OSD
Sep 25, 2024
f217a5a
small debug that help on osX
ch-nry Sep 25, 2024
9ae7dfd
FLOAT output version of the shader
ch-nry Sep 26, 2024
dfd2abf
Add GLSL audio synth example to build-system
umlaeute Sep 26, 2024
1cafa16
[ci] ensure that 'libtool' is installed
umlaeute Sep 26, 2024
4fa23a1
add a pop protection and clean the rendering with double buffering
ch-nry Sep 26, 2024
b15e3de
add a missing "quality 0"
ch-nry Sep 26, 2024
e0504ea
monochrome image
umlaeute Sep 26, 2024
860b2c6
Merge branch 'pr/447'
umlaeute Sep 26, 2024
c095cba
spelling
umlaeute Sep 26, 2024
59e8287
install missing Atom.h
avilleret Oct 25, 2024
92c8e8c
glx: only set the flags once (they are the same for fullscreen and w/…
Nov 7, 2024
2bdf852
set default override_redirect
Nov 7, 2024
c817127
glx: grab the keyboard when in fs
Nov 7, 2024
1912301
[pix_dump] specify channels for RGB-output
Nov 30, 2024
6d828aa
pix_dump: fix double indirection when getting color channels
Nov 30, 2024
d7dda0c
Install git on Linux builders
Nov 30, 2024
2662e0e
set SOURCE_DATE_EPOCH from CI_COMMIT_TIMESTAMP
Nov 30, 2024
f8e5e89
[ci] workaround macOS date quirks for parsing ISO-8601
Nov 30, 2024
b0e8c26
[ci] yet another macOS date parsing fix
Nov 30, 2024
2971c2b
add "--tag=CXX" to libtoolflags for ObjC++-plugins
Dec 28, 2024
5a00036
add "--tag=CXX" to libtoolflags for ObjC++ Output objects as well
Jan 5, 2025
d71198e
[pix_record] has a "file" message, not a "filename" message
umlaeute Feb 4, 2025
ee61c5b
pix_record-help: connect the actual object!
umlaeute Feb 4, 2025
b74268d
m4: new style quotes
umlaeute Feb 11, 2025
ab5bbc6
IEM_CHECK_FUNCS helper
umlaeute Feb 11, 2025
be5eaa9
use IEM_CHECK_FUNCS to check for additional lqt functions
umlaeute Feb 11, 2025
0265a8b
check for new gmerlin-avdecoder functions
umlaeute Feb 11, 2025
601c665
filemGMERLIN: use #if USE_FRAMETABLE rather than #ifdef
umlaeute Feb 11, 2025
4794dd8
filmGMERLIN: use bgav_seek_to_video_frame() where supported
umlaeute Feb 11, 2025
2fb418d
filmGMERLIN: don't use frametables for newer gmerlin
umlaeute Feb 11, 2025
bbc61d7
unconditionally replace verbose() with logpost()
umlaeute Feb 13, 2025
2e86329
unconditionally replace clock_getsystime() with clock_getlogicaltime()
umlaeute Feb 13, 2025
9b26e25
disable deprecation awrning for garray_resize()
umlaeute Feb 13, 2025
570a37f
.gitignore directories starting with underscore
umlaeute Feb 13, 2025
b19fe3b
Fix crash when reloading model
timothyschoen Oct 10, 2024
bf399da
[part_move] object that moves particles
umlaeute Feb 13, 2025
8bb657d
Rename [part_info] to [part_information] and strip the pMove()
umlaeute Feb 13, 2025
5faf61a
[part_info] compat abstraction
umlaeute Feb 13, 2025
cca67ac
[part_information] use std::vector rather than manually allocated arrays
umlaeute Feb 13, 2025
36e9385
(Updated) help-patches for [part_info], [part_information] and [part_…
umlaeute Feb 13, 2025
5235e17
Prevent deleting a non-existent framebuffer
timothyschoen Oct 10, 2024
ac626a8
gemframebuffer-help: use [_gemwin]
umlaeute Feb 13, 2025
7fff483
Add help-patches for [part_information] and [part_move] to buildsystem
umlaeute Feb 13, 2025
9ca46dc
simple floating-point framebuffer example
umlaeute Feb 13, 2025
7311593
examples/glsl/audio: make sure that [gemframebuffer] uses RGBA32F
Feb 13, 2025
59a7f43
Rename floatpoint_framebuffer example and add it to the build-system
Feb 14, 2025
0282f3a
adding the bbox information on text examples
ch-nry Mar 17, 2025
128a493
slightly simplify stencilBuffer example
umlaeute Mar 17, 2025
156e96b
Generic help-patch for [GEMgl...] objects
umlaeute Mar 17, 2025
0fe638c
Use a generic GEMgl-help for all [GEMgl...] wrappers
umlaeute Mar 17, 2025
dcc5262
ony output error for unknown shaderID if the input number could be valid
umlaeute Mar 17, 2025
deabba6
drop *some* of too early linking of GLSL shaders
umlaeute Mar 17, 2025
4763735
helper to render text's bboxes
umlaeute Mar 17, 2025
b6260e8
use [_textbbox] for displaying text's bboxes
umlaeute Mar 17, 2025
855ee9f
Merge branch 'pr/469'
umlaeute Mar 17, 2025
3d88c08
pix_artoolkit: fix image member "not owned"
Mar 1, 2025
7350809
V4L2: stop enumerating private ctrls on error
Mar 17, 2025
75e4d4a
v4l2: if STREAMON fails, close device
Mar 17, 2025
d5bede5
V4L2: initialize fd to -1
Mar 17, 2025
0f55a51
V4L2: move decorations to debugPrint()
Mar 17, 2025
92089a6
V4L2: exit if format could not be negotiated
Mar 17, 2025
212a8b9
properly pass a *pointer* to the old pixBlock
Mar 26, 2025
17efdee
consistent naming: m_pix -> m_pixBlock
Mar 26, 2025
b79ceb6
whitespace
Mar 26, 2025
6d6b3f5
replace AC_HELP_STRING with AS_HELP_STRING
umlaeute Mar 20, 2025
e6cc224
GemBase: use private date into PIMPL
umlaeute Mar 27, 2025
eec13a7
remove GemBase::gem_MessCallback() from header
umlaeute Mar 27, 2025
d6c471a
GemBase: reference to parent in PIMPL
umlaeute Mar 27, 2025
4958c44
glErrorString() helpers
umlaeute Mar 27, 2025
d7b7b9b
whitespace
umlaeute Mar 27, 2025
2fd9f4f
per-object "debugGL" message to track down openGL errors
umlaeute Mar 27, 2025
8902fad
Gem: forward [debugGL( messages to all Gem objects
umlaeute Mar 27, 2025
6d8daa4
document debugGL message
umlaeute Mar 27, 2025
d75ca6a
fix re-entrancy for GemSplash::debugGL
umlaeute Mar 27, 2025
1618aad
[GEMglReportError] make error trackable
umlaeute Mar 27, 2025
2373fc5
use helper to initialize maxStackDepth in GemContext
umlaeute Mar 27, 2025
3a1cf8a
cleanup PIMPL
umlaeute Mar 27, 2025
3cbdc22
GemContext: initialize set active texture
umlaeute Mar 27, 2025
32bbc6e
[glsl_program] unlink program on stopRendering
umlaeute Mar 27, 2025
28a5ae0
minor improviements for examples
Mar 28, 2025
573d25d
GL/GLU suffix for our own openGL error messages
Mar 28, 2025
625a2d9
clear the entire error-queue
Mar 28, 2025
28dfb26
[gemwin]: use [polygon] to draw line
Mar 28, 2025
200f36a
[GEMglReportError] report all errors in the queue
Mar 28, 2025
26b376e
and clear openGL errors when triggering render in [gemwin]
Mar 28, 2025
ca9e3e0
Pass lod to textureSize2DRect
umlaeute Mar 31, 2025
a23d119
Cleaned up GLSL examples
umlaeute Mar 31, 2025
b5c42ec
[gem*framebuffer] reset active texture in postrender
umlaeute Mar 31, 2025
8e52594
glReportError() helper for reporting openGL errors in a CPPExtern
umlaeute Mar 31, 2025
85b0a22
use gem::utils::gl::glReportError(CPPExtern*)
umlaeute Mar 31, 2025
c5001b3
cleaned up [gemcubeframebuffer] help
umlaeute Mar 31, 2025
ce1fce8
gemcubeframebuffer: force 'alpha' uniform to 1.0
umlaeute Mar 31, 2025
68f259a
push/pop all texture units
umlaeute Mar 31, 2025
c7e0d33
pix_snap2tex: don't snap if there's no texture object
umlaeute Mar 31, 2025
d863997
GLSL helper
umlaeute Mar 31, 2025
b85499e
Document [glsl]
umlaeute Mar 31, 2025
2434744
GLSL examples: use [glsl]
umlaeute Mar 31, 2025
5117524
Drop [_glsl] helper from examples/10.glsl/
Mar 31, 2025
2959d02
do not pass the print message to next shader
ch-nry Apr 14, 2025
c920744
increase range of GPU that can load geometry shaders
ch-nry Apr 16, 2025
48b297c
do not forward print message if the shader is not loaded
ch-nry Apr 16, 2025
399bd0a
geometry shader example. This one is not impressive, but it works!
ch-nry Apr 16, 2025
f73ae57
example to explore the various matrix used
ch-nry Apr 16, 2025
fe4f1ed
use triangle_strip for the input and reduce the array size
ch-nry Apr 16, 2025
063bfda
rename the shader to fit other examples template
ch-nry Apr 16, 2025
51b3a26
add information about openGL drawing type
ch-nry Apr 16, 2025
9b77c7d
the size of the buffer depend of the dimention of the data stored
ch-nry Apr 16, 2025
a61703c
new example that test various primitives made with VBO
ch-nry Apr 16, 2025
a0e897e
new primitives using VBO to use with shaders
ch-nry Apr 16, 2025
eca530c
better way to exclude multiple print when shader is not loaded
ch-nry Apr 17, 2025
6fbaae5
comments and clean
ch-nry Apr 17, 2025
234a3e8
comments
ch-nry Apr 17, 2025
eda818e
use the glsl abstraction
ch-nry Apr 17, 2025
5bae4ad
simplify the example
ch-nry Apr 17, 2025
81da317
Lighting example using Blinn Phong model
ch-nry Apr 17, 2025
5df9e57
remove unused variables
ch-nry Apr 17, 2025
a3cee53
rotate also the normal of the model, so light apear fixed
ch-nry Apr 17, 2025
0ca9362
clean
ch-nry Apr 17, 2025
1d4dd1f
clean
ch-nry Apr 17, 2025
1df47d2
debug wrong connection
ch-nry Apr 17, 2025
c3152fb
1st draft of a help file
ch-nry Apr 17, 2025
b97b512
add drawing type
ch-nry Apr 17, 2025
b224a3f
adding ; at every line, in order to be able to visualize the shader w…
ch-nry Apr 17, 2025
d5a6088
adding "text define" object to visualize the shader in the patch
ch-nry Apr 17, 2025
aacf6a0
adding draw type
ch-nry Apr 17, 2025
95bf4eb
cosmetic
ch-nry Apr 17, 2025
460b061
new circle pimitive using VBO
ch-nry Apr 17, 2025
9d1f304
better init
ch-nry Apr 17, 2025
d5d7b74
new primitives based on VBO
ch-nry Apr 17, 2025
88f4211
reorder examples
ch-nry Apr 17, 2025
d7030bf
clean
ch-nry Apr 18, 2025
86358d5
remove ";" and use textfile in "cr" mode to read the shader
ch-nry Apr 18, 2025
35b08a4
remove unused ;
ch-nry Apr 18, 2025
a8de9f6
clean and add a shader to display the various modification due to mat…
ch-nry Apr 18, 2025
92e3b75
clean
ch-nry Apr 18, 2025
9fcbaca
cleanup
ch-nry Apr 18, 2025
a23a541
simpler perspect matrix computation
ch-nry Apr 18, 2025
4b206f1
make this example to work :
ch-nry Apr 18, 2025
889f41d
cleanup
ch-nry Apr 18, 2025
aedc445
comment a test that cause more problem that it solve.
ch-nry Apr 18, 2025
0d56853
removed because I can't find the best way to do VBO primitives
ch-nry Apr 18, 2025
5f7c6ae
reorder example
ch-nry Apr 18, 2025
662e171
typo
ch-nry Apr 18, 2025
746c577
cleanup
ch-nry Apr 18, 2025
8747344
new axample
ch-nry Apr 18, 2025
6ff886f
more explanation
ch-nry Apr 18, 2025
833027d
spelling : rename exemple
ch-nry Apr 18, 2025
f0620ef
add draw patch GL_PATCHES : it's mandatory for teselarisation shader.
ch-nry Apr 20, 2025
1199ff8
put the shaders in the execution order
ch-nry Apr 20, 2025
bf839ca
add a new wrapper for a specific openGL fonction that is mandatory fo…
ch-nry Apr 20, 2025
0140139
teselarisation shader exemple
ch-nry Apr 20, 2025
136e6ae
more comment in the shaders files
ch-nry Apr 20, 2025
c797b04
a new example to querry the GPU important information (#492)
ch-nry Apr 22, 2025
9c70db7
[pix_write] fix setting format
umlaeute Apr 9, 2025
4e43953
film: enumerate actual useable plugins (in the correct order)
umlaeute Apr 22, 2025
d619386
whitespace
umlaeute Apr 22, 2025
559035c
film: clear backends property before loading via to filmImage()
umlaeute Apr 22, 2025
fd62211
gmerlin: fail to load movies with 0x0 framesize
umlaeute Apr 22, 2025
eef4cbc
fix spelling mistakes
umlaeute Apr 22, 2025
3563240
renamed "09.tesel" to "09.tesselation" and add new examples to build …
umlaeute Apr 22, 2025
bd1d599
cleanup
umlaeute Apr 22, 2025
c83ddf6
Merge branch 'debug_glsl.compile'
umlaeute Apr 22, 2025
f5d0dcd
Add modelfiler-help to the buildsystem
umlaeute Apr 22, 2025
c99d1e6
[modelfiler]-help use explicit tablenames
umlaeute Apr 22, 2025
648c67c
GLSL/04.model use explicit tablenames for [modelfiler]
umlaeute Apr 22, 2025
7dcd52a
use the correct drawing mode for the 1st part of the sphere
ch-nry Apr 22, 2025
20e29f7
drop ambient/shininess/specular from [gemwin]
umlaeute Apr 23, 2025
a4a7bf0
Fix crash with [pix_rtx]
Apr 30, 2025
9f5c658
[ci] force-uninstall zstd/xz/lz4 on macOS (so we can re-install them)
umlaeute May 6, 2025
2269d2b
[ci] fix 'brew uninstall' invocation
umlaeute May 6, 2025
b295338
[ci] another fallback method to install gitlab-runner on homebrew
umlaeute May 6, 2025
9d57ad8
[ci] use default git-submodule depth
umlaeute May 6, 2025
afcb8db
There was no feedback example that use framebuffer until now.
ch-nry May 30, 2025
d9d546e
fix spelling errors
umlaeute Jun 2, 2025
b4e8e43
Add new example to the build-system
umlaeute Jun 2, 2025
2f303d5
GLSL: Use 'textureSize' rather than 'textureSize2DRect'
umlaeute Jun 4, 2025
e93becf
[ci] try harder to install automake
umlaeute Jun 4, 2025
10c451b
adding a new feedback example
ch-nry Jun 29, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
142 changes: 112 additions & 30 deletions .git-ci/gitlab-iem.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ variables:
gem_defaultwindow:
value: "gemglfw3window"
description: "default window backend"

GIT_SUBMODULE_STRATEGY: recursive
#GIT_SUBMODULE_DEPTH: 1

stages:
- build
Expand Down Expand Up @@ -53,24 +54,64 @@ stages:
set -o shwordsplit || true # zsh doesn't do wordsplitting by default...
set -o nonomatch || true # zsh bails out if globbing patterns do not expand

.script:set_destdir: &script_set_destdir
- DESTDIR="$(pwd)/${ARTIFACTSDIR}/${CI_JOB_NAME%%-*}"


.image:windows:
tags:
- sardinecake
image: registry.git.iem.at/devtools/sardinecake/windows:latest

.image:macos:
tags:
- tart
image: ghcr.io/cirruslabs/macos-monterey-xcode:latest

.build:
stage: build
variables:
localdeps: ".git-ci/iem-ci/localdeps/localdeps"
script:
- *script_zsh_compat
# set SOURCE_DATE_EPOCH for reproducible builds
- export SOURCE_DATE_EPOCH="$(date --date="${CI_COMMIT_TIMESTAMP}" +%s 2>/dev/null || date -j -f %Y-%m-%dT%H:%M:%S%z "$(echo ${CI_COMMIT_TIMESTAMP} | sed -e 's|\([+-][0-9][0-9]\):\([0-9][0-9]\)$|\1\2|')" +%s || echo ${SOURCE_DATE_EPOCH})"
- echo "${CI_COMMIT_TIMESTAMP} -> ${SOURCE_DATE_EPOCH}"
# handle Pd64 jobs
- if test "${OS}" = "Windows_NT"; then defaultext="dll"; else defaultext="so"; fi
# - gnutriplet="$(g++ -dumpmachine)"
- arch="${CI_JOB_NAME%-[0-9][0-9]}"
- floatsize="${CI_JOB_NAME#${arch}}"
- floatsize="${floatsize#-}"
- test "${floatsize}" != 32 || floatsize=""
- test -z "${floatsize}" || pd_extension="${arch}-${floatsize}.${defaultext}"
- if test "${OS}" = "Windows_NT"; then gnutriplet="${CI_JOB_NAME}"; else gnutriplet="${arch}"; fi
- configure_floatsize="${floatsize:+--with-floatsize=${floatsize}}"
# on Windows, plugins link against Gem, so we cannot share them between floatsizes; other platforms are fine
- test -z "${floatsize}" || test "${OS}" = "Windows_NT" || configure_floatsize="${configure_floatsize} --disable-plugins"
- echo "arch=${arch} pd_extension=${pd_extension} floatsize=${floatsize}"
# print some system information
- echo building against Pd-${PDVERSION}
- echo building with ${NUMBER_OF_PROCESSORS:=$(nproc || sysctl -n hw.ncpu || echo 1)} CPUs
- tools/systeminfo.sh || true
- date
- which autoreconf aclocal glibtoolize libtoolize autoconf autoheader automake g++ || true
- for tool in autoreconf aclocal libtoolize glibtoolize autoconf autoheader automake; do "${tool}" --version | grep "^${tool}" || true; done || true
- g++ -v
# the actual build
- mkdir -pv "${ARTIFACTSDIR}"
- autoreconf -fiv || ./autogen.sh
- ./configure --disable-dependency-tracking ${TARGETARCH:+--host=}${TARGETARCH} ${fat_binary:+--enable-fat-binary=}${fat_binary} ${PDDIR:+--with-pd=}${PDDIR} ${pd_extension:+--with-extension=}${pd_extension} ${gem_defaultwindow:+--with-defaultwindow=}${gem_defaultwindow} --with-DeckLink=local || true
- ./configure --disable-dependency-tracking ${TARGETARCH:+--host=}${TARGETARCH} ${fat_binary:+--enable-fat-binary=}${fat_binary} ${PDDIR:+--with-pd=}${PDDIR} ${pd_extension:+--with-extension=}${pd_extension} ${configure_floatsize} ${gem_defaultwindow:+--with-defaultwindow=}${gem_defaultwindow} --with-DeckLink=local || true
- test -n "${CI_COMMIT_TAG}" || cp -v config.log "${ARTIFACTSDIR}"
- make check -j"${NUMBER_OF_PROCESSORS}"
- make install DESTDIR=$(pwd)/${ARTIFACTSDIR}/${CI_JOB_NAME%_*} libdir=/ extradir=/Gem includedir=/Gem/include
- *script_set_destdir
# "
- make install DESTDIR="${DESTDIR}" libdir=/ extradir=/Gem includedir=/Gem/include
# make Gem-plugins co-installable
- find "${DESTDIR}" "(" -name "gem_*.so" -or -name "gem_*.dll" ")" -exec .git-ci/rename-gnutriplet.sh -a "${gnutriplet}" {} "+"
# finally split the binaries from the debug information
- base_dir_ci=$(pwd)
- cd "$(pwd)/${ARTIFACTSDIR}/${CI_JOB_NAME%_*}/Gem"
- cd "${DESTDIR}/Gem"
- du -sh
- |
"${base_dir_ci}/.git-ci/split-debug" ${pd_extension:+*.${pd_extension}} *.pd_* *.?_* *.dll *.so || echo "ignoring problems when splitting debug info"
Expand All @@ -93,25 +134,24 @@ stages:
- apt-get update
- apt-get install ${TARGETDEBARCH:+-a}${TARGETDEBARCH} puredata-dev puredata-core
- apt-get build-dep ${TARGETDEBARCH:+-a}${TARGETDEBARCH} gem || true
- apt-get install git
- g++ -v

.build:macos:
extends:
- .image:macos
- .build
tags:
- tart
image: ghcr.io/cirruslabs/macos-monterey-xcode:latest
retry:
max: 1
when:
- runner_system_failure
variables:
CXXFLAGS: "-std=c++11 -g -O2"
CPPFLAGS: "-DGEM_DEBUG_PIXCONVERT=1"
fat_binary: "x86_64,arm64"
HOMEBREW_NO_ANALYTICS: 1
HOMEBREW_NO_INSTALL_UPGRADE: 1
HOMEBREW_NO_INSTALL_CLEANUP: 1
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
CODESIGNFLAGS: --timestamp --strict --force
before_script:
- *script_zsh_compat
Expand All @@ -123,7 +163,17 @@ stages:
- brew list --full-name || true
- brew update || true
# make sure we have a good gitlab runner
- mkdir -p /usr/local/bin/
- |
: "${GITLAB_ARCH:=$(uname -m | sed -e 's|^x86_64$|amd64|' -e 's|^aarch64$|arm64|')}"
- |
: "${GITLAB_OS:=$(uname -s | tr '[:upper:]' '[:lower:]')}"
- |
: "${GITLAB_VERSION:=latest}"
- |
echo "fallback gitlab-runner ${GITLAB_VERSION} ${GITLAB_OS}-${GITLAB_ARCH}"
- (which gitlab-runner; gitlab-runner --version) || brew install gitlab-runner || true
- (which gitlab-runner; gitlab-runner --version) || curl -o /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/${GITLAB_VERSION}/binaries/gitlab-runner-${GITLAB_OS}-${GITLAB_ARCH}" && chmod +x /usr/local/bin/gitlab-runner || true
- (which gitlab-runner; gitlab-runner --version) || true

# download Pd
Expand All @@ -134,15 +184,15 @@ stages:
- test ! -f "${IEM_CI_TMPDIR}"/Pd.zip || unzip "${IEM_CI_TMPDIR}"/Pd.zip -d "${IEM_CI_TMPDIR}"
# the ZIP-file shoud contain a .dmg containing Pd
- |
for dmg in "${IEM_CI_TMPDIR}"/Pd*.dmg; do break; done
for dmg in "${IEM_CI_TMPDIR}"/Pd*.dmg ; do break; done
- pddisk=""
- test ! -f "${dmg}" || pddisk=$(hdiutil attach "${dmg}" 2>/dev/null | egrep "^/.*/Volumes/" | tail -1 | awk '{print $NF}')
- rm -rf "${dmg}"
- |
for app in "${pddisk}"/Pd*.app "${IEM_CI_TMPDIR}"/Pd*.app; do if test -d "${app}"; then cp -r "${app}" /Applications/; break; fi; done
- test ! -d "${pddisk}" || umount "${pddisk}"
- |
rm -rf "${IEM_CI_TMPDIR}"
rm -rf "${IEM_CI_TMPDIR}" | true
dmg=""
pddisk=""
app=""
Expand All @@ -151,48 +201,60 @@ stages:
- export PDDIR=$(find /Applications/Pd*.app/Contents/Resources -maxdepth 1 -type d -print -quit)
- echo "PD=${PD}"
- echo "PDDIR=${PDDIR}"
# urgh: these are provided as fat variants, but must be uninstalled manually, for whatever reason.
- brew uninstall --force --ignore-dependencies zstd xz lz4
# urgh, the gnu servers timeout, so try to install these files multiple times...
- which automake || brew install automake || true
- which -s libtoolize || which -s glibtoolize || brew install libtool || true
# install the real stuff
- brew bundle --no-upgrade --file=.git-ci/macOS.brew || true
- brew list --full-name || true
- libtoolize --version || glibtoolize --version || brew install libtool || true
# older versions of assimp are broken with clang>=14
- sed -e 's|^\([[:space:]]*mTextureCoordsNames = new aiString \*\[AI_MAX_NUMBER_OF_TEXTURECOORDS\]\) {};[[:space:]]*$|\1; for (size_t i=0; i<AI_MAX_NUMBER_OF_TEXTURECOORDS; ++i) {mTextureCoordsNames[i] = nullptr;}|' -i.bak "$(brew --cellar)"/assimp-fat/5.2*/include/assimp/mesh.h || true
- /usr/local/opt/gettext/bin/gettextize || true
- date
- echo "MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET}"
after_script:
- *script_zsh_compat
- mkdir -p "${ARTIFACTSDIR}/${CI_JOB_NAME%_*}"
- find "${ARTIFACTSDIR}/${CI_JOB_NAME%_*}" -type f "(" -name "*.${pd_extension:-d_*}" -o -name "*.pd_darwin" -o -name "*.so" ")" -exec .git-ci/localdeps.macos.sh {} +
- IEM_SIGN_SRCDIR="${ARTIFACTSDIR}/${CI_JOB_NAME%_*}"
- *script_set_destdir
- mkdir -p "${DESTDIR}"
- depdir="${CI_JOB_NAME%-[0-9][0-9]}"
- find "${DESTDIR}" -type f "(" -name "*.${pd_extension:-d_*}" -o -name "*.pd_darwin" -o -name "*.so" ")" -exec "${localdeps}.macos.sh" -F -v -d ".${depdir}" {} +
- IEM_SIGN_SRCDIR="${DESTDIR}"
- !reference [.script:codesign:macos]

.build:w64:
extends:
- .image:windows
- .build
tags:
- windows
variables:
IEMCI_CONFIGURATIONS: mingw64
pd_downloadsuffix: .msw.zip
before_script:
- tools/systeminfo.sh || true
- export PDDIR="$(pwd)/_pd"
- downloadfile="pd-${PDVERSION}${pd_downloadsuffix}"
- echo wget -q -O "${downloadfile}" "http://msp.ucsd.edu/Software/pd-${PDVERSION}${pd_downloadsuffix}"
- wget -q -O "${downloadfile}" "http://msp.ucsd.edu/Software/pd-${PDVERSION}${pd_downloadsuffix}"
- |
: ${pd_download_url:="http://msp.ucsd.edu/Software/pd-${PDVERSION}${pd_downloadsuffix}"}
- downloadfile="${pd_download_url##*/}"
- echo wget -q -O "${downloadfile}" "${pd_download_url}"
- wget -q -O "${downloadfile}" "${pd_download_url}"
- mkdir -p "${PDDIR}"
- test "x${downloadfile}" = "x${downloadfile%.zip}" || unzip -q "${downloadfile}" -d "${PDDIR}"
- mv -v "${PDDIR}"/*/* "${PDDIR}"
- rm -f "${downloadfile}"
- rm -f "${PDDIR}"/bin/msvcr*.dll
- export PD="${PDDIR}/bin/pd.com"
- result=0
- pacman --noconfirm -S --needed $(cat .git-ci/msys2.pacman | sed -e 's|#.*||' -e "s|@MINGW@|${MINGW_PACKAGE_PREFIX}-|") || result=$?
- pacman --noconfirm -S --needed $(sed -e 's|#.*||' -e "s|@MINGW@|${MINGW_PACKAGE_PREFIX}-|" -e '/^\s*$/d' .git-ci/msys2.pacman | while read -r pkg _; do ! pacman -Sp "${pkg}" >/dev/null || echo "${pkg}"; done)
# if pacman failed, try to continue (but do not mark the run as 'success')
- echo "pacman returned ${result}"
- test "${result}" = "0" || result="skip"
after_script:
- mkdir -p "${ARTIFACTSDIR}/${CI_JOB_NAME%_*}"
- find "${ARTIFACTSDIR}/${CI_JOB_NAME%_*}" -type f "(" -name "*.${pd_extension:-m_*}" -o -name "*.dll" -o -name "*.exe" -o -name "*.com" ")" -exec .git-ci/localdeps.win.sh {} +
- *script_set_destdir
- mkdir -p "${DESTDIR}"
- depdir="${CI_JOB_NAME%-[0-9][0-9]}"
- find "${DESTDIR}" -type f "(" -name "*.${pd_extension:-m_*}" -o -name "*.dll" -o -name "*.exe" -o -name "*.com" ")" -exec "${localdeps}.win.sh" -v -d ".${depdir}" {} +

.build:w32:
extends:
Expand All @@ -205,7 +267,7 @@ stages:
###################################################
### the actual jobs: (linux,macos,windows)*(release,snapshot)

Source:
source:
extends:
- .artifacts
- .run-selected
Expand All @@ -215,28 +277,46 @@ Source:
- apt-get update && apt-get --no-install-recommends -y install git
script:
# create a source package
- git archive --format=tar --prefix="${ARTIFACTSDIR}/Source/${CI_PROJECT_NAME}/" HEAD | tar xf -
- git archive --format=tar --prefix="${ARTIFACTSDIR}/${CI_JOB_NAME}}/${CI_PROJECT_NAME}/" HEAD | tar xf -

Linux-amd64-32:
linux-amd64-32:
extends:
- .build:linux
- .artifacts
- .run-selected
Darwin-fat-32:
variables:
pd_extension: "pd_linux"
darwin-fat-32:
extends:
- .build:macos
- .artifacts
- .run-selected
Windows-i386-32:
variables:
pd_extension: "d_fat"
windows-i386-32:
extends:
- .build:w32
- .artifacts
- .run-selected
Windows-amd64-32:
variables:
pd_extension: "dll"
windows-amd64-32:
extends:
- .build:w64
- .artifacts
- .run-selected
variables:
pd_extension: "m_amd64"

# Pd64
linux-amd64-64:
extends: linux-amd64-32
darwin-fat-64:
extends: darwin-fat-32
windows-amd64-64:
extends: windows-amd64-32
variables:
pd_download_url: "https://get.puredata.info/pure-data/releases/${PDVERSION}-pd64/Pd64-${PDVERSION}.msw.zip"

distcheck:
extends:
Expand Down Expand Up @@ -281,7 +361,7 @@ nodist:
script:
## pre-cleanup
# get rid of gitignores
- find . -name .gitignore -delete
- git ls-tree -r HEAD --name-only -z | grep --null-data "\.gitignore" | xargs -0 rm
- git commit -a -m "Drop .gitignore files"
## create 'make dist' package
- autoreconf -fiv || ./autogen.sh
Expand All @@ -307,9 +387,11 @@ macOS:notarize:
stage: deploy
image: python:alpine
dependencies:
- Darwin-fat-32
- darwin-fat-32
- darwin-fat-64
needs:
- Darwin-fat-32
- darwin-fat-32
- darwin-fat-64
variables:
IEM_NOTARIZE_SRCDIR: artifacts
IEM_NOTARIZE_ARCHIVE: Gem.zip
Expand Down
1 change: 1 addition & 0 deletions .git-ci/iem-ci
Submodule iem-ci added at 4c9d89
1 change: 1 addition & 0 deletions .git-ci/nodist
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@ doc/notes/keynames.org
**/*.vsprops
**/* *
tests/
.git*
70 changes: 70 additions & 0 deletions .git-ci/rename-gnutriplet.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
#!/bin/sh

: "${CC:=cc}"

usage() {
arch="$(${CC} -dumpmachine)"
cat <<EOF
usage: $0 [-a <arch>] <file> [<file> ...]

renames each <file> to include .<arch> just before the file-extension.
the no <arch> is specified, use $arch.

E.g.
foo.so -> foo.${arch}.so
bar -> bar.${arch}

EOF

if [ -n "$1" ]; then
exit "$((1+0))"
fi
exit
}

addinfix() {
local f
local d
local b
local x
f="$1"
d="${f%/*}"
if [ "${d}" = "${f}" ]; then
d="."
else
f="${f##*/}"
fi
b="${f%.*}"
if [ "${b}" = "${f}" ]; then
x=""
else
x=".${f##*.}"
fi
mv "$1" "${d}/${b}.${2}${x}"
}

while getopts "ha:" arg; do
case $arg in
h)
usage
;;
a)
arch="${OPTARG}"
;;
*)
usage 1
;;
esac
done
shift $((OPTIND-1))
test -n "$*" || usage 1

: "${arch:=$(${CC} -dumpmachine)}"
if [ -z "${arch}" ]; then
echo "$0: Unable to determine <arch>" 1>&2
exit 1
fi

for f in "$@"; do
addinfix "$f" "${arch}"
done
9 changes: 9 additions & 0 deletions .git-ci/split-debug
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,15 @@ list_files() {
}


if ! list_files "$@" | grep -q .; then
cat >/dev/stderr <<EOF
no matching files in '$(pwd)'!
searched for:
$*
EOF
exit 1
fi

list_files "$@" | while read f; do
echo "splitting debug information for $f"
strip_and_attach "$f"
Expand Down
Loading