configure: add --enable-natipkg
and 64-bit Linux native libraries
The `--enable-natipkg` configuration option adds "-natipkg" to the platform library subpath. The suffix is intended to trigger the installation of packages that supply native libraries for supported platforms (where 64-bit Linux is the supported platform, for now, for main-distribution packages), instead of relying on libraries installed via the OS's package manager. The intended client for "-natipkg" is the package-build service, where installing packages via the OS package manager would require network access and either trust or constrained installations. The build machine is intentionally disconnected from the network and can only access Racket packages, so repackaging native libraries as Racket packages makes those libraries accessible. A disadvantage of this approach to installing native libraries is that it creates work for implementers of packages that access native libraries. Those implementers will have to supply packages for 64-bit Linux versions of native libraries to the degree needed to build and (eventually) test the package. An advantage of the approach is that it requires no changes to the package system; it will be cheap to replace this approach if we find a better way to deal with native libraries and/or OS packages in the package-build service.
This commit is contained in:
parent
e50e2eaa57
commit
40f5ec070a
|
@ -107,6 +107,9 @@ The "native-pkgs" directory is a git submodule, so you'll need
|
||||||
|
|
||||||
before you do anything else.
|
before you do anything else.
|
||||||
|
|
||||||
|
The "native-pkgs" directory is also needed if you build for 64-bit
|
||||||
|
Linux with the `--enable-natipkg` option to `configure`.
|
||||||
|
|
||||||
|
|
||||||
More Instructions: Building Racket
|
More Instructions: Building Racket
|
||||||
==================================
|
==================================
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 4bc36e704d0ce4d84788e538ca49f71a8b73c07f
|
Subproject commit 2f116c1b64af3f980a403cb4b57051457b2a9c39
|
|
@ -8,7 +8,10 @@
|
||||||
("draw-x86_64-macosx-2" #:platform "x86_64-macosx")
|
("draw-x86_64-macosx-2" #:platform "x86_64-macosx")
|
||||||
("draw-ppc-macosx-2" #:platform "ppc-macosx")
|
("draw-ppc-macosx-2" #:platform "ppc-macosx")
|
||||||
("draw-win32-i386-2" #:platform "win32\\i386")
|
("draw-win32-i386-2" #:platform "win32\\i386")
|
||||||
("draw-win32-x86_64-2" #:platform "win32\\x86_64")))
|
("draw-win32-x86_64-2" #:platform "win32\\x86_64")
|
||||||
|
("draw-x86_64-linux-natipkg-2" #:platform "x86_64-linux-natipkg")
|
||||||
|
("draw-x11-x86_64-linux-natipkg" #:platform "x86_64-linux-natipkg")
|
||||||
|
("draw-ttf-x86_64-linux-natipkg" #:platform "x86_64-linux-natipkg")))
|
||||||
|
|
||||||
(define pkg-desc "implementation (no documentation) part of \"draw\"")
|
(define pkg-desc "implementation (no documentation) part of \"draw\"")
|
||||||
|
|
||||||
|
|
|
@ -2,26 +2,52 @@
|
||||||
(require ffi/unsafe
|
(require ffi/unsafe
|
||||||
ffi/unsafe/define
|
ffi/unsafe/define
|
||||||
ffi/unsafe/alloc
|
ffi/unsafe/alloc
|
||||||
|
setup/dirs
|
||||||
"../private/libs.rkt"
|
"../private/libs.rkt"
|
||||||
"../private/utils.rkt")
|
"../private/utils.rkt")
|
||||||
|
|
||||||
(define-runtime-lib cairo-lib
|
(define-runtime-lib fontconfig-lib
|
||||||
[(unix) (ffi-lib "libcairo" '("2" ""))]
|
[(unix) (ffi-lib "libfontconfig" '("1" ""))]
|
||||||
[(macosx)
|
[(macosx)
|
||||||
(ffi-lib "libpixman-1.0.dylib")
|
|
||||||
(ffi-lib "libpng16.16.dylib")
|
(ffi-lib "libpng16.16.dylib")
|
||||||
(ffi-lib "libexpat.1.dylib")
|
(ffi-lib "libexpat.1.dylib")
|
||||||
(ffi-lib "libfreetype.6.dylib")
|
(ffi-lib "libfreetype.6.dylib")
|
||||||
(ffi-lib "libfontconfig.1.dylib")
|
(ffi-lib "libfontconfig.1.dylib")]
|
||||||
(ffi-lib "libcairo.2.dylib")]
|
|
||||||
[(windows)
|
[(windows)
|
||||||
(ffi-lib "zlib1.dll")
|
(ffi-lib "zlib1.dll")
|
||||||
(ffi-lib "libintl-8.dll")
|
(ffi-lib "libintl-8.dll")
|
||||||
(ffi-lib "libpng16-16.dll")
|
(ffi-lib "libpng16-16.dll")
|
||||||
(ffi-lib "libexpat-1.dll")
|
(ffi-lib "libexpat-1.dll")
|
||||||
(ffi-lib "libfreetype-6.dll")
|
(ffi-lib "libfreetype-6.dll")
|
||||||
(ffi-lib "libfontconfig-1.dll")
|
(ffi-lib "libfontconfig-1.dll")])
|
||||||
|
|
||||||
|
(define-runtime-lib cairo-lib
|
||||||
|
[(unix) (ffi-lib "libcairo" '("2" ""))]
|
||||||
|
[(macosx)
|
||||||
|
(ffi-lib "libpixman-1.0.dylib")
|
||||||
|
(ffi-lib "libcairo.2.dylib")]
|
||||||
|
[(windows)
|
||||||
(ffi-lib "libpixman-1-0.dll")
|
(ffi-lib "libpixman-1-0.dll")
|
||||||
(ffi-lib "libcairo-2.dll")])
|
(ffi-lib "libcairo-2.dll")])
|
||||||
|
|
||||||
|
;; A Racket-specific patch to Fontconfig defines FcSetFallbackDirs(),
|
||||||
|
;; which lets us set default paths to point to a Racket-specific
|
||||||
|
;; directory. If FcSetFallbackDirs() isn't defined, then we want
|
||||||
|
;; the system-defined directories, anyway.
|
||||||
|
(let ([FcSetFallbackDirs (get-ffi-obj 'FcSetFallbackDirs
|
||||||
|
fontconfig-lib
|
||||||
|
(_fun _path _path -> _void)
|
||||||
|
(lambda () #f))]
|
||||||
|
[FcSetConfigDir (get-ffi-obj 'FcSetConfigDir
|
||||||
|
fontconfig-lib
|
||||||
|
(_fun _path -> _void)
|
||||||
|
(lambda () #f))])
|
||||||
|
(when (and FcSetFallbackDirs
|
||||||
|
FcSetConfigDir)
|
||||||
|
(define share-dir (find-share-dir))
|
||||||
|
(when share-dir
|
||||||
|
(FcSetFallbackDirs (build-path share-dir "fonts")
|
||||||
|
(build-path (find-system-path 'addon-dir) "font-cache"))
|
||||||
|
(FcSetConfigDir (build-path share-dir "fonts")))))
|
||||||
|
|
||||||
(provide (protect-out cairo-lib))
|
(provide (protect-out cairo-lib))
|
||||||
|
|
|
@ -21,7 +21,8 @@
|
||||||
("gui-x86_64-macosx" #:platform "x86_64-macosx")
|
("gui-x86_64-macosx" #:platform "x86_64-macosx")
|
||||||
("gui-ppc-macosx" #:platform "ppc-macosx")
|
("gui-ppc-macosx" #:platform "ppc-macosx")
|
||||||
("gui-win32-i386" #:platform "win32\\i386")
|
("gui-win32-i386" #:platform "win32\\i386")
|
||||||
("gui-win32-x86_64" #:platform "win32\\x86_64")))
|
("gui-win32-x86_64" #:platform "win32\\x86_64")
|
||||||
|
("gui-x86_64-linux-natipkg" #:platform "x86_64-linux-natipkg")))
|
||||||
(define build-deps '("at-exp-lib"
|
(define build-deps '("at-exp-lib"
|
||||||
"rackunit-lib"))
|
"rackunit-lib"))
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,8 @@
|
||||||
("math-x86_64-macosx" #:platform "x86_64-macosx")
|
("math-x86_64-macosx" #:platform "x86_64-macosx")
|
||||||
("math-ppc-macosx" #:platform "ppc-macosx")
|
("math-ppc-macosx" #:platform "ppc-macosx")
|
||||||
("math-win32-i386" #:platform "win32\\i386")
|
("math-win32-i386" #:platform "win32\\i386")
|
||||||
("math-win32-x86_64" #:platform "win32\\x86_64")))
|
("math-win32-x86_64" #:platform "win32\\x86_64")
|
||||||
|
("math-x86_64-linux-natipkg" #:platform "x86_64-linux-natipkg")))
|
||||||
|
|
||||||
(define build-deps '())
|
(define build-deps '())
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
("db-ppc-macosx" #:platform "ppc-macosx")
|
("db-ppc-macosx" #:platform "ppc-macosx")
|
||||||
("db-win32-i386" #:platform "win32\\i386")
|
("db-win32-i386" #:platform "win32\\i386")
|
||||||
("db-win32-x86_64" #:platform "win32\\x86_64")
|
("db-win32-x86_64" #:platform "win32\\x86_64")
|
||||||
|
("db-x86_64-linux-natipkg" #:platform "x86_64-linux-natipkg")
|
||||||
("com-win32-i386" #:platform "win32\\i386")
|
("com-win32-i386" #:platform "win32\\i386")
|
||||||
("com-win32-x86_64" #:platform "win32\\x86_64")))
|
("com-win32-x86_64" #:platform "win32\\x86_64")))
|
||||||
|
|
||||||
|
|
17
racket/src/configure
vendored
17
racket/src/configure
vendored
|
@ -796,6 +796,7 @@ enable_origtree
|
||||||
enable_pkgscope
|
enable_pkgscope
|
||||||
enable_docs
|
enable_docs
|
||||||
enable_usersetup
|
enable_usersetup
|
||||||
|
enable_natipkg
|
||||||
enable_shared
|
enable_shared
|
||||||
enable_dynlib
|
enable_dynlib
|
||||||
enable_lt
|
enable_lt
|
||||||
|
@ -1441,6 +1442,7 @@ Optional Features:
|
||||||
--enable-pkgscope=<s> set `raco pkg' default: installation, user, or shared
|
--enable-pkgscope=<s> set `raco pkg' default: installation, user, or shared
|
||||||
--enable-docs build docs on install (enabled by default)
|
--enable-docs build docs on install (enabled by default)
|
||||||
--enable-usersetup setup user-specific files on install
|
--enable-usersetup setup user-specific files on install
|
||||||
|
--enable-natipkg add "-natipkg" to library subpath
|
||||||
--enable-shared create shared libraries (ok, but not recommended)
|
--enable-shared create shared libraries (ok, but not recommended)
|
||||||
--enable-dynlib same as --enable-shared
|
--enable-dynlib same as --enable-shared
|
||||||
--enable-lt=<prog> use <prog> instead of libtool; disable to use bundled
|
--enable-lt=<prog> use <prog> instead of libtool; disable to use bundled
|
||||||
|
@ -2651,6 +2653,12 @@ if test "${enable_usersetup+set}" = set; then :
|
||||||
enableval=$enable_usersetup;
|
enableval=$enable_usersetup;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Check whether --enable-natipkg was given.
|
||||||
|
if test "${enable_natipkg+set}" = set; then :
|
||||||
|
enableval=$enable_natipkg;
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Check whether --enable-shared was given.
|
# Check whether --enable-shared was given.
|
||||||
if test "${enable_shared+set}" = set; then :
|
if test "${enable_shared+set}" = set; then :
|
||||||
enableval=$enable_shared;
|
enableval=$enable_shared;
|
||||||
|
@ -2987,6 +2995,7 @@ show_explicitly_enabled "${enable_cgcdefault}" "CGC as default" "Note that this
|
||||||
|
|
||||||
show_explicitly_disabled "${enable_docs}" "Documentation build"
|
show_explicitly_disabled "${enable_docs}" "Documentation build"
|
||||||
show_explicitly_enabled "${enable_usersetup}" "User-specific setup on install"
|
show_explicitly_enabled "${enable_usersetup}" "User-specific setup on install"
|
||||||
|
show_explicitly_enabled "${enable_natipkg}" "Adding \"-natipkg\" suffix to library subpath"
|
||||||
|
|
||||||
show_explicitly_enabled "${enable_xonx}" "Unix style"
|
show_explicitly_enabled "${enable_xonx}" "Unix style"
|
||||||
show_explicitly_enabled "${enable_shared}" "Shared libraries"
|
show_explicitly_enabled "${enable_shared}" "Shared libraries"
|
||||||
|
@ -6515,6 +6524,14 @@ if test "${enable_docs}" = "no" ; then
|
||||||
INSTALL_SETUP_FLAGS="${INSTALL_SETUP_FLAGS} --no-docs"
|
INSTALL_SETUP_FLAGS="${INSTALL_SETUP_FLAGS} --no-docs"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
############## natipkg ################
|
||||||
|
|
||||||
|
if test "${enable_natipkg}" = "yes" ; then
|
||||||
|
|
||||||
|
$as_echo "#define SPLS_SUFFIX \"-natipkg\"" >>confdefs.h
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
############## Racket for Racket ################
|
############## Racket for Racket ################
|
||||||
|
|
||||||
if test "${enable_racket}" = "" ; then
|
if test "${enable_racket}" = "" ; then
|
||||||
|
|
|
@ -6,19 +6,22 @@ variants, we expect users to install C-implemented libraries (usually
|
||||||
through the operating system's package manager). For Windows and Mac
|
through the operating system's package manager). For Windows and Mac
|
||||||
OS X, we supply pre-built libraries in platform-specific packages; the
|
OS X, we supply pre-built libraries in platform-specific packages; the
|
||||||
corresponding Racket packages include platform-specific dependencies
|
corresponding Racket packages include platform-specific dependencies
|
||||||
on those packages.
|
on those packages. The "x86_64-linux-natipkg" variant of Racket
|
||||||
|
is like Windows and Mac OS X, expecting packages to supply native
|
||||||
|
libraries for 64-bit Linux.
|
||||||
|
|
||||||
This directory contains scripts and patches to build Windows and Mac
|
This directory contains scripts and patches to build Windows, Mac OS
|
||||||
OS X libraries in a consistent and portable way. Naturally, the script
|
X, and Linux libraries in a consistent and portable way. Naturally,
|
||||||
and patches are fragile, so we upgrade libraries
|
the script and patches are fragile, so we upgrade libraries
|
||||||
infrequently. Currently, we use the following external packages and
|
infrequently. Currently, we use the following external packages and
|
||||||
versions:
|
versions:
|
||||||
|
|
||||||
pkg-config-0.28
|
pkg-config-0.28
|
||||||
sed-4.2 (Windows only, to avoid non-GNU `sed')
|
sed-4.2 (Windows only, to avoid non-GNU `sed')
|
||||||
openssl-1.0.1g (Windows only)
|
sqlite[-autoconf]-3080600 (Windows and Linux only)
|
||||||
|
openssl-1.0.1g (Windows and Linux only)
|
||||||
libiconv-1.14 (Windows only)
|
libiconv-1.14 (Windows only)
|
||||||
zlib-1.2.8 (Windows only)
|
zlib-1.2.8 (Windows and Linux only)
|
||||||
libffi-3.0.13
|
libffi-3.0.13
|
||||||
expat-2.1.0
|
expat-2.1.0
|
||||||
gettext-0.18.3.2
|
gettext-0.18.3.2
|
||||||
|
@ -35,9 +38,27 @@ versions:
|
||||||
mpfr-3.1.2
|
mpfr-3.1.2
|
||||||
gmp-5.1.3
|
gmp-5.1.3
|
||||||
|
|
||||||
The above lists is aimed at the graphics stack, and there are a few
|
(Linux only:)
|
||||||
more libraries not covered here, yet. See "../mac/README.txt" and
|
xtrans-1.3.5
|
||||||
"../worksp/README" for more information.
|
inputproto-2.3.1
|
||||||
|
xextproto-7.3.0
|
||||||
|
kbproto-1.0.5
|
||||||
|
xproto-7.0.26
|
||||||
|
xcb-proto-1.11
|
||||||
|
renderproto-0.11.1
|
||||||
|
libpthread-stubs-0.3
|
||||||
|
libxcb-1.11
|
||||||
|
libXau-1.0.8
|
||||||
|
libX11-1.6.2
|
||||||
|
libXext-1.3.3
|
||||||
|
libXrender-0.9.8
|
||||||
|
freefont[-ttf]-20100919
|
||||||
|
atk-2.12.0
|
||||||
|
gdk-pixbuf-2.30.8
|
||||||
|
gtk+-2.24.24
|
||||||
|
|
||||||
|
See "../mac/README.txt" for information about an additional
|
||||||
|
library on Mac OS X.
|
||||||
|
|
||||||
Preliminiaries
|
Preliminiaries
|
||||||
--------------
|
--------------
|
||||||
|
@ -68,6 +89,11 @@ Clang, then note that you'll need gcc-4.0 --- but the Pango version
|
||||||
listed above relies on CoreText, which is available only with 10.5 and
|
listed above relies on CoreText, which is available only with 10.5 and
|
||||||
later.
|
later.
|
||||||
|
|
||||||
|
For Linux:
|
||||||
|
|
||||||
|
The script assumes that `gcc`, `g++`, `m4`, and `chrpath` are
|
||||||
|
installed, as well as X11 header files.
|
||||||
|
|
||||||
Build Steps (assuming no version changes)
|
Build Steps (assuming no version changes)
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
|
@ -80,7 +106,7 @@ Build Steps (assuming no version changes)
|
||||||
* Run
|
* Run
|
||||||
|
|
||||||
racket <here-dir>/build-all.rkt \
|
racket <here-dir>/build-all.rkt \
|
||||||
--{win,mac} \
|
--{win,mac,linux} \
|
||||||
--m{32,64} \
|
--m{32,64} \
|
||||||
--archives <archive-dir>
|
--archives <archive-dir>
|
||||||
|
|
||||||
|
@ -91,7 +117,7 @@ Build Steps (assuming no version changes)
|
||||||
* Run
|
* Run
|
||||||
|
|
||||||
racket <here-dir>/install.rkt \
|
racket <here-dir>/install.rkt \
|
||||||
--{win,mac} \
|
--{win,mac,linux} \
|
||||||
--m{32,64} \
|
--m{32,64} \
|
||||||
<native-pkgs-dir>
|
<native-pkgs-dir>
|
||||||
|
|
||||||
|
@ -158,6 +184,16 @@ More details for Mac OS X:
|
||||||
look for "TWOLEVEL" in the output to double check that a library
|
look for "TWOLEVEL" in the output to double check that a library
|
||||||
build uses two-level namespaces.
|
build uses two-level namespaces.
|
||||||
|
|
||||||
|
More details for Linux:
|
||||||
|
|
||||||
|
* The `chrpath` tool is used to set the RAPTH of each generated
|
||||||
|
library to `$ORIGIN` so that other shared libraries will be found
|
||||||
|
when they are installed in the same package scope.
|
||||||
|
|
||||||
|
* A minimal set of fonts is installed in the installation's "share"
|
||||||
|
directory under "fonts". The Fontconfig package is patched to
|
||||||
|
redirect the default configuration location to that directory.
|
||||||
|
|
||||||
When Library Versions Change
|
When Library Versions Change
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
|
|
|
@ -2,21 +2,46 @@
|
||||||
(require racket/system
|
(require racket/system
|
||||||
racket/format
|
racket/format
|
||||||
racket/runtime-path
|
racket/runtime-path
|
||||||
|
racket/list
|
||||||
"cmdline.rkt")
|
"cmdline.rkt")
|
||||||
|
|
||||||
(define (get-package-names win?)
|
(define (get-package-names win?)
|
||||||
(append
|
(append
|
||||||
'("pkg-config")
|
'("pkg-config")
|
||||||
(if win?
|
(cond
|
||||||
'("sed"
|
[win?
|
||||||
"longdouble"
|
'("sed"
|
||||||
"libiconv"
|
"longdouble"
|
||||||
"openssl"
|
"libiconv")]
|
||||||
"zlib")
|
[else
|
||||||
null)
|
null])
|
||||||
|
(cond
|
||||||
|
[(or win? linux?)
|
||||||
|
'("sqlite"
|
||||||
|
"openssl"
|
||||||
|
"zlib")]
|
||||||
|
[else
|
||||||
|
null])
|
||||||
'("expat"
|
'("expat"
|
||||||
"gettext"
|
"gettext")
|
||||||
"libffi"
|
(cond
|
||||||
|
[linux?
|
||||||
|
'("inputproto"
|
||||||
|
"xproto"
|
||||||
|
"xtrans"
|
||||||
|
"kbproto"
|
||||||
|
"xextproto"
|
||||||
|
"renderproto"
|
||||||
|
"libpthread-stubs"
|
||||||
|
"libXau"
|
||||||
|
"xcb-proto"
|
||||||
|
"libxcb"
|
||||||
|
"libX11"
|
||||||
|
"libXext"
|
||||||
|
"libXrender"
|
||||||
|
"freefont")]
|
||||||
|
[else null])
|
||||||
|
'("libffi"
|
||||||
"glib"
|
"glib"
|
||||||
"libpng"
|
"libpng"
|
||||||
"freetype"
|
"freetype"
|
||||||
|
@ -28,7 +53,13 @@
|
||||||
"gmp"
|
"gmp"
|
||||||
"mpfr"
|
"mpfr"
|
||||||
"jpeg"
|
"jpeg"
|
||||||
"poppler")))
|
"poppler")
|
||||||
|
(cond
|
||||||
|
[linux?
|
||||||
|
'("gdk-pixbuf"
|
||||||
|
"atk"
|
||||||
|
"gtk+")]
|
||||||
|
[else null])))
|
||||||
|
|
||||||
(define-runtime-path build-rkt "build.rkt")
|
(define-runtime-path build-rkt "build.rkt")
|
||||||
|
|
||||||
|
@ -45,8 +76,12 @@
|
||||||
(printf "Building ~a\n" package-name)
|
(printf "Building ~a\n" package-name)
|
||||||
(parameterize ([current-namespace (make-base-namespace)]
|
(parameterize ([current-namespace (make-base-namespace)]
|
||||||
[current-command-line-arguments
|
[current-command-line-arguments
|
||||||
(vector (if win? "--win" "--mac")
|
(list->vector
|
||||||
(if m32? (if ppc? "--mppc" "--m32") "--m64")
|
(append
|
||||||
"--archives" (~a archives-dir)
|
(list (if win? "--win" (if linux? "--linux" "--mac"))
|
||||||
package-name)])
|
(if m32? (if ppc? "--mppc" "--m32") "--m64"))
|
||||||
|
(cons "--archives"
|
||||||
|
(add-between (map ~a archives-dirs)
|
||||||
|
"--archives"))
|
||||||
|
(list package-name)))])
|
||||||
(dynamic-require build-rkt #f))]))
|
(dynamic-require build-rkt #f))]))
|
||||||
|
|
|
@ -86,8 +86,11 @@
|
||||||
(printf "echo '\tcp longdouble.dll ../dest/bin' >> Makefile\n")))
|
(printf "echo '\tcp longdouble.dll ../dest/bin' >> Makefile\n")))
|
||||||
(file-or-directory-permissions "longdouble-1/configure" #o777)]
|
(file-or-directory-permissions "longdouble-1/configure" #o777)]
|
||||||
[else
|
[else
|
||||||
(define archive (parameterize ([current-directory archives-dir])
|
(define archive (or (for/or ([archives-dir (in-list archives-dirs)])
|
||||||
(build-path archives-dir (find-package package-name #f))))
|
(parameterize ([current-directory archives-dir])
|
||||||
|
(define p (find-package package-name #f #t))
|
||||||
|
(and p (build-path archives-dir p))))
|
||||||
|
(find-package package-name #f)))
|
||||||
(define dir (find-package package-name #t #t))
|
(define dir (find-package package-name #t #t))
|
||||||
(when dir
|
(when dir
|
||||||
(printf "Removing ~a" dir)
|
(printf "Removing ~a" dir)
|
||||||
|
@ -142,6 +145,10 @@
|
||||||
(define-runtime-path libtool-link-patch "patches/libtool-link.patch")
|
(define-runtime-path libtool-link-patch "patches/libtool-link.patch")
|
||||||
(define-runtime-path libtool64-link-patch "patches/libtool64-link.patch")
|
(define-runtime-path libtool64-link-patch "patches/libtool64-link.patch")
|
||||||
|
|
||||||
|
;; Add FcSetFallbackDirs to set fallback directories dynamically:
|
||||||
|
(define-runtime-path fcdirs-patch "patches/fcdirs.patch")
|
||||||
|
(define-runtime-path fonts-conf "patches/fonts.conf")
|
||||||
|
|
||||||
;; --------------------------------------------------
|
;; --------------------------------------------------
|
||||||
;; General environment and flag configuration:
|
;; General environment and flag configuration:
|
||||||
|
|
||||||
|
@ -171,16 +178,26 @@
|
||||||
;; We'd prefer to add "-static-libgcc" to CFLAGS, but
|
;; We'd prefer to add "-static-libgcc" to CFLAGS, but
|
||||||
;; libtool doesn't pass `static-libgcc` through.
|
;; libtool doesn't pass `static-libgcc` through.
|
||||||
(list "CC" (~a win-prefix "-gcc -static-libgcc")))])]
|
(list "CC" (~a win-prefix "-gcc -static-libgcc")))])]
|
||||||
[m32?
|
[mac?
|
||||||
(define sdk-flags (sdk 5))
|
(cond
|
||||||
(list
|
[m32?
|
||||||
(list "CPPFLAGS" (~a "-m32" sdk-flags))
|
(define sdk-flags (sdk 5))
|
||||||
(list "LDFLAGS" (~a "-m32" sdk-flags)))]
|
(list
|
||||||
|
(list "CPPFLAGS" (~a "-m32" sdk-flags))
|
||||||
|
(list "LDFLAGS" (~a "-m32" sdk-flags)))]
|
||||||
|
[else
|
||||||
|
(define sdk-flags (sdk 6))
|
||||||
|
(list
|
||||||
|
(list "CPPFLAGS" (~a "-m64" sdk-flags))
|
||||||
|
(list "LDFLAGS" (~a "-m64" sdk-flags)))])]
|
||||||
[else
|
[else
|
||||||
(define sdk-flags (sdk 6))
|
(cond
|
||||||
(list
|
[m32?
|
||||||
(list "CPPFLAGS" (~a "-m64" sdk-flags))
|
(list
|
||||||
(list "LDFLAGS" (~a "-m64" sdk-flags)))]))
|
(list "CPPFLAGS" "-m32")
|
||||||
|
(list "LDFLAGS" "-m32"))]
|
||||||
|
[else
|
||||||
|
null])]))
|
||||||
|
|
||||||
(define cxx-env
|
(define cxx-env
|
||||||
(if win?
|
(if win?
|
||||||
|
@ -238,6 +255,7 @@
|
||||||
#:configure-exe [exe #f]
|
#:configure-exe [exe #f]
|
||||||
#:configure [args null]
|
#:configure [args null]
|
||||||
#:make [make "make"]
|
#:make [make "make"]
|
||||||
|
#:make-install [make-install (~a make " install")]
|
||||||
#:setup [setup null]
|
#:setup [setup null]
|
||||||
#:patches [patches null]
|
#:patches [patches null]
|
||||||
#:post-patches [post-patches null]
|
#:post-patches [post-patches null]
|
||||||
|
@ -251,32 +269,54 @@
|
||||||
deps))])
|
deps))])
|
||||||
(unless (file-exists? (build-path dest "stamps" d))
|
(unless (file-exists? (build-path dest "stamps" d))
|
||||||
(error 'build "prerequisite needed: ~a" d)))
|
(error 'build "prerequisite needed: ~a" d)))
|
||||||
(values env exe args make setup patches post-patches fixup))
|
(values env exe args make make-install setup patches post-patches fixup))
|
||||||
|
|
||||||
(define path-flags
|
(define path-flags
|
||||||
(list (list "CPPFLAGS" (~a "-I" dest "/include"))
|
(list (list "CPPFLAGS" (~a "-I" dest "/include"))
|
||||||
(list "LDFLAGS" (~a "-L" dest "/lib"))))
|
(list "LDFLAGS" (~a "-L" dest "/lib"))))
|
||||||
|
|
||||||
(define (windows-only)
|
(define ld-library-path-flags
|
||||||
(unless win?
|
(list (list "LD_LIBRARY_PATH"
|
||||||
(error (format "build ~a only for Windows" package-name))))
|
(path->string (build-path dest "lib")))))
|
||||||
|
|
||||||
(define-values (extra-env configure-exe extra-args make-command setup patches post-patches fixup)
|
(define (nonmac-only)
|
||||||
|
(unless (or win? linux?)
|
||||||
|
(error (format "build ~a only for Windows or Linux" package-name))))
|
||||||
|
|
||||||
|
(define (linux-only)
|
||||||
|
(unless linux?
|
||||||
|
(error (format "build ~a only for Linux" package-name))))
|
||||||
|
|
||||||
|
(define-values (extra-env configure-exe extra-args make-command make-install-command
|
||||||
|
setup patches post-patches fixup)
|
||||||
(case package-name
|
(case package-name
|
||||||
[("pkg-config") (config #:configure (list "--with-internal-glib"))]
|
[("pkg-config") (config #:configure (list "--with-internal-glib"))]
|
||||||
[("sed") (config)]
|
[("sed") (config)]
|
||||||
[("longdouble") (config)]
|
[("longdouble") (config)]
|
||||||
[("libiconv")
|
[("libiconv")
|
||||||
(windows-only)
|
(nonmac-only)
|
||||||
(config)]
|
(config)]
|
||||||
|
[("sqlite")
|
||||||
|
(nonmac-only)
|
||||||
|
(config #:fixup (and win?
|
||||||
|
(~a "cd " (build-path dest "bin")
|
||||||
|
" && mv libsqlite3-0.dll sqlite3.dll")))]
|
||||||
[("openssl")
|
[("openssl")
|
||||||
(windows-only)
|
(nonmac-only)
|
||||||
(config #:configure-exe (find-executable-path "sh")
|
(config #:configure-exe (find-executable-path "sh")
|
||||||
#:configure (list "./Configure"
|
#:configure (if win?
|
||||||
(~a "--cross-compile-prefix=" win-prefix "-")
|
(list "./Configure"
|
||||||
#f ; other flags here
|
(~a "--cross-compile-prefix=" win-prefix "-")
|
||||||
(~a "mingw" (if m32? "" "64"))
|
#f ; other flags here
|
||||||
"shared"))]
|
(~a "mingw" (if m32? "" "64"))
|
||||||
|
"shared")
|
||||||
|
(list "./Configure"
|
||||||
|
#f
|
||||||
|
"shared"
|
||||||
|
"linux-x86_64"))
|
||||||
|
#:make (if linux?
|
||||||
|
(~a "make SHARED_LDFLAGS=" "-Wl,-rpath," dest "/lib")
|
||||||
|
"make"))]
|
||||||
[("expat") (config)]
|
[("expat") (config)]
|
||||||
[("gettext") (config #:depends (if win? '("libiconv") '())
|
[("gettext") (config #:depends (if win? '("libiconv") '())
|
||||||
#:configure '("--enable-languages=c")
|
#:configure '("--enable-languages=c")
|
||||||
|
@ -285,20 +325,62 @@
|
||||||
;; only that avoids other problems.
|
;; only that avoids other problems.
|
||||||
"cd gettext-runtime/intl && make"
|
"cd gettext-runtime/intl && make"
|
||||||
"make"))]
|
"make"))]
|
||||||
|
[("inputproto"
|
||||||
|
"xproto"
|
||||||
|
"xtrans"
|
||||||
|
"kbproto"
|
||||||
|
"xextproto"
|
||||||
|
"renderproto"
|
||||||
|
"libpthread-stubs"
|
||||||
|
"libXau"
|
||||||
|
"xcb-proto"
|
||||||
|
"libxcb"
|
||||||
|
"libX11"
|
||||||
|
"libXext"
|
||||||
|
"libXrender")
|
||||||
|
(linux-only)
|
||||||
|
(config #:env path-flags)]
|
||||||
|
[("gdk-pixbuf")
|
||||||
|
(linux-only)
|
||||||
|
(config #:depends '("libX11")
|
||||||
|
#:configure '("--without-libtiff")
|
||||||
|
#:env (append path-flags
|
||||||
|
ld-library-path-flags))]
|
||||||
|
[("atk")
|
||||||
|
(linux-only)
|
||||||
|
(config #:depends '("libX11")
|
||||||
|
#:env (append path-flags
|
||||||
|
ld-library-path-flags))]
|
||||||
|
[("gtk+")
|
||||||
|
(linux-only)
|
||||||
|
(config #:depends '("gdk-pixbuf" "atk" "libXrender")
|
||||||
|
#:env (append path-flags
|
||||||
|
ld-library-path-flags))]
|
||||||
|
[("freefont")
|
||||||
|
(config #:configure-exe (find-executable-path "echo")
|
||||||
|
#:make (~a "cp " fonts-conf " .")
|
||||||
|
#:make-install (~a "rm -rf " dest "/lib/fonts"
|
||||||
|
" && mkdir -p " dest "/lib/fonts"
|
||||||
|
" && cp fonts.conf"
|
||||||
|
" FreeMono.ttf"
|
||||||
|
" FreeSans.ttf"
|
||||||
|
" FreeSerif.ttf"
|
||||||
|
" " dest "/lib/fonts"))]
|
||||||
[("libffi") (config)]
|
[("libffi") (config)]
|
||||||
[("zlib")
|
[("zlib")
|
||||||
(windows-only)
|
(nonmac-only)
|
||||||
(config #:make (~a "make -f win32/Makefile.gcc"
|
(config #:make (if win?
|
||||||
" PREFIX=" win-prefix "-"
|
(~a "make -f win32/Makefile.gcc"
|
||||||
" INCLUDE_PATH=" dest "/include"
|
" PREFIX=" win-prefix "-"
|
||||||
" LIBRARY_PATH=" dest "/lib"
|
" INCLUDE_PATH=" dest "/include"
|
||||||
" BINARY_PATH=" dest "/bin"
|
" LIBRARY_PATH=" dest "/lib"
|
||||||
" LDFLAGS=-static-libgcc")
|
" BINARY_PATH=" dest "/bin"
|
||||||
#:fixup (~a "cp zlib1.dll " dest "/bin && cp libz.dll.a " dest "/lib"))]
|
" LDFLAGS=-static-libgcc")
|
||||||
|
"make")
|
||||||
|
#:fixup (and win?
|
||||||
|
(~a "cp zlib1.dll " dest "/bin && cp libz.dll.a " dest "/lib")))]
|
||||||
[("glib") (config #:depends (append '("libffi" "gettext")
|
[("glib") (config #:depends (append '("libffi" "gettext")
|
||||||
(if win?
|
(if win? '("libiconv") '()))
|
||||||
'("libiconv")
|
|
||||||
'()))
|
|
||||||
#:env (append path-flags
|
#:env (append path-flags
|
||||||
;; Disable Valgrind support, which particularly
|
;; Disable Valgrind support, which particularly
|
||||||
;; goes wrong for 64-bit Windows builds.
|
;; goes wrong for 64-bit Windows builds.
|
||||||
|
@ -306,17 +388,29 @@
|
||||||
#:patches (if (and win? m32?)
|
#:patches (if (and win? m32?)
|
||||||
(list rand-patch)
|
(list rand-patch)
|
||||||
null))]
|
null))]
|
||||||
[("libpng") (config #:depends (if win? '("zlib") '())
|
[("libpng") (config #:depends (if (or win? linux?) '("zlib") '())
|
||||||
#:env (if win? path-flags null))]
|
#:env (if (or linux? win?)
|
||||||
|
(append
|
||||||
|
path-flags
|
||||||
|
(if linux?
|
||||||
|
(list (list "LDFLAGS" (~a "-Wl,-rpath," dest "/lib")))
|
||||||
|
null))
|
||||||
|
null))]
|
||||||
[("freetype") (config #:depends '("libpng"))]
|
[("freetype") (config #:depends '("libpng"))]
|
||||||
[("fontconfig") (config #:depends '("expat" "freetype")
|
[("fontconfig") (config #:depends '("expat" "freetype")
|
||||||
#:configure '("--disable-docs"))]
|
#:configure '("--disable-docs")
|
||||||
|
#:patches (list fcdirs-patch))]
|
||||||
[("pixman") (config #:patches (if (and win? (not m32?))
|
[("pixman") (config #:patches (if (and win? (not m32?))
|
||||||
(list noforceinline-patch)
|
(list noforceinline-patch)
|
||||||
null))]
|
null))]
|
||||||
[("cairo") (config #:depends '("pixman" "fontconfig" "freetype" "libpng")
|
[("cairo") (config #:depends (append '("pixman" "fontconfig" "freetype" "libpng")
|
||||||
|
(if linux?
|
||||||
|
'("libX11" "libXrender")
|
||||||
|
null))
|
||||||
#:env path-flags
|
#:env path-flags
|
||||||
#:configure '("--enable-xlib=no")
|
#:configure (if (not linux?)
|
||||||
|
'("--enable-xlib=no")
|
||||||
|
null)
|
||||||
#:patches (list cairo-coretext-patch
|
#:patches (list cairo-coretext-patch
|
||||||
courier-new-patch
|
courier-new-patch
|
||||||
win32cairofallback-patch))]
|
win32cairofallback-patch))]
|
||||||
|
@ -328,9 +422,12 @@
|
||||||
#:env cxx-env)]
|
#:env cxx-env)]
|
||||||
[("pango") (config #:depends '("cairo" "harfbuzz")
|
[("pango") (config #:depends '("cairo" "harfbuzz")
|
||||||
#:env (if win? path-flags null)
|
#:env (if win? path-flags null)
|
||||||
#:configure '("--without-x"
|
#:configure (append
|
||||||
"--with-included-modules=yes"
|
(if (not linux?)
|
||||||
"--with-dynamic-modules=no")
|
'("--without-x")
|
||||||
|
null)
|
||||||
|
'("--with-included-modules=yes"
|
||||||
|
"--with-dynamic-modules=no"))
|
||||||
#:patches (list coretext-patch
|
#:patches (list coretext-patch
|
||||||
win32text-patch))]
|
win32text-patch))]
|
||||||
[("gmp") (config #:patches (if gcc-4.0? (list gmp-weak-patch) null)
|
[("gmp") (config #:patches (if gcc-4.0? (list gmp-weak-patch) null)
|
||||||
|
@ -352,8 +449,8 @@
|
||||||
libtool64-link-patch))
|
libtool64-link-patch))
|
||||||
null)
|
null)
|
||||||
#:configure '("--enable-zlib"
|
#:configure '("--enable-zlib"
|
||||||
"--disable-splash-output"
|
"--disable-splash-output"
|
||||||
"--disable-poppler-cpp"))]
|
"--disable-poppler-cpp"))]
|
||||||
[else (error 'build "unrecognized package: ~a" package-name)]))
|
[else (error 'build "unrecognized package: ~a" package-name)]))
|
||||||
|
|
||||||
;; --------------------------------------------------
|
;; --------------------------------------------------
|
||||||
|
@ -397,7 +494,7 @@
|
||||||
(for ([p (in-list post-patches)])
|
(for ([p (in-list post-patches)])
|
||||||
(system/show (~a "patch -p2 < " p))))
|
(system/show (~a "patch -p2 < " p))))
|
||||||
(system/show make-command)
|
(system/show make-command)
|
||||||
(system/show (~a make-command " install"))
|
(system/show make-install-command)
|
||||||
(when fixup
|
(when fixup
|
||||||
(system/show fixup))
|
(system/show fixup))
|
||||||
(stamp package-name)
|
(stamp package-name)
|
||||||
|
|
|
@ -2,23 +2,25 @@
|
||||||
(require racket/cmdline)
|
(require racket/cmdline)
|
||||||
|
|
||||||
(provide build-command-line
|
(provide build-command-line
|
||||||
m32? win? mac? ppc?
|
m32? win? mac? linux? ppc?
|
||||||
archives-dir)
|
archives-dirs)
|
||||||
|
|
||||||
(define m32? 'unknown)
|
(define m32? 'unknown)
|
||||||
(define win? 'unknown)
|
(define win? 'unknown)
|
||||||
|
(define linux? #f)
|
||||||
(define mac? 'unknown)
|
(define mac? 'unknown)
|
||||||
(define ppc? #f)
|
(define ppc? #f)
|
||||||
|
|
||||||
(define archives-dir (current-directory))
|
(define archives-dirs #f)
|
||||||
|
|
||||||
(define-syntax-rule (build-command-line c ...)
|
(define-syntax-rule (build-command-line c ...)
|
||||||
(let ()
|
(let ()
|
||||||
(define m32? 'unknown)
|
(define m32? 'unknown)
|
||||||
(define win? 'unknown)
|
(define win? 'unknown)
|
||||||
(define mac? 'unknown)
|
(define mac? 'unknown)
|
||||||
|
(define linux? #f)
|
||||||
(define ppc? (regexp-match? #rx"ppc" (system-library-subpath #f)))
|
(define ppc? (regexp-match? #rx"ppc" (system-library-subpath #f)))
|
||||||
(define archives-dir (current-directory))
|
(define archives-dirs #f)
|
||||||
(begin0
|
(begin0
|
||||||
(command-line
|
(command-line
|
||||||
#:once-any
|
#:once-any
|
||||||
|
@ -26,6 +28,9 @@
|
||||||
(set! win? #t)]
|
(set! win? #t)]
|
||||||
[("--mac") "build for/on Mac OS X"
|
[("--mac") "build for/on Mac OS X"
|
||||||
(set! win? #f)]
|
(set! win? #f)]
|
||||||
|
[("--linux") "build for/on Linux"
|
||||||
|
(set! win? #f)
|
||||||
|
(set! linux? #t)]
|
||||||
#:once-any
|
#:once-any
|
||||||
[("--m32") "build 32-bit mode x86/PowerPC"
|
[("--m32") "build 32-bit mode x86/PowerPC"
|
||||||
(set! m32? #t)]
|
(set! m32? #t)]
|
||||||
|
@ -34,22 +39,26 @@
|
||||||
[("--mppc") "build 32-bit mode PowerPC"
|
[("--mppc") "build 32-bit mode PowerPC"
|
||||||
(set! m32? #t)
|
(set! m32? #t)
|
||||||
(set! ppc? #t)]
|
(set! ppc? #t)]
|
||||||
#:once-each
|
#:multi
|
||||||
[("--archives") dir "Find archives in <dir>"
|
[("--archives") dir "Find archives in <dir>"
|
||||||
(set! archives-dir dir)]
|
(set! archives-dirs (cons dir (or archives-dirs null)))]
|
||||||
|
#:once-each
|
||||||
c ...)
|
c ...)
|
||||||
(when (eq? win? 'unknown)
|
(when (eq? win? 'unknown)
|
||||||
(error 'build "please pick `--win` or `--mac`"))
|
(error 'build "please pick `--win`, `--mac`, or `--linux`"))
|
||||||
(when (eq? m32? 'unknown)
|
(when (eq? m32? 'unknown)
|
||||||
(error 'build "please pick `--m32` or `--m64`"))
|
(error 'build "please pick `--m32` or `--m64`"))
|
||||||
(when (and ppc? (not m32?))
|
(when (and ppc? (not m32?))
|
||||||
(error 'build "cannot use `--m64` on PowerPC"))
|
(error 'build "cannot use `--m64` on PowerPC"))
|
||||||
(set! mac? (not win?))
|
(set! mac? (not (or win? linux?)))
|
||||||
(install! m32? win? mac? (and mac? ppc?) archives-dir))))
|
(install! m32? win? mac? linux? (and mac? ppc?)
|
||||||
|
(reverse (or archives-dirs
|
||||||
|
(list (current-directory))))))))
|
||||||
|
|
||||||
(define (install! -m32? -win? -mac? -ppc? -archives-dir)
|
(define (install! -m32? -win? -mac? -linux? -ppc? -archives-dirs)
|
||||||
(set! m32? -m32?)
|
(set! m32? -m32?)
|
||||||
(set! win? -win?)
|
(set! win? -win?)
|
||||||
(set! mac? -mac?)
|
(set! mac? -mac?)
|
||||||
|
(set! linux? -linux?)
|
||||||
(set! ppc? -ppc?)
|
(set! ppc? -ppc?)
|
||||||
(set! archives-dir -archives-dir))
|
(set! archives-dirs -archives-dirs))
|
||||||
|
|
|
@ -34,15 +34,39 @@
|
||||||
'("libiconv-2"
|
'("libiconv-2"
|
||||||
"libeay32"
|
"libeay32"
|
||||||
"ssleay32"
|
"ssleay32"
|
||||||
|
"sqlite3"
|
||||||
"longdouble"
|
"longdouble"
|
||||||
"zlib1"
|
"zlib1"
|
||||||
"libpangowin32-1.0.0"))
|
"libpangowin32-1.0.0"))
|
||||||
|
|
||||||
|
(define linux-libs
|
||||||
|
(append
|
||||||
|
'("libXau.6"
|
||||||
|
"libxcb-shm.0"
|
||||||
|
"libxcb-render.0"
|
||||||
|
"libxcb.1"
|
||||||
|
"libX11.6"
|
||||||
|
"libXext.6"
|
||||||
|
"libXrender.1"
|
||||||
|
"fonts")
|
||||||
|
'("libcrypto.1.0.0"
|
||||||
|
"libssl.1.0.0"
|
||||||
|
"libz.1"
|
||||||
|
"libsqlite3.0")
|
||||||
|
'("libgtk-x11-2.0.0"
|
||||||
|
"libgdk-x11-2.0.0"
|
||||||
|
"libatk-1.0.0"
|
||||||
|
"libgdk_pixbuf-2.0.0")))
|
||||||
|
(define linux-remove-libs
|
||||||
|
'("libintl.8"))
|
||||||
|
|
||||||
(define package-mapping
|
(define package-mapping
|
||||||
`(["draw" ; pkg name
|
`(["draw" ; pkg name
|
||||||
"-2" ; pkg suffix (increment after "-" when library versions change)
|
"-2" ; pkg suffix (increment after "-" when library versions change)
|
||||||
"racket/draw" ; subdir
|
"racket/draw" ; subdir
|
||||||
"" ; extra for "LICENSE.txt"
|
"" ; extra for "LICENSE.txt"
|
||||||
|
#t ; dynamic libraries (as opposed to shared files)
|
||||||
|
#f ; for-pkg name (e.g., "base"), of #f if the same as the pkg name
|
||||||
(["libffi" "libffi - Copyright (c) 1996-2014 Anthony Green, Red Hat, Inc and others."]
|
(["libffi" "libffi - Copyright (c) 1996-2014 Anthony Green, Red Hat, Inc and others."]
|
||||||
["libglib" "GLib is released under the GNU Library General Public License (GNU LGPL)."]
|
["libglib" "GLib is released under the GNU Library General Public License (GNU LGPL)."]
|
||||||
"libgio"
|
"libgio"
|
||||||
|
@ -68,16 +92,22 @@
|
||||||
["libpixman" "Pixman is relased under a MIT license."]
|
["libpixman" "Pixman is relased under a MIT license."]
|
||||||
["libpng" "Libpng is released under the libpng license."]
|
["libpng" "Libpng is released under the libpng license."]
|
||||||
["libjpeg" "This software is based in part on the work of the Independent JPEG Group."]
|
["libjpeg" "This software is based in part on the work of the Independent JPEG Group."]
|
||||||
["zlib1" "zlib is by Jean-loup Gailly and Mark Adler."])]
|
["zlib1" "zlib is by Jean-loup Gailly and Mark Adler."]
|
||||||
|
["libz" "zlib is by Jean-loup Gailly and Mark Adler."])]
|
||||||
["racket"
|
["racket"
|
||||||
"-2"
|
"-2"
|
||||||
"racket"
|
"racket"
|
||||||
""
|
""
|
||||||
|
#t
|
||||||
|
#f
|
||||||
(["libeay32" ,(~a "This product includes software developed by the OpenSSL Project for\n"
|
(["libeay32" ,(~a "This product includes software developed by the OpenSSL Project for\n"
|
||||||
"use in the OpenSSL Toolkit (http://www.openssl.org/).\n"
|
"use in the OpenSSL Toolkit (http://www.openssl.org/).\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Eric Young is the author of libeay and ssleay.")]
|
"Eric Young is the author of libeay and ssleay.")]
|
||||||
"ssleay32"
|
"ssleay32"
|
||||||
|
["libssl" ,(~a "This product includes software developed by the OpenSSL Project for\n"
|
||||||
|
"use in the OpenSSL Toolkit (http://www.openssl.org/).\n")]
|
||||||
|
"libcrypto"
|
||||||
["libiconv-2" "libiconv is released under the GNU Lesser General Public License (GNU LGPL)."]
|
["libiconv-2" "libiconv is released under the GNU Lesser General Public License (GNU LGPL)."]
|
||||||
["longdouble" ,(~a "The source to longdouble is included with the Racket source code,\n"
|
["longdouble" ,(~a "The source to longdouble is included with the Racket source code,\n"
|
||||||
"which is available from\n"
|
"which is available from\n"
|
||||||
|
@ -86,17 +116,72 @@
|
||||||
""
|
""
|
||||||
"math"
|
"math"
|
||||||
""
|
""
|
||||||
|
#t
|
||||||
|
#f
|
||||||
(["libgmp" "GNU MP is released under the GNU Lesser General Public License (GNU LGPL)."]
|
(["libgmp" "GNU MP is released under the GNU Lesser General Public License (GNU LGPL)."]
|
||||||
["libmpfr" "MPFR is released under the GNU Lesser General Public License (GNU LGPL)."])]
|
["libmpfr" "MPFR is released under the GNU Lesser General Public License (GNU LGPL)."])]
|
||||||
|
|
||||||
|
["draw-x11"
|
||||||
|
""
|
||||||
|
"racket/draw/x11"
|
||||||
|
""
|
||||||
|
#t
|
||||||
|
"draw"
|
||||||
|
(["libX11.6" "libX11 is released under the X.Org Foundation license."]
|
||||||
|
["libXau.6" "libXau - Copyright 1988, 1993, 1994, 1998 The Open Group"]
|
||||||
|
["libxcb-shm.0" "libxcb - Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett."]
|
||||||
|
"libxcb-render.0"
|
||||||
|
"libxcb.1"
|
||||||
|
["libXext.6" "libXext - Copyright 1986, 1987, 1988, 1989, 1994, 1998 The Open Group"]
|
||||||
|
["libXrender.1" "libXrender - Copyright © 2001,2003 Keith Packard"])]
|
||||||
|
["draw-ttf"
|
||||||
|
""
|
||||||
|
"racket/draw/ttf"
|
||||||
|
""
|
||||||
|
#f
|
||||||
|
"draw"
|
||||||
|
(["fonts" ,(~a "Fonts:\n"
|
||||||
|
" Copyright © 2000,2001,2002,2003,2004,2006,2007 Keith Packard\n"
|
||||||
|
" Copyright © 2005 Patrick Lam\n"
|
||||||
|
" Copyright © 2009 Roozbeh Pournader\n"
|
||||||
|
" Copyright © 2008,2009 Red Hat, Inc.\n"
|
||||||
|
" Copyright © 2008 Danilo Šegan\n"
|
||||||
|
" Copyright © 2012 Google, Inc.")])]
|
||||||
|
|
||||||
|
["gui"
|
||||||
|
""
|
||||||
|
"racket/gui"
|
||||||
|
""
|
||||||
|
#t
|
||||||
|
#f
|
||||||
|
(["libgtk-x11-2.0.0" "GTK+ is released under the GNU Library General Public License (GNU LGPL)."]
|
||||||
|
["libatk-1.0.0" "ATK is released under the GNU Library General Public License (GNU LGPL)."]
|
||||||
|
"libgdk-x11-2.0.0"
|
||||||
|
"libgdk_pixbuf-2.0.0")]
|
||||||
|
|
||||||
|
["db"
|
||||||
|
""
|
||||||
|
"db"
|
||||||
|
""
|
||||||
|
#t
|
||||||
|
"base"
|
||||||
|
(["libsqlite3.0" "SQLite3 is in the public domain."]
|
||||||
|
["sqlite3" "SQLite3 is in the public domain."])]
|
||||||
|
|
||||||
["poppler"
|
["poppler"
|
||||||
""
|
""
|
||||||
"racket-poppler"
|
"racket-poppler"
|
||||||
""
|
""
|
||||||
|
#t
|
||||||
|
"racket-poppler"
|
||||||
(["libpoppler"
|
(["libpoppler"
|
||||||
;; Note: Poppler is GPL and *not* in the main Racket distribution (which is LGPL)
|
;; Note: Poppler is GPL and *not* in the main Racket distribution (which is LGPL)
|
||||||
"Poppler is released under the GNU General Public License (GNU GPL)."])]))
|
"Poppler is released under the GNU General Public License (GNU GPL)."])]))
|
||||||
|
|
||||||
(define (libs-of-pkg p) (list-ref p 4))
|
(define (libs-of-pkg p) (list-ref p 6))
|
||||||
|
|
||||||
|
(define (plain-path? p)
|
||||||
|
(equal? p "fonts"))
|
||||||
|
|
||||||
(define dest-dir
|
(define dest-dir
|
||||||
(build-command-line
|
(build-command-line
|
||||||
|
@ -125,7 +210,7 @@
|
||||||
(error 'install "cannot find package for library: ~e" lib))
|
(error 'install "cannot find package for library: ~e" lib))
|
||||||
(apply values pkg))
|
(apply values pkg))
|
||||||
|
|
||||||
(define (gen-info platform i-platform pkg pkg-name subdir libs lics lic-end)
|
(define (gen-info platform i-platform for-pkg pkg-name subdir libs lics lic-end lib?)
|
||||||
(define dest (build-path dest-dir pkg-name))
|
(define dest (build-path dest-dir pkg-name))
|
||||||
(define lib-path (build-path dest subdir "info.rkt"))
|
(define lib-path (build-path dest subdir "info.rkt"))
|
||||||
(define top-path (build-path dest "info.rkt"))
|
(define top-path (build-path dest "info.rkt"))
|
||||||
|
@ -134,13 +219,23 @@
|
||||||
(newline o)
|
(newline o)
|
||||||
(pretty-write `(define install-platform ,i-platform) o)
|
(pretty-write `(define install-platform ,i-platform) o)
|
||||||
(newline o)
|
(newline o)
|
||||||
(pretty-write `(define copy-foreign-libs (quote ,libs)) o))
|
(pretty-write `(define ,(if lib?
|
||||||
|
'copy-foreign-libs
|
||||||
|
'copy-shared-files)
|
||||||
|
(quote ,libs))
|
||||||
|
o)
|
||||||
|
(define dirs (filter (lambda (lib)
|
||||||
|
(directory-exists? (build-path dest subdir lib)))
|
||||||
|
libs))
|
||||||
|
(unless (null? dirs)
|
||||||
|
(newline o)
|
||||||
|
(pretty-write `(define compile-omit-paths (quote ,dirs)) o)))
|
||||||
(define (write-pkg o)
|
(define (write-pkg o)
|
||||||
(newline o)
|
(newline o)
|
||||||
(pretty-write `(define collection 'multi) o)
|
(pretty-write `(define collection 'multi) o)
|
||||||
(pretty-write `(define deps '("base")) o)
|
(pretty-write `(define deps '("base")) o)
|
||||||
(newline o)
|
(newline o)
|
||||||
(pretty-write `(define pkg-desc ,(format "native libraries for \"~a\" package" pkg)) o)
|
(pretty-write `(define pkg-desc ,(format "native libraries for \"~a\" package" for-pkg)) o)
|
||||||
(newline o)
|
(newline o)
|
||||||
(pretty-write `(define pkg-authors '(mflatt)) o))
|
(pretty-write `(define pkg-authors '(mflatt)) o))
|
||||||
(unless same?
|
(unless same?
|
||||||
|
@ -187,16 +282,25 @@
|
||||||
(define pkgs-lic (make-hash))
|
(define pkgs-lic (make-hash))
|
||||||
|
|
||||||
(define (install lib)
|
(define (install lib)
|
||||||
(define p (format "~a.~a" lib so))
|
(define p (cond
|
||||||
|
[(plain-path? lib) lib]
|
||||||
|
[(procedure? so) (so lib)]
|
||||||
|
[else (format "~a.~a" lib so)]))
|
||||||
(define-values (pkg suffix subdir lic) (find-pkg lib))
|
(define-values (pkg suffix subdir lic) (find-pkg lib))
|
||||||
(define dir (build-path dest-dir
|
(define dir (build-path dest-dir
|
||||||
(~a pkg "-" platform suffix)
|
(~a pkg "-" platform suffix)
|
||||||
subdir))
|
subdir))
|
||||||
(define dest (build-path dir p))
|
(define dest (build-path dir p))
|
||||||
(make-directory* dir)
|
(make-directory* dir)
|
||||||
(when (file-exists? dest) (delete-file dest))
|
(cond
|
||||||
(copy-file (build-path from p) dest)
|
[(file-exists? dest) (delete-file dest)]
|
||||||
(fixup p dest)
|
[(directory-exists? dest) (delete-directory/files dest)])
|
||||||
|
(define src (build-path from p))
|
||||||
|
(if (directory-exists? src)
|
||||||
|
(copy-directory/files src dest)
|
||||||
|
(copy-file src dest))
|
||||||
|
(unless (plain-path? p)
|
||||||
|
(fixup p dest))
|
||||||
|
|
||||||
(hash-update! pkgs pkg (lambda (l) (cons p l)) '())
|
(hash-update! pkgs pkg (lambda (l) (cons p l)) '())
|
||||||
(when lic
|
(when lic
|
||||||
|
@ -208,12 +312,13 @@
|
||||||
(define a (assoc pkg package-mapping))
|
(define a (assoc pkg package-mapping))
|
||||||
(gen-info platform
|
(gen-info platform
|
||||||
i-platform
|
i-platform
|
||||||
pkg
|
(or (list-ref a 5) pkg)
|
||||||
(~a pkg "-" platform (cadr a))
|
(~a pkg "-" platform (list-ref a 1))
|
||||||
(caddr a)
|
(list-ref a 2)
|
||||||
libs
|
libs
|
||||||
(reverse (hash-ref pkgs-lic pkg null))
|
(reverse (hash-ref pkgs-lic pkg null))
|
||||||
(list-ref a 3))))
|
(list-ref a 3)
|
||||||
|
(list-ref a 4))))
|
||||||
|
|
||||||
(define (install-mac)
|
(define (install-mac)
|
||||||
(define (fixup p p-new)
|
(define (fixup p p-new)
|
||||||
|
@ -263,6 +368,39 @@
|
||||||
"-")
|
"-")
|
||||||
".")))))
|
".")))))
|
||||||
|
|
||||||
|
(define (install-linux)
|
||||||
|
(define (fixup p p-new)
|
||||||
|
(printf "Fixing ~s\n" p-new)
|
||||||
|
(file-or-directory-permissions p-new #o755)
|
||||||
|
(unless (system (format "strip -S ~a" p-new))
|
||||||
|
(error "strip failed"))
|
||||||
|
;; Might fail if there are no external references:
|
||||||
|
(system (format "chrpath -r '$ORIGIN' ~a" p-new)))
|
||||||
|
|
||||||
|
(define platform (~a (if m32?
|
||||||
|
"i386"
|
||||||
|
"x86_64")
|
||||||
|
"-linux-natipkg"))
|
||||||
|
|
||||||
|
(define (add-so orig-p)
|
||||||
|
(let loop ([p orig-p] [suffix ""])
|
||||||
|
(define p-so (string-append p ".so" suffix))
|
||||||
|
(cond
|
||||||
|
[(file-exists? (build-path from p-so))
|
||||||
|
p-so]
|
||||||
|
[else
|
||||||
|
(define m (regexp-match #rx"^(.*)[.](.*)$" p))
|
||||||
|
(cond
|
||||||
|
[m
|
||||||
|
(loop (cadr m) (string-append "." (caddr m) suffix))]
|
||||||
|
[else
|
||||||
|
(error 'add-so "not found: ~s" orig-p)])])))
|
||||||
|
|
||||||
|
(install platform platform add-so fixup (append (remove* linux-remove-libs
|
||||||
|
libs)
|
||||||
|
linux-libs)))
|
||||||
|
|
||||||
(cond
|
(cond
|
||||||
[win? (install-win)]
|
[win? (install-win)]
|
||||||
|
[linux? (install-linux)]
|
||||||
[else (install-mac)])
|
[else (install-mac)])
|
||||||
|
|
146
racket/src/native-libs/patches/fcdirs.patch
Normal file
146
racket/src/native-libs/patches/fcdirs.patch
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
diff -u -r old/fontconfig-2.11.1/fontconfig/fontconfig.h new/fontconfig-2.11.1/fontconfig/fontconfig.h
|
||||||
|
--- old/fontconfig-2.11.1/fontconfig/fontconfig.h 2014-10-07 06:54:53.000000000 -0600
|
||||||
|
+++ new/fontconfig-2.11.1/fontconfig/fontconfig.h 2014-10-07 17:44:20.000000000 -0600
|
||||||
|
@@ -342,6 +342,9 @@
|
||||||
|
FcCacheCreateTagFile (const FcConfig *config);
|
||||||
|
|
||||||
|
/* fccfg.c */
|
||||||
|
+FcPublic void
|
||||||
|
+FcSetConfigDir (const FcChar8 *config_dir);
|
||||||
|
+
|
||||||
|
FcPublic FcChar8 *
|
||||||
|
FcConfigHome (void);
|
||||||
|
|
||||||
|
@@ -582,6 +585,9 @@
|
||||||
|
FcPublic void
|
||||||
|
FcFini (void);
|
||||||
|
|
||||||
|
+FcPublic void
|
||||||
|
+FcSetFallbackDirs (const FcChar8 *font_dir, const FcChar8 *cache_dir);
|
||||||
|
+
|
||||||
|
FcPublic int
|
||||||
|
FcGetVersion (void);
|
||||||
|
|
||||||
|
Only in new/fontconfig-2.11.1/fontconfig: fontconfig.h~
|
||||||
|
diff -u -r old/fontconfig-2.11.1/src/fccfg.c new/fontconfig-2.11.1/src/fccfg.c
|
||||||
|
--- old/fontconfig-2.11.1/src/fccfg.c 2014-10-07 06:54:53.000000000 -0600
|
||||||
|
+++ new/fontconfig-2.11.1/src/fccfg.c 2014-10-07 17:44:11.000000000 -0600
|
||||||
|
@@ -1834,6 +1834,22 @@
|
||||||
|
#define FONTCONFIG_FILE "fonts.conf"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+static const FcChar8 * fc_config_dir = NULL;
|
||||||
|
+
|
||||||
|
+void
|
||||||
|
+FcSetConfigDir (const FcChar8 *config_dir)
|
||||||
|
+{
|
||||||
|
+ if (!fc_config_dir) {
|
||||||
|
+ fc_config_dir = (const FcChar8 *)strdup((const char *)config_dir);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+FcChar8 *
|
||||||
|
+FcConfigDir (void)
|
||||||
|
+{
|
||||||
|
+ return fc_config_dir ? (FcChar8 *)fc_config_dir : (FcChar8 *)FONTCONFIG_PATH;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static FcChar8 *
|
||||||
|
FcConfigFileExists (const FcChar8 *dir, const FcChar8 *file)
|
||||||
|
{
|
||||||
|
@@ -1935,7 +1951,7 @@
|
||||||
|
strcat ((char *) fontconfig_path, "\\fonts");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
- dir = (FcChar8 *) FONTCONFIG_PATH;
|
||||||
|
+ dir = (fc_config_dir ? (FcChar8 *)fc_config_dir : (FcChar8 *)FONTCONFIG_PATH);
|
||||||
|
path[i] = malloc (strlen ((char *) dir) + 1);
|
||||||
|
if (!path[i])
|
||||||
|
goto bail1;
|
||||||
|
Only in new/fontconfig-2.11.1/src: fccfg.c~
|
||||||
|
diff -u -r old/fontconfig-2.11.1/src/fcinit.c new/fontconfig-2.11.1/src/fcinit.c
|
||||||
|
--- old/fontconfig-2.11.1/src/fcinit.c 2014-10-07 06:54:53.000000000 -0600
|
||||||
|
+++ new/fontconfig-2.11.1/src/fcinit.c 2014-10-07 17:43:44.000000000 -0600
|
||||||
|
@@ -35,6 +35,26 @@
|
||||||
|
#pragma message("To suppress these warnings, define FC_NO_MT.")
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+static const FcChar8 * fc_default_fonts = NULL;
|
||||||
|
+static const FcChar8 * fc_cachedir = NULL;
|
||||||
|
+
|
||||||
|
+void
|
||||||
|
+FcSetFallbackDirs (const FcChar8 *font_dir, const FcChar8 *cache_dir)
|
||||||
|
+{
|
||||||
|
+ if (!fc_default_fonts) {
|
||||||
|
+ fc_default_fonts = (const FcChar8 *)strdup((const char *)font_dir);
|
||||||
|
+ fc_cachedir = (const FcChar8 *)strdup((const char *)cache_dir);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+FcChar8 *
|
||||||
|
+FcFallbackCacheDir (void)
|
||||||
|
+{
|
||||||
|
+ return (fc_cachedir
|
||||||
|
+ ? fc_cachedir
|
||||||
|
+ : (const FcChar8 *)FC_CACHEDIR);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static FcConfig *
|
||||||
|
FcInitFallbackConfig (void)
|
||||||
|
{
|
||||||
|
@@ -43,9 +63,13 @@
|
||||||
|
config = FcConfigCreate ();
|
||||||
|
if (!config)
|
||||||
|
goto bail0;
|
||||||
|
- if (!FcConfigAddDir (config, (FcChar8 *) FC_DEFAULT_FONTS))
|
||||||
|
+ if (!FcConfigAddDir (config, (fc_default_fonts
|
||||||
|
+ ? fc_default_fonts
|
||||||
|
+ : (const FcChar8 *)FC_DEFAULT_FONTS)))
|
||||||
|
goto bail1;
|
||||||
|
- if (!FcConfigAddCacheDir (config, (FcChar8 *) FC_CACHEDIR))
|
||||||
|
+ if (!FcConfigAddCacheDir (config, (fc_cachedir
|
||||||
|
+ ? fc_cachedir
|
||||||
|
+ : (const FcChar8 *)FC_CACHEDIR)))
|
||||||
|
goto bail1;
|
||||||
|
return config;
|
||||||
|
|
||||||
|
Only in new/fontconfig-2.11.1/src: fcinit.c~
|
||||||
|
diff -u -r old/fontconfig-2.11.1/src/fcint.h new/fontconfig-2.11.1/src/fcint.h
|
||||||
|
--- old/fontconfig-2.11.1/src/fcint.h 2014-10-07 06:54:53.000000000 -0600
|
||||||
|
+++ new/fontconfig-2.11.1/src/fcint.h 2014-10-07 09:42:02.000000000 -0600
|
||||||
|
@@ -605,6 +605,9 @@
|
||||||
|
FcPrivate FcChar8 *
|
||||||
|
FcConfigXdgDataHome (void);
|
||||||
|
|
||||||
|
+FcPrivate FcChar8 *
|
||||||
|
+FcConfigDir (void);
|
||||||
|
+
|
||||||
|
FcPrivate FcExpr *
|
||||||
|
FcConfigAllocExpr (FcConfig *config);
|
||||||
|
|
||||||
|
@@ -806,6 +809,9 @@
|
||||||
|
FcPrivate void
|
||||||
|
FcDefaultFini (void);
|
||||||
|
|
||||||
|
+FcPrivate FcChar8 *
|
||||||
|
+FcFallbackCacheDir (void);
|
||||||
|
+
|
||||||
|
/* fcdir.c */
|
||||||
|
|
||||||
|
FcPrivate FcBool
|
||||||
|
Only in new/fontconfig-2.11.1/src: fcint.h~
|
||||||
|
diff -u -r old/fontconfig-2.11.1/src/fcxml.c new/fontconfig-2.11.1/src/fcxml.c
|
||||||
|
--- old/fontconfig-2.11.1/src/fcxml.c 2014-10-07 06:54:53.000000000 -0600
|
||||||
|
+++ new/fontconfig-2.11.1/src/fcxml.c 2014-10-07 09:42:42.000000000 -0600
|
||||||
|
@@ -1997,6 +1997,10 @@
|
||||||
|
attr = FcConfigGetAttribute (parse, "prefix");
|
||||||
|
if (attr && FcStrCmp (attr, (const FcChar8 *)"xdg") == 0)
|
||||||
|
prefix = FcConfigXdgDataHome ();
|
||||||
|
+ if (attr && FcStrCmp (attr, (const FcChar8 *)"cfg") == 0)
|
||||||
|
+ prefix = FcConfigDir ();
|
||||||
|
+ if (attr && FcStrCmp (attr, (const FcChar8 *)"cache") == 0)
|
||||||
|
+ prefix = FcFallbackCacheDir ();
|
||||||
|
data = FcStrBufDoneStatic (&parse->pstack->str);
|
||||||
|
if (!data)
|
||||||
|
{
|
||||||
|
Only in new/fontconfig-2.11.1/src: fcxml.c~
|
111
racket/src/native-libs/patches/fonts.conf
Normal file
111
racket/src/native-libs/patches/fonts.conf
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||||
|
<!--
|
||||||
|
This configuration is used for a -natipkg install to provide a minimal
|
||||||
|
set of fonts.
|
||||||
|
-->
|
||||||
|
<fontconfig>
|
||||||
|
|
||||||
|
<!-- Use config directory, as set via FcSetConfigDir(), for fonts -->
|
||||||
|
|
||||||
|
<dir prefix="cfg">.</dir>
|
||||||
|
|
||||||
|
<alias>
|
||||||
|
<family>serif</family>
|
||||||
|
<prefer>
|
||||||
|
<family>FreeSerif</family>
|
||||||
|
</prefer>
|
||||||
|
</alias>
|
||||||
|
<alias>
|
||||||
|
<family>sans</family>
|
||||||
|
<prefer>
|
||||||
|
<family>FreeSans</family>
|
||||||
|
</prefer>
|
||||||
|
</alias>
|
||||||
|
<alias>
|
||||||
|
<family>monospace</family>
|
||||||
|
<prefer>
|
||||||
|
<family>FreeMono</family>
|
||||||
|
</prefer>
|
||||||
|
</alias>
|
||||||
|
|
||||||
|
<!-- Use default cache dir set via FcSetFallbackDirs() -->
|
||||||
|
|
||||||
|
<cachedir prefix="cache">.</cachedir>
|
||||||
|
|
||||||
|
<config>
|
||||||
|
<!--
|
||||||
|
These are the default Unicode chars that are expected to be blank
|
||||||
|
in fonts. All other blank chars are assumed to be broken and
|
||||||
|
won't appear in the resulting charsets
|
||||||
|
-->
|
||||||
|
<blank>
|
||||||
|
<int>0x0020</int> <!-- SPACE -->
|
||||||
|
<int>0x00A0</int> <!-- NO-BREAK SPACE -->
|
||||||
|
<int>0x00AD</int> <!-- SOFT HYPHEN -->
|
||||||
|
<int>0x034F</int> <!-- COMBINING GRAPHEME JOINER -->
|
||||||
|
<int>0x0600</int> <!-- ARABIC NUMBER SIGN -->
|
||||||
|
<int>0x0601</int> <!-- ARABIC SIGN SANAH -->
|
||||||
|
<int>0x0602</int> <!-- ARABIC FOOTNOTE MARKER -->
|
||||||
|
<int>0x0603</int> <!-- ARABIC SIGN SAFHA -->
|
||||||
|
<int>0x06DD</int> <!-- ARABIC END OF AYAH -->
|
||||||
|
<int>0x070F</int> <!-- SYRIAC ABBREVIATION MARK -->
|
||||||
|
<int>0x115F</int> <!-- HANGUL CHOSEONG FILLER -->
|
||||||
|
<int>0x1160</int> <!-- HANGUL JUNGSEONG FILLER -->
|
||||||
|
<int>0x1680</int> <!-- OGHAM SPACE MARK -->
|
||||||
|
<int>0x17B4</int> <!-- KHMER VOWEL INHERENT AQ -->
|
||||||
|
<int>0x17B5</int> <!-- KHMER VOWEL INHERENT AA -->
|
||||||
|
<int>0x180E</int> <!-- MONGOLIAN VOWEL SEPARATOR -->
|
||||||
|
<int>0x2000</int> <!-- EN QUAD -->
|
||||||
|
<int>0x2001</int> <!-- EM QUAD -->
|
||||||
|
<int>0x2002</int> <!-- EN SPACE -->
|
||||||
|
<int>0x2003</int> <!-- EM SPACE -->
|
||||||
|
<int>0x2004</int> <!-- THREE-PER-EM SPACE -->
|
||||||
|
<int>0x2005</int> <!-- FOUR-PER-EM SPACE -->
|
||||||
|
<int>0x2006</int> <!-- SIX-PER-EM SPACE -->
|
||||||
|
<int>0x2007</int> <!-- FIGURE SPACE -->
|
||||||
|
<int>0x2008</int> <!-- PUNCTUATION SPACE -->
|
||||||
|
<int>0x2009</int> <!-- THIN SPACE -->
|
||||||
|
<int>0x200A</int> <!-- HAIR SPACE -->
|
||||||
|
<int>0x200B</int> <!-- ZERO WIDTH SPACE -->
|
||||||
|
<int>0x200C</int> <!-- ZERO WIDTH NON-JOINER -->
|
||||||
|
<int>0x200D</int> <!-- ZERO WIDTH JOINER -->
|
||||||
|
<int>0x200E</int> <!-- LEFT-TO-RIGHT MARK -->
|
||||||
|
<int>0x200F</int> <!-- RIGHT-TO-LEFT MARK -->
|
||||||
|
<int>0x2028</int> <!-- LINE SEPARATOR -->
|
||||||
|
<int>0x2029</int> <!-- PARAGRAPH SEPARATOR -->
|
||||||
|
<int>0x202A</int> <!-- LEFT-TO-RIGHT EMBEDDING -->
|
||||||
|
<int>0x202B</int> <!-- RIGHT-TO-LEFT EMBEDDING -->
|
||||||
|
<int>0x202C</int> <!-- POP DIRECTIONAL FORMATTING -->
|
||||||
|
<int>0x202D</int> <!-- LEFT-TO-RIGHT OVERRIDE -->
|
||||||
|
<int>0x202E</int> <!-- RIGHT-TO-LEFT OVERRIDE -->
|
||||||
|
<int>0x202F</int> <!-- NARROW NO-BREAK SPACE -->
|
||||||
|
<int>0x205F</int> <!-- MEDIUM MATHEMATICAL SPACE -->
|
||||||
|
<int>0x2060</int> <!-- WORD JOINER -->
|
||||||
|
<int>0x2061</int> <!-- FUNCTION APPLICATION -->
|
||||||
|
<int>0x2062</int> <!-- INVISIBLE TIMES -->
|
||||||
|
<int>0x2063</int> <!-- INVISIBLE SEPARATOR -->
|
||||||
|
<int>0x206A</int> <!-- INHIBIT SYMMETRIC SWAPPING -->
|
||||||
|
<int>0x206B</int> <!-- ACTIVATE SYMMETRIC SWAPPING -->
|
||||||
|
<int>0x206C</int> <!-- INHIBIT ARABIC FORM SHAPING -->
|
||||||
|
<int>0x206D</int> <!-- ACTIVATE ARABIC FORM SHAPING -->
|
||||||
|
<int>0x206E</int> <!-- NATIONAL DIGIT SHAPES -->
|
||||||
|
<int>0x206F</int> <!-- NOMINAL DIGIT SHAPES -->
|
||||||
|
<int>0x2800</int> <!-- BRAILLE PATTERN BLANK -->
|
||||||
|
<int>0x3000</int> <!-- IDEOGRAPHIC SPACE -->
|
||||||
|
<int>0x3164</int> <!-- HANGUL FILLER -->
|
||||||
|
<int>0xFEFF</int> <!-- ZERO WIDTH NO-BREAK SPACE -->
|
||||||
|
<int>0xFFA0</int> <!-- HALFWIDTH HANGUL FILLER -->
|
||||||
|
<int>0xFFF9</int> <!-- INTERLINEAR ANNOTATION ANCHOR -->
|
||||||
|
<int>0xFFFA</int> <!-- INTERLINEAR ANNOTATION SEPARATOR -->
|
||||||
|
<int>0xFFFB</int> <!-- INTERLINEAR ANNOTATION TERMINATOR -->
|
||||||
|
</blank>
|
||||||
|
<!--
|
||||||
|
Rescan configuration every 30 seconds when FcFontSetList is called
|
||||||
|
-->
|
||||||
|
<rescan>
|
||||||
|
<int>30</int>
|
||||||
|
</rescan>
|
||||||
|
</config>
|
||||||
|
|
||||||
|
</fontconfig>
|
|
@ -48,6 +48,8 @@ AC_ARG_ENABLE(pkgscope,[ --enable-pkgscope=<s> set `raco pkg' default: instal
|
||||||
|
|
||||||
AC_ARG_ENABLE(docs, [ --enable-docs build docs on install (enabled by default)], , enable_docs=yes)
|
AC_ARG_ENABLE(docs, [ --enable-docs build docs on install (enabled by default)], , enable_docs=yes)
|
||||||
AC_ARG_ENABLE(usersetup, [ --enable-usersetup setup user-specific files on install])
|
AC_ARG_ENABLE(usersetup, [ --enable-usersetup setup user-specific files on install])
|
||||||
|
AC_ARG_ENABLE(natipkg, [ --enable-natipkg add "-natipkg" to library subpath])
|
||||||
|
|
||||||
AC_ARG_ENABLE(shared, [ --enable-shared create shared libraries (ok, but not recommended)])
|
AC_ARG_ENABLE(shared, [ --enable-shared create shared libraries (ok, but not recommended)])
|
||||||
AC_ARG_ENABLE(dynlib, [ --enable-dynlib same as --enable-shared])
|
AC_ARG_ENABLE(dynlib, [ --enable-dynlib same as --enable-shared])
|
||||||
AC_ARG_ENABLE(lt, [ --enable-lt=<prog> use <prog> instead of libtool; disable to use bundled], LIBTOOLPROG="$enableval", enable_lt=default)
|
AC_ARG_ENABLE(lt, [ --enable-lt=<prog> use <prog> instead of libtool; disable to use bundled], LIBTOOLPROG="$enableval", enable_lt=default)
|
||||||
|
@ -276,6 +278,7 @@ show_explicitly_enabled "${enable_cgcdefault}" "CGC as default" "Note that this
|
||||||
|
|
||||||
show_explicitly_disabled "${enable_docs}" "Documentation build"
|
show_explicitly_disabled "${enable_docs}" "Documentation build"
|
||||||
show_explicitly_enabled "${enable_usersetup}" "User-specific setup on install"
|
show_explicitly_enabled "${enable_usersetup}" "User-specific setup on install"
|
||||||
|
show_explicitly_enabled "${enable_natipkg}" "Adding \"-natipkg\" suffix to library subpath"
|
||||||
|
|
||||||
show_explicitly_enabled "${enable_xonx}" "Unix style"
|
show_explicitly_enabled "${enable_xonx}" "Unix style"
|
||||||
show_explicitly_enabled "${enable_shared}" "Shared libraries"
|
show_explicitly_enabled "${enable_shared}" "Shared libraries"
|
||||||
|
@ -1463,6 +1466,12 @@ if test "${enable_docs}" = "no" ; then
|
||||||
INSTALL_SETUP_FLAGS="${INSTALL_SETUP_FLAGS} --no-docs"
|
INSTALL_SETUP_FLAGS="${INSTALL_SETUP_FLAGS} --no-docs"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
############## natipkg ################
|
||||||
|
|
||||||
|
if test "${enable_natipkg}" = "yes" ; then
|
||||||
|
AC_DEFINE(SPLS_SUFFIX,"-natipkg",[Library subpath suffix])
|
||||||
|
fi
|
||||||
|
|
||||||
############## Racket for Racket ################
|
############## Racket for Racket ################
|
||||||
|
|
||||||
if test "${enable_racket}" = "" ; then
|
if test "${enable_racket}" = "" ; then
|
||||||
|
|
|
@ -92,4 +92,7 @@ typedef unsigned long uintptr_t;
|
||||||
/* To disable extflonums when they would otherwise work: */
|
/* To disable extflonums when they would otherwise work: */
|
||||||
#undef MZ_NO_EXTFLONUMS
|
#undef MZ_NO_EXTFLONUMS
|
||||||
|
|
||||||
|
/* Library subpath */
|
||||||
|
#undef SPLS_SUFFIX
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -56,6 +56,10 @@
|
||||||
# include "schsys.h"
|
# include "schsys.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef SPLS_SUFFIX
|
||||||
|
# define SPLS_SUFFIX ""
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "schustr.inc"
|
#include "schustr.inc"
|
||||||
|
|
||||||
#ifdef USE_ICONV_DLL
|
#ifdef USE_ICONV_DLL
|
||||||
|
@ -420,8 +424,8 @@ scheme_init_string (Scheme_Env *env)
|
||||||
#endif
|
#endif
|
||||||
REGISTER_SO(platform_3m_path);
|
REGISTER_SO(platform_3m_path);
|
||||||
REGISTER_SO(platform_cgc_path);
|
REGISTER_SO(platform_cgc_path);
|
||||||
platform_cgc_path = scheme_make_path(SCHEME_PLATFORM_LIBRARY_SUBPATH);
|
platform_cgc_path = scheme_make_path(SCHEME_PLATFORM_LIBRARY_SUBPATH SPLS_SUFFIX);
|
||||||
platform_3m_path = scheme_make_path(SCHEME_PLATFORM_LIBRARY_SUBPATH MZ3M_SUBDIR);
|
platform_3m_path = scheme_make_path(SCHEME_PLATFORM_LIBRARY_SUBPATH SPLS_SUFFIX MZ3M_SUBDIR);
|
||||||
|
|
||||||
REGISTER_SO(putenv_str_table);
|
REGISTER_SO(putenv_str_table);
|
||||||
|
|
||||||
|
@ -2796,7 +2800,7 @@ static Scheme_Object *system_library_subpath(int argc, Scheme_Object *argv[])
|
||||||
|
|
||||||
const char *scheme_system_library_subpath()
|
const char *scheme_system_library_subpath()
|
||||||
{
|
{
|
||||||
return SCHEME_PLATFORM_LIBRARY_SUBPATH;
|
return SCHEME_PLATFORM_LIBRARY_SUBPATH SPLS_SUFFIX;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Our own strncpy - which would be really stupid, except the one for
|
/* Our own strncpy - which would be really stupid, except the one for
|
||||||
|
|
Loading…
Reference in New Issue
Block a user