Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • jwilkes/purr-data
  • aggraef/purr-data
  • samthursfield/purr-data
  • prakhar/purr-data
  • yadu05/purr-data
  • NegiAkash890/purr-data
  • prateekpardeshi/purr-data
  • Shruti3004/purr-data
  • hidimpu/purr-data
  • Atseosi/purr-data
  • piyushjasaiwal/purr-data
  • deveshprasad/purr-data
  • skm_7/purr-data
  • sankt/purr-data
  • ashim_tom/purr-data
  • dineshsoni02/purr-data
  • chaitanya1-coder/purr-data
  • Nitish0007/purr-data
  • nitin/purr-data
  • shuvam09/purr-data
  • gabrielabittencourt/purr-data
  • sivasai/purr-data
  • flachyjoe/purr-data
  • ishankaler/purr-data
  • prateek/purr-data
  • RukshanJS/purr-data
  • rajatshrm648/purr-data
  • Srashti/purr-data
  • Paarth/purr-data
  • AniruddhaGawali/purr-data
  • brittneyjuliet/purr-data
  • prakharagarwal1/purr-data
  • Shreyanshpaliwalcmsmn/purr-data
  • k_amrut/purr-data
  • AyushAnand/purr-data
  • Va16hav07/purr-data
36 results
Show changes
Commits on Source (601)
Showing
with 1083 additions and 364 deletions
name: Makefile CI
on:
push:
branches: [ master, release, testing ]
tags: [ '*' ]
pull_request:
branches: [ master ]
jobs:
macos-build:
runs-on: macos-13
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
fetch-depth: 0
- name: install dependencies
run: |
brew install automake
brew install fftw
brew install fluidsynth
brew install faac
brew install jpeg
brew install speex
brew install gsl
brew install libquicktime
brew install sdl2
pip3 install markdown
- name: version
run: |
echo "version=$(git describe --tags)" >> $GITHUB_ENV
- name: make
run: |
echo version: $version
make V=0
- name: check
run: make check
- name: upload
uses: actions/upload-artifact@v3
with:
name: purr-data-${{ env.version }}-macos-x86_64
path: Purr-Data-*.dmg
retention-days: 2
ubuntu-build:
runs-on: ubuntu-latest
env:
DEBEMAIL: "Albert Graef <aggraef@gmail.com>"
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
fetch-depth: 0
- name: install dependencies
run: |
# dance around Azure connectivity issues
sudo apt-get update && sudo apt-get -o Acquire::Retries=3 install -q -y debhelper devscripts autoconf automake libtool pkg-config bison flex libgtk2.0-dev libgtk-3-dev dh-python ladspa-sdk libasound2-dev libjack-dev libbluetooth-dev libcairo2-dev libgl-dev libglew-dev libgsl-dev libmagick++-dev libavifile-0.7-dev libdc1394-dev libfftw3-dev libfluidsynth-dev libftgl-dev libgsm1-dev libjpeg-dev libmp3lame-dev libmpeg3-dev libquicktime-dev libraw1394-dev libsmpeg-dev libspeex-dev libstk-dev libtiff5-dev libv4l-dev libdv4-dev libiec61883-dev libxv-dev libxxf86vm-dev libvorbis-dev zlib1g-dev rsync libgconf2-dev libnss3-dev libxtst-dev libxss-dev
pip install markdown
- name: version
run: |
echo "version=$(git describe --tags)" >> $GITHUB_ENV
- name: make
run: |
echo version: $version
cd debuild
make debchange
make deb-us
- name: check
run: echo handled by debuild
- name: upload
uses: actions/upload-artifact@v3
with:
name: purr-data-${{ env.version }}-ubuntu-x86_64
path: debuild/purr-data*.deb
retention-days: 2
windows-build:
runs-on: windows-2022
defaults:
run:
shell: msys2 {0}
env:
CC: gcc
CXX: g++
steps:
- uses: msys2/setup-msys2@v2
- uses: actions/checkout@v3
with:
submodules: recursive
fetch-depth: 0
- name: install innosetup
run: |
wget https://jrsoftware.org/download.php/is.exe -O innosetup.exe
./innosetup.exe //SILENT //CURRENTUSER
- name: install dependencies
run: |
pacman --noconfirm --disable-download-timeout -S autoconf automake git libtool make mingw-w64-x86_64-dlfcn mingw-w64-x86_64-fftw mingw-w64-x86_64-fluidsynth mingw-w64-x86_64-SDL2 mingw-w64-x86_64-ftgl mingw-w64-x86_64-fribidi mingw-w64-x86_64-ladspa-sdk mingw-w64-x86_64-lame mingw-w64-x86_64-libsndfile mingw-w64-x86_64-libvorbis mingw-w64-x86_64-lua mingw-w64-x86_64-toolchain mingw-w64-x86_64-libjpeg-turbo mingw-w64-x86_64-speex mingw-w64-x86_64-python mingw-w64-x86_64-python-markdown rsync unzip wget
- name: version
run: |
echo "version=$(git describe --tags)" >> $GITHUB_ENV
- name: make
run: |
echo version: $version
echo UNAME: `uname -s`
make V=0
- name: check
run: make check
- name: upload
uses: actions/upload-artifact@v3
with:
name: purr-data-${{ env.version }}-mingw-x86_64
path: Purr-Data-*.exe
retention-days: 2
release:
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
needs: [macos-build, ubuntu-build, windows-build]
steps:
- uses: actions/download-artifact@v3
- name: ziptie
run: |
mkdir dist
for x in purr-data-*; do (cd $x && zip -r ../dist/$x.zip *); done
- name: release
uses: softprops/action-gh-release@v1
with:
prerelease: true
draft: true
files: dist/*.zip
......@@ -32,8 +32,8 @@
.test_windows: &test_windows
- echo -e "section_start:`date +%s`:test_windows\r\e[0KTesting Purr Data for Windows"
- cd scripts
- ../packages/win32_inno/build/bin/pd.com -noprefs -nogui -noaudio -send "init dollarzero \$0" regression_tests.pd
- ../packages/win32_inno/build/bin/pd.com -noprefs -nostdpath -nogui -noaudio external-tests.pd
- ../packages/win64_inno/build/bin/pd.com -noprefs -nogui -noaudio -send "init dollarzero \$0" regression_tests.pd
- ../packages/win64_inno/build/bin/pd.com -noprefs -nostdpath -nogui -noaudio external-tests.pd
- echo -e "section_end:`date +%s`:text_windows\r\e[0K"
......@@ -88,7 +88,7 @@ osx_10.11_x86_64_dmg:
name: "$CI_RUNNER_DESCRIPTION"
expire_in: 1 day
paths:
- Pd*.dmg
- Purr*.dmg
osx_10.8_x86_64_dmg:
tags:
......@@ -97,6 +97,7 @@ osx_10.8_x86_64_dmg:
- dmg
variables:
BUILD_TYPE_FLAG: -X
osx_version: "10.8"
script:
- echo `pwd`
- *build_all
......@@ -105,12 +106,12 @@ osx_10.8_x86_64_dmg:
name: "$CI_RUNNER_DESCRIPTION"
expire_in: 1 day
paths:
- Pd*.dmg
- Purr*.dmg
windows_i386_innosetup:
windows_x86_64_innosetup:
tags:
- windows
- i386
- x86_64
variables:
BUILD_TYPE_FLAG: -Z
script:
......
......@@ -6,10 +6,10 @@
url = https://github.com/pd-l2ork/cwiid
[submodule "Gem"]
path = Gem
url = https://git.purrdata.net/aggraef/gem.git
url = https://github.com/agraef/Gem.git
[submodule "l2ork_addons/raspberry_pi/disis_gpio/wiringPi"]
path = l2ork_addons/raspberry_pi/disis_gpio/wiringPi
url = https://git.purrdata.net/jwilkes/wiringPi.git
[submodule "externals/pd-lua"]
path = externals/pd-lua
url = https://git.purrdata.net/jwilkes/pd-lua.git
url = https://github.com/agraef/pd-lua.git
Subproject commit 1ab32e47ec2362fc6257c574abb31c539d5204ac
Subproject commit 0d5f10cc9166ce8971c6fde32fa0d2d47ab33fa0
This diff is collapsed.
# Pd-l2ork Copyright and Terms of Use
# Purr-Data Copyright and Terms of Use
Pd, as well as this compilation of Pd-related software known as Purr Data
Pd, as well as this compilation of Pd-related software known as Purr-Data
a.k.a. Pd-l2ork 2.x, is copyrighted software by various authors, but it is
distributed as open-source software, which means that it can be used freely
and without any costs under the appropriate license terms, as detailed below.
......@@ -32,21 +32,21 @@ for details.
Copyright (c) by various authors, please see the included license files for
details
Pd-l2ork includes a large number of bundled abstractions and externals by
Purr-Data includes a large number of bundled abstractions and externals by
various authors. These can be found in the abstractions, externals and Gem
subdirectories in the source, and in the extra subdirectory of the Pd-l2ork
subdirectories in the source, and in the extra subdirectory of the Purr-Data
library directory of the installed application. Each of these items has its
own open-source license under which it is distributed (mostly different
variations of the BSD license or the GPL), so please check the corresponding
license files in the source or the extra directory of the installed package
for license information pertaining to each of the different software modules.
## Pd-l2ork License
## Purr-Data License
Copyright (c) by Hans-Christoph Steiner, Ico Bukvic, Jonathan Wilkes and
others
Purr Data (by Jonathan Wilkes) is based on Pd-l2ork (by Ico Bukvic) which in
Purr-Data (by Jonathan Wilkes) is based on Pd-l2ork (by Ico Bukvic) which in
turn is based on Pd-extended (by Hans-Christoph Steiner), which is licensed
under the GPL (GNU Public License) version 3, replicated below. Please note
that this license applies to all parts of this package which are *not*
......
......@@ -95,11 +95,25 @@ endif
install_vars = DESTDIR=$(firstword $(wildcard $(CURDIR)/packages/*/build)) prefix=$(prefix)
# You can set the nwjsver variable to indicate the nw.js version to build
# against. This will also clear out any cached nw.js binaries beforehand.
# Note that some nw.js versions for certain platforms have to be hard-coded,
# so the nwjsver variable won't affect these, but it will still cause the
# cache to be cleared and the binaries to be downloaded. See the tar_em_up.sh
# script for details.
ifneq ($(nwjsver),)
env += nwjsver="$(nwjsver)"
endif
# You can set CFLAGS to whatever special compile options are needed. E.g., to
# build the double precision version: CFLAGS = -DPD_FLOATSIZE=64
CFLAGS =
export CFLAGS
# For the light build only, you can add externals to be included in the build.
addons =
export addons
# You can also set this variable to specify externals NOT to be built. E.g.,
# to prevent building Gem (which takes an eternity to build): blacklist = gem
blacklist =
......@@ -138,7 +152,7 @@ light-double:
make -C externals $(@:%_ext=%) $(@:%_ext=%_install) $(install_vars)
checkout:
git submodule update --init
git submodule update --init --recursive
clean:
test "$(shell uname -s)" = "Darwin" && make -C packages/darwin_app clean || true
......@@ -243,6 +257,8 @@ submodules = $(sort $(shell test -d .git && (git config --file .gitmodules --get
dist: $(debsrc)
# Determine the version number of this build. We get this from m_pd.h.
PD_L2ORK_VERSION := $(shell grep PD_L2ORK_VERSION pd/src/m_pd.h | sed 's|^.define *PD_L2ORK_VERSION *"\(.*\)".*|\1|')
# Determine the build version which needs git to be computed, so we can't do
# it in a stand-alone build from a tarball.
PD_BUILD_VERSION := $(shell test -d .git && (git log -1 --format=%cd --date=short | sed -e 's/-//g'))-rev.$(shell test -d .git && git rev-parse --short HEAD)
......@@ -259,6 +275,12 @@ $(debsrc):
# Pre-generate and put s_version.h into the tarball (see above; the build
# version is generated using git which can't be done outside the git repo).
sed 's|^\(#define PD_BUILD_VERSION "\).*"|\1$(PD_BUILD_VERSION)"|' pd/src/s_version.h.in > $(debdist)/pd/src/s_version.h
# Pre-generate the markdown and html docs so that they will be included in the
# source. This means that we don't need any special tools as a build
# dependency, which makes live a lot easier.
make -C packages/gendoc version="$(PD_L2ORK_VERSION)" build_version="$(PD_BUILD_VERSION)"
mv packages/gendoc/{ReadMe,Welcome}-*.{md,html} $(debdist)/packages/gendoc
make -C packages/gendoc clean
# Create the source tarball.
tar cfz $(debsrc) $(debdist)
rm -rf $(debdist)
## Pd-L2Ork
## Purr-Data
maintainers:
Maintainers:
* Ivica Ico Bukvic <ico@vt.edu>
* Albert Graef <aggraef@gmail.com>
* Jonathan Wilkes <jancsika@yahoo.com>
* Ivica Ico Bukvic <ico@vt.edu> (Pd-l2ork)
* Jonathan Wilkes <jancsika@yahoo.com> (Purr Data)
* Albert Graef <aggraef@gmail.com> (GitHub Mirror, JGU Packages)
[Mailing List](http://disis.music.vt.edu/cgi-bin/mailman/listinfo/l2ork-dev)
Contact: [DISIS mailing list](http://disis.music.vt.edu/cgi-bin/mailman/listinfo/l2ork-dev)
**GitLab Repository:** <https://git.purrdata.net/jwilkes/purr-data>
Official Purr Data source code in the "master" branch.
**GitHub Mirror:** <https://github.com/agraef/purr-data>
Mirrors the GitLab "master" branch, and also has "release" and "testing"
branches, binary packages, a website, and a wiki (WIP).
Contents:
* [Downloads](#downloads)
* [One Paragraph Overview](#one-paragraph-overview)
......@@ -17,7 +28,7 @@ maintainers:
* [Build Guide](#build-guide)
* [Gnu/Linux](#linux)
* [OSX](#osx-64-bit-using-homebrew)
* [Windows](#windows-32-bit-using-msys2)
* [Windows](#windows-64-bit-using-msys2)
* [Code of Conduct](#code-of-conduct)
* [Project Governance](#project-governance)
* [Contributor Guide](#contributor-guide)
......@@ -27,8 +38,8 @@ maintainers:
### One Paragraph Overview
Pure Data (aka Pd) is a visual programming language. That means you can use it to
create software graphically by drawing diagrams instead of writing lines of
Pure Data (aka Pd) is a visual programming language. That means you can use it
to create software graphically by drawing diagrams instead of writing lines of
code. These diagrams show how data flows through the software, displaying on
the screen what text-based languages require you to piece together in your mind.
......@@ -52,7 +63,7 @@ methods, as well as for realizing complex systems for large-scale projects.
### Goals
Pd-L2ork has the following goals:
Purr-Data has the following goals:
1. Documentation. We like documentation. It's like code, except friendly.
2. Be reliable. Binary releases must be usable for performances and
......@@ -78,54 +89,70 @@ For Ico Bukvic's original Pd-l2ork website see:
<http://l2ork.music.vt.edu/main/make-your-own-l2ork/software/>
(Note that the latter link is more about "classic" Pd-L2Ork a.k.a. Pd-L2Ork 1.0, see below. But it also contains some information about Purr Data.)
### Relationship of Purr Data to Pure Data
There are three maintained distributions of Pure Data:
At the time of this writing, there are four maintained distributions of Pure
Data, two of which (Purr Data, Pd-l2ork) belong to the Pd-extended lineage.
1. Purr Data. This is the 2.0 version of Pd-l2ork. It ships with lots of
external libraries and uses a modern GUI written using HTML5.
2. Pd-L2Ork 1.0, the version used by Ivica Bukvic for his laptop orchestra.
Pd-l2ork 1.0 uses tcl/tk (and tkpath) for the GUI. You can find it
[here](http://l2ork.music.vt.edu/main/make-your-own-l2ork/software/).
1. Purr Data. This started out as the 2.0 version of Pd-l2ork. It ships with
lots of external libraries and uses a modern GUI written using HTML5.
2. Pd-l2ork is the version used by Ivica Bukvic for his laptop orchestra.
Pd-l2ork 1.0 used tcl/tk (and tkpath) for the GUI. Pd-l2ork 2.x is a fork
of an earlier Purr Data version which is developed separately. You can find
these [here](http://l2ork.music.vt.edu/main/make-your-own-l2ork/software/).
3. Pure Data "Vanilla". Miller Puckette's personal version which he hosts on
his website and maintains. It doesn't come with external libraries
pre-installed, but it does include an interface you can use to search
and install external libraries maintained and packaged by other developers.
4. Plugdata. A new libpd-based distribution of Pure Data which can be run as a
plugin. See <https://plugdata.org/>.
### Downloads
**Windows and OSX:**
**Windows, Ubuntu, and Mac OSX:**
Releases are done on GitHub:
<https://github.com/jonwwilkes/purr-data/releases>
This is where the packages first come out as soon as Jonathan Wilkes releases them. The same packages can also be dowloaded (usually shortly after release) on Albert Gräf's mirror, which also provides a website, wiki, additional documentation, and an up-to-date mirror of the source code repository:
Releases are done on Albert Gräf's GitHub mirror, which also provides a
website, wiki, additional documentation, and an up-to-date mirror of the
source code repository.
<https://github.com/agraef/purr-data/releases>
**Linux:**
**More Linux packages:**
Packages for various Linux distributions (including Arch, Debian, Ubuntu, and openSUSE) are available through the JGU package repositories maintained by Albert Gräf on the OBS (Open Build System). Detailed instructions can be found [here](https://github.com/agraef/purr-data/wiki/Installation#linux).
Packages for various Linux distributions (including Arch, Debian, Ubuntu, and
Fedora) are available through the JGU package repositories maintained by
Albert Gräf on the OBS (Open Build System). Detailed instructions can be found
[here](https://github.com/agraef/purr-data/wiki/Installation#linux).
You can also just go to the [OBS Download](https://software.opensuse.org/download/package?package=purr-data&project=home%3Aaggraef), pick your Linux system, and follow the instructions.
You can also just go to the [OBS Download](https://software.opensuse.org/download/package?package=purr-data&project=home%3Aaggraef%3Apurr-data-jgu), pick your Linux system, and follow
the instructions.
### Build Guide
Purr Data is usually built by just running `make` in the toplevel source directory after checking out the sources from its git repository. This works across all supported platforms (Linux, Mac and Windows at this time). The Makefile also offers the customary targets to clean (`make clean`, or `make realclean` to put the sources in pristine state again) and to roll a self-contained distribution tarball (`make dist`), as well as some other convenience targets (please check the comments at the beginning of the Makefile for more information).
Purr Data is usually built by just running `make` in the toplevel source
directory after checking out the sources from its git repository. This works
across all supported platforms (Linux, Mac and Windows at this time).
The Makefile also offers the customary targets to clean (`make clean`, or
`make realclean` to put the sources in pristine state again) and to roll a
self-contained distribution tarball (`make dist`), as well as some other
convenience targets (please check the comments at the beginning of the Makefile
for more information).
However, to make this work, you will most likely have to install some prerequisites first: *build tools* such as a C/C++ compiler and the make program itself, as well as *dependencies*, the libraries that Purr Data needs. Detailed instructions for each of the supported platforms are given below.
However, to make this work, you will most likely have to install some
prerequisites first: *build tools* such as a C/C++ compiler and the make
program itself, as well as *dependencies*, the libraries that Purr Data needs.
Detailed instructions for each of the supported platforms are given below.
#### Linux
Time to build: *10 minutes light install, 45 minutes to 1.5 hours full install*
Hard drive space required: *roughly 2.5 GB*
1. Install the dependencies (please note that the packages may be named
slightly differently for different Linux distributions; the given names are
for Debian/Ubuntu)
0. Remember to update your packages:
sudo apt-get update && sudo apt-get upgrade
1. Install the dependencies:
sudo apt-get install bison flex automake libasound2-dev \
libjack-jackd2-dev libtool libbluetooth-dev libgl1-mesa-dev \
......@@ -138,10 +165,19 @@ Hard drive space required: *roughly 2.5 GB*
libslv2-dev dssi-utils vco-plugins wah-plugins fil-plugins \
mda-lv2 libmp3lame-dev libspeex-dev libgsl0-dev \
portaudio19-dev liblua5.3-dev python-dev libsmpeg0 libjpeg62-turbo \
flite1-dev libgsm1-dev libgtk2.0-dev git libstk0-dev \
libfluidsynth-dev fluid-soundfont-gm byacc
libgsm1-dev libgtk2.0-dev git libstk0-dev \
libfluidsynth-dev fluid-soundfont-gm byacc \
python3-markdown
**Note:** The given package names are for a generic Debian/Ubuntu system.
However, package names and versions vary *a lot* between different Linux
distributions and releases, thus it's impossible to give a definitive and
up-to-date package list here. Please consult your distribution's
documentation and package manager to find the exact package names for your
system.
2. The gui toolkit may require installing the following extra dependencies
sudo apt-get install gconf2 libnss3
3. Clone the Purr-Data repository *(2 to 10 minutes)*
......@@ -178,13 +214,26 @@ Hard drive space required: *roughly 2 GB*
brew install python
brew install lua
brew install fluidsynth
brew install faac
brew install jpeg
brew install lame
brew install libvorbis
brew install speex
brew install gsl
brew install libquicktime
brew install sdl2
brew install pkg-config
You'll also need to install the python markdown module to generate the
platform-specific release notes (ReadMe.html, Welcome.html):
pip3 install markdown
**Note:** Depending on your macOS and Xcode version, the 10 minutes
estimate for this step may be a overly optimistic. Some build dependencies
may require recompilation which can take a long time (up to several hours,
if it includes a complete build of, e.g., gcc and cmake).
3. Clone the Purr-Data repository *(10 minutes)*
git clone https://git.purrdata.net/jwilkes/purr-data.git
......@@ -197,9 +246,10 @@ Hard drive space required: *roughly 2 GB*
make
6. There should now be a .dmg file in your current directory, which lets you install the app in the usual way
6. There should now be a .dmg file in your current directory, which lets you
install the app in the usual way
#### Windows 32-bit Using msys2
#### Windows 64-bit Using msys2
Time to build: *roughly 1.5 hours-- 30 minutes of this is for Gem alone*
Hard drive space required to build: *rougly 2.5 GB*
......@@ -210,50 +260,17 @@ not have any spaces in it, which would otherwise cause trouble during the
build. Never try using your Windows home directory for this purpose instead,
since it will usually contain spaces, making the build fail.
1. Download and install [msys2](https://msys2.github.io/) *(5 minutes)*
There are two installers-- one for 32-bit Windows systems (i686) and one for
64-bit Windows (x86_64). Be sure you know which
[version](http://windows.microsoft.com/en-us/windows/32-bit-and-64-bit-windows)
of Windows you are running and download the appropriate installer.
Note: don't run the shell after installation finishes. You'll do that
manually in step 3.
2. Download and install the [inno setup Quickstart Pack](http://www.jrsoftware.org/isdl.php) which includes the Script Editor *(5 minutes)*
3. Run the "MSYS2 MinGW 32-bit" shell *(less than a minute)*
msys2 adds three Start Menu items for different "flavors" of shell:
+ MSYS2 MinGW __32-bit__ <- click this one!
+ MSYS2 MinGW 64-bit
+ MSYS2 MSYS
4. Install the dependencies *(5-10 minutes)*
Once the shell opens, we need to install the dependencies for building
Purr Data. First we need to update all the packages:
pacman -Syu
After closing and reopening the shell as prompted, you may need to do it
again:
pacman -Syu
Now everything should be up-to-date. Issue the following command:
pacman -S autoconf automake git libtool \
make mingw-w64-i686-dlfcn mingw-w64-i686-fftw \
mingw-w64-i686-fluidsynth \
mingw-w64-i686-SDL2 \
mingw-w64-i686-ftgl mingw-w64-i686-fribidi \
mingw-w64-i686-ladspa-sdk mingw-w64-i686-lame \
mingw-w64-i686-libsndfile mingw-w64-i686-libvorbis \
mingw-w64-i686-lua mingw-w64-i686-toolchain \
mingw-w64-i686-libjpeg-turbo \
mingw-w64-i686-speex \
rsync unzip wget
5. Download the source code *(3-6 minutes)*
Issue the following command to create a new directory "purr-data" and clone
the repository to it:
1. In a browser, navigate to: `https://git.purrdata.net/jwilkes/ci-runner-setup/-/raw/master/win64_install_build_deps.ps1`
2. Select all with `<control-a>`
3. Right-click and choose "Copy"
4. In the Start menu type `PowerShell ISE` and click the "Windows Powershell ISE" app that pops up.
5. In the Powershell ISE window menu, choose File -> New
6. In the area with the white background, right-click and choose "Paste"
7. Click the `Run Script` arrow in the toolbar *(20 minutes)*
8. If there were no errors in the script, msys2 and Inno Setup are now installed.
9. Open the directory "C:\msys64" and click `mingw64.exe`
10. Download the source code *(3-6 minutes)*
In the msys terminal window, issue the following command to create a new directory "purr-data" and clone the repository to it:
git clone https://git.purrdata.net/jwilkes/purr-data.git
......@@ -266,40 +283,32 @@ since it will usually contain spaces, making the build fail.
make
8. Look in the top level source directory and double-click the setup file to
start installing Purr Data on your system.
#### Windows 64-bit Using msys2
The instructions are exactly the same as for the 32 bit build (see above), but the build needs to be done using mingw64 instead of mingw32. That is:
- Install the mingw64 packages for the dependencies. See the i686 packages listed under dependencies above, and replace i686 with x86_64 in the package names when installing.
- Use the MSYS2 MinGW 64-bit shell (rather than the 32-bit shell) to do the build.
start installing Purr Data on your system or run `./"setup file name"` in MSYS2 shell.
### Code of Conduct
1. No sarcasm, please
2. Don't appear to lack empathy
1. No sarcasm, please.
2. Don't appear to lack empathy.
3. You can't live here. If you're spending hours a day writing Purr Data
code or-- worse-- spending hours a day *writing emails about* code that
has yet to be written, you're doing it wrong
4. If working on something for the first time, ask to be mentored
5. If no one asked you to mentor them, don't teach
6. It is better to let small things go then to risk taking time away from
solving bigger problems
has yet to be written, you're doing it wrong.
4. If working on something for the first time, ask to be mentored.
5. If no one asked you to mentor them, don't teach.
6. It is better to let small things go than to risk taking time away from
solving bigger problems.
It is a bad idea to break this Code of Conduct *even if* no one complains
about your behavior.
about your behaviour.
### Project Governance
* the three maintainers listed at the top of this document are the ones in
charge of this project
* unanimous decisions are preferred
* 2 out of 3 can break a disagreement
* there will only ever be three maintainers of this project at any given time.
* The three maintainers listed at the top of this document are the ones in
charge of this project.
* Unanimous decisions are preferred.
* 2 out of 3 can break a disagreement.
* There will only ever be three maintainers of this project at any given time.
If you'd like to temporarily step in as one of the three,
send an inquiry to the list and we cany discuss it
send an inquiry to the list and we can discuss it.
### Contributor Guide
......@@ -342,22 +351,22 @@ A few guidelines:
Here are some of the current tasks:
* writing small audio/visual Pd games or demos to include in the next release
* skills needed: ability to write Pd programs
* status: I wrote a little sprite-based game that will ship with the next
* Writing small audio/visual Pd games or demos to include in the next release
* Skills needed: Ability to write Pd programs
* Status: I wrote a little sprite-based game that will ship with the next
version of Pd-L2Ork. In it, the character walks around in an actual
Pd diagram shoots at the objects to progress, and to make realtime
changes to the music.
What I'd like is to include a new, smallish game with each release
that has a link in the Pd console. It can be a little demo or game,
just something fun that shows off what can be done using Pure Data.
* designing/implementing regression test template
* skills needed: knowledge about... regression tests. :) But also some
* Designing/Implementing regression test template
* Skills needed: Knowledge about... regression tests. :) But also some
expertise in using Pd so that the tests themselves can
be written in Pure Data. At the same time, they should
be able to be run as part of the automated packaging
process (i.e., in -nogui mode).
* status: some externals have their own testing environments, but they are
* Status: Some externals have their own testing environments, but they are
limited as they require manual intervention to run and read the
results inside a graphical window.
We currently have a crude test system that at least ensures that each
......@@ -368,9 +377,9 @@ Here are some of the current tasks:
And Mathieu Bouchard's "pure unity" (not sure if this is the most
recent link...):
http://sourceforge.net/p/pure-data/svn/HEAD/tree/tags/externals/pureunity/pureunity-0.0/
* adding support for double precision to the external libraries that ship with purr-data
* skills needed: knowledge about data types in C language(specially float and double)
* status: the core classes of purr data and the freeverb~ external library
* Adding support for double precision to the external libraries that ship with purr-data
* Skills needed: Knowledge about data types in C language(specially float and double)
* Status: The core classes of purr data and the freeverb~ external library
have been changed to support both float and double but still the remaining
external libraries only have support for single precision.
The task ahead is to add double precision support to these external libraries.
......@@ -585,10 +594,10 @@ PD-GUI:
gui GUI front end
#### 6. Javascript style
1. Brackets on the same line as declaration or expression: `if (a) {`
2. Single line comments only: `//`
3. Use double-quotes for strings
4. Use underscores to separate words of function names and variables
1. Brackets on the same line as declaration or expression: `if (a) {`.
2. Single line comments only: `//`.
3. Use double-quotes for strings.
4. Use underscores to separate words of function names and variables.
### GUI Messaging Specification
#### Public GUI interface
......
......@@ -101,8 +101,8 @@ ifeq ($(UNAME),Darwin)
FAT_FLAGS = -arch ppc -arch i386 -arch x86_64 -mmacosx-version-min=$(macos_target)
SOURCES += $(SOURCES_iphoneos)
endif
CFLAGS += $(FAT_FLAGS) -fPIC -I/sw/include
LDFLAGS += $(FAT_FLAGS) -bundle -undefined dynamic_lookup -L/sw/lib
CFLAGS += $(FAT_FLAGS) -fPIC
LDFLAGS += $(FAT_FLAGS) -bundle -undefined dynamic_lookup
# if the 'pd' binary exists, check the linking against it to aid with stripping
LDFLAGS += $(shell test -e $(PD_PATH)/bin/pd && echo -bundle_loader $(PD_PATH)/bin/pd)
LIBS += -lc
......
......@@ -101,8 +101,8 @@ ifeq ($(UNAME),Darwin)
FAT_FLAGS = -arch ppc -arch i386 -arch x86_64 -mmacosx-version-min=$(macos_target)
SOURCES += $(SOURCES_iphoneos)
endif
CFLAGS += $(FAT_FLAGS) -fPIC -I/sw/include
LDFLAGS += $(FAT_FLAGS) -bundle -undefined dynamic_lookup -L/sw/lib
CFLAGS += $(FAT_FLAGS) -fPIC
LDFLAGS += $(FAT_FLAGS) -bundle -undefined dynamic_lookup
# if the 'pd' binary exists, check the linking against it to aid with stripping
LDFLAGS += $(shell test -e $(PD_PATH)/bin/pd && echo -bundle_loader $(PD_PATH)/bin/pd)
LIBS += -lc
......
......@@ -32,9 +32,15 @@
# 4. Run 'make debclean' to get rid of any files that were created in steps 2
# and 3.
# Determine the version number of this build. We get this from m_pd.h.
PD_L2ORK_VERSION := $(shell grep PD_L2ORK_VERSION ../pd/src/m_pd.h | sed 's|^.define *PD_L2ORK_VERSION *"\(.*\)".*|\1|')
# Determine the build version which needs git to be computed, so we can't do
# it in a stand-alone build from a tarball
PD_BUILD_VERSION := $(shell git log -1 --format=%cd --date=short | sed -e 's/-//g')-rev.$(shell git rev-parse --short HEAD)
# The Debian version gets derived from the date and serial number of the last
# commit. You can print it with 'make debversion'.
debversion = $(shell grep PD_L2ORK_VERSION ../pd/src/m_pd.h | sed 's|^.define *PD_L2ORK_VERSION *"\(.*\)".*|\1|')+git$(shell git rev-list --count HEAD)+$(shell git rev-parse --short HEAD)
debversion = $(PD_L2ORK_VERSION)+git$(shell git rev-list --count HEAD)+$(shell git rev-parse --short HEAD)
# Debian revision number of the package.
debrevision = 1
# Source tarball and folder.
......@@ -44,15 +50,17 @@ debdist = purr-data-$(debversion)
# nw.js sdk
# NOTE: arm packages need some special-casing, since they are released
# separately, and the version numbers do not always match up.
nwjsver = 0.28.1
nwjsver = 0.55.0
nwjspkg = nwjs-sdk-v$(nwjsver)-linux
nwjsver_arm = 0.27.6
nwjspkg_arm = nwjs-sdk-v$(nwjsver_arm)-linux
nwjs = $(nwjspkg)-ia32.tar.gz $(nwjspkg)-x64.tar.gz $(nwjspkg_arm)-arm.tar.gz
nwjsver_arm64 = 0.23.7
nwjspkg_arm64 = nwjs-sdk-without-nacl-v$(nwjsver_arm64)-linux
nwjs = $(nwjspkg)-ia32.tar.gz $(nwjspkg)-x64.tar.gz $(nwjspkg_arm)-arm.tar.gz $(nwjspkg_arm64)-arm64.tar.gz
# Submodules (Gem, etc.). You can list them with 'make submodules'.
#submodules = Gem externals/miXed $(addprefix l2ork_addons/, cwiid fftease3.0-32bit lyonpotpourri rtcmix-in-pd)
submodules = $(sort $(shell git -C .. config --file .gitmodules --get-regexp path | awk '{ print $$2 }'))
submodules = $(sort $(shell git -C .. config --file .gitmodules --get-regexp path | awk '{ print $$2 }') externals/pd-lua/lua)
# This is used for automatically generated debian/changelog entries (cf. 'make
# debchange'). Adjust as needed.
......@@ -95,14 +103,10 @@ deb-us:
debsrc-us:
$(MAKE) deb DEBUILD_FLAGS="-S -d -us -uc"
# Determine the build version which needs git to be computed, so we can't do
# it in a stand-alone build from a tarball.
PD_BUILD_VERSION := $(shell git log -1 --format=%cd --date=short | sed -e 's/-//g')-rev.$(shell git rev-parse --short HEAD)
$(debsrc):
rm -rf $(debdist)
# Make sure that the submodules are initialized.
git -C .. submodule update --init
git -C .. submodule update --init --recursive
# Grab the main source.
git -C .. archive --format=tar.gz --prefix=$(debdist)/ HEAD | tar xfz -
# Grab the submodules.
......@@ -110,6 +114,13 @@ $(debsrc):
# Pre-generate and put s_version.h into the tarball (see above; the build
# version is generated using git which can't be done outside the git repo).
sed 's|^\(#define PD_BUILD_VERSION "\).*"|\1$(PD_BUILD_VERSION)"|' ../pd/src/s_version.h.in > $(debdist)/pd/src/s_version.h
# Pre-generate the markdown and html docs so that they will be included in the
# source. This means that we don't need any special tools as a build
# dependency, which makes live a lot easier.
make -C ../packages/gendoc version="$(PD_L2ORK_VERSION)" build_version="$(PD_BUILD_VERSION)"
mv ../packages/gendoc/*-Linux* $(debdist)/packages/gendoc
make -C ../packages/gendoc clean
ls -l $(debdist)/packages/gendoc/*.html
# Create the source tarball.
tar cfz $(debsrc) $(debdist)
rm -rf $(debdist)
......@@ -117,5 +128,8 @@ $(debsrc):
debian/nwjs/$(nwjspkg_arm)-arm.tar.gz:
mkdir -p debian/nwjs && cd debian/nwjs && wget https://github.com/LeonardLaszlo/nw.js-armv7-binaries/releases/download/v$(nwjsver_arm)/$(notdir $@)
debian/nwjs/$(nwjspkg_arm64)-arm64.tar.gz:
mkdir -p debian/nwjs && cd debian/nwjs && wget https://github.com/LeonardLaszlo/nw.js-armv7-binaries/releases/download/v$(nwjsver_arm64)/$(notdir $@)
debian/nwjs/$(nwjspkg)-%.tar.gz:
mkdir -p debian/nwjs && cd debian/nwjs && wget http://dl.nwjs.io/v$(nwjsver)/$(notdir $@)
......@@ -2,7 +2,7 @@ Source: purr-data
Section: sound
Priority: extra
Maintainer: Albert Graef <aggraef@gmail.com>
Build-Depends: debhelper (>= 7.0.50~), autoconf, automake, libtool, pkg-config, bison, flex, libgtk2.0-dev, libgtk-3-dev, python2-dev | python-dev, dh-python, flite1-dev, ladspa-sdk, libasound2-dev, libjack-dev, libbluetooth-dev, libcairo2-dev, libgl1-mesa-dev | libgl-dev, libglew1.6-dev | libglew-dev, libgsl-dev | libgsl0-dev, libmagick++-dev, libavifile-0.7-dev, libdc1394-22-dev, libfftw3-dev, libfluidsynth-dev, libftgl-dev, libgmerlin-avdec-dev, libgsm1-dev, libjpeg-dev, liblua5.3-dev | liblua5.2-dev, libmp3lame-dev, libmpeg3-dev, libquicktime-dev, libraw1394-dev, libsmpeg-dev, libspeex-dev, libstk0-dev, libtiff5-dev, libv4l-dev, libdv4-dev, libiec61883-dev, libxv-dev, libxxf86vm-dev, libvorbis-dev, zlib1g-dev (>= 1:1.1.3), rsync, libgconf2-dev, libnss3-dev, libxtst-dev, libxss-dev
Build-Depends: debhelper (>= 7.0.50~), autoconf, automake, libtool, pkg-config, bison, flex, libgtk2.0-dev, libgtk-3-dev, dh-python, ladspa-sdk, libasound2-dev, libjack-dev, libbluetooth-dev, libcairo2-dev, libgl1-mesa-dev | libgl-dev, libglew1.6-dev | libglew-dev, libgsl-dev | libgsl0-dev, libmagick++-dev, libavifile-0.7-dev, libdc1394-dev | libdc1394-22-dev, libfftw3-dev, libfluidsynth-dev, libftgl-dev, libgsm1-dev, libjpeg-dev, libmp3lame-dev, libmpeg3-dev, libquicktime-dev, libraw1394-dev, libsmpeg-dev, libspeex-dev, libstk-dev | libstk0-dev, libtiff5-dev, libv4l-dev, libdv4-dev, libiec61883-dev, libxv-dev, libxxf86vm-dev, libvorbis-dev, zlib1g-dev (>= 1:1.1.3), rsync, libgconf2-dev, libnss3-dev, libxtst-dev, libxss-dev, libtirpc-dev
Standards-Version: 3.9.5
Homepage: https://git.purrdata.net/jwilkes/purr-data
......
......@@ -4,12 +4,17 @@
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
nwjsver = 0.28.1
nwjsver = 0.55.0
nwjspkg = nwjs-sdk-v$(nwjsver)-linux
nwjsdir = nwjs-sdk-v$(nwjsver)-linux
ifeq ("$(shell dpkg-architecture -qDEB_HOST_ARCH)","armhf")
arch = arm
nwjsver = 0.27.6
else ifeq ("$(shell dpkg-architecture -qDEB_HOST_ARCH)","arm64")
arch = arm64
nwjsver = 0.23.7
nwjspkg = nwjs-sdk-without-nacl-v$(nwjsver)-linux
else ifeq ("$(shell dpkg-architecture -qDEB_HOST_ARCH)","amd64")
arch = x64
else
......@@ -37,7 +42,11 @@ override_dh_auto_test:
override_dh_auto_build:
# Copy the nw.js sources to where purr-data wants them.
tar -xf debian/nwjs/$(nwjspkg)-$(arch).tar.gz && rm -rf pd/nw/nw && mv $(nwjspkg)-$(arch) pd/nw/nw
@echo "DEB_HOST_ARCH = $(shell dpkg-architecture -qDEB_HOST_ARCH)"
tar -xf debian/nwjs/$(nwjspkg)-$(arch).tar.gz && rm -rf pd/nw/nw && mv $(nwjsdir)-$(arch) pd/nw/nw
# Make sure that the html docs in packages/gendoc are current so that we don't
# accidentally try to rebuild them.
cd packages/gendoc && touch *-Linux*.html
cd l2ork_addons && (export V=0 inst_dir=$(prefix); ./tar_em_up.sh -Bn)
make check prefix=$(prefix)
......@@ -55,24 +64,15 @@ ifeq ($(arch),ia32)
# This causes trouble in 32 bit builds (64 bit executable in the 32 bit nw.js distribution?), remove it.
cd debian/purr-data$(prefix)/lib/pd-l2ork && rm -rf bin/nw/minidump_stackwalk
endif
ifeq ($(arch),arm64)
# Same issue in arm64 builds.
cd debian/purr-data$(prefix)/lib/pd-l2ork && rm -rf bin/nw/minidump_stackwalk
endif
# Add the bash completion file again, and edit it accordingly.
mkdir -p debian/purr-data/etc/bash_completion.d
sed -e 's/pd-l2ork/purr-data/g' < scripts/bash_completion/pd-l2ork > debian/purr-data/etc/bash_completion.d/purr-data
# Edit the library paths in the default user.settings file.
cd debian/purr-data$(prefix)/lib/pd-l2ork && sed -e "s!/usr/lib/pd-l2ork!$(prefix)/lib/pd-l2ork!g" -i default.settings
# Replace the pd-l2ork desktop/mime files and icons with purr-data ones.
cd debian/purr-data/usr/share/applications && (sed -e 's/pd-l2ork/purr-data/g' -e 's/Pd-L2Ork/Purr-Data/g' < pd-l2ork.desktop > purr-data.desktop) && (sed -e 's/pd-l2ork/purr-data/g' -e 's/Pd-L2Ork/Purr-Data/g' < pd-l2ork-debug.desktop > purr-data-debug.desktop) && rm -f pd-l2ork*.desktop
cd debian/purr-data/usr/share/mime/packages && (sed -e 's/pd-l2ork/purr-data/g' < pd-l2ork.xml > purr-data.xml) && rm -f pd-l2ork.xml
cd debian/purr-data/usr/share/icons/hicolor/128x128/apps/ && rm -f pd-l2ork-k12*.png && mv pd-l2ork.png purr-data.png && mv pd-l2ork-red.png purr-data-red.png
cd debian/purr-data/usr/share/icons/hicolor/128x128/mimetypes/ && mv text-x-pd-l2ork.png text-x-purr-data.png
# Sanitize permissions.
cd debian/purr-data && chmod -R go-w * && chmod -R a+r * && chmod a-x .$(prefix)/lib/pd-l2ork/default.settings
find debian/purr-data$(prefix)/lib/pd-l2ork/bin/nw -executable -not -type d | xargs chmod a+x
find debian/purr-data -executable -name '*.pd_linux' | xargs chmod a-x
find debian/purr-data -executable -name '*.pd' | xargs chmod a-x
find debian/purr-data -executable -name '*.txt' | xargs chmod a-x
find debian/purr-data -executable -name '*.aif*' | xargs chmod a-x
find debian/purr-data -type d | xargs chmod a+x
# NOTE: Older systems use dh_pysupport instead of dh_python2. See
# http://deb.li/dhs2p.
......
......@@ -54,14 +54,18 @@ LIBS = -lm
ifeq ($(OS_NAME),darwin)
# 10.4 Tiger
FAT_FLAGS = -arch ppc -arch ppc64 -arch i386
# FAT_FLAGS = -arch ppc -arch ppc64 -arch i386
# 10.5 Leopard
# FAT_FLAGS = -arch ppc -arch ppc7400 -arch ppc64 -arch i386 -arch x86_64
CFLAGS += -I/sw/include -I$(externals_src)/pdp/include -DMACOSX -DUNIX -Dunix -DDL_OPEN
LDFLAGS += -bundle -bundle_loader $(pd_src)/bin/pd-l2ork -undefined dynamic_lookup \
-L/sw/lib -weak_framework Carbon
# Check whether we have Homebrew or MacPorts, prefer the former.
# Homebrew links software into $HOMEBREW_PREFIX. If this isn't defined, we
# check for MacPorts in /opt/local, and finally fall back to /usr/local.
optlocal := $(shell test -n "$$HOMEBREW_PREFIX" && test -d $$HOMEBREW_PREFIX && echo $$HOMEBREW_PREFIX || (test -d /opt/local && echo /opt/local) || echo /usr/local)
usrlocal = $(optlocal)
CFLAGS += -I$(usrlocal)/include -I$(externals_src)/pdp/include -DMACOSX -DUNIX -Dunix -DDL_OPEN
LDFLAGS += -bundle -bundle_loader $(pd_src)/bin/pd-l2ork -undefined dynamic_lookup -L$(usrlocal)/lib
LIBS += -lc
DYLIB_LDFLAGS = -dynamiclib -undefined dynamic_lookup -read_only_relocs warning -L/sw/lib
DYLIB_LDFLAGS = -dynamiclib -undefined dynamic_lookup -read_only_relocs warning -L$(usrlocal)/lib
STRIP = strip -x
endif
ifeq ($(OS_NAME),linux)
......@@ -137,9 +141,11 @@ CXXFLAGS = $(CFLAGS)
ifeq ($(LIGHT),yes)
# minimal set of extensions for the "light" build
lib_targets = loaders-libdir pddp
# add specified externals to the light build
lib_targets += $(addons)
INCREMENTAL = yes
else
lib_targets = adaptive arraysize autotune bassemu bendinfix boids bsaylor comport creb cxc cyclone disis earplug ekext ext13 fftease flatgui fluid freeverb ggee hcs iem_ambi iem_bin_ambi iemlib iemgui iemguts iem_adaptfilt iemmatrix iemxmlrpc iem_delay iem_roomsim iem_spec2 iem_tab jasch_lib loaders-libdir lyonpotpourri mapping markex maxlib mjlib moocow moonlib motex mrpeach oscx pan pdcontainer pddp pdlua pdogg plugin pmpd rjlib sigpack smlib tof unauthorized vbap windowing zexy
lib_targets = adaptive arraysize autotune bassemu bendinfix boids bsaylor comport creb cxc cyclone disis earplug ekext ext13 fftease flatgui flite fluid freeverb ggee hcs iem_ambi iem_bin_ambi iemlib iemgui iemguts iem_adaptfilt iemmatrix iemxmlrpc iem_delay iem_roomsim iem_spec2 iem_tab jasch_lib loaders-libdir lyonpotpourri mapping markex maxlib mjlib moocow moonlib motex mrpeach oscx pan pdcontainer pddp pdlua pdogg plugin pmpd rjlib sigpack smlib tof unauthorized vbap windowing zexy
endif
# NEW (IN-PROGRESS): flext
......@@ -153,9 +159,10 @@ ifeq ($(OS_NAME),windows)
else
ifeq ($(OS_NAME),darwin)
# on Mac OS X 10.6/Snow Leopard don't build hid since it needs Carbon
lib_targets += pdp iem16 apple
ifneq ($(shell uname -r | sed 's|10\.[0-9][0-9]*\.[0-9][0-9]*|10|'),10)
lib_targets +=
ifeq ($(INCREMENTAL),yes)
lib_targets += pdp iem16 apple
else
lib_targets += gem pdp iem16 apple
endif
else ifneq ($(LIGHT),yes)
# GNU/Linux, BSD, IRIX, etc. (we use exported variable INCREMENTAL to
......@@ -328,6 +335,7 @@ autotune:
autotune_install:
make -C $(externals_src)/autotune DESTDIR="$(DESTDIR)" \
objectsdir="$(objectsdir)" install
install -d $(DESTDIR)$(objectsdir)/images
install -p $(externals_src)/autotune/autotune_scale_warp.png \
$(DESTDIR)/$(objectsdir)/images
......@@ -389,7 +397,7 @@ boids_clean:
#------------------------------------------------------------------------------#
# BSAYLOR
bsaylor:
make -C $(externals_src)/bsaylor PD_PATH=$(pd_src) CFLAGS="$(CFLAGS) -fno-strict-aliasing"
make -C $(externals_src)/bsaylor PD_PATH=$(pd_src) CFLAGS="$(CFLAGS) -fno-strict-aliasing" LDFLAGS="$(LDFLAGS)"
bsaylor_install:
make -C $(externals_src)/bsaylor \
......@@ -481,12 +489,6 @@ cyclone_clean:
#------------------------------------------------------------------------------#
# DISIS
disis:
ifneq ($(OS_NAME),windows)
ifneq ($(OS_NAME),darwin)
cd $(externals_src)/disis/cwiid && aclocal && autoconf && \
./configure --with-python=python2 && make
endif
endif
make -C $(externals_src)/disis PD_PATH=$(pd_src) pdbinpath=$(pd_src)/src CFLAGS="$(CFLAGS_ADD)"
disis_install:
......@@ -650,7 +652,7 @@ flib_clean:
fluid:
make -C $(externals_src)/fluid~ PD_PATH=$(pd_src) \
pdbinpath=$(pd_src)/src CFLAGS="$(CFLAGS_ADD)"
pdbinpath=$(pd_src)/src CFLAGS="$(CFLAGS_ADD) -I$(usrlocal)/include" LDFLAGS="$(LDFLAGS)"
fluid_install:
make -C $(externals_src)/fluid~ DESTDIR="$(DESTDIR)" \
......@@ -677,17 +679,24 @@ GEM_NAME = Gem
$(gem_src)/configure:
cd $(gem_src) && ./autogen.sh
ifeq ($(MSYSTEM),MINGW32)
msys_prefix = /mingw32
else ifeq ($(MSYSTEM),MINGW64)
msys_prefix = /mingw64
else
msys_prefix = /usr
endif
$(gem_src)/Gem.dll: $(gem_src)/configure
cd $(gem_src) && ./configure \
CXXFLAGS="-DHAVE_S_STUFF_H $(CFLAGS_ADD)" \
--host=i686-w64-mingw32 \
--without-ALL \
--with-jpeg \
--with-jpeg-cflags="-I/mingw32/include" \
--with-jpeg-libs="-L/mingw32/lib -ljpeg" \
--with-jpeg-cflags="-I$(msys_prefix)/include" \
--with-jpeg-libs="-L$(msys_prefix)/lib -ljpeg" \
--with-ftgl \
--with-ftgl-cflags="-I/mingw32/include -I/mingw32/include/freetype2" \
--with-ftgl-libs="-L/mingw32/lib -lftgl" \
--with-ftgl-cflags="-I$(msys_prefix)/include -I$(msys_prefix)/include/freetype2" \
--with-ftgl-libs="-L$(msys_prefix)/lib -lftgl" \
--with-vfw32 \
--prefix=$(prefix) \
--libdir=$(objectsdir) \
......@@ -699,22 +708,55 @@ $(gem_src)/Gem.pd_linux: $(gem_src)/configure
cd $(gem_src) && ./configure \
CXXFLAGS="-DHAVE_S_STUFF_H $(CFLAGS_ADD)" \
--prefix=$(prefix) \
--with-video=plugins \
--with-film=plugins \
--with-pd=$(pd_src)
$(MAKE) $(GEM_MAKEFLAGS) -C $(gem_src)
# Mac: This is still a bit experimental. At present, many of the window
# backends seem to be at least half-broken on recent macOS versions, including
# the native gemmacoswindow, which the wiki recommends. For me, the SDL2
# backend works best, on Mojave at least, so that's what we include as the
# default here. NOTES: In MacPorts, libquicktime is unmaintained and doesn't
# build, so it is currently excluded from the MacPorts build. AVF, which is
# supposed to replace libquicktime, is enabled by default on the Mac, but
# right now it only seems to work for video capture, not loading or recording.
# We also exclude ImageMagick, which is needed for improved image support,
# because it currently isn't in our OSX build requirements. But if you have it
# (it's available in both Homebrew and MacPorts), you can enable it below.
ifeq ($(optlocal),/opt/local)
# MacPorts
gem_quicktime = --without-libquicktime
else
# Homebrew
gem_quicktime = --with-libquicktime --with-libquicktime-LIBS="-L$(usrlocal)/lib -lquicktime"
endif
# Uncomment to enable ImageMagick support. This needs imagemagick from Hombrew
# or ImageMagick from MacPorts.
#gem_magick = --with-MagickCore --with-MagickCore-CFLAGS="$(shell pkg-config --cflags MagickCore)" --with-MagickCore-LIBS="$(shell pkg-config --libs MagickCore)"
# Adjust this as needed/wanted. If you comment this out, you'll get the
# default gemmacoswindow which doesn't work for me, YMMV.
gem_window = --with-sdl2 --with-sdl2-LIBS="-L$(usrlocal)/lib -lSDL2" --with-defaultwindow=gemsdl2window
# As of automake 1.16.5 from homebrew, libtool compilation of Objective C++
# sources seem to be broken. As a work-around, the LIBTOOLFLAGS=--tag=CXX
# setting appears to fix that.
export LIBTOOLFLAGS = --tag=CXX
$(gem_src)/Gem.pd_darwin: $(gem_src)/configure
cd $(gem_src) && ./configure \
CXXFLAGS="-DHAVE_S_STUFF_H $(CFLAGS_ADD)" \
PKG_FTGL_CFLAGS="-I/sw/include -I/sw/include/freetype2 -I/sw/include/FTGL" \
--prefix=$(prefix) \
--libdir=$(objectsdir) \
--without-ALL \
--with-ftgl --with-ftgl-libs=/sw/lib \
--with-artoolkit-includes=/sw/include --with-artoolkit-libs=/sw/lib \
--with-video=plugins \
--with-film=plugins \
--without-QuickTime-framework --without-Carbon-framework \
--with-ftgl --with-ftgl-LIBS="-L$(usrlocal)/lib -lftgl" \
--with-tiff --with-tiff-LIBS="-L$(usrlocal)/lib -ltiff" \
--with-jpeg --with-jpeg-LIBS="-L$(usrlocal)/lib -ljpeg" \
$(gem_quicktime) $(gem_magick) \
$(gem_window) \
--without-ndi --without-DeckLink \
--with-pd=$(pd_src)
$(MAKE) $(GEM_MAKEFLAGS) -C $(gem_src)
......@@ -1440,13 +1482,23 @@ pddp_clean:
#------------------------------------------------------------------------------#
# PDLUA
# FLITE
flite:
make -C $(externals_src)/pd-flite PDINCLUDEDIR="$(pd_src)/src" PDBINDIR="$(pd_src)/src"
LUA_CFLAGS = $(shell (pkg-config --cflags lua5.4 || pkg-config --cflags lua5.3 || pkg-config --cflags lua5.2 || pkg-config --cflags lua) 2> /dev/null)
LUA_LIBS = $(shell (pkg-config --libs lua5.4 || pkg-config --libs lua5.3 || pkg-config --libs lua5.2 || pkg-config --libs lua) 2> /dev/null)
flite_install:
make -C $(externals_src)/pd-flite DESTDIR="$(DESTDIR)" objectsdir="$(objectsdir)" install
flite_clean:
make -C $(externals_src)/pd-flite clean
#------------------------------------------------------------------------------#
# PDLUA
pdlua:
make -C $(externals_src)/pd-lua LUA_CFLAGS="$(LUA_CFLAGS)" LUA_LIBS="$(LUA_LIBS)" PD_PATH="$(pd_src)" PD_LIB="$(pd_src)/src" CFLAGS="$(CFLAGS)"
make -C $(externals_src)/pd-lua PDINCLUDEDIR="$(pd_src)/src" PDBINDIR="$(pd_src)/src"
pdlua_install:
make -C $(externals_src)/pd-lua DESTDIR="$(DESTDIR)" objectsdir="$(objectsdir)" install
......@@ -1458,7 +1510,7 @@ pdlua_clean:
#------------------------------------------------------------------------------#
# PDOGG
pdogg:
make -C $(externals_src)/pdogg PD_PATH=$(pd_src) CFLAGS="$(CFLAGS)"
make -C $(externals_src)/pdogg PD_PATH=$(pd_src) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
pdogg_install:
make -C $(externals_src)/pdogg DESTDIR="$(DESTDIR)" objectsdir="$(objectsdir)" install
......@@ -1481,7 +1533,7 @@ $(externals_src)/pdp/configure: $(externals_src)/pdp/configure.ac
cd $(externals_src)/pdp && autoconf
$(externals_src)/pdp/Makefile.config: $(externals_src)/pdp/configure $(externals_src)/pdp/Makefile.config.in
cd $(externals_src)/pdp && ./configure PD_CPPFLAGS="-I$(pd_src)/src" \
cd $(externals_src)/pdp && ./configure PD_CPPFLAGS="-I$(pd_src)/src -I$(usrlocal)/include" \
$(PDP_OPTIONS)
$(externals_src)/pdp/pdp.$(EXTENSION): $(externals_src)/pdp/Makefile.config
......@@ -1823,7 +1875,7 @@ toxy_clean:
#------------------------------------------------------------------------------#
# UNAUTHORIZED
unauthorized:
make -C $(externals_src)/unauthorized CFLAGS="$(CFLAGS)" \
make -C $(externals_src)/unauthorized CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
PD_PATH=$(pd_src) PD_INCLUDE=$(pd_src)/src
unauthorized_install:
......@@ -2327,7 +2379,7 @@ etags_Darwin:
etags -a $(externals_src)/hcs/hid/HID\ Utilities\ Source/*.[ch]
find /System/Library/Frameworks -type f -name \*.h -exec etags -a '{}' \;
find /Library/Frameworks -type f -name \*.h -exec etags -a '{}' \;
find /sw/include -type f -name \*.h -exec etags -a '{}' \;
find /usr/local/include/ -type f -name \*.h -exec etags -a '{}' \;
etags_Linux:
......
......@@ -52,10 +52,11 @@ MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
#define DONE 4 /* All open bundles have been closed, so can't write
anything else */
#include <stdio.h>
#ifdef WIN32
#include <winsock2.h>
#include <io.h>
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/types.h>
......@@ -68,7 +69,6 @@ MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
#ifdef unix
#include <netinet/in.h>
#include <stdio.h>
#endif
#include "OSC-client.h"
......
......@@ -138,7 +138,7 @@ static int unixinitudp(int chan)
if((sockfd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0)
return sockfd;
bzero((char *)&serv_addr, sizeof(serv_addr));
memset((char *)&serv_addr, 0, sizeof(serv_addr));
serv_addr.sun_family = AF_UNIX;
strcpy(serv_addr.sun_path, UNIXDG_PATH);
sprintf(serv_addr.sun_path+strlen(serv_addr.sun_path), "%d", chan);
......@@ -160,7 +160,7 @@ static int initudp(int chan)
if((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
return sockfd;
bzero((char *)&serv_addr, sizeof(serv_addr));
memset((char *)&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(chan);
......
......@@ -92,7 +92,7 @@ static int initudp(int port) {
if((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
return sockfd;
bzero((char *)&serv_addr, sizeof(serv_addr));
memset((char *)&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(port);
......
......@@ -133,7 +133,7 @@ void *OpenHTMSocket(char *host, int portnumber)
* server that we want to send to.
*/
bzero((char *) &o->userv_addr, sizeof(o->userv_addr));
memset((char *) &o->userv_addr, 0, sizeof(o->userv_addr));
o->userv_addr.sun_family = AF_UNIX;
strcpy(o->userv_addr.sun_path, UNIXDG_PATH);
sprintf(o->userv_addr.sun_path+strlen(o->userv_addr.sun_path), "%d", portnumber);
......@@ -152,7 +152,7 @@ void *OpenHTMSocket(char *host, int portnumber)
* pathname, based on our process id.
*/
bzero((char *) &ucl_addr, sizeof(ucl_addr)); /* zero out */
memset((char *) &ucl_addr, 0, sizeof(ucl_addr)); /* zero out */
ucl_addr.sun_family = AF_UNIX;
strcpy(ucl_addr.sun_path, UNIXDG_TMP);
......@@ -183,7 +183,7 @@ void *OpenHTMSocket(char *host, int portnumber)
#ifdef WIN32
ZeroMemory((char *)&o->serv_addr, sizeof(o->serv_addr));
#else
bzero((char *)&o->serv_addr, sizeof(o->serv_addr));
memset((char *)&o->serv_addr, 0, sizeof(o->serv_addr));
#endif
o->serv_addr.sin_family = AF_INET;
......@@ -243,7 +243,7 @@ void *OpenHTMSocket(char *host, int portnumber)
o->serv_addr.sin_port = htons(portnumber);
o->addr = &(o->serv_addr);
if((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) >= 0) {
bzero((char *)&cl_addr, sizeof(cl_addr));
memset((char *)&cl_addr, 0, sizeof(cl_addr));
cl_addr.sin_family = AF_INET;
cl_addr.sin_addr.s_addr = htonl(INADDR_ANY);
cl_addr.sin_port = htons(0);
......
......@@ -313,7 +313,7 @@ static void *dumpOSC_new(t_symbol *compatflag,
int t = 1;
mreq.imr_multiaddr.s_addr = inet_addr(castgroup->s_name);
mreq.imr_interface.s_addr = htonl(INADDR_ANY);
if (setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&t,sizeof(t)) < 0) {
if (setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,(char*)&t,sizeof(t)) < 0) {
sys_sockerror("setsockopt");
}
if (setsockopt(sockfd,IPPROTO_IP,IP_ADD_MEMBERSHIP,(char*)&mreq,sizeof(mreq)) < 0) {
......@@ -400,7 +400,7 @@ void dumpOSC_setup(void)
if((sockfd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0)
return sockfd;
bzero((char *)&serv_addr, sizeof(serv_addr));
memset((char *)&serv_addr, 0, sizeof(serv_addr));
serv_addr.sun_family = AF_UNIX;
strcpy(serv_addr.sun_path, UNIXDG_PATH);
sprintf(serv_addr.sun_path+strlen(serv_addr.sun_path), "%d", chan);
......@@ -448,7 +448,7 @@ static int initudp(int chan)
if((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
return sockfd;
bzero((char *)&serv_addr, sizeof(serv_addr));
memset((char *)&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(chan);
......
......@@ -154,7 +154,7 @@ void *OpenHTMSocket(char *host, int portnumber, short *multicast_TTL)
* server that we want to send to.
*/
bzero((char *) &o->userv_addr, sizeof(o->userv_addr));
memset((char *) &o->userv_addr, 0, sizeof(o->userv_addr));
o->userv_addr.sun_family = AF_UNIX;
strcpy(o->userv_addr.sun_path, UNIXDG_PATH);
sprintf(o->userv_addr.sun_path+strlen(o->userv_addr.sun_path), "%d", portnumber);
......@@ -173,7 +173,7 @@ void *OpenHTMSocket(char *host, int portnumber, short *multicast_TTL)
* pathname, based on our process id.
*/
bzero((char *) &ucl_addr, sizeof(ucl_addr)); /* zero out */
memset((char *) &ucl_addr, 0, sizeof(ucl_addr)); /* zero out */
ucl_addr.sun_family = AF_UNIX;
strcpy(ucl_addr.sun_path, UNIXDG_TMP);
......@@ -204,7 +204,7 @@ void *OpenHTMSocket(char *host, int portnumber, short *multicast_TTL)
#ifdef WIN32
ZeroMemory((char *)&o->serv_addr, sizeof(o->serv_addr));
#else
bzero((char *)&o->serv_addr, sizeof(o->serv_addr));
memset((char *)&o->serv_addr, 0, sizeof(o->serv_addr));
#endif
o->serv_addr.sin_family = AF_INET;
......@@ -290,7 +290,7 @@ void *OpenHTMSocket(char *host, int portnumber, short *multicast_TTL)
o->serv_addr.sin_port = htons(portnumber);
o->addr = &(o->serv_addr);
if((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) >= 0) {
bzero((char *)&cl_addr, sizeof(cl_addr));
memset((char *)&cl_addr, 0, sizeof(cl_addr));
cl_addr.sin_family = AF_INET;
cl_addr.sin_addr.s_addr = htonl(INADDR_ANY);
cl_addr.sin_port = htons(0);
......