6546814a23
Since this is the first cairo example in the examples directory, it necessarily involved changes to the Makefile and to fltk-config to properly handle the absence/existance of the cairo libs. TBD: Add docs to the cario widget describing coordinate system and how it differs from the default cairo normalized coordinate system.
413 lines
9.1 KiB
Bash
413 lines
9.1 KiB
Bash
#!/bin/sh
|
|
#
|
|
# FLTK configuration utility.
|
|
#
|
|
# Copyright 2000-2016 by Bill Spitzak and others.
|
|
# Original version Copyright 2000 by James Dean Palmer
|
|
# Adapted by Vincent Penne and Michael Sweet
|
|
#
|
|
# This library is free software. Distribution and use rights are outlined in
|
|
# the file "COPYING" which should have been included with this file. If this
|
|
# file is missing or damaged, see the license at:
|
|
#
|
|
# https://www.fltk.org/COPYING.php
|
|
#
|
|
# Please see the following page on how to report bugs and issues:
|
|
#
|
|
# https://www.fltk.org/bugs.php
|
|
#
|
|
|
|
MAJOR_VERSION=@FLTK_VERSION_MAJOR@
|
|
MINOR_VERSION=@FLTK_VERSION_MINOR@
|
|
PATCH_VERSION=@FLTK_VERSION_PATCH@
|
|
VERSION="$MAJOR_VERSION.$MINOR_VERSION.$PATCH_VERSION"
|
|
APIVERSION="$MAJOR_VERSION.$MINOR_VERSION"
|
|
|
|
### BEGIN fltk-config
|
|
selfdir=`dirname "$0"`
|
|
|
|
prefix=@prefix@
|
|
exec_prefix=@exec_prefix@
|
|
exec_prefix_set=no
|
|
includedir=@includedir@
|
|
libdir=@libdir@
|
|
srcdir=@srcdir@
|
|
|
|
# BINARY_DIR - used only for CMake builds in local (binary) directory
|
|
BINARY_DIR=@BINARY_DIR@
|
|
|
|
# compiler names
|
|
CC="@CC@"
|
|
CXX="@CXX@"
|
|
|
|
# flags for C++ compiler:
|
|
ARCHFLAGS="@ARCHFLAGS@"
|
|
CFLAGS="@CFLAGS@ @LARGEFILE@ @PTHREAD_FLAGS@"
|
|
CXXFLAGS="@CXXFLAGS@ @LARGEFILE@ @PTHREAD_FLAGS@"
|
|
LDFLAGS="@LDFLAGS@"
|
|
LDLIBS="@LIBS@"
|
|
OPTIM="@OPTIM@"
|
|
CAIROFLAGS="@CAIROFLAGS@"
|
|
|
|
# Config
|
|
if grep -q '^#define FLTK_HAVE_CAIRO 1' $selfdir/FL/fl_config.h; then
|
|
FLTK_HAVE_CAIRO=1
|
|
else
|
|
FLTK_HAVE_CAIRO=0
|
|
fi
|
|
|
|
# Check for local invocation, and update paths accordingly...
|
|
if test -f "$selfdir/FL/Fl_Window.H"; then
|
|
includedir="$selfdir"
|
|
libdir="$selfdir/lib"
|
|
|
|
if test -f "$libdir/libfltk_jpeg.a"; then
|
|
CFLAGS="-I$includedir/jpeg $CFLAGS"
|
|
CXXFLAGS="-I$includedir/jpeg $CXXFLAGS"
|
|
fi
|
|
|
|
if test -f "$libdir/libfltk_z.a"; then
|
|
CFLAGS="-I$includedir/zlib $CFLAGS"
|
|
CXXFLAGS="-I$includedir/zlib $CXXFLAGS"
|
|
fi
|
|
|
|
if test -f "$libdir/libfltk_png.a"; then
|
|
CFLAGS="-I$includedir/png $CFLAGS"
|
|
CXXFLAGS="-I$includedir/png $CXXFLAGS"
|
|
fi
|
|
fi
|
|
|
|
if test -d $includedir/FL/images; then
|
|
CFLAGS="-I$includedir/FL/images $CFLAGS"
|
|
CXXFLAGS="-I$includedir/FL/images $CXXFLAGS"
|
|
fi
|
|
|
|
if [ $FLTK_HAVE_CAIRO = 1 ]; then
|
|
CFLAGS="$CAIROFLAGS $CFLAGS"
|
|
CXXFLAGS="$CAIROFLAGS $CXXFLAGS"
|
|
fi
|
|
|
|
# libraries to link with:
|
|
LIBNAME="@LIBNAME@"
|
|
DSONAME="@DSONAME@"
|
|
DSOLINK="@DSOLINK@"
|
|
IMAGELIBS="@IMAGELIBS@"
|
|
STATICIMAGELIBS="@STATICIMAGELIBS@"
|
|
CAIROLIBS="@CAIROLIBS@"
|
|
SHAREDSUFFIX="@SHAREDSUFFIX@"
|
|
|
|
usage ()
|
|
{
|
|
echo "Usage: fltk-config [OPTIONS]
|
|
Options:
|
|
[--version]
|
|
[--api-version]
|
|
|
|
Options telling what we are doing:
|
|
[--use-gl] use GL
|
|
[--use-images] use extra image formats (PNG, JPEG)
|
|
[--use-glut] use glut compatibility layer
|
|
[--use-forms] use forms compatibility layer
|
|
[--use-cairo] use cairo graphics lib
|
|
|
|
Options telling what information we request:
|
|
[--cc] return C compiler used to compile FLTK
|
|
[--cxx] return C++ compiler used to compile FLTK
|
|
[--optim] return compiler optimization used to compile FLTK
|
|
[--cflags] return flags to compile C using FLTK
|
|
[--cxxflags] return flags to compile C++ using FLTK
|
|
[--ldflags] return flags to link against FLTK
|
|
[--ldstaticflags] return flags to link against static FLTK library
|
|
even if there are DSOs installed
|
|
[--libs] return FLTK libraries full path for dependencies
|
|
[--prefix] return FLTK install time --prefix directory
|
|
[--includedir] return FLTK install time include directory
|
|
|
|
Options to compile and link an application:
|
|
[-g] compile the program with debugging information
|
|
[-Dname[=value]] compile the program with the given define
|
|
[--compile program.cxx]
|
|
[--post program] prepare the program for desktop use
|
|
"
|
|
exit $1
|
|
}
|
|
|
|
if test $# -eq 0; then
|
|
usage 1
|
|
fi
|
|
|
|
no_plugins=no
|
|
compile=
|
|
post=
|
|
debug=
|
|
|
|
# Parse command line options
|
|
while test $# -gt 0
|
|
do
|
|
case "$1" in
|
|
-*=*)
|
|
optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'`
|
|
;;
|
|
*)
|
|
optarg=
|
|
;;
|
|
esac
|
|
|
|
case $1 in
|
|
--version)
|
|
echo $VERSION
|
|
;;
|
|
--api-version)
|
|
echo $APIVERSION
|
|
;;
|
|
--cc)
|
|
echo $CC
|
|
;;
|
|
--cxx)
|
|
echo $CXX
|
|
;;
|
|
--optim)
|
|
echo_optim=yes
|
|
;;
|
|
--use-gl | --use-glut)
|
|
use_gl=yes
|
|
;;
|
|
--use-forms)
|
|
use_forms=yes
|
|
;;
|
|
--use-images)
|
|
use_images=yes
|
|
;;
|
|
--use-cairo)
|
|
use_cairo=yes
|
|
;;
|
|
--cflags)
|
|
echo_cflags=yes
|
|
;;
|
|
--cxxflags)
|
|
echo_cxxflags=yes
|
|
;;
|
|
--ldflags)
|
|
echo_ldflags=yes
|
|
;;
|
|
--ldstaticflags)
|
|
echo_ldstaticflags=yes
|
|
;;
|
|
--libs)
|
|
echo_libs=yes
|
|
;;
|
|
--prefix)
|
|
echo_prefix=yes
|
|
;;
|
|
--includedir)
|
|
echo_includedir=yes
|
|
;;
|
|
-g)
|
|
debug=-g
|
|
;;
|
|
-D*)
|
|
CXXFLAGS="$CXXFLAGS $1"
|
|
;;
|
|
--compile)
|
|
compile="$2"
|
|
shift
|
|
;;
|
|
--post)
|
|
post="$2"
|
|
shift
|
|
;;
|
|
*)
|
|
echo_help=yes
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if test "$includedir" != /usr/include; then
|
|
includes=-I$includedir
|
|
else
|
|
includes=
|
|
fi
|
|
|
|
if test "$BINARY_DIR" != ""; then
|
|
includes="-I$BINARY_DIR $includes"
|
|
fi
|
|
|
|
if test "$libdir" != /usr/lib -a "$libdir" != /usr/lib32; then
|
|
libs=-L$libdir
|
|
else
|
|
libs=
|
|
fi
|
|
|
|
# Calculate needed libraries
|
|
LDSTATIC="$libdir/libfltk.a $LDLIBS"
|
|
LDLIBS="-lfltk$SHAREDSUFFIX $LDLIBS"
|
|
|
|
if test x$use_forms = xyes; then
|
|
LDLIBS="-lfltk_forms$SHAREDSUFFIX $LDLIBS"
|
|
LDSTATIC="$libdir/libfltk_forms.a $LDSTATIC"
|
|
fi
|
|
if test x$use_gl = xyes; then
|
|
LDLIBS="-lfltk_gl$SHAREDSUFFIX @GLLIBS@ $LDLIBS"
|
|
LDSTATIC="$libdir/libfltk_gl.a @GLLIBS@ $LDSTATIC"
|
|
fi
|
|
if test x$use_images = xyes; then
|
|
LDLIBS="-lfltk_images$SHAREDSUFFIX $IMAGELIBS $LDLIBS"
|
|
LDSTATIC="$libdir/libfltk_images.a $STATICIMAGELIBS $LDSTATIC"
|
|
fi
|
|
|
|
if test x$use_cairo = xyes -a $FLTK_HAVE_CAIRO = 1; then
|
|
LDLIBS="-lfltk_cairo$SHAREDSUFFIX $CAIROLIBS $LDLIBS"
|
|
LDSTATIC="$libdir/libfltk_cairo.a $CAIROLIBS $LDSTATIC"
|
|
fi
|
|
|
|
LDLIBS="$DSOLINK $LDFLAGS $libs $LDLIBS"
|
|
LDSTATIC="$LDFLAGS $LDSTATIC"
|
|
|
|
# Answer to user requests
|
|
if test -n "$echo_help"; then
|
|
usage 1
|
|
fi
|
|
|
|
if test -n "$compile"; then
|
|
case "$compile" in
|
|
*.cxx)
|
|
prog="`basename \"$compile\" .cxx`"
|
|
;;
|
|
*.cpp)
|
|
prog="`basename \"$compile\" .cpp`"
|
|
;;
|
|
*.cc)
|
|
prog="`basename \"$compile\" .cc`"
|
|
;;
|
|
*.C)
|
|
prog="`basename \"$compile\" .C`"
|
|
;;
|
|
*)
|
|
echo "ERROR: Unknown/bad C++ source file extension on \"$compile\"!"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
post="$prog"
|
|
|
|
echo $CXX $ARCHFLAGS $includes $CXXFLAGS $debug -o "'$prog'" "'$compile'" $LDSTATIC
|
|
$CXX $ARCHFLAGS $includes $CXXFLAGS $debug -o "$prog" "$compile" $LDSTATIC || exit 1
|
|
fi
|
|
|
|
if test -n "$post"; then
|
|
running=`uname`
|
|
if test "$running" = "Darwin"; then
|
|
# if FLTK targets MacOS+X11, apps need not be bundled
|
|
if test `echo $LDLIBS | fgrep -c -e " -lX11"` = 1; then
|
|
running=""
|
|
fi
|
|
fi
|
|
case $running in
|
|
Darwin)
|
|
echo Creating "'$post.app'" bundle for desktop...
|
|
id=`echo $post | tr ' ' '_'`
|
|
|
|
# Make the bundle directory and move the executable there
|
|
rm -rf "$post.app/Contents/MacOS"
|
|
mkdir -p "$post.app/Contents/MacOS"
|
|
mv "$post" "$post.app/Contents/MacOS"
|
|
|
|
# Make a shell script that runs the bundled executable
|
|
echo "#!/bin/sh" >"$post"
|
|
echo 'dir="`dirname \"$0\"`"' >>"$post"
|
|
echo 'exec "$dir/'"$post.app/Contents/MacOS/$post"'" "$@"' >>"$post"
|
|
chmod +x "$post"
|
|
|
|
# Make the simplest Info.plist needed for an application
|
|
cat >"$post.app/Contents/Info.plist" <<EOF
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<plist version="0.9">
|
|
<dict>
|
|
<key>CFBundleInfoDictionaryVersion</key>
|
|
<string>6.0</string>
|
|
<key>CFBundleExecutable</key>
|
|
<string>$post</string>
|
|
<key>CFBundleIdentifier</key>
|
|
<string>org.fltk.$id</string>
|
|
<key>CFBundleName</key>
|
|
<string>$post</string>
|
|
<key>CFBundlePackageType</key>
|
|
<string>APPL</string>
|
|
<key>NSHighResolutionCapable</key>
|
|
<true/>
|
|
</dict>
|
|
</plist>
|
|
EOF
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
if test "$echo_cflags" = "yes"; then
|
|
echo $includes $CFLAGS
|
|
fi
|
|
|
|
if test "$echo_cxxflags" = "yes"; then
|
|
echo $includes $CXXFLAGS
|
|
fi
|
|
|
|
if test "$echo_optim" = "yes"; then
|
|
echo $OPTIM
|
|
fi
|
|
|
|
if test "$echo_ldflags" = "yes"; then
|
|
my_libs=
|
|
libdirs=$libs
|
|
|
|
for i in $LDLIBS ; do
|
|
if test $i != -L$libdir ; then
|
|
if test -z "$my_libs" ; then
|
|
my_libs="$i"
|
|
else
|
|
my_libs="$my_libs $i"
|
|
fi
|
|
fi
|
|
done
|
|
echo $libdirs $my_libs
|
|
fi
|
|
|
|
if test "$echo_ldstaticflags" = "yes"; then
|
|
echo $LDSTATIC
|
|
fi
|
|
|
|
if test "$echo_libs" = "yes"; then
|
|
USELIBS="$libdir/libfltk.a"
|
|
|
|
if test x$use_forms = xyes; then
|
|
USELIBS="$libdir/libfltk_forms.a $USELIBS"
|
|
fi
|
|
|
|
if test x$use_gl = xyes; then
|
|
USELIBS="$libdir/libfltk_gl.a $USELIBS"
|
|
fi
|
|
|
|
if test x$use_cairo = xyes; then
|
|
USELIBS="$libdir/libfltk_cairo.a $USELIBS"
|
|
fi
|
|
|
|
if test x$use_images = xyes; then
|
|
USELIBS="$libdir/libfltk_images.a $USELIBS"
|
|
|
|
for lib in fltk_jpeg fltk_png fltk_z; do
|
|
if test -f $libdir/lib$lib.a; then
|
|
USELIBS="$libdir/lib$lib.a $USELIBS"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
echo $USELIBS
|
|
fi
|
|
|
|
if test "$echo_prefix" = "yes"; then
|
|
echo $prefix
|
|
fi
|
|
|
|
if test "$echo_includedir" = "yes"; then
|
|
echo $includedir
|
|
fi
|