- Notifications
You must be signed in to change notification settings - Fork87
libmypaint, a.k.a. "brushlib", is a library for making brushstrokes which is used by MyPaint and other projects.
License
mypaint/libmypaint
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This is the brush library used by MyPaint. A number of other paintingprograms use it too.
License: ISC, seeCOPYING for details.
- All configurations and builds:
- json-c (>= 0.11)
- C compiler,
make
etc.
- Most configurations (all except
--disable-introspection --without-glib
): - When building from
git
(developer package names vary by distribution): - For
--enable-gegl
(GIMPdoes not require this):
On recent Debian-like systems, you can type the followingto get started with a standard configuration:
# apt install -y build-essential# apt install -y libjson-c-dev libgirepository1.0-dev libglib2.0-dev
When building from git:
# apt install -y python autotools-dev intltool gettext libtool
You might also try using your package manager:
# apt build-dep mypaint # will get additional deps for MyPaint (GUI)# apt build-dep libmypaint # may not exist; included in mypaint
The following works on a minimal CentOS 7 installation:
# yum install -y gcc gobject-introspection-devel json-c-devel glib2-devel
When building from git, you'll want to add:
# yum install -y git python autoconf intltool gettext libtool
You might also try your package manager:
# yum builddep libmypaint
Works with a fresh OpenSUSE Tumbleweed Docker image:
# zypper install gcc13 gobject-introspection-devel libjson-c-devel glib2-devel
When building from git:
# zypper install git python311 autoconf intltool gettext-tools libtool
Package manager:
# zypper install libmypaint0
MyPaint and libmypaint benefit dramatically from autovectorization and other compiler optimizations.You may want to set your CFLAGS before compiling (for gcc):
$ export CFLAGS='-Ofast -ftree-vectorize -fopt-info-vec-optimized -march=native -mtune=native -funsafe-math-optimizations -funsafe-loop-optimizations'
The traditional setup works just fine.
$ ./autogen.sh # Only needed when building from git.$ ./configure# make install# ldconfig
We don't ship aconfigure
script in our git repository. If you'rebuilding from git, you have to kickstart the build environment with:
$ git clone https://github.com/mypaint/libmypaint.git$ cd libmypaint$ ./autogen.sh
This script generatesconfigure
fromconfigure.ac
, after running afew checks to make sure your build environment is broadly OK. It alsoregenerates certain important generated headers if they need it.
Folks building from a release tarball don't need to do this: they willhave aconfigure
script from the start.
$ ./configure$ ./configure --prefix=/tmp/junk/example
There are several MyPaint-specific options.These can be shown by running
$ ./configure --help
$ make
Once MyPaint is built, you can run the test suite and/or install it.
$ make check
This runs all the unit tests.
# make install
Uninstall libmypaint withmake uninstall
.
Make sure that pkg-config can see libmypaint before trying to build with it.
$ pkg-config --list-all | grep -i mypaint
If it's not found, you'll need to add the relevant pkgconfig directory tothepkg-config
search path. For example, on CentOS, with a default install:
# sh -c "echo 'PKG_CONFIG_PATH=/usr/local/lib/pkgconfig' >>/etc/environment"
Make sure ldconfig can see libmypaint as well
# ldconfig -p |grep -i libmypaint
If it's not found, you'll need to add the relevant lib directory tothe LD_LIBRARY_PATH:
$ export LD_LIBRARY_PATH=/usr/local/lib# sh -c "echo 'LD_LIBRARY_PATH=/usr/local/lib' >>/etc/environment
Alternatively, you may want to enable /usr/local for libraries. Arch and Redhat derivatives:
# sh -c "echo '/usr/local/lib' > /etc/ld.so.conf.d/usrlocal.conf"# ldconfig
The MyPaint project welcomes and encourages participation by everyone.We want our community to be skilled and diverse,and we want it to be a community that anybody can feel good about joining.No matter who you are or what your background is, we welcome you.
Please note that MyPaint is released with aContributor Code of Conduct.By participating in this project you agree to abide by its terms.
Please see the fileCONTRIBUTING.mdfor details of how you can begin contributing.
The distribution release can be generated with:
$ make dist
And it should be checked before public release with:
$ make distcheck
Contribute translations here:https://hosted.weblate.org/engage/mypaint/.
The list of languages is maintained inpo/LINGUAS.Currently this file lists all the languages we have translations for.It can be regenerated with:
$ ls po/*.po | sed 's$^.*po/\([^.]*\).po$\1$' | sort > po/LINGUAS
You can also disable languages by removing them from the list if needed.
A list of files where localizable strings can be found is maintainedinpo/POTFILES.in
.
You can update the .po files when translated strings in the code changeusing:
$ cd po && make update-po
When the results of this are pushed, Weblate translators will see thenew strings immediately.
Further documentation can be found in the libmypaint wiki:https://github.com/mypaint/libmypaint/wiki.
About
libmypaint, a.k.a. "brushlib", is a library for making brushstrokes which is used by MyPaint and other projects.