Difference between revisions of "CompilingMacOsX"

From Inkscape Wiki
Jump to navigation Jump to search
 
(278 intermediate revisions by 38 users not shown)
Line 1: Line 1:
== Compiling Inkscape under Mac OS X ==
= Using MacPorts =


You can run Inkscape by compiling by using Fink.  http://fink.sourceforge.net
<ol>
<li>Download and install [http://www.macports.org/ MacPorts]
<li>Edit the MacPorts variants config (optional).
<br>Add this line to <code>/opt/local/etc/macports/variants.conf</code>
<pre>-x11 +quartz</pre>
<li>In Terminal (Applications>Utilities>Terminal) type
<syntaxhighlight lang="bash">sudo port install \
    adwaita-icon-theme \
    boehmgc \
    boost \
    cairo \
    ccache \
    cmake \
    double-conversion \
    gdl3 \
    gettext \
    gsl \
    gtkmm3 \
    gtk-osx-application-gtk3 \
    lcms2 \
    libsoup \
    libxslt \
    ninja \
    poppler \
    potrace \
    py-lxml \
    py-numpy \
    -x11 +quartz
</syntaxhighlight>
<li>In Terminal, get Inkscape
<syntaxhighlight lang="bash">git clone --recurse-submodules https://gitlab.com/inkscape/inkscape.git</syntaxhighlight>
<li>And build inkscape
<syntaxhighlight lang="bash">
# use a clean MacPorts environment (optional)
LIBPREFIX="/opt/local"
export PATH="$LIBPREFIX/bin:/usr/bin:/bin:/usr/sbin:/sbin"


It's as simple as: #fink -y install inkscape
# where to install
PREFIX="$PWD/install-prefix"


Fink will get all the dependencies and install them.
# where to build
mkdir build
cd build


----
cmake \
    -G Ninja \
    -DCMAKE_PREFIX_PATH="$LIBPREFIX" \
    -DCMAKE_INSTALL_PREFIX="$PREFIX" \
    -DCMAKE_C_COMPILER_LAUNCHER=ccache \
    -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
    -DWITH_OPENMP=OFF \
    ../inkscape


To get autogen to run I had to perform the following ( Assuming users have fink installed )
ninja
ninja install
</syntaxhighlight>
''Note: Using [https://en.wikipedia.org/wiki/Ccache ccache] and [https://ninja-build.org/ ninja] is not required, but very common because it speeds up compilation.''
<li>Run Inkscape
<syntaxhighlight lang="bash">
$PREFIX/bin/inkscape
</syntaxhighlight>
</ol>


sudo fink install gtk+ ( which installs gtk+ and gtk+2 )
= Using Homebrew =
sudo fink install libtool14 ( replacing apple's glibtoolize )


These entries are all to be put in your ~/.cshrc ( or applicable shell startup )
If you are using [https://brew.sh/ Homebrew] instead, you can still use the above guidelines with small modifications.


setenv ACLOCAL_FLAGS "-I /sw/share/aclocal"
List of '''packages''' to install with brew
setenv CFLAGS -I/sw/include
(for Inkscape 1.1):


<syntaxhighlight lang="bash">
brew install \
    adwaita-icon-theme \
    bdw-gc \
    boost \
    cairomm \
    ccache \
    cmake \
    double-conversion \
    gettext \
    gsl \
    gspell \
    gtk-mac-integration \
    gtkmm3 \
    imagemagick \
    intltool \
    lcms2 \
    libomp \
    libsoup \
    libxslt \
    ninja \
    poppler \
    potrace
</syntaxhighlight>


setenv LDFLAGS -L/sw/lib
You may substitute <code>imagemagick</code> with <code>graphicsmagick</code>.
setenv CXXFLAGS $CFLAGS
setenv CPPFLAGS $CXXFLAGS


--
Since '''Homebrew''' only offers <code>gettext</code> as a keg (not linked to <code>/usr/local</code>) an extra option needs to be passed on to <code>cmake</code>.


For a clean 10.3 installation with a brand new Fink, I had to add the following:
Modify the script in step 5 by changing <code>LIBPREFIX="/usr/local"</code> and adding the following line to the cmake arguments:


* intltool
<syntaxhighlight lang="bash">
* glib2
    -DIntl_INCLUDE_DIR="$LIBPREFIX/opt/gettext/include" \
* glib2-dev
</syntaxhighlight>
* libpng3
* libart2
* libxml2
* gtk+2
* gtk+2-dev


In theory you can just list all those on one install command.
=See also=
-- JonCruz
* [[Tracking Dependencies]]
* [[Extension requirements]]
*[[Compiling Inkscape]]
*[[Notes on Packaging for OS X]]
* https://github.com/valerioa/Inkscape-MacOS-Curated-Build
* [https://github.com/ipatch/homebrew-us-05/blob/master/inkscape/inkscape-building-for-macOS.md ipatch's collection of notes] about building Inkscape using Homebrew


Apart from the above env variables I had to set the following variables to compile cvs
[[Category:Developer Documentation]]
(taken right out of fink's .info file). This is in bash syntax, above is tcsh syntax.
(I havent experimented with this list to see whats the minimum required.. but if I dont include any of the following than it breaks.)
<pre>
export ACLOCAL_FLAGS="-I /sw/share/aclocal"
export CFLAGS=-I/sw/include
export LDFLAGS=-L/sw/lib
export CXXFLAGS=$CFLAGS
export CPPFLAGS=$CXXFLAGS
export LIBRARY_PATH=/usr/X11R6/lib:/sw/lib
export CPATH=/sw/include
export PATH="/usr/X11R6/bin:"$PATH
export LIBS="-L/sw/lib -lintl "$LIBS
</pre>
 
Update: There is a problem with rendering cursors on mac due to a gcc bug. At this point fink is maintaining an inkscape package and they are going to use a patch to fix it for 0.38.1 so I recommend fink package. If you are interested in patching yourself, visit tracker item 932944 at https://sourceforge.net/tracker/index.php?func=detail&aid=932944&group_id=93438&atid=604306 .
 
-- Spundun
 
since gtkmm-2.0 has been added as a requirement, you may need to install it thru darwinports; to use it along whatever you installed with fink prior to that, the flags are:
 
<pre>
export ACLOCAL_FLAGS="-I /sw/share/aclocal"
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/local/lib/pkgconfig/
export LDFLAGS="-lintl -L/sw/lib -L/opt/local/lib"
export CFLAGS="-I/sw/include -I/opt/local/include"
export CPPFLAGS=$CFLAGS
export CXXFLAGS=$CFLAGS
</pre>
 
-- yafosf
 
If you need to run "./autogen.sh":
 
fink install automake1.8 autoconf2.5
 
Otherwise:
 
fink install �
        intltool �
        glib2 glib2-dev glib2-shlibs �
        gtk+2 gtk+2-shlibs gtk+2-dev �
        libpng3 libpng3-shlibs �
        libtool14 libtool14-shlibs �
        libpng-shlibs �
        libsigc++12 libsigc++12-shlibs �
        popt popt-shlibs
export CPPFLAGS=-I/sw/include
export LDFLAGS=-L/sw/lib
# Run ./autogen.sh here if things break below...
./configure --prefix=/sw
echo "#define ENABLE_NLS" >> config.h
make
make install
 
 
-- Kees Cook

Revision as of 21:18, 30 March 2021

Using MacPorts

  1. Download and install MacPorts
  2. Edit the MacPorts variants config (optional).
    Add this line to /opt/local/etc/macports/variants.conf
    -x11 +quartz
  3. In Terminal (Applications>Utilities>Terminal) type
    sudo port install \
         adwaita-icon-theme \
         boehmgc \
         boost \
         cairo \
         ccache \
         cmake \
         double-conversion \
         gdl3 \
         gettext \
         gsl \
         gtkmm3 \
         gtk-osx-application-gtk3 \
         lcms2 \
         libsoup \
         libxslt \
         ninja \
         poppler \
         potrace \
         py-lxml \
         py-numpy \
         -x11 +quartz
    
  4. In Terminal, get Inkscape
    git clone --recurse-submodules https://gitlab.com/inkscape/inkscape.git
    
  5. And build inkscape
    # use a clean MacPorts environment (optional)
    LIBPREFIX="/opt/local"
    export PATH="$LIBPREFIX/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    
    # where to install
    PREFIX="$PWD/install-prefix"
    
    # where to build
    mkdir build
    cd build
    
    cmake \
        -G Ninja \
        -DCMAKE_PREFIX_PATH="$LIBPREFIX" \
        -DCMAKE_INSTALL_PREFIX="$PREFIX" \
        -DCMAKE_C_COMPILER_LAUNCHER=ccache \
        -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
        -DWITH_OPENMP=OFF \
        ../inkscape
    
    ninja
    ninja install
    

    Note: Using ccache and ninja is not required, but very common because it speeds up compilation.

  6. Run Inkscape
    $PREFIX/bin/inkscape
    

Using Homebrew

If you are using Homebrew instead, you can still use the above guidelines with small modifications.

List of packages to install with brew (for Inkscape 1.1):

brew install \
    adwaita-icon-theme \
    bdw-gc \
    boost \
    cairomm \
    ccache \
    cmake \
    double-conversion \
    gettext \
    gsl \
    gspell \
    gtk-mac-integration \
    gtkmm3 \
    imagemagick \
    intltool \
    lcms2 \
    libomp \
    libsoup \
    libxslt \
    ninja \
    poppler \
    potrace

You may substitute imagemagick with graphicsmagick.

Since Homebrew only offers gettext as a keg (not linked to /usr/local) an extra option needs to be passed on to cmake.

Modify the script in step 5 by changing LIBPREFIX="/usr/local" and adding the following line to the cmake arguments:

    -DIntl_INCLUDE_DIR="$LIBPREFIX/opt/gettext/include" \

See also