diff -Nru retro-gtk-0.12.1/aclocal.m4 retro-gtk-0.14.0/aclocal.m4 --- retro-gtk-0.12.1/aclocal.m4 2017-09-30 10:47:38.000000000 +0000 +++ retro-gtk-0.14.0/aclocal.m4 1970-01-01 00:00:00.000000000 +0000 @@ -1,11288 +0,0 @@ -# generated automatically by aclocal 1.15 -*- Autoconf -*- - -# Copyright (C) 1996-2014 Free Software Foundation, Inc. - -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, -[m4_warning([this file was generated for autoconf 2.69. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically 'autoreconf'.])]) - -# Copyright (C) 1995-2002 Free Software Foundation, Inc. -# Copyright (C) 2001-2003,2004 Red Hat, Inc. -# -# This file is free software, distributed under the terms of the GNU -# General Public License. As a special exception to the GNU General -# Public License, this file may be distributed as part of a program -# that contains a configuration script generated by Autoconf, under -# the same distribution terms as the rest of that program. -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU Public License -# but which still want to provide support for the GNU gettext functionality. -# -# Macro to add for using GNU gettext. -# Ulrich Drepper , 1995, 1996 -# -# Modified to never use included libintl. -# Owen Taylor , 12/15/1998 -# -# Major rework to remove unused code -# Owen Taylor , 12/11/2002 -# -# Added better handling of ALL_LINGUAS from GNU gettext version -# written by Bruno Haible, Owen Taylor 5/30/3002 -# -# Modified to require ngettext -# Matthias Clasen 08/06/2004 -# -# We need this here as well, since someone might use autoconf-2.5x -# to configure GLib then an older version to configure a package -# using AM_GLIB_GNU_GETTEXT -AC_PREREQ(2.53) - -dnl -dnl We go to great lengths to make sure that aclocal won't -dnl try to pull in the installed version of these macros -dnl when running aclocal in the glib directory. -dnl -m4_copy([AC_DEFUN],[glib_DEFUN]) -m4_copy([AC_REQUIRE],[glib_REQUIRE]) -dnl -dnl At the end, if we're not within glib, we'll define the public -dnl definitions in terms of our private definitions. -dnl - -# GLIB_LC_MESSAGES -#-------------------- -glib_DEFUN([GLIB_LC_MESSAGES], - [AC_CHECK_HEADERS([locale.h]) - if test $ac_cv_header_locale_h = yes; then - AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, - [AC_TRY_LINK([#include ], [return LC_MESSAGES], - am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) - if test $am_cv_val_LC_MESSAGES = yes; then - AC_DEFINE(HAVE_LC_MESSAGES, 1, - [Define if your file defines LC_MESSAGES.]) - fi - fi]) - -# GLIB_PATH_PROG_WITH_TEST -#---------------------------- -dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, -dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) -glib_DEFUN([GLIB_PATH_PROG_WITH_TEST], -[# Extract the first word of "$2", so it can be a program name with args. -set dummy $2; ac_word=[$]2 -AC_MSG_CHECKING([for $ac_word]) -AC_CACHE_VAL(ac_cv_path_$1, -[case "[$]$1" in - /*) - ac_cv_path_$1="[$]$1" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in ifelse([$5], , $PATH, [$5]); do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if [$3]; then - ac_cv_path_$1="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" -dnl If no 4th arg is given, leave the cache variable unset, -dnl so AC_PATH_PROGS will keep looking. -ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" -])dnl - ;; -esac])dnl -$1="$ac_cv_path_$1" -if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then - AC_MSG_RESULT([$]$1) -else - AC_MSG_RESULT(no) -fi -AC_SUBST($1)dnl -]) - -dnl Checks for special options needed on Mac OS X. -dnl Defines INTL_MACOSX_LIBS. -dnl -dnl Copied from intlmacosx.m4 in gettext, GPL. -dnl Copyright (C) 2004-2013 Free Software Foundation, Inc. -glib_DEFUN([glib_gt_INTL_MACOSX], -[ - dnl Check for API introduced in Mac OS X 10.2. - AC_CACHE_CHECK([for CFPreferencesCopyAppValue], - [gt_cv_func_CFPreferencesCopyAppValue], - [gt_save_LIBS="$LIBS" - LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[#include ]], - [[CFPreferencesCopyAppValue(NULL, NULL)]])], - [gt_cv_func_CFPreferencesCopyAppValue=yes], - [gt_cv_func_CFPreferencesCopyAppValue=no]) - LIBS="$gt_save_LIBS"]) - if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then - AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], - [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) - fi - dnl Check for API introduced in Mac OS X 10.3. - AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], - [gt_save_LIBS="$LIBS" - LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[#include ]], - [[CFLocaleCopyCurrent();]])], - [gt_cv_func_CFLocaleCopyCurrent=yes], - [gt_cv_func_CFLocaleCopyCurrent=no]) - LIBS="$gt_save_LIBS"]) - if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], - [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) - fi - INTL_MACOSX_LIBS= - if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then - INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" - fi - AC_SUBST([INTL_MACOSX_LIBS]) -]) - -# GLIB_WITH_NLS -#----------------- -glib_DEFUN([GLIB_WITH_NLS], - dnl NLS is obligatory - [USE_NLS=yes - AC_SUBST(USE_NLS) - - gt_cv_have_gettext=no - - CATOBJEXT=NONE - XGETTEXT=: - INTLLIBS= - - glib_gt_INTL_MACOSX - - AC_CHECK_HEADER(libintl.h, - [gt_cv_func_dgettext_libintl="no" - libintl_extra_libs="" - - # - # First check in libc - # - AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc, - [AC_TRY_LINK([ -#include -], - [return !ngettext ("","", 1)], - gt_cv_func_ngettext_libc=yes, - gt_cv_func_ngettext_libc=no) - ]) - - if test "$gt_cv_func_ngettext_libc" = "yes" ; then - AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc, - [AC_TRY_LINK([ -#include -], - [return !dgettext ("","")], - gt_cv_func_dgettext_libc=yes, - gt_cv_func_dgettext_libc=no) - ]) - fi - - if test "$gt_cv_func_ngettext_libc" = "yes" ; then - AC_CHECK_FUNCS(bind_textdomain_codeset) - fi - - # - # If we don't have everything we want, check in libintl - # - if test "$gt_cv_func_dgettext_libc" != "yes" \ - || test "$gt_cv_func_ngettext_libc" != "yes" \ - || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then - - AC_CHECK_LIB(intl, bindtextdomain, - [AC_CHECK_LIB(intl, ngettext, - [AC_CHECK_LIB(intl, dgettext, - gt_cv_func_dgettext_libintl=yes)])]) - - if test "$gt_cv_func_dgettext_libintl" != "yes" ; then - AC_MSG_CHECKING([if -liconv is needed to use gettext]) - AC_MSG_RESULT([]) - AC_CHECK_LIB(intl, ngettext, - [AC_CHECK_LIB(intl, dcgettext, - [gt_cv_func_dgettext_libintl=yes - libintl_extra_libs=-liconv], - :,-liconv)], - :,-liconv) - fi - - # - # If we found libintl, then check in it for bind_textdomain_codeset(); - # we'll prefer libc if neither have bind_textdomain_codeset(), - # and both have dgettext and ngettext - # - if test "$gt_cv_func_dgettext_libintl" = "yes" ; then - glib_save_LIBS="$LIBS" - LIBS="$LIBS -lintl $libintl_extra_libs" - unset ac_cv_func_bind_textdomain_codeset - AC_CHECK_FUNCS(bind_textdomain_codeset) - LIBS="$glib_save_LIBS" - - if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then - gt_cv_func_dgettext_libc=no - else - if test "$gt_cv_func_dgettext_libc" = "yes" \ - && test "$gt_cv_func_ngettext_libc" = "yes"; then - gt_cv_func_dgettext_libintl=no - fi - fi - fi - fi - - if test "$gt_cv_func_dgettext_libc" = "yes" \ - || test "$gt_cv_func_dgettext_libintl" = "yes"; then - gt_cv_have_gettext=yes - fi - - if test "$gt_cv_func_dgettext_libintl" = "yes"; then - INTLLIBS="-lintl $libintl_extra_libs $INTL_MACOSX_LIBS" - fi - - if test "$gt_cv_have_gettext" = "yes"; then - AC_DEFINE(HAVE_GETTEXT,1, - [Define if the GNU gettext() function is already present or preinstalled.]) - GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl - if test "$MSGFMT" != "no"; then - glib_save_LIBS="$LIBS" - LIBS="$LIBS $INTLLIBS" - AC_CHECK_FUNCS(dcgettext) - MSGFMT_OPTS= - AC_MSG_CHECKING([if msgfmt accepts -c]) - GLIB_RUN_PROG([$MSGFMT -c -o /dev/null],[ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: test 1.0\n" -"PO-Revision-Date: 2007-02-15 12:01+0100\n" -"Last-Translator: test \n" -"Language-Team: C \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -], [MSGFMT_OPTS=-c; AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])]) - AC_SUBST(MSGFMT_OPTS) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) - AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; - return _nl_msg_cat_cntr], - [CATOBJEXT=.gmo - DATADIRNAME=share], - [case $host in - *-*-solaris*) - dnl On Solaris, if bind_textdomain_codeset is in libc, - dnl GNU format message catalog is always supported, - dnl since both are added to the libc all together. - dnl Hence, we'd like to go with DATADIRNAME=share and - dnl and CATOBJEXT=.gmo in this case. - AC_CHECK_FUNC(bind_textdomain_codeset, - [CATOBJEXT=.gmo - DATADIRNAME=share], - [CATOBJEXT=.mo - DATADIRNAME=lib]) - ;; - *-*-openbsd*) - CATOBJEXT=.mo - DATADIRNAME=share - ;; - *) - CATOBJEXT=.mo - DATADIRNAME=lib - ;; - esac]) - LIBS="$glib_save_LIBS" - INSTOBJEXT=.mo - else - gt_cv_have_gettext=no - fi - fi - ]) - - if test "$gt_cv_have_gettext" = "yes" ; then - AC_DEFINE(ENABLE_NLS, 1, - [always defined to indicate that i18n is enabled]) - fi - - dnl Test whether we really found GNU xgettext. - if test "$XGETTEXT" != ":"; then - dnl If it is not GNU xgettext we define it as : so that the - dnl Makefiles still can work. - if $XGETTEXT --omit-header /dev/null 2> /dev/null; then - : ; - else - AC_MSG_RESULT( - [found xgettext program is not GNU xgettext; ignore it]) - XGETTEXT=":" - fi - fi - - # We need to process the po/ directory. - POSUB=po - - AC_OUTPUT_COMMANDS( - [case "$CONFIG_FILES" in *po/Makefile.in*) - sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile - esac]) - - dnl These rules are solely for the distribution goal. While doing this - dnl we only have to keep exactly one list of the available catalogs - dnl in configure.ac. - for lang in $ALL_LINGUAS; do - GMOFILES="$GMOFILES $lang.gmo" - POFILES="$POFILES $lang.po" - done - - dnl Make all variables we use known to autoconf. - AC_SUBST(CATALOGS) - AC_SUBST(CATOBJEXT) - AC_SUBST(DATADIRNAME) - AC_SUBST(GMOFILES) - AC_SUBST(INSTOBJEXT) - AC_SUBST(INTLLIBS) - AC_SUBST(PO_IN_DATADIR_TRUE) - AC_SUBST(PO_IN_DATADIR_FALSE) - AC_SUBST(POFILES) - AC_SUBST(POSUB) - ]) - -# AM_GLIB_GNU_GETTEXT -# ------------------- -# Do checks necessary for use of gettext. If a suitable implementation -# of gettext is found in either in libintl or in the C library, -# it will set INTLLIBS to the libraries needed for use of gettext -# and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable -# gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST() -# on various variables needed by the Makefile.in.in installed by -# glib-gettextize. -dnl -AU_DEFUN([GLIB_GNU_GETTEXT], - [AC_REQUIRE([AC_PROG_CC])dnl - - GLIB_LC_MESSAGES - GLIB_WITH_NLS - - if test "$gt_cv_have_gettext" = "yes"; then - if test "x$ALL_LINGUAS" = "x"; then - LINGUAS= - else - AC_MSG_CHECKING(for catalogs to be installed) - NEW_LINGUAS= - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - NEW_LINGUAS="$NEW_LINGUAS $presentlang" - fi - done - LINGUAS=$NEW_LINGUAS - AC_MSG_RESULT($LINGUAS) - fi - - dnl Construct list of names of catalog files to be constructed. - if test -n "$LINGUAS"; then - for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done - fi - fi - - dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly - dnl find the mkinstalldirs script in another subdir but ($top_srcdir). - dnl Try to locate is. - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - AC_SUBST(MKINSTALLDIRS) - - dnl Generate list of files to be processed by xgettext which will - dnl be included in po/Makefile. - test -d po || mkdir po - if test "x$srcdir" != "x."; then - if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then - posrcprefix="$srcdir/" - else - posrcprefix="../$srcdir/" - fi - else - posrcprefix="../" - fi - rm -f po/POTFILES - sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ - < $srcdir/po/POTFILES.in > po/POTFILES - ], - [[$0: This macro is deprecated. You should use upstream gettext instead.]]) - -# AM_GLIB_DEFINE_LOCALEDIR(VARIABLE) -# ------------------------------- -# Define VARIABLE to the location where catalog files will -# be installed by po/Makefile. -glib_DEFUN([GLIB_DEFINE_LOCALEDIR], -[glib_REQUIRE([GLIB_GNU_GETTEXT])dnl -glib_save_prefix="$prefix" -glib_save_exec_prefix="$exec_prefix" -glib_save_datarootdir="$datarootdir" -test "x$prefix" = xNONE && prefix=$ac_default_prefix -test "x$exec_prefix" = xNONE && exec_prefix=$prefix -datarootdir=`eval echo "${datarootdir}"` -if test "x$CATOBJEXT" = "x.mo" ; then - localedir=`eval echo "${libdir}/locale"` -else - localedir=`eval echo "${datadir}/locale"` -fi -prefix="$glib_save_prefix" -exec_prefix="$glib_save_exec_prefix" -datarootdir="$glib_save_datarootdir" -AC_DEFINE_UNQUOTED($1, "$localedir", - [Define the location where the catalogs will be installed]) -]) - -dnl -dnl Now the definitions that aclocal will find -dnl -ifdef(glib_configure_ac,[],[ -AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)]) -AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)]) -])dnl - -# GLIB_RUN_PROG(PROGRAM, TEST-FILE, [ACTION-IF-PASS], [ACTION-IF-FAIL]) -# -# Create a temporary file with TEST-FILE as its contents and pass the -# file name to PROGRAM. Perform ACTION-IF-PASS if PROGRAM exits with -# 0 and perform ACTION-IF-FAIL for any other exit status. -AC_DEFUN([GLIB_RUN_PROG], -[cat >conftest.foo <<_ACEOF -$2 -_ACEOF -if AC_RUN_LOG([$1 conftest.foo]); then - m4_ifval([$3], [$3], [:]) -m4_ifvaln([$4], [else $4])dnl -echo "$as_me: failed input was:" >&AS_MESSAGE_LOG_FD -sed 's/^/| /' conftest.foo >&AS_MESSAGE_LOG_FD -fi]) - - - -dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml]) -# serial 42.1 IT_PROG_INTLTOOL -AC_DEFUN([IT_PROG_INTLTOOL], [ -AC_PREREQ([2.50])dnl -AC_REQUIRE([AM_NLS])dnl - -case "$am__api_version" in - 1.[01234]) - AC_MSG_ERROR([Automake 1.5 or newer is required to use intltool]) - ;; - *) - ;; -esac - -INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` -INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3` -INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` -if test -n "$1"; then - AC_MSG_CHECKING([for intltool >= $1]) - AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found]) - test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" || - AC_MSG_ERROR([Your intltool is too old. You need intltool $1 or later.]) -fi - -AC_PATH_PROG(INTLTOOL_UPDATE, [intltool-update]) -AC_PATH_PROG(INTLTOOL_MERGE, [intltool-merge]) -AC_PATH_PROG(INTLTOOL_EXTRACT, [intltool-extract]) -if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then - AC_MSG_ERROR([The intltool scripts were not found. Please install intltool.]) -fi - -if test -z "$AM_DEFAULT_VERBOSITY"; then - AM_DEFAULT_VERBOSITY=1 -fi -AC_SUBST([AM_DEFAULT_VERBOSITY]) - -INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))' -INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))' -INTLTOOL__v_MERGE_0='@echo " ITMRG " [$]@;' -AC_SUBST(INTLTOOL_V_MERGE) -AC_SUBST(INTLTOOL__v_MERGE_) -AC_SUBST(INTLTOOL__v_MERGE_0) - -INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))' -intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))' -intltool__v_merge_options_0='-q' -AC_SUBST(INTLTOOL_V_MERGE_OPTIONS) -AC_SUBST(intltool__v_merge_options_) -AC_SUBST(intltool__v_merge_options_0) - - INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' -INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' - INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' - INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' - INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -p $(top_srcdir)/po $< [$]@' - INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' - INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' - INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' -INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' - INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' - INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' -if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge 5000; then - INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u --no-translations $< [$]@' -else - INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)_it_tmp_dir=tmp.intltool.[$][$]RANDOM && mkdir [$][$]_it_tmp_dir && LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u [$][$]_it_tmp_dir $< [$]@ && rmdir [$][$]_it_tmp_dir' -fi - INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' - INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' - INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' - INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' - INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' - INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' - INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' - -_IT_SUBST(INTLTOOL_DESKTOP_RULE) -_IT_SUBST(INTLTOOL_DIRECTORY_RULE) -_IT_SUBST(INTLTOOL_KEYS_RULE) -_IT_SUBST(INTLTOOL_PROP_RULE) -_IT_SUBST(INTLTOOL_OAF_RULE) -_IT_SUBST(INTLTOOL_PONG_RULE) -_IT_SUBST(INTLTOOL_SERVER_RULE) -_IT_SUBST(INTLTOOL_SHEET_RULE) -_IT_SUBST(INTLTOOL_SOUNDLIST_RULE) -_IT_SUBST(INTLTOOL_UI_RULE) -_IT_SUBST(INTLTOOL_XAM_RULE) -_IT_SUBST(INTLTOOL_KBD_RULE) -_IT_SUBST(INTLTOOL_XML_RULE) -_IT_SUBST(INTLTOOL_XML_NOMERGE_RULE) -_IT_SUBST(INTLTOOL_CAVES_RULE) -_IT_SUBST(INTLTOOL_SCHEMAS_RULE) -_IT_SUBST(INTLTOOL_THEME_RULE) -_IT_SUBST(INTLTOOL_SERVICE_RULE) -_IT_SUBST(INTLTOOL_POLICY_RULE) - -# Check the gettext tools to make sure they are GNU -AC_PATH_PROG(XGETTEXT, xgettext) -AC_PATH_PROG(MSGMERGE, msgmerge) -AC_PATH_PROG(MSGFMT, msgfmt) -AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) -if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then - AC_MSG_ERROR([GNU gettext tools not found; required for intltool]) -fi -xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`" -mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`" -mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`" -if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then - AC_MSG_ERROR([GNU gettext tools not found; required for intltool]) -fi - -# Substitute ALL_LINGUAS so we can use it in po/Makefile -AC_SUBST(ALL_LINGUAS) - -IT_PO_SUBDIR([po]) - -]) - - -# IT_PO_SUBDIR(DIRNAME) -# --------------------- -# All po subdirs have to be declared with this macro; the subdir "po" is -# declared by IT_PROG_INTLTOOL. -# -AC_DEFUN([IT_PO_SUBDIR], -[AC_PREREQ([2.53])dnl We use ac_top_srcdir inside AC_CONFIG_COMMANDS. -dnl -dnl The following CONFIG_COMMANDS should be executed at the very end -dnl of config.status. -AC_CONFIG_COMMANDS_PRE([ - AC_CONFIG_COMMANDS([$1/stamp-it], [ - if [ ! grep "^# INTLTOOL_MAKEFILE$" "$1/Makefile.in" > /dev/null ]; then - AC_MSG_ERROR([$1/Makefile.in.in was not created by intltoolize.]) - fi - rm -f "$1/stamp-it" "$1/stamp-it.tmp" "$1/POTFILES" "$1/Makefile.tmp" - >"$1/stamp-it.tmp" - [sed '/^#/d - s/^[[].*] *// - /^[ ]*$/d - '"s|^| $ac_top_srcdir/|" \ - "$srcdir/$1/POTFILES.in" | sed '$!s/$/ \\/' >"$1/POTFILES" - ] - [sed '/^POTFILES =/,/[^\\]$/ { - /^POTFILES =/!d - r $1/POTFILES - } - ' "$1/Makefile.in" >"$1/Makefile"] - rm -f "$1/Makefile.tmp" - mv "$1/stamp-it.tmp" "$1/stamp-it" - ]) -])dnl -]) - -# _IT_SUBST(VARIABLE) -# ------------------- -# Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST -# -AC_DEFUN([_IT_SUBST], -[ -AC_SUBST([$1]) -m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])]) -] -) - -# deprecated macros -AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL]) -# A hint is needed for aclocal from Automake <= 1.9.4: -# AC_DEFUN([AC_PROG_INTLTOOL], ...) - - -dnl -*- mode: autoconf -*- -dnl Copyright 2009 Johan Dahlin -dnl -dnl This file is free software; the author(s) gives unlimited -dnl permission to copy and/or distribute it, with or without -dnl modifications, as long as this notice is preserved. -dnl - -# serial 1 - -m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL], -[ - AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first - AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first - AC_BEFORE([LT_INIT],[$0])dnl setup libtool first - - dnl enable/disable introspection - m4_if([$2], [require], - [dnl - enable_introspection=yes - ],[dnl - AC_ARG_ENABLE(introspection, - AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]], - [Enable introspection for this build]),, - [enable_introspection=auto]) - ])dnl - - AC_MSG_CHECKING([for gobject-introspection]) - - dnl presence/version checking - AS_CASE([$enable_introspection], - [no], [dnl - found_introspection="no (disabled, use --enable-introspection to enable)" - ],dnl - [yes],[dnl - PKG_CHECK_EXISTS([gobject-introspection-1.0],, - AC_MSG_ERROR([gobject-introspection-1.0 is not installed])) - PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], - found_introspection=yes, - AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME])) - ],dnl - [auto],[dnl - PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no) - dnl Canonicalize enable_introspection - enable_introspection=$found_introspection - ],dnl - [dnl - AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@]) - ])dnl - - AC_MSG_RESULT([$found_introspection]) - - INTROSPECTION_SCANNER= - INTROSPECTION_COMPILER= - INTROSPECTION_GENERATE= - INTROSPECTION_GIRDIR= - INTROSPECTION_TYPELIBDIR= - if test "x$found_introspection" = "xyes"; then - INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` - INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` - INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` - INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0` - INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)" - INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0` - INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0` - INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection - fi - AC_SUBST(INTROSPECTION_SCANNER) - AC_SUBST(INTROSPECTION_COMPILER) - AC_SUBST(INTROSPECTION_GENERATE) - AC_SUBST(INTROSPECTION_GIRDIR) - AC_SUBST(INTROSPECTION_TYPELIBDIR) - AC_SUBST(INTROSPECTION_CFLAGS) - AC_SUBST(INTROSPECTION_LIBS) - AC_SUBST(INTROSPECTION_MAKEFILE) - - AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes") -]) - - -dnl Usage: -dnl GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version]) - -AC_DEFUN([GOBJECT_INTROSPECTION_CHECK], -[ - _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1]) -]) - -dnl Usage: -dnl GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version]) - - -AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE], -[ - _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require]) -]) - -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 2014 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program or library that is built -# using GNU Libtool, you may include this file under the same -# distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -]) - -# serial 58 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_PREPARE_CC_BASENAME -# ----------------------- -m4_defun([_LT_PREPARE_CC_BASENAME], [ -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in @S|@*""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} -])# _LT_PREPARE_CC_BASENAME - - -# _LT_CC_BASENAME(CC) -# ------------------- -# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, -# but that macro is also expanded into generated libtool script, which -# arranges for $SED and $ECHO to be set by different means. -m4_defun([_LT_CC_BASENAME], -[m4_require([_LT_PREPARE_CC_BASENAME])dnl -AC_REQUIRE([_LT_DECL_SED])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl -func_cc_basename $1 -cc_basename=$func_cc_basename_result -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl -dnl -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_WITH_SYSROOT])dnl -m4_require([_LT_CMD_TRUNCATE])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options that allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld=$lt_cv_prog_gnu_ld - -old_CC=$CC -old_CFLAGS=$CFLAGS - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from 'configure', and 'config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# 'config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain=$ac_aux_dir/ltmain.sh -])# _LT_PROG_LTMAIN - - - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the 'libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to 'config.status' so that its -# declaration there will have the same value as in 'configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags='_LT_TAGS'dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into 'config.status', and then the shell code to quote escape them in -# for loops in 'config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# '#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test 0 = "$lt_write_fail" && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -'$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2011 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test 0 != $[#] -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try '$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try '$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test yes = "$silent" && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options that allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST - fi - - cfgfile=${ofile}T - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -_LT_COPYING -_LT_LIBTOOL_TAGS - -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -_LT_PREPARE_MUNGE_PATH_LIST -_LT_PREPARE_CC_BASENAME - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Go], [_LT_LANG(GO)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -m4_ifndef([AC_PROG_GO], [ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_GO. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -m4_defun([AC_PROG_GO], -[AC_LANG_PUSH(Go)dnl -AC_ARG_VAR([GOC], [Go compiler command])dnl -AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl -_AC_ARG_VAR_LDFLAGS()dnl -AC_CHECK_TOOL(GOC, gccgo) -if test -z "$GOC"; then - if test -n "$ac_tool_prefix"; then - AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) - fi -fi -if test -z "$GOC"; then - AC_CHECK_PROG(GOC, gccgo, gccgo, false) -fi -])#m4_defun -])#m4_ifndef - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([AC_PROG_GO], - [LT_LANG(GO)], - [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS=$save_LDFLAGS - ]) - - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[[012]][[,.]]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test yes = "$lt_cv_apple_cc_single_mod"; then - _lt_dar_single_mod='$single_module' - fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' - fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES([TAG]) -# --------------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test yes = "$lt_cv_ld_force_load"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], - [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - m4_if([$1], [CXX], -[ if test yes != "$lt_cv_apple_cc_single_mod"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -# ---------------------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -# Store the results from the different compilers for each TAGNAME. -# Allow to override them for all tags through lt_cv_aix_libpath. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], - [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ - lt_aix_libpath_sed='[ - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }]' - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi],[]) - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib - fi - ]) - aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script that will find a shell with a builtin -# printf (that we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case $ECHO in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_WITH_SYSROOT -# ---------------- -AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([libtool-sysroot], -[AS_HELP_STRING([--with-libtool-sysroot@<:@=DIR@:>@], - [Search for dependent libraries within DIR (or the compiler's sysroot - if not specified).])], -[], [with_libtool_sysroot=no]) - -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case $with_libtool_sysroot in #( - no) - if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - # Treat "/" the same a an unset sysroot. It seems to be more - # compatible across host platforms that way!? - if test "$lt_sysroot" = /; then - lt_sysroot= - fi - fi - ;; #( - yes|''|/) - ;; #( - /*) - lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - *) - AC_MSG_RESULT([$with_libtool_sysroot]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac - - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and where our libraries should be installed.])]) - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test no = "$enable_libtool_lock" || enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out what ABI is being produced by ac_compile, and set mode - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE=32 - ;; - *ELF-64*) - HPUX_IA64_MODE=64 - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test yes = "$lt_cv_prog_gnu_ld"; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test yes != "$lt_cv_cc_needs_belf"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS=$SAVE_CFLAGS - fi - ;; -*-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*|x86_64-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks=$enable_libtool_lock -])# _LT_ENABLE_LOCK - - -# _LT_PROG_AR -# ----------- -m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) -: ${AR=ar} -: ${AR_FLAGS=cru} -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) - -AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], - [lt_cv_ar_at_file=no - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([lt_ar_try]) - if test 0 -eq "$ac_status"; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - AC_TRY_EVAL([lt_ar_try]) - if test 0 -ne "$ac_status"; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - ]) - ]) - -if test no = "$lt_cv_ar_at_file"; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi -_LT_DECL([], [archiver_list_spec], [1], - [How to feed a file listing to the archiver]) -])# _LT_PROG_AR - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - bitrig* | openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test yes = "[$]$2"; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS -]) - -if test yes = "[$]$2"; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring=ABCD - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n "$lt_cv_sys_max_cmd_len"; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test yes = "$cross_compiling"; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test yes != "$enable_dlopen"; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen=load_add_on - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen=LoadLibrary - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ - lt_cv_dlopen=dyld - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen=shl_load], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen=dlopen], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else - enable_dlopen=yes - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS=$LDFLAGS - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS=$LIBS - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test yes = "$lt_cv_dlopen_self"; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links=nottested -if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test no = "$hard_links"; then - AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", - [Define to the sub-directory where libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then - - # We can hardcode non-existent directories. - if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && - test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || - test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP"; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_PREPARE_MUNGE_PATH_LIST -# --------------------------- -# Make sure func_munge_path_list() is defined correctly. -m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], -[[# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x@S|@2 in - x) - ;; - *:) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" - ;; - x:*) - eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" - ;; - *) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - esac -} -]])# _LT_PREPARE_PATH_LIST - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test yes = "$GCC"; then - case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; - *) lt_sed_strip_eq='s|=/|/|g' ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" - elif test -n "$lt_multi_os_dir"; then - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS = " "; FS = "/|\n";} { - lt_foo = ""; - lt_count = 0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo = "/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -AC_ARG_VAR([LT_SYS_LIBRARY_PATH], -[User-defined run-time library search path.]) - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[[4-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a[(]lib.so.V[)]' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[23]].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], - [Detected run-time system search path for libraries]) -_LT_DECL([], [configure_time_lt_sys_library_path], [2], - [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program that can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$1"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac]) -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program that can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test no = "$withval" || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i -cat conftest.i conftest.i >conftest2.i -: ${lt_DD:=$DD} -AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], -[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: -fi]) -rm -f conftest.i conftest2.i conftest.out]) -])# _LT_PATH_DD - - -# _LT_CMD_TRUNCATE -# ---------------- -# find command to truncate a binary pipe -m4_defun([_LT_CMD_TRUNCATE], -[m4_require([_LT_PATH_DD]) -AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], -[printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -lt_cv_truncate_bin= -if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" -fi -rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) -_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], - [Command to truncate a binary pipe]) -])# _LT_CMD_TRUNCATE - - -# _LT_CHECK_MAGIC_METHOD -# ---------------------- -# how to check for library dependencies -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_MAGIC_METHOD], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -AC_CACHE_CHECK([how to recognize dependent libraries], -lt_cv_deplibs_check_method, -[lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# 'unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# that responds to the $file_magic_cmd with a given extended regex. -# If you have 'file' or equivalent on your system and you're not sure -# whether 'pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[[4-9]]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[[45]]*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -os2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method = "file_magic"]) -_LT_DECL([], [file_magic_glob], [1], - [How to find potential files when deplibs_check_method = "file_magic"]) -_LT_DECL([], [want_nocaseglob], [1], - [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM=$NM -else - lt_nm_to_check=${ac_tool_prefix}nm - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/$lt_tmp_nm - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the 'sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty - case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; - *) lt_bad_file=/dev/null ;; - esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break 2 - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break 2 - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS=$lt_save_ifs - done - : ${lt_cv_path_NM=no} -fi]) -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test : != "$DUMPBIN"; then - NM=$DUMPBIN - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - -# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -# -------------------------------- -# how to determine the name of the shared library -# associated with a specific link library. -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -m4_require([_LT_DECL_DLLTOOL]) -AC_CACHE_CHECK([how to associate runtime and link libraries], -lt_cv_sharedlib_from_linklib_cmd, -[lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO - ;; -esac -]) -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - -_LT_DECL([], [sharedlib_from_linklib_cmd], [1], - [Command to associate shared and link libraries]) -])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB - - -# _LT_PATH_MANIFEST_TOOL -# ---------------------- -# locate the manifest tool -m4_defun([_LT_PATH_MANIFEST_TOOL], -[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&AS_MESSAGE_LOG_FD - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest*]) -if test yes != "$lt_cv_path_mainfest_tool"; then - MANIFEST_TOOL=: -fi -_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -])# _LT_PATH_MANIFEST_TOOL - - -# _LT_DLL_DEF_P([FILE]) -# --------------------- -# True iff FILE is a Windows DLL '.def' file. -# Keep in sync with func_dll_def_p in the libtool script -AC_DEFUN([_LT_DLL_DEF_P], -[dnl - test DEF = "`$SED -n dnl - -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace - -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments - -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl - -e q dnl Only consider the first "real" line - $1`" dnl -])# _LT_DLL_DEF_P - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM=-lm) - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test yes = "$GCC"; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test ia64 = "$host_cpu"; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function, - # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], - [Transform the output of nm into a list of symbols to manually relocate]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], - [The name lister interface]) -_LT_DECL([], [nm_file_list_spec], [1], - [Specify filename containing input files for $NM]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test yes = "$GXX"; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' - if test ia64 != "$host_cpu"; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64, which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test yes = "$GCC"; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - *Sun\ F* | *Sun*Fortran*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - *Intel*\ [[CF]]*Compiler*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - *Portland\ Group*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac - -AC_CACHE_CHECK([for $compiler option to produce PIC], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) - _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - ;; - esac - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ' (' and ')$', so one must not match beginning or - # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', - # as well as any symbol that contains 'd'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test yes != "$GCC"; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd* | bitrig*) - with_gnu_ld=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test yes = "$with_gnu_ld"; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test yes = "$lt_use_gnu_ld_interface"; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test linux-dietlibc = "$host_os"; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test no = "$tmp_diet" - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - - if test yes = "$supports_anon_versioning"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - tcc*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' - ;; - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then - aix_use_runtimelinking=yes - break - fi - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # traditional, no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - ;; - esac - - if test yes = "$GCC"; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - esac - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - ;; - - hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) - ;; - esac - fi - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], - [lt_cv_irix_exported_symbol], - [save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" - AC_LINK_IFELSE( - [AC_LANG_SOURCE( - [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], - [C++], [[int foo (void) { return 0; }]], - [Fortran 77], [[ - subroutine foo - end]], - [Fortran], [[ - subroutine foo - end]])])], - [lt_cv_irix_exported_symbol=yes], - [lt_cv_irix_exported_symbol=no]) - LDFLAGS=$save_LDFLAGS]) - if test yes = "$lt_cv_irix_exported_symbol"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' - fi - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - linux*) - case $cc_basename in - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - _LT_TAGVAR(ld_shlibs, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - osf3*) - if test yes = "$GCC"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='$wl' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. GCC discards it without '$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test yes = "$GCC"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test sequent = "$host_vendor"; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test sni = "$host_vendor"; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting $shlibpath_var if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [postlink_cmds], [2], - [Commands necessary for finishing linking programs]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC=$CC -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report what library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC=$lt_save_CC -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test no != "$CXX" && - ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || - (test g++ != "$CXX"))); then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_caught_CXX_error"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test yes = "$GXX"; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test yes = "$GXX"; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test yes = "$with_gnu_ld"; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='$wl' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - ;; - esac - - if test yes = "$GXX"; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag=$shared_flag' $wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - # The "-G" linker flag allows undefined symbols. - _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared - # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes = "$GXX"; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test yes = "$supports_anon_versioning"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes,no = "$GXX,$with_gnu_ld"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - case $host in - osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test yes,no = "$GXX,$with_gnu_ld"; then - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require '-G' NOT '-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no - - _LT_TAGVAR(GCC, $1)=$GXX - _LT_TAGVAR(LD, $1)=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test yes != "$_lt_caught_CXX_error" - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_FUNC_STRIPNAME_CNF -# ---------------------- -# func_stripname_cnf prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# -# This function is identical to the (non-XSI) version of func_stripname, -# except this one can be used by m4 code that may be executed by configure, -# rather than the libtool script. -m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -AC_REQUIRE([_LT_DECL_SED]) -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -func_stripname_cnf () -{ - case @S|@2 in - .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; - *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; - esac -} # func_stripname_cnf -])# _LT_FUNC_STRIPNAME_CNF - - -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF -package foo -func foo() { -} -_LT_EOF -]) - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case $prev$p in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test x-L = "$p" || - test x-R = "$p"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test no = "$pre_test_object_deps_done"; then - case $prev in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)=$prev$p - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test no = "$pre_test_object_deps_done"; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)=$p - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)=$p - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test no = "$F77"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_disable_F77"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)=$G77 - _LT_TAGVAR(LD, $1)=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test yes != "$_lt_disable_F77" - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test no = "$FC"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_disable_FC"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu - _LT_TAGVAR(LD, $1)=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test yes != "$_lt_disable_FC" - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)=$LD -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_GO_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Go compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_GO_CONFIG], -[AC_REQUIRE([LT_PROG_GO])dnl -AC_LANG_SAVE - -# Source file extension for Go test sources. -ac_ext=go - -# Object file extension for compiled Go test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="package main; func main() { }" - -# Code to be used in simple link tests -lt_simple_link_test_code='package main; func main() { }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GOC-"gccgo"} -CFLAGS=$GOFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)=$LD -_LT_CC_BASENAME([$compiler]) - -# Go did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GO_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code=$lt_simple_compile_test_code - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_GO -# ---------- -AC_DEFUN([LT_PROG_GO], -[AC_CHECK_TOOL(GOC, gccgo,) -]) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - -# _LT_DECL_DLLTOOL -# ---------------- -# Ensure DLLTOOL variable is set. -m4_defun([_LT_DECL_DLLTOOL], -[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -AC_SUBST([DLLTOOL]) -]) - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f "$lt_ac_sed" && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test 10 -lt "$lt_ac_count" && break - lt_ac_count=`expr $lt_ac_count + 1` - if test "$lt_ac_count" -gt "$lt_ac_max"; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PATH_CONVERSION_FUNCTIONS -# ----------------------------- -# Determine what file name conversion functions should be used by -# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -# for certain cross-compile configurations and native mingw. -m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_MSG_CHECKING([how to convert $build file names to $host format]) -AC_CACHE_VAL(lt_cv_to_host_file_cmd, -[case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac -]) -to_host_file_cmd=$lt_cv_to_host_file_cmd -AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], - [0], [convert $build file names to $host format])dnl - -AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -[#assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac -]) -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS - -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software -# Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 8 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option '$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl 'shared' nor 'disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], - [_LT_WITH_AIX_SONAME([aix])]) - ]) -])# _LT_SET_OPTIONS - - - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the 'shared' and -# 'disable-shared' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the 'static' and -# 'disable-static' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the 'fast-install' -# and 'disable-fast-install' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the 'fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the 'disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_AIX_SONAME([DEFAULT]) -# ---------------------------------- -# implement the --with-aix-soname flag, and support the `aix-soname=aix' -# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT -# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. -m4_define([_LT_WITH_AIX_SONAME], -[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl -shared_archive_member_spec= -case $host,$enable_shared in -power*-*-aix[[5-9]]*,yes) - AC_MSG_CHECKING([which variant of shared library versioning to provide]) - AC_ARG_WITH([aix-soname], - [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], - [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], - [case $withval in - aix|svr4|both) - ;; - *) - AC_MSG_ERROR([Unknown argument to --with-aix-soname]) - ;; - esac - lt_cv_with_aix_soname=$with_aix_soname], - [AC_CACHE_VAL([lt_cv_with_aix_soname], - [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) - with_aix_soname=$lt_cv_with_aix_soname]) - AC_MSG_RESULT([$with_aix_soname]) - if test aix != "$with_aix_soname"; then - # For the AIX way of multilib, we name the shared archive member - # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', - # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. - # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, - # the AIX toolchain works better with OBJECT_MODE set (default 32). - if test 64 = "${OBJECT_MODE-32}"; then - shared_archive_member_spec=shr_64 - else - shared_archive_member_spec=shr - fi - fi - ;; -*) - with_aix_soname=aix - ;; -esac - -_LT_DECL([], [shared_archive_member_spec], [0], - [Shared archive member basename, for filename based shared library versioning on AIX])dnl -])# _LT_WITH_AIX_SONAME - -LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) -LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) -LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' -# LT_INIT options. -# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for lt_pkg in $withval; do - IFS=$lt_save_ifs - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [pic_mode=m4_default([$1], [default])]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) - -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software -# Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59, which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) - -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# @configure_input@ - -# serial 4179 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4.6]) -m4_define([LT_PACKAGE_REVISION], [2.4.6]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.6' -macro_revision='2.4.6' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) - -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software -# Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) - -# nls.m4 serial 5 (gettext-0.18) -dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016 Free Software -dnl Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. -dnl -dnl This file can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995-2000. -dnl Bruno Haible , 2000-2003. - -AC_PREREQ([2.50]) - -AC_DEFUN([AM_NLS], -[ - AC_MSG_CHECKING([whether NLS is requested]) - dnl Default is enabled NLS - AC_ARG_ENABLE([nls], - [ --disable-nls do not use Native Language Support], - USE_NLS=$enableval, USE_NLS=yes) - AC_MSG_RESULT([$USE_NLS]) - AC_SUBST([USE_NLS]) -]) - -dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -dnl serial 11 (pkg-config-0.29.1) -dnl -dnl Copyright © 2004 Scott James Remnant . -dnl Copyright © 2012-2015 Dan Nicholson -dnl -dnl This program is free software; you can redistribute it and/or modify -dnl it under the terms of the GNU General Public License as published by -dnl the Free Software Foundation; either version 2 of the License, or -dnl (at your option) any later version. -dnl -dnl This program is distributed in the hope that it will be useful, but -dnl WITHOUT ANY WARRANTY; without even the implied warranty of -dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -dnl General Public License for more details. -dnl -dnl You should have received a copy of the GNU General Public License -dnl along with this program; if not, write to the Free Software -dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -dnl 02111-1307, USA. -dnl -dnl As a special exception to the GNU General Public License, if you -dnl distribute this file as part of a program that contains a -dnl configuration script generated by Autoconf, you may include it under -dnl the same distribution terms that you use for the rest of that -dnl program. - -dnl PKG_PREREQ(MIN-VERSION) -dnl ----------------------- -dnl Since: 0.29 -dnl -dnl Verify that the version of the pkg-config macros are at least -dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's -dnl installed version of pkg-config, this checks the developer's version -dnl of pkg.m4 when generating configure. -dnl -dnl To ensure that this macro is defined, also add: -dnl m4_ifndef([PKG_PREREQ], -dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) -dnl -dnl See the "Since" comment for each macro you use to see what version -dnl of the macros you require. -m4_defun([PKG_PREREQ], -[m4_define([PKG_MACROS_VERSION], [0.29.1]) -m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, - [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) -])dnl PKG_PREREQ - -dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) -dnl ---------------------------------- -dnl Since: 0.16 -dnl -dnl Search for the pkg-config tool and set the PKG_CONFIG variable to -dnl first found in the path. Checks that the version of pkg-config found -dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is -dnl used since that's the first version where most current features of -dnl pkg-config existed. -AC_DEFUN([PKG_PROG_PKG_CONFIG], -[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) -m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) -m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) -AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) -AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) -AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=m4_default([$1], [0.9.0]) - AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - PKG_CONFIG="" - fi -fi[]dnl -])dnl PKG_PROG_PKG_CONFIG - -dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -dnl ------------------------------------------------------------------- -dnl Since: 0.18 -dnl -dnl Check to see whether a particular set of modules exists. Similar to -dnl PKG_CHECK_MODULES(), but does not set variables or print errors. -dnl -dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -dnl only at the first occurence in configure.ac, so if the first place -dnl it's called might be skipped (such as if it is within an "if", you -dnl have to call PKG_CHECK_EXISTS manually -AC_DEFUN([PKG_CHECK_EXISTS], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -if test -n "$PKG_CONFIG" && \ - AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then - m4_default([$2], [:]) -m4_ifvaln([$3], [else - $3])dnl -fi]) - -dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) -dnl --------------------------------------------- -dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting -dnl pkg_failed based on the result. -m4_define([_PKG_CONFIG], -[if test -n "$$1"; then - pkg_cv_[]$1="$$1" - elif test -n "$PKG_CONFIG"; then - PKG_CHECK_EXISTS([$3], - [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes ], - [pkg_failed=yes]) - else - pkg_failed=untried -fi[]dnl -])dnl _PKG_CONFIG - -dnl _PKG_SHORT_ERRORS_SUPPORTED -dnl --------------------------- -dnl Internal check to see if pkg-config supports short errors. -AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi[]dnl -])dnl _PKG_SHORT_ERRORS_SUPPORTED - - -dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -dnl [ACTION-IF-NOT-FOUND]) -dnl -------------------------------------------------------------- -dnl Since: 0.4.0 -dnl -dnl Note that if there is a possibility the first call to -dnl PKG_CHECK_MODULES might not happen, you should be sure to include an -dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac -AC_DEFUN([PKG_CHECK_MODULES], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl -AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl - -pkg_failed=no -AC_MSG_CHECKING([for $1]) - -_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) -_PKG_CONFIG([$1][_LIBS], [libs], [$2]) - -m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS -and $1[]_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details.]) - -if test $pkg_failed = yes; then - AC_MSG_RESULT([no]) - _PKG_SHORT_ERRORS_SUPPORTED - if test $_pkg_short_errors_supported = yes; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` - else - $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD - - m4_default([$4], [AC_MSG_ERROR( -[Package requirements ($2) were not met: - -$$1_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -_PKG_TEXT])[]dnl - ]) -elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) - m4_default([$4], [AC_MSG_FAILURE( -[The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -_PKG_TEXT - -To get pkg-config, see .])[]dnl - ]) -else - $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS - $1[]_LIBS=$pkg_cv_[]$1[]_LIBS - AC_MSG_RESULT([yes]) - $3 -fi[]dnl -])dnl PKG_CHECK_MODULES - - -dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -dnl [ACTION-IF-NOT-FOUND]) -dnl --------------------------------------------------------------------- -dnl Since: 0.29 -dnl -dnl Checks for existence of MODULES and gathers its build flags with -dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags -dnl and VARIABLE-PREFIX_LIBS from --libs. -dnl -dnl Note that if there is a possibility the first call to -dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to -dnl include an explicit call to PKG_PROG_PKG_CONFIG in your -dnl configure.ac. -AC_DEFUN([PKG_CHECK_MODULES_STATIC], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -_save_PKG_CONFIG=$PKG_CONFIG -PKG_CONFIG="$PKG_CONFIG --static" -PKG_CHECK_MODULES($@) -PKG_CONFIG=$_save_PKG_CONFIG[]dnl -])dnl PKG_CHECK_MODULES_STATIC - - -dnl PKG_INSTALLDIR([DIRECTORY]) -dnl ------------------------- -dnl Since: 0.27 -dnl -dnl Substitutes the variable pkgconfigdir as the location where a module -dnl should install pkg-config .pc files. By default the directory is -dnl $libdir/pkgconfig, but the default can be changed by passing -dnl DIRECTORY. The user can override through the --with-pkgconfigdir -dnl parameter. -AC_DEFUN([PKG_INSTALLDIR], -[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) -m4_pushdef([pkg_description], - [pkg-config installation directory @<:@]pkg_default[@:>@]) -AC_ARG_WITH([pkgconfigdir], - [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, - [with_pkgconfigdir=]pkg_default) -AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) -m4_popdef([pkg_default]) -m4_popdef([pkg_description]) -])dnl PKG_INSTALLDIR - - -dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) -dnl -------------------------------- -dnl Since: 0.27 -dnl -dnl Substitutes the variable noarch_pkgconfigdir as the location where a -dnl module should install arch-independent pkg-config .pc files. By -dnl default the directory is $datadir/pkgconfig, but the default can be -dnl changed by passing DIRECTORY. The user can override through the -dnl --with-noarch-pkgconfigdir parameter. -AC_DEFUN([PKG_NOARCH_INSTALLDIR], -[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) -m4_pushdef([pkg_description], - [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) -AC_ARG_WITH([noarch-pkgconfigdir], - [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, - [with_noarch_pkgconfigdir=]pkg_default) -AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) -m4_popdef([pkg_default]) -m4_popdef([pkg_description]) -])dnl PKG_NOARCH_INSTALLDIR - - -dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, -dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -dnl ------------------------------------------- -dnl Since: 0.28 -dnl -dnl Retrieves the value of the pkg-config variable for the given module. -AC_DEFUN([PKG_CHECK_VAR], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl - -_PKG_CONFIG([$1], [variable="][$3]["], [$2]) -AS_VAR_COPY([$1], [pkg_cv_][$1]) - -AS_VAR_IF([$1], [""], [$5], [$4])dnl -])dnl PKG_CHECK_VAR - -# Copyright (C) 2002-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.15' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.15], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.15])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# Copyright (C) 2011-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_AR([ACT-IF-FAIL]) -# ------------------------- -# Try to determine the archiver interface, and trigger the ar-lib wrapper -# if it is needed. If the detection of archiver interface fails, run -# ACT-IF-FAIL (default is to abort configure with a proper error message). -AC_DEFUN([AM_PROG_AR], -[AC_BEFORE([$0], [LT_INIT])dnl -AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl -AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([ar-lib])dnl -AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) -: ${AR=ar} - -AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], - [AC_LANG_PUSH([C]) - am_cv_ar_interface=ar - AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], - [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([am_ar_try]) - if test "$ac_status" -eq 0; then - am_cv_ar_interface=ar - else - am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([am_ar_try]) - if test "$ac_status" -eq 0; then - am_cv_ar_interface=lib - else - am_cv_ar_interface=unknown - fi - fi - rm -f conftest.lib libconftest.a - ]) - AC_LANG_POP([C])]) - -case $am_cv_ar_interface in -ar) - ;; -lib) - # Microsoft lib, so override with the ar-lib wrapper script. - # FIXME: It is wrong to rewrite AR. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__AR in this case, - # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something - # similar. - AR="$am_aux_dir/ar-lib $AR" - ;; -unknown) - m4_default([$1], - [AC_MSG_ERROR([could not determine $AR interface])]) - ;; -esac -AC_SUBST([AR])dnl -]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to -# '$srcdir', '$srcdir/..', or '$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is '.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ([2.52])dnl - m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], - [$1], [CXX], [depcc="$CXX" am_compiler_list=], - [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], - [$1], [UPC], [depcc="$UPC" am_compiler_list=], - [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES. -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE([dependency-tracking], [dnl -AS_HELP_STRING( - [--enable-dependency-tracking], - [do not reject slow dependency extractors]) -AS_HELP_STRING( - [--disable-dependency-tracking], - [speeds up one-time build])]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each '.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. -m4_define([AC_PROG_CC], -m4_defn([AC_PROG_CC]) -[_AM_PROG_CC_C_O -]) - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.65])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[AC_DIAGNOSE([obsolete], - [$0: two- and three-arguments forms are deprecated.]) -m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), - [ok:ok],, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) - AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) -AM_MISSING_PROG([AUTOCONF], [autoconf]) -AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) -AM_MISSING_PROG([AUTOHEADER], [autoheader]) -AM_MISSING_PROG([MAKEINFO], [makeinfo]) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -AC_SUBST([mkdir_p], ['$(MKDIR_P)']) -# We need awk for the "check" target (and possibly the TAP driver). The -# system "awk" is bad on some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES([CC])], - [m4_define([AC_PROG_CC], - m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES([CXX])], - [m4_define([AC_PROG_CXX], - m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES([OBJC])], - [m4_define([AC_PROG_OBJC], - m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], - [_AM_DEPENDENCIES([OBJCXX])], - [m4_define([AC_PROG_OBJCXX], - m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl -]) -AC_REQUIRE([AM_SILENT_RULES])dnl -dnl The testsuite driver may need to know about EXEEXT, so add the -dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This -dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) - fi -fi -dnl The trailing newline in this macro's definition is deliberate, for -dnl backward compatibility and to allow trailing 'dnl'-style comments -dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. -]) - -dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST([install_sh])]) - -# Copyright (C) 2003-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it is modern enough. -# If it is, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - AC_MSG_WARN(['missing' script is too old or missing]) -fi -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# -------------------- -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) - -# _AM_SET_OPTIONS(OPTIONS) -# ------------------------ -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Copyright (C) 1999-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_PROG_CC_C_O -# --------------- -# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC -# to automatically call this. -AC_DEFUN([_AM_PROG_CC_C_O], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -AC_LANG_PUSH([C])dnl -AC_CACHE_CHECK( - [whether $CC understands -c and -o together], - [am_cv_prog_cc_c_o], - [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i]) -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -AC_LANG_POP([C])]) - -# For backward compatibility. -AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) - -# Copyright (C) 2001-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_RUN_LOG(COMMAND) -# ------------------- -# Run COMMAND, save the exit status in ac_status, and log it. -# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) -AC_DEFUN([AM_RUN_LOG], -[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD - ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - (exit $ac_status); }]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; -esac - -AC_MSG_RESULT([yes]) -]) - -# Copyright (C) 2009-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_SILENT_RULES([DEFAULT]) -# -------------------------- -# Enable less verbose build rules; with the default set to DEFAULT -# ("yes" being less verbose, "no" or empty being verbose). -AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], [dnl -AS_HELP_STRING( - [--enable-silent-rules], - [less verbose build output (undo: "make V=1")]) -AS_HELP_STRING( - [--disable-silent-rules], - [verbose build output (undo: "make V=0")])dnl -]) -case $enable_silent_rules in @%:@ ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -esac -dnl -dnl A few 'make' implementations (e.g., NonStop OS and NextStep) -dnl do not support nested variable expansions. -dnl See automake bug#9928 and bug#10237. -am_make=${MAKE-make} -AC_CACHE_CHECK([whether $am_make supports nested variables], - [am_cv_make_support_nested_variables], - [if AS_ECHO([['TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi]) -if test $am_cv_make_support_nested_variables = yes; then - dnl Using '$V' instead of '$(V)' breaks IRIX make. - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AC_SUBST([AM_V])dnl -AM_SUBST_NOTMAKE([AM_V])dnl -AC_SUBST([AM_DEFAULT_V])dnl -AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl -AC_SUBST([AM_DEFAULT_VERBOSITY])dnl -AM_BACKSLASH='\' -AC_SUBST([AM_BACKSLASH])dnl -_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl -]) - -# Copyright (C) 2001-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor 'install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in "make install-strip", and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of 'v7', 'ustar', or 'pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -# -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AC_SUBST([AMTAR], ['$${TAR-tar}']) - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' - -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - - [m4_case([$1], - [ustar], - [# The POSIX 1988 'ustar' format is defined with fixed-size fields. - # There is notably a 21 bits limit for the UID and the GID. In fact, - # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 - # and bug#13588). - am_max_uid=2097151 # 2^21 - 1 - am_max_gid=$am_max_uid - # The $UID and $GID variables are not portable, so we need to resort - # to the POSIX-mandated id(1) utility. Errors in the 'id' calls - # below are definitely unexpected, so allow the users to see them - # (that is, avoid stderr redirection). - am_uid=`id -u || echo unknown` - am_gid=`id -g || echo unknown` - AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) - if test $am_uid -le $am_max_uid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi - AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) - if test $am_gid -le $am_max_gid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi], - - [pax], - [], - - [m4_fatal([Unknown tar format])]) - - AC_MSG_CHECKING([how to create a $1 tar archive]) - - # Go ahead even if we have the value already cached. We do so because we - # need to set the values for the 'am__tar' and 'am__untar' variables. - _am_tools=${am_cv_prog_tar_$1-$_am_tools} - - for _am_tool in $_am_tools; do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works. - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi - done - rm -rf conftest.dir - - AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) - AC_MSG_RESULT([$am_cv_prog_tar_$1])]) - -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -# Autoconf support for the Vala compiler - -# Copyright (C) 2008-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# Check whether the Vala compiler exists in $PATH. If it is found, the -# variable VALAC is set pointing to its absolute path. Otherwise, it is -# simply set to 'valac'. -# Optionally a minimum release number of the compiler can be requested. -# If the ACTION-IF-FOUND parameter is given, it will be run if a proper -# Vala compiler is found. -# Similarly, if the ACTION-IF-FOUND is given, it will be run if no proper -# Vala compiler is found. It defaults to simply print a warning about the -# situation, but otherwise proceeding with the configuration. -# -# AM_PROG_VALAC([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# -------------------------------------------------------------------------- -AC_DEFUN([AM_PROG_VALAC], - [AC_PATH_PROG([VALAC], [valac], [valac]) - AS_IF([test "$VALAC" != valac && test -n "$1"], - [AC_MSG_CHECKING([whether $VALAC is at least version $1]) - am__vala_version=`$VALAC --version | sed 's/Vala *//'` - AS_VERSION_COMPARE([$1], ["$am__vala_version"], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - VALAC=valac])]) - if test "$VALAC" = valac; then - m4_default([$3], - [AC_MSG_WARN([no proper vala compiler found]) - AC_MSG_WARN([you will not be able to compile vala source files])]) - else - m4_default([$2], [:]) - fi]) - diff -Nru retro-gtk-0.12.1/ar-lib retro-gtk-0.14.0/ar-lib --- retro-gtk-0.12.1/ar-lib 2017-09-30 10:47:39.000000000 +0000 +++ retro-gtk-0.14.0/ar-lib 1970-01-01 00:00:00.000000000 +0000 @@ -1,270 +0,0 @@ -#! /bin/sh -# Wrapper for Microsoft lib.exe - -me=ar-lib -scriptversion=2012-03-01.08; # UTC - -# Copyright (C) 2010-2014 Free Software Foundation, Inc. -# Written by Peter Rosin . -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - - -# func_error message -func_error () -{ - echo "$me: $1" 1>&2 - exit 1 -} - -file_conv= - -# func_file_conv build_file -# Convert a $build file to $host form and store it in $file -# Currently only supports Windows hosts. -func_file_conv () -{ - file=$1 - case $file in - / | /[!/]*) # absolute file, and not a UNC file - if test -z "$file_conv"; then - # lazily determine how to convert abs files - case `uname -s` in - MINGW*) - file_conv=mingw - ;; - CYGWIN*) - file_conv=cygwin - ;; - *) - file_conv=wine - ;; - esac - fi - case $file_conv in - mingw) - file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` - ;; - cygwin) - file=`cygpath -m "$file" || echo "$file"` - ;; - wine) - file=`winepath -w "$file" || echo "$file"` - ;; - esac - ;; - esac -} - -# func_at_file at_file operation archive -# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE -# for each of them. -# When interpreting the content of the @FILE, do NOT use func_file_conv, -# since the user would need to supply preconverted file names to -# binutils ar, at least for MinGW. -func_at_file () -{ - operation=$2 - archive=$3 - at_file_contents=`cat "$1"` - eval set x "$at_file_contents" - shift - - for member - do - $AR -NOLOGO $operation:"$member" "$archive" || exit $? - done -} - -case $1 in - '') - func_error "no command. Try '$0 --help' for more information." - ;; - -h | --h*) - cat <. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -nl=' -' - -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent tools from complaining about whitespace usage. -IFS=" "" $nl" - -file_conv= - -# func_file_conv build_file lazy -# Convert a $build file to $host form and store it in $file -# Currently only supports Windows hosts. If the determined conversion -# type is listed in (the comma separated) LAZY, no conversion will -# take place. -func_file_conv () -{ - file=$1 - case $file in - / | /[!/]*) # absolute file, and not a UNC file - if test -z "$file_conv"; then - # lazily determine how to convert abs files - case `uname -s` in - MINGW*) - file_conv=mingw - ;; - CYGWIN*) - file_conv=cygwin - ;; - *) - file_conv=wine - ;; - esac - fi - case $file_conv/,$2, in - *,$file_conv,*) - ;; - mingw/*) - file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` - ;; - cygwin/*) - file=`cygpath -m "$file" || echo "$file"` - ;; - wine/*) - file=`winepath -w "$file" || echo "$file"` - ;; - esac - ;; - esac -} - -# func_cl_dashL linkdir -# Make cl look for libraries in LINKDIR -func_cl_dashL () -{ - func_file_conv "$1" - if test -z "$lib_path"; then - lib_path=$file - else - lib_path="$lib_path;$file" - fi - linker_opts="$linker_opts -LIBPATH:$file" -} - -# func_cl_dashl library -# Do a library search-path lookup for cl -func_cl_dashl () -{ - lib=$1 - found=no - save_IFS=$IFS - IFS=';' - for dir in $lib_path $LIB - do - IFS=$save_IFS - if $shared && test -f "$dir/$lib.dll.lib"; then - found=yes - lib=$dir/$lib.dll.lib - break - fi - if test -f "$dir/$lib.lib"; then - found=yes - lib=$dir/$lib.lib - break - fi - if test -f "$dir/lib$lib.a"; then - found=yes - lib=$dir/lib$lib.a - break - fi - done - IFS=$save_IFS - - if test "$found" != yes; then - lib=$lib.lib - fi -} - -# func_cl_wrapper cl arg... -# Adjust compile command to suit cl -func_cl_wrapper () -{ - # Assume a capable shell - lib_path= - shared=: - linker_opts= - for arg - do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - eat=1 - case $2 in - *.o | *.[oO][bB][jJ]) - func_file_conv "$2" - set x "$@" -Fo"$file" - shift - ;; - *) - func_file_conv "$2" - set x "$@" -Fe"$file" - shift - ;; - esac - ;; - -I) - eat=1 - func_file_conv "$2" mingw - set x "$@" -I"$file" - shift - ;; - -I*) - func_file_conv "${1#-I}" mingw - set x "$@" -I"$file" - shift - ;; - -l) - eat=1 - func_cl_dashl "$2" - set x "$@" "$lib" - shift - ;; - -l*) - func_cl_dashl "${1#-l}" - set x "$@" "$lib" - shift - ;; - -L) - eat=1 - func_cl_dashL "$2" - ;; - -L*) - func_cl_dashL "${1#-L}" - ;; - -static) - shared=false - ;; - -Wl,*) - arg=${1#-Wl,} - save_ifs="$IFS"; IFS=',' - for flag in $arg; do - IFS="$save_ifs" - linker_opts="$linker_opts $flag" - done - IFS="$save_ifs" - ;; - -Xlinker) - eat=1 - linker_opts="$linker_opts $2" - ;; - -*) - set x "$@" "$1" - shift - ;; - *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) - func_file_conv "$1" - set x "$@" -Tp"$file" - shift - ;; - *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) - func_file_conv "$1" mingw - set x "$@" "$file" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift - done - if test -n "$linker_opts"; then - linker_opts="-link$linker_opts" - fi - exec "$@" $linker_opts - exit 1 -} - -eat= - -case $1 in - '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: compile [--help] [--version] PROGRAM [ARGS] - -Wrapper for compilers which do not understand '-c -o'. -Remove '-o dest.o' from ARGS, run PROGRAM with the remaining -arguments, and rename the output as expected. - -If you are trying to build a whole package this is not the -right script to run: please start by reading the file 'INSTALL'. - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "compile $scriptversion" - exit $? - ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) - func_cl_wrapper "$@" # Doesn't return... - ;; -esac - -ofile= -cfile= - -for arg -do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - # So we strip '-o arg' only if arg is an object. - eat=1 - case $2 in - *.o | *.obj) - ofile=$2 - ;; - *) - set x "$@" -o "$2" - shift - ;; - esac - ;; - *.c) - cfile=$1 - set x "$@" "$1" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift -done - -if test -z "$ofile" || test -z "$cfile"; then - # If no '-o' option was seen then we might have been invoked from a - # pattern rule where we don't need one. That is ok -- this is a - # normal compilation that the losing compiler can handle. If no - # '.c' file was seen then we are probably linking. That is also - # ok. - exec "$@" -fi - -# Name of file we expect compiler to create. -cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` - -# Create the lock directory. -# Note: use '[/\\:.-]' here to ensure that we don't use the same name -# that we are using for the .o file. Also, base the name on the expected -# object file name, since that is what matters with a parallel build. -lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d -while true; do - if mkdir "$lockdir" >/dev/null 2>&1; then - break - fi - sleep 1 -done -# FIXME: race condition here if user kills between mkdir and trap. -trap "rmdir '$lockdir'; exit 1" 1 2 15 - -# Run the compile. -"$@" -ret=$? - -if test -f "$cofile"; then - test "$cofile" = "$ofile" || mv "$cofile" "$ofile" -elif test -f "${cofile}bj"; then - test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" -fi - -rmdir "$lockdir" -exit $ret - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff -Nru retro-gtk-0.12.1/config.guess retro-gtk-0.14.0/config.guess --- retro-gtk-0.12.1/config.guess 2017-09-30 10:47:39.000000000 +0000 +++ retro-gtk-0.14.0/config.guess 1970-01-01 00:00:00.000000000 +0000 @@ -1,1421 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright 1992-2014 Free Software Foundation, Inc. - -timestamp='2014-11-04' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that -# program. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). -# -# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. -# -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD -# -# Please send patches to . - - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright 1992-2014 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -case "${UNAME_SYSTEM}" in -Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu - - eval $set_cc_for_build - cat <<-EOF > $dummy.c - #include - #if defined(__UCLIBC__) - LIBC=uclibc - #elif defined(__dietlibc__) - LIBC=dietlibc - #else - LIBC=gnu - #endif - EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` - ;; -esac - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:Bitrig:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH="x86_64" - fi - fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/lslpp ] ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | - awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep -q __LP64__ - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW64*:*) - echo ${UNAME_MACHINE}-pc-mingw64 - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - *:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; - esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - aarch64_be:Linux:*:*) - UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - else - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi - else - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf - fi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } - ;; - openrisc*:Linux:*:*) - echo or1k-unknown-linux-${LIBC} - exit ;; - or32:Linux:*:* | or1k*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-${LIBC} - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-${LIBC} - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; - PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; - *) echo hppa-unknown-linux-${LIBC} ;; - esac - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-${LIBC} - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-${LIBC} - exit ;; - ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-${LIBC} - exit ;; - ppcle:Linux:*:*) - echo powerpcle-unknown-linux-${LIBC} - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux-${LIBC} - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-${LIBC} - exit ;; - x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval $set_cc_for_build - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc - fi - if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - fi - elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 - fi - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - exit ;; - NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; - x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx - exit ;; -esac - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff -Nru retro-gtk-0.12.1/config.h.in retro-gtk-0.14.0/config.h.in --- retro-gtk-0.12.1/config.h.in 2017-09-30 10:47:39.000000000 +0000 +++ retro-gtk-0.14.0/config.h.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,90 +0,0 @@ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* always defined to indicate that i18n is enabled */ -#undef ENABLE_NLS - -/* GETTEXT package name */ -#undef GETTEXT_PACKAGE - -/* Define to 1 if you have the `bind_textdomain_codeset' function. */ -#undef HAVE_BIND_TEXTDOMAIN_CODESET - -/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the - CoreFoundation framework. */ -#undef HAVE_CFLOCALECOPYCURRENT - -/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in - the CoreFoundation framework. */ -#undef HAVE_CFPREFERENCESCOPYAPPVALUE - -/* Define to 1 if you have the `dcgettext' function. */ -#undef HAVE_DCGETTEXT - -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - -/* Define if the GNU gettext() function is already present or preinstalled. */ -#undef HAVE_GETTEXT - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define if your file defines LC_MESSAGES. */ -#undef HAVE_LC_MESSAGES - -/* Define to 1 if you have the header file. */ -#undef HAVE_LOCALE_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define to the sub-directory where libtool stores uninstalled libraries. */ -#undef LT_OBJDIR - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the home page for this package. */ -#undef PACKAGE_URL - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Version number of package */ -#undef VERSION diff -Nru retro-gtk-0.12.1/config.sub retro-gtk-0.14.0/config.sub --- retro-gtk-0.12.1/config.sub 2017-09-30 10:47:39.000000000 +0000 +++ retro-gtk-0.14.0/config.sub 1970-01-01 00:00:00.000000000 +0000 @@ -1,1807 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright 1992-2014 Free Software Foundation, Inc. - -timestamp='2014-12-03' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that -# program. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). - - -# Please send patches to . -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright 1992-2014 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - android-linux) - os=-linux-android - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze*) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*178) - os=-lynxos178 - ;; - -lynx*5) - os=-lynxos5 - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arceb \ - | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ - | avr | avr32 \ - | be32 | be64 \ - | bfin \ - | c4x | c8051 | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | epiphany \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | k1om \ - | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa32r6 | mipsisa32r6el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64r6 | mipsisa64r6el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipsr5900 | mipsr5900el \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 | nios2eb | nios2el \ - | ns16k | ns32k \ - | open8 | or1k | or1knd | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ - | riscv32 | riscv64 \ - | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | visium \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - leon|leon[3-9]) - basic_machine=sparc-$basic_machine - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown - ;; - xgate) - basic_machine=$basic_machine-unknown - os=-none - ;; - xscaleeb) - basic_machine=armeb-unknown - ;; - - xscaleel) - basic_machine=armel-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | be32-* | be64-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | c8051-* | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | k1om-* \ - | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ - | microblaze-* | microblazeel-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa32r6-* | mipsisa32r6el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64r6-* | mipsisa64r6el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipsr5900-* | mipsr5900el-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* | nios2eb-* | nios2el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | or1k*-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ - | visium-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - leon-*|leon[3-9]-*) - basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze*) - basic_machine=microblaze-xilinx - ;; - mingw64) - basic_machine=x86_64-pc - os=-mingw64 - ;; - mingw32) - basic_machine=i686-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - moxiebox) - basic_machine=moxie-unknown - os=-moxiebox - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - msys) - basic_machine=i686-pc - os=-msys - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc | ppcbe) basic_machine=powerpc-unknown - ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos | rdos64) - basic_machine=x86_64-pc - os=-rdos - ;; - rdos32) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tile*) - basic_machine=$basic_machine-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux - ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* | -plan9* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; - -nacl*) - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - c8051-*) - os=-elf - ;; - hexagon-*) - os=-elf - ;; - tic54x-*) - os=-coff - ;; - tic55x-*) - os=-coff - ;; - tic6x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - ;; - m68*-cisco) - os=-aout - ;; - mep-*) - os=-elf - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -cnk*|-aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff -Nru retro-gtk-0.12.1/configure retro-gtk-0.14.0/configure --- retro-gtk-0.12.1/configure 2017-09-30 10:47:40.000000000 +0000 +++ retro-gtk-0.14.0/configure 1970-01-01 00:00:00.000000000 +0000 @@ -1,16302 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for retro-gtk 0.12.1. -# -# -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -as_echo='printf %s\n' -as_echo_n='printf %s' - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in bash sh ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -as_awk_strverscmp=' - # Use only awk features that work with 7th edition Unix awk (1978). - # My, what an old awk you have, Mr. Solaris! - END { - while (length(v1) && length(v2)) { - # Set d1 to be the next thing to compare from v1, and likewise for d2. - # Normally this is a single character, but if v1 and v2 contain digits, - # compare them as integers and fractions as strverscmp does. - if (v1 ~ /^[0-9]/ && v2 ~ /^[0-9]/) { - # Split v1 and v2 into their leading digit string components d1 and d2, - # and advance v1 and v2 past the leading digit strings. - for (len1 = 1; substr(v1, len1 + 1) ~ /^[0-9]/; len1++) continue - for (len2 = 1; substr(v2, len2 + 1) ~ /^[0-9]/; len2++) continue - d1 = substr(v1, 1, len1); v1 = substr(v1, len1 + 1) - d2 = substr(v2, 1, len2); v2 = substr(v2, len2 + 1) - if (d1 ~ /^0/) { - if (d2 ~ /^0/) { - # Compare two fractions. - while (d1 ~ /^0/ && d2 ~ /^0/) { - d1 = substr(d1, 2); len1-- - d2 = substr(d2, 2); len2-- - } - if (len1 != len2 && ! (len1 && len2 && substr(d1, 1, 1) == substr(d2, 1, 1))) { - # The two components differ in length, and the common prefix - # contains only leading zeros. Consider the longer to be less. - d1 = -len1 - d2 = -len2 - } else { - # Otherwise, compare as strings. - d1 = "x" d1 - d2 = "x" d2 - } - } else { - # A fraction is less than an integer. - exit 1 - } - } else { - if (d2 ~ /^0/) { - # An integer is greater than a fraction. - exit 2 - } else { - # Compare two integers. - d1 += 0 - d2 += 0 - } - } - } else { - # The normal case, without worrying about digits. - d1 = substr(v1, 1, 1); v1 = substr(v1, 2) - d2 = substr(v2, 1, 1); v2 = substr(v2, 2) - } - if (d1 < d2) exit 1 - if (d1 > d2) exit 2 - } - # Beware Solaris /usr/xgp4/bin/awk (at least through Solaris 10), - # which mishandles some comparisons of empty strings to integers. - if (length(v2)) exit 1 - if (length(v1)) exit 2 - } -' -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='retro-gtk' -PACKAGE_TARNAME='retro-gtk' -PACKAGE_VERSION='0.12.1' -PACKAGE_STRING='retro-gtk 0.12.1' -PACKAGE_BUGREPORT='' -PACKAGE_URL='' - -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -retro_gtk_pkg_modules -RETRO_GTK_LIBS -RETRO_GTK_CFLAGS -LT_SYS_LIBRARY_PATH -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -RANLIB -DLLTOOL -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -SED -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -LIBTOOL -MKINSTALLDIRS -POSUB -POFILES -PO_IN_DATADIR_FALSE -PO_IN_DATADIR_TRUE -INTLLIBS -INSTOBJEXT -GMOFILES -DATADIRNAME -CATOBJEXT -CATALOGS -MSGFMT_OPTS -INTL_MACOSX_LIBS -EGREP -GREP -CPP -GETTEXT_PACKAGE -ALL_LINGUAS -GMSGFMT -MSGFMT -MSGMERGE -XGETTEXT -INTLTOOL_POLICY_RULE -INTLTOOL_SERVICE_RULE -INTLTOOL_THEME_RULE -INTLTOOL_SCHEMAS_RULE -INTLTOOL_CAVES_RULE -INTLTOOL_XML_NOMERGE_RULE -INTLTOOL_XML_RULE -INTLTOOL_KBD_RULE -INTLTOOL_XAM_RULE -INTLTOOL_UI_RULE -INTLTOOL_SOUNDLIST_RULE -INTLTOOL_SHEET_RULE -INTLTOOL_SERVER_RULE -INTLTOOL_PONG_RULE -INTLTOOL_OAF_RULE -INTLTOOL_PROP_RULE -INTLTOOL_KEYS_RULE -INTLTOOL_DIRECTORY_RULE -INTLTOOL_DESKTOP_RULE -intltool__v_merge_options_0 -intltool__v_merge_options_ -INTLTOOL_V_MERGE_OPTIONS -INTLTOOL__v_MERGE_0 -INTLTOOL__v_MERGE_ -INTLTOOL_V_MERGE -INTLTOOL_EXTRACT -INTLTOOL_MERGE -INTLTOOL_UPDATE -USE_NLS -HAVE_INTROSPECTION_FALSE -HAVE_INTROSPECTION_TRUE -INTROSPECTION_MAKEFILE -INTROSPECTION_LIBS -INTROSPECTION_CFLAGS -INTROSPECTION_TYPELIBDIR -INTROSPECTION_GIRDIR -INTROSPECTION_GENERATE -INTROSPECTION_COMPILER -INTROSPECTION_SCANNER -PKG_CONFIG_LIBDIR -PKG_CONFIG_PATH -PKG_CONFIG -GLIB_COMPILE_RESOURCES -VALAC -ac_ct_AR -AR -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -AM_BACKSLASH -AM_DEFAULT_VERBOSITY -AM_DEFAULT_V -AM_V -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_silent_rules -enable_dependency_tracking -enable_introspection -enable_nls -enable_static -enable_shared -with_pic -enable_fast_install -with_aix_soname -with_gnu_ld -with_libtool_sysroot -enable_libtool_lock -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -PKG_CONFIG -PKG_CONFIG_PATH -PKG_CONFIG_LIBDIR -CPP -LT_SYS_LIBRARY_PATH -RETRO_GTK_CFLAGS -RETRO_GTK_LIBS' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures retro-gtk 0.12.1 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/retro-gtk] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of retro-gtk 0.12.1:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-silent-rules less verbose build output (undo: "make V=1") - --disable-silent-rules verbose build output (undo: "make V=0") - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build - --enable-introspection=[no/auto/yes] - Enable introspection for this build - --disable-nls do not use Native Language Support - --enable-static[=PKGS] build static libraries [default=no] - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use - both] - --with-aix-soname=aix|svr4|both - shared library versioning (aka "SONAME") variant to - provide on AIX, [default=aix]. - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-libtool-sysroot[=DIR] - Search for dependent libraries within DIR (or the - compiler's sysroot if not specified). - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - PKG_CONFIG path to pkg-config utility - PKG_CONFIG_PATH - directories to add to pkg-config's search path - PKG_CONFIG_LIBDIR - path overriding pkg-config's built-in search path - CPP C preprocessor - LT_SYS_LIBRARY_PATH - User-defined run-time library search path. - RETRO_GTK_CFLAGS - C compiler flags for RETRO_GTK, overriding pkg-config - RETRO_GTK_LIBS - linker flags for RETRO_GTK, overriding pkg-config - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -retro-gtk configure 0.12.1 -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by retro-gtk $as_me 0.12.1, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -fi -for ac_site_file in $ac_site_file1 -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -ac_config_headers="$ac_config_headers config.h" - - -am__api_version='1.15' - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -# Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : - enableval=$enable_silent_rules; -fi - -case $enable_silent_rules in # ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=1;; -esac -am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } -if test $am_cv_make_support_nested_variables = yes; then - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AM_BACKSLASH='\' - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='retro-gtk' - VERSION='0.12.1' - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -mkdir_p='$(MKDIR_P)' - -# We need awk for the "check" target (and possibly the TAP driver). The -# system "awk" is bad on some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' - - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar plaintar pax cpio none' - -# The POSIX 1988 'ustar' format is defined with fixed-size fields. - # There is notably a 21 bits limit for the UID and the GID. In fact, - # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 - # and bug#13588). - am_max_uid=2097151 # 2^21 - 1 - am_max_gid=$am_max_uid - # The $UID and $GID variables are not portable, so we need to resort - # to the POSIX-mandated id(1) utility. Errors in the 'id' calls - # below are definitely unexpected, so allow the users to see them - # (that is, avoid stderr redirection). - am_uid=`id -u || echo unknown` - am_gid=`id -g || echo unknown` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 -$as_echo_n "checking whether UID '$am_uid' is supported by ustar format... " >&6; } - if test $am_uid -le $am_max_uid; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - _am_tools=none - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 -$as_echo_n "checking whether GID '$am_gid' is supported by ustar format... " >&6; } - if test $am_gid -le $am_max_gid; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - _am_tools=none - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 -$as_echo_n "checking how to create a ustar tar archive... " >&6; } - - # Go ahead even if we have the value already cached. We do so because we - # need to set the values for the 'am__tar' and 'am__untar' variables. - _am_tools=${am_cv_prog_tar_ustar-$_am_tools} - - for _am_tool in $_am_tools; do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; do - { echo "$as_me:$LINENO: $_am_tar --version" >&5 - ($_am_tar --version) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && break - done - am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x ustar -w "$$tardir"' - am__tar_='pax -L -x ustar -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H ustar -L' - am__tar_='find "$tardir" -print | cpio -o -H ustar -L' - am__untar='cpio -i -H ustar -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_ustar}" && break - - # tar/untar a dummy directory, and stop if the command works. - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 - (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - rm -rf conftest.dir - if test -s conftest.tar; then - { echo "$as_me:$LINENO: $am__untar &5 - ($am__untar &5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 - (cat conftest.dir/file) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - grep GrepMe conftest.dir/file >/dev/null 2>&1 && break - fi - done - rm -rf conftest.dir - - if ${am_cv_prog_tar_ustar+:} false; then : - $as_echo_n "(cached) " >&6 -else - am_cv_prog_tar_ustar=$_am_tool -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 -$as_echo "$am_cv_prog_tar_ustar" >&6; } - - - - - - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 - fi -fi - - -# Check whether --enable-silent-rules was given. -if test "${enable_silent_rules+set}" = set; then : - enableval=$enable_silent_rules; -fi - -case $enable_silent_rules in # ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=0;; -esac -am_make=${MAKE-make} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -if ${am_cv_make_support_nested_variables+:} false; then : - $as_echo_n "(cached) " >&6 -else - if $as_echo 'TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -$as_echo "$am_cv_make_support_nested_variables" >&6; } -if test $am_cv_make_support_nested_variables = yes; then - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AM_BACKSLASH='\' - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } -if ${am_cv_prog_cc_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 - ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -$as_echo "$am_cv_prog_cc_c_o" >&6; } -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar lib "link -lib" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar lib "link -lib" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 -$as_echo_n "checking the archiver ($AR) interface... " >&6; } -if ${am_cv_ar_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - am_cv_ar_interface=ar - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int some_variable = 0; -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 - (eval $am_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - am_cv_ar_interface=ar - else - am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 - (eval $am_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - am_cv_ar_interface=lib - else - am_cv_ar_interface=unknown - fi - fi - rm -f conftest.lib libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 -$as_echo "$am_cv_ar_interface" >&6; } - -case $am_cv_ar_interface in -ar) - ;; -lib) - # Microsoft lib, so override with the ar-lib wrapper script. - # FIXME: It is wrong to rewrite AR. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__AR in this case, - # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something - # similar. - AR="$am_aux_dir/ar-lib $AR" - ;; -unknown) - as_fn_error $? "could not determine $AR interface" "$LINENO" 5 - ;; -esac - - -# Extract the first word of "valac", so it can be a program name with args. -set dummy valac; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_VALAC+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $VALAC in - [\\/]* | ?:[\\/]*) - ac_cv_path_VALAC="$VALAC" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_VALAC="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_VALAC" && ac_cv_path_VALAC="valac" - ;; -esac -fi -VALAC=$ac_cv_path_VALAC -if test -n "$VALAC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VALAC" >&5 -$as_echo "$VALAC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - if test "$VALAC" != valac && test -n ""; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $VALAC is at least version " >&5 -$as_echo_n "checking whether $VALAC is at least version ... " >&6; } - am__vala_version=`$VALAC --version | sed 's/Vala *//'` - as_arg_v1= -as_arg_v2="$am__vala_version" -awk "$as_awk_strverscmp" v1="$as_arg_v1" v2="$as_arg_v2" /dev/null -case $? in #( - 1) : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } ;; #( - 0) : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } ;; #( - 2) : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - VALAC=valac ;; #( - *) : - ;; -esac -fi - if test "$VALAC" = valac; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no proper vala compiler found" >&5 -$as_echo "$as_me: WARNING: no proper vala compiler found" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: you will not be able to compile vala source files" >&5 -$as_echo "$as_me: WARNING: you will not be able to compile vala source files" >&2;} - else - : - fi - -# GResource -# Extract the first word of "glib-compile-resources", so it can be a program name with args. -set dummy glib-compile-resources; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GLIB_COMPILE_RESOURCES+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $GLIB_COMPILE_RESOURCES in - [\\/]* | ?:[\\/]*) - ac_cv_path_GLIB_COMPILE_RESOURCES="$GLIB_COMPILE_RESOURCES" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GLIB_COMPILE_RESOURCES="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -GLIB_COMPILE_RESOURCES=$ac_cv_path_GLIB_COMPILE_RESOURCES -if test -n "$GLIB_COMPILE_RESOURCES"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GLIB_COMPILE_RESOURCES" >&5 -$as_echo "$GLIB_COMPILE_RESOURCES" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - - - - - - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_pt_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=0.9.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - PKG_CONFIG="" - fi -fi - - - - # Check whether --enable-introspection was given. -if test "${enable_introspection+set}" = set; then : - enableval=$enable_introspection; -else - enable_introspection=auto -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gobject-introspection" >&5 -$as_echo_n "checking for gobject-introspection... " >&6; } - - case $enable_introspection in #( - no) : - found_introspection="no (disabled, use --enable-introspection to enable)" - ;; #( - yes) : - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0\""; } >&5 - ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - : -else - as_fn_error $? "gobject-introspection-1.0 is not installed" "$LINENO" 5 -fi - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0 >= 0.6.7\""; } >&5 - ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0 >= 0.6.7") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - found_introspection=yes -else - as_fn_error $? "You need to have gobject-introspection >= 0.6.7 installed to build retro-gtk" "$LINENO" 5 -fi - ;; #( - auto) : - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0 >= 0.6.7\""; } >&5 - ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0 >= 0.6.7") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - found_introspection=yes -else - found_introspection=no -fi - enable_introspection=$found_introspection - ;; #( - *) : - as_fn_error $? "invalid argument passed to --enable-introspection, should be one of [no/auto/yes]" "$LINENO" 5 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $found_introspection" >&5 -$as_echo "$found_introspection" >&6; } - - INTROSPECTION_SCANNER= - INTROSPECTION_COMPILER= - INTROSPECTION_GENERATE= - INTROSPECTION_GIRDIR= - INTROSPECTION_TYPELIBDIR= - if test "x$found_introspection" = "xyes"; then - INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` - INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` - INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` - INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0` - INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)" - INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0` - INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0` - INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection - fi - - - - - - - - - - if test "x$found_introspection" = "xyes"; then - HAVE_INTROSPECTION_TRUE= - HAVE_INTROSPECTION_FALSE='#' -else - HAVE_INTROSPECTION_TRUE='#' - HAVE_INTROSPECTION_FALSE= -fi - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 -$as_echo_n "checking whether NLS is requested... " >&6; } - # Check whether --enable-nls was given. -if test "${enable_nls+set}" = set; then : - enableval=$enable_nls; USE_NLS=$enableval -else - USE_NLS=yes -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 -$as_echo "$USE_NLS" >&6; } - - - - -case "$am__api_version" in - 1.01234) - as_fn_error $? "Automake 1.5 or newer is required to use intltool" "$LINENO" 5 - ;; - *) - ;; -esac - -INTLTOOL_REQUIRED_VERSION_AS_INT=`echo 0.35.0 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` -INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3` -INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` -if test -n "0.35.0"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intltool >= 0.35.0" >&5 -$as_echo_n "checking for intltool >= 0.35.0... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_APPLIED_VERSION found" >&5 -$as_echo "$INTLTOOL_APPLIED_VERSION found" >&6; } - test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" || - as_fn_error $? "Your intltool is too old. You need intltool 0.35.0 or later." "$LINENO" 5 -fi - -# Extract the first word of "intltool-update", so it can be a program name with args. -set dummy intltool-update; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_INTLTOOL_UPDATE+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $INTLTOOL_UPDATE in - [\\/]* | ?:[\\/]*) - ac_cv_path_INTLTOOL_UPDATE="$INTLTOOL_UPDATE" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_INTLTOOL_UPDATE="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -INTLTOOL_UPDATE=$ac_cv_path_INTLTOOL_UPDATE -if test -n "$INTLTOOL_UPDATE"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_UPDATE" >&5 -$as_echo "$INTLTOOL_UPDATE" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "intltool-merge", so it can be a program name with args. -set dummy intltool-merge; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_INTLTOOL_MERGE+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $INTLTOOL_MERGE in - [\\/]* | ?:[\\/]*) - ac_cv_path_INTLTOOL_MERGE="$INTLTOOL_MERGE" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_INTLTOOL_MERGE="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -INTLTOOL_MERGE=$ac_cv_path_INTLTOOL_MERGE -if test -n "$INTLTOOL_MERGE"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_MERGE" >&5 -$as_echo "$INTLTOOL_MERGE" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "intltool-extract", so it can be a program name with args. -set dummy intltool-extract; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_INTLTOOL_EXTRACT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $INTLTOOL_EXTRACT in - [\\/]* | ?:[\\/]*) - ac_cv_path_INTLTOOL_EXTRACT="$INTLTOOL_EXTRACT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_INTLTOOL_EXTRACT="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -INTLTOOL_EXTRACT=$ac_cv_path_INTLTOOL_EXTRACT -if test -n "$INTLTOOL_EXTRACT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_EXTRACT" >&5 -$as_echo "$INTLTOOL_EXTRACT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then - as_fn_error $? "The intltool scripts were not found. Please install intltool." "$LINENO" 5 -fi - -if test -z "$AM_DEFAULT_VERBOSITY"; then - AM_DEFAULT_VERBOSITY=1 -fi - - -INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))' -INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))' -INTLTOOL__v_MERGE_0='@echo " ITMRG " $@;' - - - - -INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))' -intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))' -intltool__v_merge_options_0='-q' - - - - - INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' -INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' - INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' - INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' - INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -p $(top_srcdir)/po $< $@' - INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' - INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' - INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' -INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' - INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' - INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' -if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge 5000; then - INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u --no-translations $< $@' -else - INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)_it_tmp_dir=tmp.intltool.$$RANDOM && mkdir $$_it_tmp_dir && LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u $$_it_tmp_dir $< $@ && rmdir $$_it_tmp_dir' -fi - INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' - INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' - INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' - INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' - INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' - INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' - INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# Check the gettext tools to make sure they are GNU -# Extract the first word of "xgettext", so it can be a program name with args. -set dummy xgettext; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_XGETTEXT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $XGETTEXT in - [\\/]* | ?:[\\/]*) - ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_XGETTEXT="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -XGETTEXT=$ac_cv_path_XGETTEXT -if test -n "$XGETTEXT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 -$as_echo "$XGETTEXT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "msgmerge", so it can be a program name with args. -set dummy msgmerge; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGMERGE+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MSGMERGE in - [\\/]* | ?:[\\/]*) - ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_MSGMERGE="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -MSGMERGE=$ac_cv_path_MSGMERGE -if test -n "$MSGMERGE"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 -$as_echo "$MSGMERGE" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "msgfmt", so it can be a program name with args. -set dummy msgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MSGFMT in - [\\/]* | ?:[\\/]*) - ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_MSGFMT="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -MSGFMT=$ac_cv_path_MSGFMT -if test -n "$MSGFMT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 -$as_echo "$MSGFMT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "gmsgfmt", so it can be a program name with args. -set dummy gmsgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GMSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $GMSGFMT in - [\\/]* | ?:[\\/]*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" - ;; -esac -fi -GMSGFMT=$ac_cv_path_GMSGFMT -if test -n "$GMSGFMT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 -$as_echo "$GMSGFMT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then - as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 -fi -xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`" -mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`" -mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`" -if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then - as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 -fi - -# Substitute ALL_LINGUAS so we can use it in po/Makefile - - - - - - -GETTEXT_PACKAGE=retro-gtk - - -cat >>confdefs.h <<_ACEOF -#define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" -_ACEOF - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - for ac_header in locale.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" -if test "x$ac_cv_header_locale_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LOCALE_H 1 -_ACEOF - -fi - -done - - if test $ac_cv_header_locale_h = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 -$as_echo_n "checking for LC_MESSAGES... " >&6; } -if ${am_cv_val_LC_MESSAGES+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -return LC_MESSAGES - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_val_LC_MESSAGES=yes -else - am_cv_val_LC_MESSAGES=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5 -$as_echo "$am_cv_val_LC_MESSAGES" >&6; } - if test $am_cv_val_LC_MESSAGES = yes; then - -$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h - - fi - fi - USE_NLS=yes - - - gt_cv_have_gettext=no - - CATOBJEXT=NONE - XGETTEXT=: - INTLLIBS= - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 -$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } -if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : - $as_echo_n "(cached) " >&6 -else - gt_save_LIBS="$LIBS" - LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -CFPreferencesCopyAppValue(NULL, NULL) - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_CFPreferencesCopyAppValue=yes -else - gt_cv_func_CFPreferencesCopyAppValue=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$gt_save_LIBS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 -$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } - if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then - -$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h - - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 -$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } -if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : - $as_echo_n "(cached) " >&6 -else - gt_save_LIBS="$LIBS" - LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -CFLocaleCopyCurrent(); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_CFLocaleCopyCurrent=yes -else - gt_cv_func_CFLocaleCopyCurrent=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$gt_save_LIBS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 -$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } - if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - -$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h - - fi - INTL_MACOSX_LIBS= - if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then - INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" - fi - - - - ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default" -if test "x$ac_cv_header_libintl_h" = xyes; then : - gt_cv_func_dgettext_libintl="no" - libintl_extra_libs="" - - # - # First check in libc - # - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5 -$as_echo_n "checking for ngettext in libc... " >&6; } -if ${gt_cv_func_ngettext_libc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include - -int -main () -{ -return !ngettext ("","", 1) - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_ngettext_libc=yes -else - gt_cv_func_ngettext_libc=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5 -$as_echo "$gt_cv_func_ngettext_libc" >&6; } - - if test "$gt_cv_func_ngettext_libc" = "yes" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5 -$as_echo_n "checking for dgettext in libc... " >&6; } -if ${gt_cv_func_dgettext_libc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include - -int -main () -{ -return !dgettext ("","") - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - gt_cv_func_dgettext_libc=yes -else - gt_cv_func_dgettext_libc=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5 -$as_echo "$gt_cv_func_dgettext_libc" >&6; } - fi - - if test "$gt_cv_func_ngettext_libc" = "yes" ; then - for ac_func in bind_textdomain_codeset -do : - ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" -if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_BIND_TEXTDOMAIN_CODESET 1 -_ACEOF - -fi -done - - fi - - # - # If we don't have everything we want, check in libintl - # - if test "$gt_cv_func_dgettext_libc" != "yes" \ - || test "$gt_cv_func_ngettext_libc" != "yes" \ - || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5 -$as_echo_n "checking for bindtextdomain in -lintl... " >&6; } -if ${ac_cv_lib_intl_bindtextdomain+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lintl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char bindtextdomain (); -int -main () -{ -return bindtextdomain (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_intl_bindtextdomain=yes -else - ac_cv_lib_intl_bindtextdomain=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5 -$as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; } -if test "x$ac_cv_lib_intl_bindtextdomain" = xyes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 -$as_echo_n "checking for ngettext in -lintl... " >&6; } -if ${ac_cv_lib_intl_ngettext+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lintl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char ngettext (); -int -main () -{ -return ngettext (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_intl_ngettext=yes -else - ac_cv_lib_intl_ngettext=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 -$as_echo "$ac_cv_lib_intl_ngettext" >&6; } -if test "x$ac_cv_lib_intl_ngettext" = xyes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5 -$as_echo_n "checking for dgettext in -lintl... " >&6; } -if ${ac_cv_lib_intl_dgettext+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lintl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dgettext (); -int -main () -{ -return dgettext (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_intl_dgettext=yes -else - ac_cv_lib_intl_dgettext=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5 -$as_echo "$ac_cv_lib_intl_dgettext" >&6; } -if test "x$ac_cv_lib_intl_dgettext" = xyes; then : - gt_cv_func_dgettext_libintl=yes -fi - -fi - -fi - - - if test "$gt_cv_func_dgettext_libintl" != "yes" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5 -$as_echo_n "checking if -liconv is needed to use gettext... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -$as_echo "" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 -$as_echo_n "checking for ngettext in -lintl... " >&6; } -if ${ac_cv_lib_intl_ngettext+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lintl -liconv $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char ngettext (); -int -main () -{ -return ngettext (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_intl_ngettext=yes -else - ac_cv_lib_intl_ngettext=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 -$as_echo "$ac_cv_lib_intl_ngettext" >&6; } -if test "x$ac_cv_lib_intl_ngettext" = xyes; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5 -$as_echo_n "checking for dcgettext in -lintl... " >&6; } -if ${ac_cv_lib_intl_dcgettext+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lintl -liconv $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dcgettext (); -int -main () -{ -return dcgettext (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_intl_dcgettext=yes -else - ac_cv_lib_intl_dcgettext=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5 -$as_echo "$ac_cv_lib_intl_dcgettext" >&6; } -if test "x$ac_cv_lib_intl_dcgettext" = xyes; then : - gt_cv_func_dgettext_libintl=yes - libintl_extra_libs=-liconv -else - : -fi - -else - : -fi - - fi - - # - # If we found libintl, then check in it for bind_textdomain_codeset(); - # we'll prefer libc if neither have bind_textdomain_codeset(), - # and both have dgettext and ngettext - # - if test "$gt_cv_func_dgettext_libintl" = "yes" ; then - glib_save_LIBS="$LIBS" - LIBS="$LIBS -lintl $libintl_extra_libs" - unset ac_cv_func_bind_textdomain_codeset - for ac_func in bind_textdomain_codeset -do : - ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" -if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_BIND_TEXTDOMAIN_CODESET 1 -_ACEOF - -fi -done - - LIBS="$glib_save_LIBS" - - if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then - gt_cv_func_dgettext_libc=no - else - if test "$gt_cv_func_dgettext_libc" = "yes" \ - && test "$gt_cv_func_ngettext_libc" = "yes"; then - gt_cv_func_dgettext_libintl=no - fi - fi - fi - fi - - if test "$gt_cv_func_dgettext_libc" = "yes" \ - || test "$gt_cv_func_dgettext_libintl" = "yes"; then - gt_cv_have_gettext=yes - fi - - if test "$gt_cv_func_dgettext_libintl" = "yes"; then - INTLLIBS="-lintl $libintl_extra_libs $INTL_MACOSX_LIBS" - fi - - if test "$gt_cv_have_gettext" = "yes"; then - -$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h - - # Extract the first word of "msgfmt", so it can be a program name with args. -set dummy msgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$MSGFMT" in - /*) - ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then - ac_cv_path_MSGFMT="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no" - ;; -esac -fi -MSGFMT="$ac_cv_path_MSGFMT" -if test "$MSGFMT" != "no"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 -$as_echo "$MSGFMT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - if test "$MSGFMT" != "no"; then - glib_save_LIBS="$LIBS" - LIBS="$LIBS $INTLLIBS" - for ac_func in dcgettext -do : - ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext" -if test "x$ac_cv_func_dcgettext" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DCGETTEXT 1 -_ACEOF - -fi -done - - MSGFMT_OPTS= - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5 -$as_echo_n "checking if msgfmt accepts -c... " >&6; } - cat >conftest.foo <<_ACEOF - -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: test 1.0\n" -"PO-Revision-Date: 2007-02-15 12:01+0100\n" -"Last-Translator: test \n" -"Language-Team: C \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" - -_ACEOF -if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5 - ($MSGFMT -c -o /dev/null conftest.foo) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - MSGFMT_OPTS=-c; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -echo "$as_me: failed input was:" >&5 -sed 's/^/| /' conftest.foo >&5 -fi - - # Extract the first word of "gmsgfmt", so it can be a program name with args. -set dummy gmsgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GMSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $GMSGFMT in - [\\/]* | ?:[\\/]*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" - ;; -esac -fi -GMSGFMT=$ac_cv_path_GMSGFMT -if test -n "$GMSGFMT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 -$as_echo "$GMSGFMT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - # Extract the first word of "xgettext", so it can be a program name with args. -set dummy xgettext; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_XGETTEXT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$XGETTEXT" in - /*) - ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then - ac_cv_path_XGETTEXT="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" - ;; -esac -fi -XGETTEXT="$ac_cv_path_XGETTEXT" -if test "$XGETTEXT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 -$as_echo "$XGETTEXT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -extern int _nl_msg_cat_cntr; - return _nl_msg_cat_cntr - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - CATOBJEXT=.gmo - DATADIRNAME=share -else - case $host in - *-*-solaris*) - ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" -if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : - CATOBJEXT=.gmo - DATADIRNAME=share -else - CATOBJEXT=.mo - DATADIRNAME=lib -fi - - ;; - *-*-openbsd*) - CATOBJEXT=.mo - DATADIRNAME=share - ;; - *) - CATOBJEXT=.mo - DATADIRNAME=lib - ;; - esac -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$glib_save_LIBS" - INSTOBJEXT=.mo - else - gt_cv_have_gettext=no - fi - fi - -fi - - - - if test "$gt_cv_have_gettext" = "yes" ; then - -$as_echo "#define ENABLE_NLS 1" >>confdefs.h - - fi - - if test "$XGETTEXT" != ":"; then - if $XGETTEXT --omit-header /dev/null 2> /dev/null; then - : ; - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 -$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } - XGETTEXT=":" - fi - fi - - # We need to process the po/ directory. - POSUB=po - - ac_config_commands="$ac_config_commands default-1" - - - for lang in $ALL_LINGUAS; do - GMOFILES="$GMOFILES $lang.gmo" - POFILES="$POFILES $lang.po" - done - - - - - - - - - - - - - - if test "$gt_cv_have_gettext" = "yes"; then - if test "x$ALL_LINGUAS" = "x"; then - LINGUAS= - else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5 -$as_echo_n "checking for catalogs to be installed... " >&6; } - NEW_LINGUAS= - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - NEW_LINGUAS="$NEW_LINGUAS $presentlang" - fi - done - LINGUAS=$NEW_LINGUAS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5 -$as_echo "$LINGUAS" >&6; } - fi - - if test -n "$LINGUAS"; then - for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done - fi - fi - - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - - - test -d po || mkdir po - if test "x$srcdir" != "x."; then - if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then - posrcprefix="$srcdir/" - else - posrcprefix="../$srcdir/" - fi - else - posrcprefix="../" - fi - rm -f po/POTFILES - sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ - < $srcdir/po/POTFILES.in > po/POTFILES - - - - - -# Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_static=no -fi - - - - - - - - - - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4.6' -macro_revision='2.4.6' - - - - - - - - - - - - - -ltmain=$ac_aux_dir/ltmain.sh - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case $ECHO in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_FGREP" || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM=$NM -else - lt_nm_to_check=${ac_tool_prefix}nm - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/$lt_tmp_nm - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the 'sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty - case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; - *) lt_bad_file=/dev/null ;; - esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break 2 - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break 2 - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS=$lt_save_ifs - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test : != "$DUMPBIN"; then - NM=$DUMPBIN - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring=ABCD - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n "$lt_cv_sys_max_cmd_len"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test yes != "$GCC"; then - reload_cmds=false - fi - ;; - darwin*) - if test yes = "$GCC"; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# 'unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# that responds to the $file_magic_cmd with a given extended regex. -# If you have 'file' or equivalent on your system and you're not sure -# whether 'pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -os2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -eq "$ac_status"; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -ne "$ac_status"; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test no = "$lt_cv_ar_at_file"; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - bitrig* | openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test ia64 = "$host_cpu"; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function, - # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest$ac_exeext; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -# Check whether --with-libtool-sysroot was given. -if test "${with_libtool_sysroot+set}" = set; then : - withval=$with_libtool_sysroot; -else - with_libtool_sysroot=no -fi - - -lt_sysroot= -case $with_libtool_sysroot in #( - no) - if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - # Treat "/" the same a an unset sysroot. It seems to be more - # compatible across host platforms that way!? - if test "$lt_sysroot" = /; then - lt_sysroot= - fi - fi - ;; #( - yes|''|/) - ;; #( - /*) - lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_libtool_sysroot" >&5 -$as_echo "$with_libtool_sysroot" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 -$as_echo_n "checking for a working dd... " >&6; } -if ${ac_cv_path_lt_DD+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -: ${lt_DD:=$DD} -if test -z "$lt_DD"; then - ac_path_lt_DD_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in dd; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_lt_DD" || continue -if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: -fi - $ac_path_lt_DD_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_lt_DD"; then - : - fi -else - ac_cv_path_lt_DD=$lt_DD -fi - -rm -f conftest.i conftest2.i conftest.out -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 -$as_echo "$ac_cv_path_lt_DD" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 -$as_echo_n "checking how to truncate binary pipes... " >&6; } -if ${lt_cv_truncate_bin+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -lt_cv_truncate_bin= -if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" -fi -rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 -$as_echo "$lt_cv_truncate_bin" >&6; } - - - - - - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test no = "$enable_libtool_lock" || enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out what ABI is being produced by ac_compile, and set mode - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE=32 - ;; - *ELF-64*) - HPUX_IA64_MODE=64 - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test yes = "$lt_cv_prog_gnu_ld"; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test yes != "$lt_cv_cc_needs_belf"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS=$SAVE_CFLAGS - fi - ;; -*-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*|x86_64-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks=$enable_libtool_lock - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test yes != "$lt_cv_path_mainfest_tool"; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&5 - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&5 - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[012][,.]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test yes = "$lt_cv_apple_cc_single_mod"; then - _lt_dar_single_mod='$single_module' - fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' - fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for lt_pkg in $withval; do - IFS=$lt_save_ifs - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - pic_mode=default -fi - - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - shared_archive_member_spec= -case $host,$enable_shared in -power*-*-aix[5-9]*,yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 -$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } - -# Check whether --with-aix-soname was given. -if test "${with_aix_soname+set}" = set; then : - withval=$with_aix_soname; case $withval in - aix|svr4|both) - ;; - *) - as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 - ;; - esac - lt_cv_with_aix_soname=$with_aix_soname -else - if ${lt_cv_with_aix_soname+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_with_aix_soname=aix -fi - - with_aix_soname=$lt_cv_with_aix_soname -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 -$as_echo "$with_aix_soname" >&6; } - if test aix != "$with_aix_soname"; then - # For the AIX way of multilib, we name the shared archive member - # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', - # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. - # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, - # the AIX toolchain works better with OBJECT_MODE set (default 32). - if test 64 = "${OBJECT_MODE-32}"; then - shared_archive_member_spec=shr_64 - else - shared_archive_member_spec=shr - fi - fi - ;; -*) - with_aix_soname=aix - ;; -esac - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld=$lt_cv_prog_gnu_ld - -old_CC=$CC -old_CFLAGS=$CFLAGS - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -func_cc_basename $compiler -cc_basename=$func_cc_basename_result - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/${ac_tool_prefix}file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC=$CC -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test yes = "$GCC"; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test yes = "$GCC"; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - lt_prog_compiler_pic='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - if test -n "$lt_prog_compiler_pic"; then - lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='$wl-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ F* | *Sun*Fortran*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Intel*\ [CF]*Compiler*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - *Portland\ Group*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_pic_works"; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_static_works"; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ' (' and ')$', so one must not match beginning or - # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', - # as well as any symbol that contains 'd'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test yes != "$GCC"; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd* | bitrig*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test yes = "$with_gnu_ld"; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test yes = "$lt_use_gnu_ld_interface"; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - export_dynamic_flag_spec='$wl--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='$wl--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test linux-dietlibc = "$host_os"; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test no = "$tmp_diet" - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - tcc*) - export_dynamic_flag_spec='-rdynamic' - ;; - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test no = "$ld_shlibs"; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then - aix_use_runtimelinking=yes - break - fi - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # traditional, no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - hardcode_direct=no - hardcode_direct_absolute=no - ;; - esac - - if test yes = "$GCC"; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - export_dynamic_flag_spec='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' $wl-bernotok' - allow_undefined_flag=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test yes = "$lt_cv_ld_force_load"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test yes = "$GCC"; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='$wl-E' - ;; - - hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; then - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test yes = "$lt_cv_prog_compiler__b"; then - archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test yes = "$lt_cv_irix_exported_symbol"; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - linux*) - case $cc_basename in - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - ld_shlibs=yes - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - else - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - osf3*) - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='$wl' - archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. GCC discards it without '$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test yes = "$GCC"; then - whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test sequent = "$host_vendor"; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='$wl-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='$wl-z,text' - allow_undefined_flag='$wl-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test sni = "$host_vendor"; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='$wl-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test no = "$ld_shlibs" && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test yes = "$GCC"; then - case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; - *) lt_sed_strip_eq='s|=/|/|g' ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" - elif test -n "$lt_multi_os_dir"; then - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS = " "; FS = "/|\n";} { - lt_foo = ""; - lt_count = 0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo = "/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's|/\([A-Za-z]:\)|\1|g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - - - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a(lib.so.V)' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test yes = "$hardcode_automatic"; then - - # We can hardcode non-existent directories. - if test no != "$hardcode_direct" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && - test no != "$hardcode_minus_L"; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test relink = "$hardcode_action" || - test yes = "$inherit_rpath"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test yes != "$enable_dlopen"; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen=load_add_on - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen=LoadLibrary - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - - lt_cv_dlopen=dyld - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen=shl_load -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen=dlopen -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else - enable_dlopen=yes - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS=$LDFLAGS - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS=$LIBS - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test yes = "$lt_cv_dlopen_self"; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP"; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report what library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC=$lt_save_CC - - - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - - - -########### -# retro-gtk -########### - -retro_gtk_pkg_modules="gobject-2.0 glib-2.0 gmodule-2.0 gio-2.0 gtk+-3.0 cairo libpulse libpulse-simple" - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RETRO_GTK" >&5 -$as_echo_n "checking for RETRO_GTK... " >&6; } - -if test -n "$RETRO_GTK_CFLAGS"; then - pkg_cv_RETRO_GTK_CFLAGS="$RETRO_GTK_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$retro_gtk_pkg_modules\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$retro_gtk_pkg_modules") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_RETRO_GTK_CFLAGS=`$PKG_CONFIG --cflags "$retro_gtk_pkg_modules" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$RETRO_GTK_LIBS"; then - pkg_cv_RETRO_GTK_LIBS="$RETRO_GTK_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$retro_gtk_pkg_modules\""; } >&5 - ($PKG_CONFIG --exists --print-errors "$retro_gtk_pkg_modules") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_RETRO_GTK_LIBS=`$PKG_CONFIG --libs "$retro_gtk_pkg_modules" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - RETRO_GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$retro_gtk_pkg_modules" 2>&1` - else - RETRO_GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$retro_gtk_pkg_modules" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$RETRO_GTK_PKG_ERRORS" >&5 - - as_fn_error $? "Package requirements ($retro_gtk_pkg_modules) were not met: - -$RETRO_GTK_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables RETRO_GTK_CFLAGS -and RETRO_GTK_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details." "$LINENO" 5 -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables RETRO_GTK_CFLAGS -and RETRO_GTK_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see . -See \`config.log' for more details" "$LINENO" 5; } -else - RETRO_GTK_CFLAGS=$pkg_cv_RETRO_GTK_CFLAGS - RETRO_GTK_LIBS=$pkg_cv_RETRO_GTK_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -fi - - - - - - -ac_config_files="$ac_config_files Makefile demos/Makefile retro-gtk/retro-gtk-0.12.pc retro-gtk/Makefile po/Makefile.in" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HAVE_INTROSPECTION_TRUE}" && test -z "${HAVE_INTROSPECTION_FALSE}"; then - as_fn_error $? "conditional \"HAVE_INTROSPECTION\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - - ac_config_commands="$ac_config_commands po/stamp-it" - - - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -as_echo='printf %s\n' -as_echo_n='printf %s' - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by retro-gtk $as_me 0.12.1, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -retro-gtk config.status 0.12.1 -configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' -configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL \ -ECHO \ -PATH_SEPARATOR \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -DLLTOOL \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_import \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -lt_cv_nm_interface \ -nm_file_list_spec \ -lt_cv_truncate_bin \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -configure_time_dlsearch_path \ -configure_time_lt_sys_library_path; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' - -# See if we are running on zsh, and set the options that allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - RM='$RM' - ofile='$ofile' - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "demos/Makefile") CONFIG_FILES="$CONFIG_FILES demos/Makefile" ;; - "retro-gtk/retro-gtk-0.12.pc") CONFIG_FILES="$CONFIG_FILES retro-gtk/retro-gtk-0.12.pc" ;; - "retro-gtk/Makefile") CONFIG_FILES="$CONFIG_FILES retro-gtk/Makefile" ;; - "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; - "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*) - sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile - esac ;; - "libtool":C) - - # See if we are running on zsh, and set the options that allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST - fi - - cfgfile=${ofile}T - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -# Copyright (C) 2014 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program or library that is built -# using GNU Libtool, you may include this file under the same -# distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# The names of the tagged configurations supported by this script. -available_tags='' - -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} - -# ### BEGIN LIBTOOL CONFIG - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shared archive member basename,for filename based shared library versioning on AIX. -shared_archive_member_spec=$shared_archive_member_spec - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The PATH separator for the build system. -PATH_SEPARATOR=$lt_PATH_SEPARATOR - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm into a list of symbols to manually relocate. -global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# The name lister interface. -nm_interface=$lt_lt_cv_nm_interface - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and where our libraries should be installed. -lt_sysroot=$lt_sysroot - -# Command to truncate a binary pipe. -lt_truncate_bin=$lt_lt_cv_truncate_bin - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Detected run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path - -# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. -configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# ### END LIBTOOL CONFIG - -_LT_EOF - - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain=$ac_aux_dir/ltmain.sh - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - ;; - "po/stamp-it":C) - if ! grep "^# INTLTOOL_MAKEFILE$" "po/Makefile.in" > /dev/null ; then - as_fn_error $? "po/Makefile.in.in was not created by intltoolize." "$LINENO" 5 - fi - rm -f "po/stamp-it" "po/stamp-it.tmp" "po/POTFILES" "po/Makefile.tmp" - >"po/stamp-it.tmp" - sed '/^#/d - s/^[[].*] *// - /^[ ]*$/d - '"s|^| $ac_top_srcdir/|" \ - "$srcdir/po/POTFILES.in" | sed '$!s/$/ \\/' >"po/POTFILES" - - sed '/^POTFILES =/,/[^\\]$/ { - /^POTFILES =/!d - r po/POTFILES - } - ' "po/Makefile.in" >"po/Makefile" - rm -f "po/Makefile.tmp" - mv "po/stamp-it.tmp" "po/stamp-it" - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - diff -Nru retro-gtk-0.12.1/configure.ac retro-gtk-0.14.0/configure.ac --- retro-gtk-0.12.1/configure.ac 2017-09-30 10:46:44.000000000 +0000 +++ retro-gtk-0.14.0/configure.ac 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. - -AC_INIT(retro-gtk, 0.12.1) - -AC_CONFIG_HEADERS([config.h]) - -AM_INIT_AUTOMAKE([1.11 subdir-objects tar-ustar no-dist-gzip dist-xz]) - -AM_SILENT_RULES([yes]) - -AC_PROG_CC - -AM_PROG_AR - -AM_PROG_VALAC - -# GResource -AC_PATH_PROG(GLIB_COMPILE_RESOURCES, glib-compile-resources) - -GOBJECT_INTROSPECTION_CHECK([0.6.7]) - -dnl *************************************************************************** -dnl Internationalization -dnl *************************************************************************** -IT_PROG_INTLTOOL([0.35.0]) - -GETTEXT_PACKAGE=retro-gtk -AC_SUBST(GETTEXT_PACKAGE) -AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [GETTEXT package name]) -AM_GLIB_GNU_GETTEXT - - - - -AC_DISABLE_STATIC - -LT_INIT - - -########### -# retro-gtk -########### - -retro_gtk_pkg_modules="gobject-2.0 glib-2.0 gmodule-2.0 gio-2.0 gtk+-3.0 cairo libpulse libpulse-simple" -PKG_CHECK_MODULES(RETRO_GTK, $retro_gtk_pkg_modules) -AC_SUBST(retro_gtk_pkg_modules) - - - - - -AC_OUTPUT([ -Makefile -demos/Makefile -retro-gtk/retro-gtk-0.12.pc -retro-gtk/Makefile -po/Makefile.in]) diff -Nru retro-gtk-0.12.1/debian/changelog retro-gtk-0.14.0/debian/changelog --- retro-gtk-0.12.1/debian/changelog 2017-09-30 12:45:15.000000000 +0000 +++ retro-gtk-0.14.0/debian/changelog 2018-03-12 15:16:46.000000000 +0000 @@ -1,3 +1,15 @@ +retro-gtk (0.14.0-1) unstable; urgency=medium + + * New upstream release + * Update package names for soname update + * Build with meson + * Update Vcs fields for migration to https://salsa.debian.org/ + * Bump debhelper compat to 11 + * Add meson-fix-soname-symlinks.patch to fix + dev-pkg-without-shlib-symlink warning + + -- Jeremy Bicha Mon, 12 Mar 2018 11:16:46 -0400 + retro-gtk (0.12.1-1) unstable; urgency=medium * New upstream release diff -Nru retro-gtk-0.12.1/debian/compat retro-gtk-0.14.0/debian/compat --- retro-gtk-0.12.1/debian/compat 2017-09-30 12:45:15.000000000 +0000 +++ retro-gtk-0.14.0/debian/compat 2018-03-12 15:16:46.000000000 +0000 @@ -1 +1 @@ -10 +11 diff -Nru retro-gtk-0.12.1/debian/control retro-gtk-0.14.0/debian/control --- retro-gtk-0.12.1/debian/control 2017-09-30 12:45:15.000000000 +0000 +++ retro-gtk-0.14.0/debian/control 2018-03-12 15:16:46.000000000 +0000 @@ -1,5 +1,5 @@ # This file is autogenerated. DO NOT EDIT! -# +# # Modifications should be made to debian/control.in instead. # This file is regenerated automatically in the clean target. Source: retro-gtk @@ -7,23 +7,23 @@ Priority: optional Maintainer: Debian GNOME Maintainers Uploaders: Jeremy Bicha -Build-Depends: debhelper (>= 10), +Build-Depends: debhelper (>= 11.1.3), gnome-pkg-tools, gobject-introspection, gtk-doc-tools (>= 1.24-2), - intltool, libgirepository1.0-dev, libglib2.0-dev (>= 2.44), libgtk-3-dev (>= 3.20), libtool-bin, libpulse-dev, + meson (>= 0.43.0), valac, Standards-Version: 4.1.1 +Vcs-Browser: https://salsa.debian.org/gnome-team/retro-gtk +Vcs-Git: https://salsa.debian.org/gnome-team/retro-gtk.git Homepage: https://wiki.gnome.org/Apps/Games -Vcs-Git: https://anonscm.debian.org/git/pkg-gnome/retro-gtk.git -Vcs-Browser: https://anonscm.debian.org/git/pkg-gnome/retro-gtk.git/ -Package: libretro-gtk0 +Package: libretro-gtk-0.14-0 Architecture: linux-any Multi-Arch: same Depends: ${misc:Depends}, @@ -38,17 +38,20 @@ Therefore, a developer can use retro-gtk to make a gaming app that should be able to play any game that can be played using libretro cores. -Package: libretro-gtk-0.12-dev +Package: libretro-gtk-0.14-dev Section: libdevel Architecture: linux-any Multi-Arch: same Depends: ${misc:Depends}, ${shlibs:Depends}, - gir1.2-retro-0.12 (= ${binary:Version}), + gir1.2-retro-0.14 (= ${binary:Version}), + libretro-gtk-0.14-0 (= ${binary:Version}), libgtk-3-dev, libpulse-dev, -Breaks: libretro-gtk-0.10-dev -Replaces: libretro-gtk-0.10-dev +Breaks: libretro-gtk-0.10-dev, + libretro-gtk-0.12-dev +Replaces: libretro-gtk-0.10-dev, + libretro-gtk-0.12-dev Description: library for GTK+ libretro frontends - development files retro-gtk is a library for developers to make GTK+ frontends for the libretro API. @@ -61,7 +64,7 @@ . This package contains the development files. -Package: gir1.2-retro-0.12 +Package: gir1.2-retro-0.14 Section: introspection Architecture: linux-any Multi-Arch: same diff -Nru retro-gtk-0.12.1/debian/control.in retro-gtk-0.14.0/debian/control.in --- retro-gtk-0.12.1/debian/control.in 2017-09-30 12:45:15.000000000 +0000 +++ retro-gtk-0.14.0/debian/control.in 2018-03-12 15:16:46.000000000 +0000 @@ -3,23 +3,23 @@ Priority: optional Maintainer: Debian GNOME Maintainers Uploaders: @GNOME_TEAM@ -Build-Depends: debhelper (>= 10), +Build-Depends: debhelper (>= 11.1.3), gnome-pkg-tools, gobject-introspection, gtk-doc-tools (>= 1.24-2), - intltool, libgirepository1.0-dev, libglib2.0-dev (>= 2.44), libgtk-3-dev (>= 3.20), libtool-bin, libpulse-dev, + meson (>= 0.43.0), valac, Standards-Version: 4.1.1 +Vcs-Browser: https://salsa.debian.org/gnome-team/retro-gtk +Vcs-Git: https://salsa.debian.org/gnome-team/retro-gtk.git Homepage: https://wiki.gnome.org/Apps/Games -Vcs-Git: https://anonscm.debian.org/git/pkg-gnome/retro-gtk.git -Vcs-Browser: https://anonscm.debian.org/git/pkg-gnome/retro-gtk.git/ -Package: libretro-gtk0 +Package: libretro-gtk-0.14-0 Architecture: linux-any Multi-Arch: same Depends: ${misc:Depends}, @@ -34,17 +34,20 @@ Therefore, a developer can use retro-gtk to make a gaming app that should be able to play any game that can be played using libretro cores. -Package: libretro-gtk-0.12-dev +Package: libretro-gtk-0.14-dev Section: libdevel Architecture: linux-any Multi-Arch: same Depends: ${misc:Depends}, ${shlibs:Depends}, - gir1.2-retro-0.12 (= ${binary:Version}), + gir1.2-retro-0.14 (= ${binary:Version}), + libretro-gtk-0.14-0 (= ${binary:Version}), libgtk-3-dev, libpulse-dev, -Breaks: libretro-gtk-0.10-dev -Replaces: libretro-gtk-0.10-dev +Breaks: libretro-gtk-0.10-dev, + libretro-gtk-0.12-dev +Replaces: libretro-gtk-0.10-dev, + libretro-gtk-0.12-dev Description: library for GTK+ libretro frontends - development files retro-gtk is a library for developers to make GTK+ frontends for the libretro API. @@ -57,7 +60,7 @@ . This package contains the development files. -Package: gir1.2-retro-0.12 +Package: gir1.2-retro-0.14 Section: introspection Architecture: linux-any Multi-Arch: same diff -Nru retro-gtk-0.12.1/debian/gbp.conf retro-gtk-0.14.0/debian/gbp.conf --- retro-gtk-0.12.1/debian/gbp.conf 2017-09-30 12:45:15.000000000 +0000 +++ retro-gtk-0.14.0/debian/gbp.conf 2018-03-12 15:16:46.000000000 +0000 @@ -1,6 +1,5 @@ [DEFAULT] pristine-tar = True -compression = xz -debian-branch = debian/unstable -upstream-branch = upstream/latest -patch-numbers = False +debian-branch=debian/master +upstream-branch=upstream/latest +upstream-vcs-tag = %(version)s diff -Nru retro-gtk-0.12.1/debian/gir1.2-retro-0.12.install retro-gtk-0.14.0/debian/gir1.2-retro-0.12.install --- retro-gtk-0.12.1/debian/gir1.2-retro-0.12.install 2017-09-30 12:45:15.000000000 +0000 +++ retro-gtk-0.14.0/debian/gir1.2-retro-0.12.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/girepository-1.0/ diff -Nru retro-gtk-0.12.1/debian/gir1.2-retro-0.14.install retro-gtk-0.14.0/debian/gir1.2-retro-0.14.install --- retro-gtk-0.12.1/debian/gir1.2-retro-0.14.install 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/debian/gir1.2-retro-0.14.install 2018-03-12 15:16:46.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/girepository-1.0/ diff -Nru retro-gtk-0.12.1/debian/libretro-gtk-0.12-dev.install retro-gtk-0.14.0/debian/libretro-gtk-0.12-dev.install --- retro-gtk-0.12.1/debian/libretro-gtk-0.12-dev.install 2017-09-30 12:45:15.000000000 +0000 +++ retro-gtk-0.14.0/debian/libretro-gtk-0.12-dev.install 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -usr/include/* -usr/lib/*/lib*.so -usr/lib/*/pkgconfig/* -usr/share/gir-1.0/ -usr/share/vala/* diff -Nru retro-gtk-0.12.1/debian/libretro-gtk-0.14-0.install retro-gtk-0.14.0/debian/libretro-gtk-0.14-0.install --- retro-gtk-0.12.1/debian/libretro-gtk-0.14-0.install 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/debian/libretro-gtk-0.14-0.install 2018-03-12 15:16:46.000000000 +0000 @@ -0,0 +1 @@ +usr/lib/*/lib*.so.* diff -Nru retro-gtk-0.12.1/debian/libretro-gtk-0.14-0.symbols retro-gtk-0.14.0/debian/libretro-gtk-0.14-0.symbols --- retro-gtk-0.12.1/debian/libretro-gtk-0.14-0.symbols 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/debian/libretro-gtk-0.14-0.symbols 2018-03-12 15:16:46.000000000 +0000 @@ -0,0 +1,226 @@ +libretro-gtk-0.14.so.0 libretro-gtk-0.14-0 #MINVER# + retro_analog_id_get_type@Base 0.9.91 + retro_analog_index_get_type@Base 0.9.91 + retro_cairo_display_get_coordinates_on_display@Base 0.12.0 + retro_cairo_display_get_pixbuf@Base 0.9.91 + retro_cairo_display_get_type@Base 0.9.91 + retro_cairo_display_new@Base 0.9.91 + retro_cairo_display_set_core@Base 0.9.91 + retro_cairo_display_set_filter@Base 0.9.91 + retro_cairo_display_set_pixbuf@Base 0.9.91 + retro_controller_get_capabilities@Base 0.14.0 + retro_controller_get_controller_type@Base 0.14.0 + retro_controller_get_input_state@Base 0.14.0 + retro_controller_get_type@Base 0.14.0 + retro_controller_has_capability@Base 0.14.0 + retro_controller_iterator_get_type@Base 0.14.0 + retro_controller_iterator_new@Base 0.14.0 + retro_controller_iterator_next@Base 0.14.0 + retro_controller_poll@Base 0.14.0 + retro_controller_set_rumble_state@Base 0.14.0 + retro_controller_type_get_type@Base 0.14.0 + retro_core_boot@Base 0.14.0 + retro_core_descriptor_check_libretro_group@Base 0.14.0 + retro_core_descriptor_check_platform_group@Base 0.14.0 + retro_core_descriptor_error_quark@Base 0.9.91 + retro_core_descriptor_get_firmware_md5@Base 0.9.91 + retro_core_descriptor_get_firmware_path@Base 0.9.91 + retro_core_descriptor_get_firmware_sha512@Base 0.9.91 + retro_core_descriptor_get_firmwares@Base 0.9.91 + retro_core_descriptor_get_icon@Base 0.9.91 + retro_core_descriptor_get_id@Base 0.9.91 + retro_core_descriptor_get_is_emulator@Base 0.9.91 + retro_core_descriptor_get_is_firmware_mandatory@Base 0.9.91 + retro_core_descriptor_get_is_game@Base 0.9.91 + retro_core_descriptor_get_mime_type@Base 0.9.91 + retro_core_descriptor_get_module@Base 0.9.91 + retro_core_descriptor_get_module_file@Base 0.9.91 + retro_core_descriptor_get_name@Base 0.9.91 + retro_core_descriptor_get_platform_supports_mime_types@Base 0.9.91 + retro_core_descriptor_get_type@Base 0.9.91 + retro_core_descriptor_get_uri@Base 0.11.4 + retro_core_descriptor_has_firmware_md5@Base 0.9.91 + retro_core_descriptor_has_firmware_sha512@Base 0.9.91 + retro_core_descriptor_has_firmwares@Base 0.9.91 + retro_core_descriptor_has_icon@Base 0.9.91 + retro_core_descriptor_has_platform@Base 0.9.91 + retro_core_descriptor_new@Base 0.9.91 + retro_core_error_quark@Base 0.9.91 + retro_core_get_api_version@Base 0.9.91 + retro_core_get_can_access_state@Base 0.14.0 + retro_core_get_cb_data@Base 0.9.91 + retro_core_get_content_directory@Base 0.9.91 + retro_core_get_controller_capabilities@Base 0.14.0 + retro_core_get_controller_input_state@Base 0.14.0 + retro_core_get_filename@Base 0.14.0 + retro_core_get_frames_per_second@Base 0.9.91 + retro_core_get_game_loaded@Base 0.9.91 + retro_core_get_is_initiated@Base 0.9.91 + retro_core_get_libretro_path@Base 0.9.91 + retro_core_get_memory@Base 0.9.91 + retro_core_get_memory_size@Base 0.9.91 + retro_core_get_module_video_refresh_cb@Base 0.9.91 + retro_core_get_name@Base 0.12.0 + retro_core_get_save_directory@Base 0.9.91 + retro_core_get_state@Base 0.14.0 + retro_core_get_support_no_game@Base 0.9.91 + retro_core_get_system_directory@Base 0.9.91 + retro_core_get_type@Base 0.9.91 + retro_core_iterate_controllers@Base 0.14.0 + retro_core_new@Base 0.9.91 + retro_core_poll_controllers@Base 0.14.0 + retro_core_pop_cb_data@Base 0.9.91 + retro_core_push_cb_data@Base 0.9.91 + retro_core_reset@Base 0.9.91 + retro_core_run@Base 0.9.91 + retro_core_set_callbacks@Base 0.9.91 + retro_core_set_content_directory@Base 0.9.91 + retro_core_set_controller@Base 0.14.0 + retro_core_set_controller_descriptors@Base 0.14.0 + retro_core_set_controller_port_device@Base 0.9.91 + retro_core_set_current_media@Base 0.11.4 + retro_core_set_default_controller@Base 0.14.0 + retro_core_set_environment_interface@Base 0.9.91 + retro_core_set_keyboard@Base 0.14.0 + retro_core_set_medias@Base 0.11.4 + retro_core_set_memory@Base 0.9.91 + retro_core_set_save_directory@Base 0.9.91 + retro_core_set_state@Base 0.14.0 + retro_core_set_support_no_game@Base 0.9.91 + retro_core_set_system_av_info@Base 0.9.91 + retro_core_set_system_directory@Base 0.9.91 + retro_core_view_as_controller@Base 0.14.0 + retro_core_view_construct@Base 0.11.4 + retro_core_view_controller_get_type@Base 0.14.0 + retro_core_view_controller_new@Base 0.14.0 + retro_core_view_get_can_grab_pointer@Base 0.12.0 + retro_core_view_get_controller_capabilities@Base 0.14.0 + retro_core_view_get_input_state@Base 0.12.0 + retro_core_view_get_pixbuf@Base 0.14.0 + retro_core_view_get_snap_pointer_to_borders@Base 0.12.0 + retro_core_view_get_type@Base 0.11.4 + retro_core_view_new@Base 0.11.4 + retro_core_view_set_as_default_controller@Base 0.14.0 + retro_core_view_set_can_grab_pointer@Base 0.12.0 + retro_core_view_set_core@Base 0.11.4 + retro_core_view_set_filter@Base 0.14.0 + retro_core_view_set_pixbuf@Base 0.14.0 + retro_core_view_set_snap_pointer_to_borders@Base 0.12.0 + retro_g_log@Base 0.11.4 + retro_game_info_copy@Base 0.9.91 + retro_game_info_free@Base 0.9.91 + retro_game_info_get_type@Base 0.9.91 + retro_game_info_new@Base 0.12.0 + retro_game_info_new_with_data@Base 0.12.0 + retro_gl_display_get_coordinates_on_display@Base 0.14.0 + retro_gl_display_get_pixbuf@Base 0.14.0 + retro_gl_display_get_type@Base 0.14.0 + retro_gl_display_new@Base 0.14.0 + retro_gl_display_set_core@Base 0.14.0 + retro_gl_display_set_filter@Base 0.14.0 + retro_gl_display_set_pixbuf@Base 0.14.0 + retro_glsl_filter_apply_texture_params@Base 0.14.0 + retro_glsl_filter_error_quark@Base 0.14.0 + retro_glsl_filter_get_type@Base 0.14.0 + retro_glsl_filter_new@Base 0.14.0 + retro_glsl_filter_prepare_program@Base 0.14.0 + retro_glsl_filter_set_attribute_pointer@Base 0.14.0 + retro_glsl_filter_set_uniform_1f@Base 0.14.0 + retro_glsl_filter_set_uniform_4f@Base 0.14.0 + retro_glsl_filter_use_program@Base 0.14.0 + retro_input_copy@Base 0.14.0 + retro_input_descriptor_copy@Base 0.9.91 + retro_input_descriptor_free@Base 0.9.91 + retro_input_descriptor_get_type@Base 0.9.91 + retro_input_descriptor_new@Base 0.14.0 + retro_input_free@Base 0.14.0 + retro_input_get_analog@Base 0.14.0 + retro_input_get_controller_type@Base 0.14.0 + retro_input_get_joypad@Base 0.14.0 + retro_input_get_lightgun@Base 0.14.0 + retro_input_get_mouse@Base 0.14.0 + retro_input_get_pointer@Base 0.14.0 + retro_input_get_type@Base 0.9.91 + retro_input_init@Base 0.14.0 + retro_input_new@Base 0.14.0 + retro_joypad_id_get_type@Base 0.9.91 + retro_keyboard_key_converter@Base 0.12.0 + retro_keyboard_modifier_key_converter@Base 0.12.0 + retro_lightgun_id_get_type@Base 0.9.91 + retro_main_loop_get_core@Base 0.9.91 + retro_main_loop_get_speed_rate@Base 0.9.91 + retro_main_loop_get_type@Base 0.9.91 + retro_main_loop_new@Base 0.9.91 + retro_main_loop_reset@Base 0.9.91 + retro_main_loop_set_core@Base 0.9.91 + retro_main_loop_set_speed_rate@Base 0.9.91 + retro_main_loop_start@Base 0.9.91 + retro_main_loop_stop@Base 0.9.91 + retro_memory_type_get_type@Base 0.9.91 + retro_module_get_api_version@Base 0.9.91 + retro_module_get_deinit@Base 0.9.91 + retro_module_get_file_name@Base 0.9.91 + retro_module_get_get_memory_data@Base 0.9.91 + retro_module_get_get_memory_size@Base 0.9.91 + retro_module_get_get_system_av_info@Base 0.9.91 + retro_module_get_get_system_info@Base 0.9.91 + retro_module_get_init@Base 0.9.91 + retro_module_get_load_game@Base 0.9.91 + retro_module_get_reset@Base 0.9.91 + retro_module_get_run@Base 0.9.91 + retro_module_get_serialize@Base 0.9.91 + retro_module_get_serialize_size@Base 0.9.91 + retro_module_get_set_audio_sample@Base 0.9.91 + retro_module_get_set_audio_sample_batch@Base 0.9.91 + retro_module_get_set_controller_port_device@Base 0.9.91 + retro_module_get_set_environment@Base 0.9.91 + retro_module_get_set_input_poll@Base 0.9.91 + retro_module_get_set_input_state@Base 0.9.91 + retro_module_get_set_video_refresh@Base 0.9.91 + retro_module_get_type@Base 0.9.91 + retro_module_get_unload_game@Base 0.9.91 + retro_module_get_unserialize@Base 0.9.91 + retro_module_iterator_get@Base 0.9.91 + retro_module_iterator_get_type@Base 0.9.91 + retro_module_iterator_new@Base 0.9.91 + retro_module_iterator_next@Base 0.9.91 + retro_module_new@Base 0.9.91 + retro_module_query_get_type@Base 0.9.91 + retro_module_query_iterator@Base 0.9.91 + retro_module_query_new@Base 0.9.91 + retro_mouse_id_get_type@Base 0.9.91 + retro_option_error_quark@Base 0.14.0 + retro_option_get_current@Base 0.9.91 + retro_option_get_description@Base 0.14.0 + retro_option_get_key@Base 0.14.0 + retro_option_get_type@Base 0.9.91 + retro_option_get_values@Base 0.14.0 + retro_option_new@Base 0.9.91 + retro_option_set_current@Base 0.9.91 + retro_options_contains@Base 0.9.91 + retro_options_get_keys@Base 0.9.91 + retro_options_get_option_description@Base 0.14.0 + retro_options_get_option_value@Base 0.14.0 + retro_options_get_option_values@Base 0.14.0 + retro_options_get_type@Base 0.9.91 + retro_options_get_variable_update@Base 0.14.0 + retro_options_insert_variable@Base 0.14.0 + retro_options_new@Base 0.9.91 + retro_options_set_option_value@Base 0.14.0 + retro_pa_player_get_type@Base 0.9.91 + retro_pa_player_new@Base 0.9.91 + retro_pa_player_set_core@Base 0.9.91 + retro_pixdata_copy@Base 0.14.0 + retro_pixdata_free@Base 0.14.0 + retro_pixdata_get_aspect_ratio@Base 0.14.0 + retro_pixdata_get_height@Base 0.14.0 + retro_pixdata_get_type@Base 0.14.0 + retro_pixdata_get_width@Base 0.14.0 + retro_pixdata_init@Base 0.14.0 + retro_pixdata_load_gl_texture@Base 0.14.0 + retro_pixdata_to_pixbuf@Base 0.14.0 + retro_pixel_format_get_type@Base 0.9.91 + retro_pointer_id_get_type@Base 0.9.91 + retro_rumble_effect_get_type@Base 0.9.91 + retro_video_filter_from_string@Base 0.9.91 + retro_video_filter_get_type@Base 0.9.91 diff -Nru retro-gtk-0.12.1/debian/libretro-gtk-0.14-dev.install retro-gtk-0.14.0/debian/libretro-gtk-0.14-dev.install --- retro-gtk-0.12.1/debian/libretro-gtk-0.14-dev.install 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/debian/libretro-gtk-0.14-dev.install 2018-03-12 15:16:46.000000000 +0000 @@ -0,0 +1,5 @@ +usr/include/* +usr/lib/*/lib*.so +usr/lib/*/pkgconfig/* +usr/share/gir-1.0/ +usr/share/vala/* diff -Nru retro-gtk-0.12.1/debian/libretro-gtk-0.14.docs retro-gtk-0.14.0/debian/libretro-gtk-0.14.docs --- retro-gtk-0.12.1/debian/libretro-gtk-0.14.docs 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/debian/libretro-gtk-0.14.docs 2018-03-12 15:16:46.000000000 +0000 @@ -0,0 +1 @@ +NEWS diff -Nru retro-gtk-0.12.1/debian/libretro-gtk0.docs retro-gtk-0.14.0/debian/libretro-gtk0.docs --- retro-gtk-0.12.1/debian/libretro-gtk0.docs 2017-09-30 12:45:15.000000000 +0000 +++ retro-gtk-0.14.0/debian/libretro-gtk0.docs 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -NEWS diff -Nru retro-gtk-0.12.1/debian/libretro-gtk0.install retro-gtk-0.14.0/debian/libretro-gtk0.install --- retro-gtk-0.12.1/debian/libretro-gtk0.install 2017-09-30 12:45:15.000000000 +0000 +++ retro-gtk-0.14.0/debian/libretro-gtk0.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/lib*.so.* diff -Nru retro-gtk-0.12.1/debian/libretro-gtk0.symbols retro-gtk-0.14.0/debian/libretro-gtk0.symbols --- retro-gtk-0.12.1/debian/libretro-gtk0.symbols 2017-09-30 12:45:15.000000000 +0000 +++ retro-gtk-0.14.0/debian/libretro-gtk0.symbols 1970-01-01 00:00:00.000000000 +0000 @@ -1,257 +0,0 @@ -libretro-gtk.so.0 libretro-gtk0 #MINVER# - gdk_pixbuf_new_from_video@Base 0.9.91 - retro_analog_id_get_type@Base 0.9.91 - retro_analog_index_get_type@Base 0.9.91 - retro_cairo_display_construct@Base 0.9.91 - retro_cairo_display_get_coordinates_on_display@Base 0.12.0 - retro_cairo_display_get_pixbuf@Base 0.9.91 - retro_cairo_display_get_type@Base 0.9.91 - retro_cairo_display_hide_video@Base 0.9.91 - retro_cairo_display_new@Base 0.9.91 - retro_cairo_display_set_core@Base 0.9.91 - retro_cairo_display_set_filter@Base 0.9.91 - retro_cairo_display_set_pixbuf@Base 0.9.91 - retro_cairo_display_show_video@Base 0.9.91 - retro_cb_error_quark@Base 0.9.91 - retro_controller_description_copy@Base 0.9.91 - retro_controller_description_destroy@Base 0.9.91 - retro_controller_description_dup@Base 0.9.91 - retro_controller_description_free@Base 0.9.91 - retro_controller_description_get_type@Base 0.9.91 - retro_controller_info_copy@Base 0.9.91 - retro_controller_info_destroy@Base 0.9.91 - retro_controller_info_dup@Base 0.9.91 - retro_controller_info_free@Base 0.9.91 - retro_controller_info_get_type@Base 0.9.91 - retro_core_construct@Base 0.9.91 - retro_core_constructor@Base 0.12.0 - retro_core_descriptor_construct@Base 0.9.91 - retro_core_descriptor_error_quark@Base 0.9.91 - retro_core_descriptor_get_firmware_md5@Base 0.9.91 - retro_core_descriptor_get_firmware_path@Base 0.9.91 - retro_core_descriptor_get_firmware_sha512@Base 0.9.91 - retro_core_descriptor_get_firmwares@Base 0.9.91 - retro_core_descriptor_get_icon@Base 0.9.91 - retro_core_descriptor_get_id@Base 0.9.91 - retro_core_descriptor_get_is_emulator@Base 0.9.91 - retro_core_descriptor_get_is_firmware_mandatory@Base 0.9.91 - retro_core_descriptor_get_is_game@Base 0.9.91 - retro_core_descriptor_get_mime_type@Base 0.9.91 - retro_core_descriptor_get_module@Base 0.9.91 - retro_core_descriptor_get_module_file@Base 0.9.91 - retro_core_descriptor_get_name@Base 0.9.91 - retro_core_descriptor_get_platform_supports_mime_types@Base 0.9.91 - retro_core_descriptor_get_type@Base 0.9.91 - retro_core_descriptor_get_uri@Base 0.11.4 - retro_core_descriptor_has_firmware_md5@Base 0.9.91 - retro_core_descriptor_has_firmware_sha512@Base 0.9.91 - retro_core_descriptor_has_firmwares@Base 0.9.91 - retro_core_descriptor_has_icon@Base 0.9.91 - retro_core_descriptor_has_platform@Base 0.9.91 - retro_core_descriptor_new@Base 0.9.91 - retro_core_descriptor_platform_get_type@Base 0.9.91 - retro_core_deserialize_state@Base 0.9.91 - retro_core_destructor@Base 0.12.0 - retro_core_error_quark@Base 0.9.91 - retro_core_get_api_version@Base 0.9.91 - retro_core_get_api_version_real@Base 0.12.0 - retro_core_get_cb_data@Base 0.9.91 - retro_core_get_content_directory@Base 0.9.91 - retro_core_get_file_name@Base 0.9.91 - retro_core_get_frames_per_second@Base 0.9.91 - retro_core_get_game_loaded@Base 0.9.91 - retro_core_get_input_interface@Base 0.9.91 - retro_core_get_is_initiated@Base 0.9.91 - retro_core_get_libretro_path@Base 0.9.91 - retro_core_get_memory@Base 0.9.91 - retro_core_get_memory_size@Base 0.9.91 - retro_core_get_module_video_refresh_cb@Base 0.9.91 - retro_core_get_name@Base 0.12.0 - retro_core_get_rumble_interface@Base 0.9.91 - retro_core_get_save_directory@Base 0.9.91 - retro_core_get_support_no_game@Base 0.9.91 - retro_core_get_system_directory@Base 0.9.91 - retro_core_get_type@Base 0.9.91 - retro_core_init@Base 0.12.0 - retro_core_init_input@Base 0.11.4 - retro_core_new@Base 0.9.91 - retro_core_on_input_controller_connected@Base 0.11.4 - retro_core_on_input_controller_disconnected@Base 0.11.4 - retro_core_on_key_event@Base 0.12.0 - retro_core_pop_cb_data@Base 0.9.91 - retro_core_push_cb_data@Base 0.9.91 - retro_core_reset@Base 0.9.91 - retro_core_run@Base 0.9.91 - retro_core_serialize_state@Base 0.9.91 - retro_core_set_callbacks@Base 0.9.91 - retro_core_set_content_directory@Base 0.9.91 - retro_core_set_controller_port_device@Base 0.9.91 - retro_core_set_current_media@Base 0.11.4 - retro_core_set_environment_interface@Base 0.9.91 - retro_core_set_file_name@Base 0.12.0 - retro_core_set_game_loaded@Base 0.11.4 - retro_core_set_input_interface@Base 0.9.91 - retro_core_set_is_initiated@Base 0.12.0 - retro_core_set_libretro_path@Base 0.9.91 - retro_core_set_medias@Base 0.11.4 - retro_core_set_memory@Base 0.9.91 - retro_core_set_rumble_interface@Base 0.9.91 - retro_core_set_save_directory@Base 0.9.91 - retro_core_set_support_no_game@Base 0.9.91 - retro_core_set_system_av_info@Base 0.9.91 - retro_core_set_system_directory@Base 0.9.91 - retro_core_supports_serialization@Base 0.9.91 - retro_core_view_as_input_device@Base 0.12.0 - retro_core_view_construct@Base 0.11.4 - retro_core_view_get_can_grab_pointer@Base 0.12.0 - retro_core_view_get_device_capabilities@Base 0.12.0 - retro_core_view_get_display@Base 0.12.0 - retro_core_view_get_input_state@Base 0.12.0 - retro_core_view_get_is_pointer_grabbed@Base 0.12.0 - retro_core_view_get_snap_pointer_to_borders@Base 0.12.0 - retro_core_view_get_type@Base 0.11.4 - retro_core_view_input_device_get_type@Base 0.12.0 - retro_core_view_input_device_new@Base 0.12.0 - retro_core_view_new@Base 0.11.4 - retro_core_view_on_button_press_event@Base 0.12.0 - retro_core_view_on_button_release_event@Base 0.12.0 - retro_core_view_on_focus_out_event@Base 0.12.0 - retro_core_view_on_key_press_event@Base 0.12.0 - retro_core_view_on_key_release_event@Base 0.12.0 - retro_core_view_on_motion_notify_event@Base 0.12.0 - retro_core_view_set_can_grab_pointer@Base 0.12.0 - retro_core_view_set_core@Base 0.11.4 - retro_core_view_set_snap_pointer_to_borders@Base 0.12.0 - retro_core_view_ungrab@Base 0.12.0 - retro_device_type_get_basic_type@Base 0.9.91 - retro_device_type_get_type@Base 0.9.91 - retro_g_log@Base 0.11.4 - retro_game_info_copy@Base 0.9.91 - retro_game_info_free@Base 0.9.91 - retro_game_info_get_type@Base 0.9.91 - retro_game_info_new@Base 0.12.0 - retro_game_info_new_with_data@Base 0.12.0 - retro_input_descriptor_copy@Base 0.9.91 - retro_input_descriptor_destroy@Base 0.9.91 - retro_input_descriptor_dup@Base 0.9.91 - retro_input_descriptor_free@Base 0.9.91 - retro_input_descriptor_get_type@Base 0.9.91 - retro_input_device_get_device_capabilities@Base 0.9.91 - retro_input_device_get_device_type@Base 0.9.91 - retro_input_device_get_input_state@Base 0.9.91 - retro_input_device_get_type@Base 0.9.91 - retro_input_device_manager_construct@Base 0.9.91 - retro_input_device_manager_get_type@Base 0.9.91 - retro_input_device_manager_new@Base 0.9.91 - retro_input_device_manager_remove_controller_device@Base 0.9.91 - retro_input_device_manager_set_controller_device@Base 0.9.91 - retro_input_device_manager_set_keyboard@Base 0.9.91 - retro_input_device_poll@Base 0.9.91 - retro_input_foreach_controller@Base 0.9.91 - retro_input_get_device_capabilities@Base 0.9.91 - retro_input_get_state@Base 0.9.91 - retro_input_get_type@Base 0.9.91 - retro_input_poll@Base 0.9.91 - retro_input_set_descriptors@Base 0.9.91 - retro_joypad_id_get_type@Base 0.9.91 - retro_keyboard_key_converter@Base 0.12.0 - retro_keyboard_modifier_key_converter@Base 0.12.0 - retro_lightgun_id_get_type@Base 0.9.91 - retro_main_loop_construct@Base 0.9.91 - retro_main_loop_get_core@Base 0.9.91 - retro_main_loop_get_speed_rate@Base 0.9.91 - retro_main_loop_get_type@Base 0.9.91 - retro_main_loop_new@Base 0.9.91 - retro_main_loop_reset@Base 0.9.91 - retro_main_loop_set_core@Base 0.9.91 - retro_main_loop_set_speed_rate@Base 0.9.91 - retro_main_loop_start@Base 0.9.91 - retro_main_loop_stop@Base 0.9.91 - retro_memory_type_get_type@Base 0.9.91 - retro_module_get_api_version@Base 0.9.91 - retro_module_get_deinit@Base 0.9.91 - retro_module_get_file_name@Base 0.9.91 - retro_module_get_get_memory_data@Base 0.9.91 - retro_module_get_get_memory_size@Base 0.9.91 - retro_module_get_get_system_av_info@Base 0.9.91 - retro_module_get_get_system_info@Base 0.9.91 - retro_module_get_init@Base 0.9.91 - retro_module_get_load_game@Base 0.9.91 - retro_module_get_reset@Base 0.9.91 - retro_module_get_run@Base 0.9.91 - retro_module_get_serialize@Base 0.9.91 - retro_module_get_serialize_size@Base 0.9.91 - retro_module_get_set_audio_sample@Base 0.9.91 - retro_module_get_set_audio_sample_batch@Base 0.9.91 - retro_module_get_set_controller_port_device@Base 0.9.91 - retro_module_get_set_environment@Base 0.9.91 - retro_module_get_set_input_poll@Base 0.9.91 - retro_module_get_set_input_state@Base 0.9.91 - retro_module_get_set_video_refresh@Base 0.9.91 - retro_module_get_type@Base 0.9.91 - retro_module_get_unload_game@Base 0.9.91 - retro_module_get_unserialize@Base 0.9.91 - retro_module_iterator_construct@Base 0.9.91 - retro_module_iterator_get@Base 0.9.91 - retro_module_iterator_get_type@Base 0.9.91 - retro_module_iterator_new@Base 0.9.91 - retro_module_iterator_next@Base 0.9.91 - retro_module_iterator_ref@Base 0.9.91 - retro_module_iterator_unref@Base 0.9.91 - retro_module_new@Base 0.9.91 - retro_module_query_construct@Base 0.9.91 - retro_module_query_get_type@Base 0.9.91 - retro_module_query_iterator@Base 0.9.91 - retro_module_query_new@Base 0.9.91 - retro_module_query_ref@Base 0.9.91 - retro_module_query_unref@Base 0.9.91 - retro_mouse_id_get_type@Base 0.9.91 - retro_option_construct@Base 0.9.91 - retro_option_get_current@Base 0.9.91 - retro_option_get_type@Base 0.9.91 - retro_option_new@Base 0.9.91 - retro_option_set_current@Base 0.9.91 - retro_options_construct@Base 0.9.91 - retro_options_contains@Base 0.9.91 - retro_options_for_each@Base 0.9.91 - retro_options_foreach@Base 0.9.91 - retro_options_get@Base 0.9.91 - retro_options_get_keys@Base 0.9.91 - retro_options_get_type@Base 0.9.91 - retro_options_lookup@Base 0.9.91 - retro_options_lookup_description@Base 0.9.91 - retro_options_lookup_values@Base 0.9.91 - retro_options_new@Base 0.9.91 - retro_options_set@Base 0.9.91 - retro_options_set_option@Base 0.9.91 - retro_options_size@Base 0.9.91 - retro_pa_player_construct@Base 0.9.91 - retro_pa_player_get_type@Base 0.9.91 - retro_pa_player_new@Base 0.9.91 - retro_pa_player_set_core@Base 0.9.91 - retro_param_spec_module_iterator@Base 0.9.91 - retro_param_spec_module_query@Base 0.9.91 - retro_pixel_format_get_type@Base 0.9.91 - retro_pointer_id_get_type@Base 0.9.91 - retro_rumble_effect_get_type@Base 0.9.91 - retro_rumble_get_type@Base 0.9.91 - retro_rumble_set_rumble_state@Base 0.9.91 - retro_value_get_module_iterator@Base 0.9.91 - retro_value_get_module_query@Base 0.9.91 - retro_value_set_module_iterator@Base 0.9.91 - retro_value_set_module_query@Base 0.9.91 - retro_value_take_module_iterator@Base 0.9.91 - retro_value_take_module_query@Base 0.9.91 - retro_variable_copy@Base 0.9.91 - retro_variable_destroy@Base 0.9.91 - retro_variable_dup@Base 0.9.91 - retro_variable_free@Base 0.9.91 - retro_variable_get_type@Base 0.9.91 - retro_variables_get_core@Base 0.9.91 - retro_variables_get_type@Base 0.9.91 - retro_variables_get_variable@Base 0.9.91 - retro_variables_get_variable_update@Base 0.9.91 - retro_variables_set_core@Base 0.9.91 - retro_variables_set_variable@Base 0.9.91 - retro_video_filter_from_string@Base 0.9.91 - retro_video_filter_get_type@Base 0.9.91 diff -Nru retro-gtk-0.12.1/debian/patches/meson-fix-soname-symlinks.patch retro-gtk-0.14.0/debian/patches/meson-fix-soname-symlinks.patch --- retro-gtk-0.12.1/debian/patches/meson-fix-soname-symlinks.patch 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/debian/patches/meson-fix-soname-symlinks.patch 2018-03-12 15:16:46.000000000 +0000 @@ -0,0 +1,21 @@ +From: Jeremy Bicha +Date: Sat, 10 Mar 2018 09:30:34 -0500 +Subject: [PATCH] meson: fix soname symlinks + +https://gitlab.gnome.org/GNOME/retro-gtk/merge_requests/3 +--- + retro-gtk/meson.build | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/retro-gtk/meson.build b/retro-gtk/meson.build +index 6f5ec69..17c6f9b 100644 +--- a/retro-gtk/meson.build ++++ b/retro-gtk/meson.build +@@ -106,6 +106,7 @@ retro_gtk_lib = shared_library( + dependencies: retro_gtk_deps, + include_directories: confinc, + install: true, ++ soversion: 0, + ) + + retro_gtk_gir_args = [ diff -Nru retro-gtk-0.12.1/debian/patches/series retro-gtk-0.14.0/debian/patches/series --- retro-gtk-0.12.1/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/debian/patches/series 2018-03-12 15:16:46.000000000 +0000 @@ -0,0 +1 @@ +meson-fix-soname-symlinks.patch diff -Nru retro-gtk-0.12.1/debian/rules retro-gtk-0.14.0/debian/rules --- retro-gtk-0.12.1/debian/rules 2017-09-30 12:45:15.000000000 +0000 +++ retro-gtk-0.14.0/debian/rules 2018-03-12 15:16:46.000000000 +0000 @@ -2,13 +2,13 @@ -include /usr/share/gnome-pkg-tools/1/rules/gnome-get-source.mk export DEB_BUILD_MAINT_OPTIONS = hardening=+all -export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed +export DEB_LDFLAGS_MAINT_APPEND = -Wl,-z,defs -Wl,--as-needed %: dh $@ --with gnome,gir -override_dh_autoreconf: - dh_autoreconf --as-needed - override_dh_makeshlibs: - dh_makeshlibs -V -- -c4 + dh_makeshlibs -- -c4 + +override_dh_missing: + dh_missing --list-missing diff -Nru retro-gtk-0.12.1/demos/Makefile.am retro-gtk-0.14.0/demos/Makefile.am --- retro-gtk-0.12.1/demos/Makefile.am 2017-05-11 05:51:58.000000000 +0000 +++ retro-gtk-0.14.0/demos/Makefile.am 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -NULL = - -bin_PROGRAMS = retro-demo - -retro_demo_SOURCES = \ - retro-demo.c \ - $(NULL) - -retro_demo_CFLAGS = \ - $(RETRO_GTK_CFLAGS) \ - $(GAMEPADS_CFLAGS) \ - $(UDEV_CFLAGS) \ - -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ - -DGAMES_PLUGINS_DIR=\"$(libdir)/gnome-games/plugins\" \ - $(NULL) - -retro_demo_CPPFLAGS = \ - -I$(top_srcdir) \ - -I$(top_builddir)/retro-gtk \ - -I$(top_srcdir)/retro-gtk \ - -DRETRO_GTK_USE_UNSTABLE_API \ - $(NULL) - -retro_demo_DEPENDENCIES = \ - $(top_builddir)/retro-gtk/libretro-gtk.la \ - $(NULL) - -retro_demo_LDADD = \ - $(RETRO_GTK_LIBS) \ - $(top_builddir)/retro-gtk/libretro-gtk.la \ - $(NULL) - --include $(top_srcdir)/git.mk diff -Nru retro-gtk-0.12.1/demos/Makefile.in retro-gtk-0.14.0/demos/Makefile.in --- retro-gtk-0.12.1/demos/Makefile.in 2017-09-30 10:47:39.000000000 +0000 +++ retro-gtk-0.14.0/demos/Makefile.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,718 +0,0 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2014 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -bin_PROGRAMS = retro-demo$(EXEEXT) -subdir = demos -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__installdirs = "$(DESTDIR)$(bindir)" -PROGRAMS = $(bin_PROGRAMS) -am__objects_1 = -am_retro_demo_OBJECTS = retro_demo-retro-demo.$(OBJEXT) \ - $(am__objects_1) -retro_demo_OBJECTS = $(am_retro_demo_OBJECTS) -am__DEPENDENCIES_1 = -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -retro_demo_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(retro_demo_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(retro_demo_SOURCES) -DIST_SOURCES = $(retro_demo_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALL_LINGUAS = @ALL_LINGUAS@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ -GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLLIBS = @INTLLIBS@ -INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ -INTLTOOL_MERGE = @INTLTOOL_MERGE@ -INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ -INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ -INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ -INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ -INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ -INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ -INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ -INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ -INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ -INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ -INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ -INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ -INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ -INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGFMT_OPTS = @MSGFMT_OPTS@ -MSGMERGE = @MSGMERGE@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -POFILES = @POFILES@ -POSUB = @POSUB@ -PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ -PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ -RANLIB = @RANLIB@ -RETRO_GTK_CFLAGS = @RETRO_GTK_CFLAGS@ -RETRO_GTK_LIBS = @RETRO_GTK_LIBS@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VALAC = @VALAC@ -VERSION = @VERSION@ -XGETTEXT = @XGETTEXT@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -intltool__v_merge_options_ = @intltool__v_merge_options_@ -intltool__v_merge_options_0 = @intltool__v_merge_options_0@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -retro_gtk_pkg_modules = @retro_gtk_pkg_modules@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -NULL = -retro_demo_SOURCES = \ - retro-demo.c \ - $(NULL) - -retro_demo_CFLAGS = \ - $(RETRO_GTK_CFLAGS) \ - $(GAMEPADS_CFLAGS) \ - $(UDEV_CFLAGS) \ - -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ - -DGAMES_PLUGINS_DIR=\"$(libdir)/gnome-games/plugins\" \ - $(NULL) - -retro_demo_CPPFLAGS = \ - -I$(top_srcdir) \ - -I$(top_builddir)/retro-gtk \ - -I$(top_srcdir)/retro-gtk \ - -DRETRO_GTK_USE_UNSTABLE_API \ - $(NULL) - -retro_demo_DEPENDENCIES = \ - $(top_builddir)/retro-gtk/libretro-gtk.la \ - $(NULL) - -retro_demo_LDADD = \ - $(RETRO_GTK_LIBS) \ - $(top_builddir)/retro-gtk/libretro-gtk.la \ - $(NULL) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu demos/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu demos/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p \ - || test -f $$p1 \ - ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' \ - -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' \ - `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bindir)" && rm -f $$files - -clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -retro-demo$(EXEEXT): $(retro_demo_OBJECTS) $(retro_demo_DEPENDENCIES) $(EXTRA_retro_demo_DEPENDENCIES) - @rm -f retro-demo$(EXEEXT) - $(AM_V_CCLD)$(retro_demo_LINK) $(retro_demo_OBJECTS) $(retro_demo_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/retro_demo-retro-demo.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -retro_demo-retro-demo.o: retro-demo.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(retro_demo_CPPFLAGS) $(CPPFLAGS) $(retro_demo_CFLAGS) $(CFLAGS) -MT retro_demo-retro-demo.o -MD -MP -MF $(DEPDIR)/retro_demo-retro-demo.Tpo -c -o retro_demo-retro-demo.o `test -f 'retro-demo.c' || echo '$(srcdir)/'`retro-demo.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/retro_demo-retro-demo.Tpo $(DEPDIR)/retro_demo-retro-demo.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='retro-demo.c' object='retro_demo-retro-demo.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(retro_demo_CPPFLAGS) $(CPPFLAGS) $(retro_demo_CFLAGS) $(CFLAGS) -c -o retro_demo-retro-demo.o `test -f 'retro-demo.c' || echo '$(srcdir)/'`retro-demo.c - -retro_demo-retro-demo.obj: retro-demo.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(retro_demo_CPPFLAGS) $(CPPFLAGS) $(retro_demo_CFLAGS) $(CFLAGS) -MT retro_demo-retro-demo.obj -MD -MP -MF $(DEPDIR)/retro_demo-retro-demo.Tpo -c -o retro_demo-retro-demo.obj `if test -f 'retro-demo.c'; then $(CYGPATH_W) 'retro-demo.c'; else $(CYGPATH_W) '$(srcdir)/retro-demo.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/retro_demo-retro-demo.Tpo $(DEPDIR)/retro_demo-retro-demo.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='retro-demo.c' object='retro_demo-retro-demo.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(retro_demo_CPPFLAGS) $(CPPFLAGS) $(retro_demo_CFLAGS) $(CFLAGS) -c -o retro_demo-retro-demo.obj `if test -f 'retro-demo.c'; then $(CYGPATH_W) 'retro-demo.c'; else $(CYGPATH_W) '$(srcdir)/retro-demo.c'; fi` - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: - for dir in "$(DESTDIR)$(bindir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-binPROGRAMS - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-binPROGRAMS - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ - clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ - ctags ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-binPROGRAMS \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am uninstall-binPROGRAMS - -.PRECIOUS: Makefile - - --include $(top_srcdir)/git.mk - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru retro-gtk-0.12.1/demos/meson.build retro-gtk-0.14.0/demos/meson.build --- retro-gtk-0.12.1/demos/meson.build 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/demos/meson.build 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,13 @@ +retro_demo_c_args = [ + '-DRETRO_GTK_USE_UNSTABLE_API', +] + +executable( + 'retro-demo', + 'retro-demo.c', + c_args: retro_demo_c_args, + dependencies: retro_gtk_dep, + include_directories: [ confinc, srcinc ], + gui_app: true, + install: true, +) diff -Nru retro-gtk-0.12.1/demos/retro-demo.c retro-gtk-0.14.0/demos/retro-demo.c --- retro-gtk-0.12.1/demos/retro-demo.c 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/demos/retro-demo.c 2018-03-10 13:02:01.000000000 +0000 @@ -1,6 +1,7 @@ // This file is part of retro-gtk. License: GPL-3.0+. #include +#include #define RETRO_TYPE_DEMO_APPLICATION (retro_demo_application_get_type()) @@ -13,10 +14,8 @@ GtkApplicationWindow *window; RetroCore *core; - RetroInputDeviceManager *input; RetroMainLoop *loop; RetroCoreView *view; - RetroPaPlayer *pa_player; }; G_DEFINE_TYPE (RetroDemoApplication, retro_demo_application, GTK_TYPE_APPLICATION) @@ -46,7 +45,7 @@ if (self->core == NULL) return; - retro_core_init (self->core, &error); + retro_core_boot (self->core, &error); if (error != NULL) { g_debug ("Couldn't initialize the Libretro core: %s", error->message); g_error_free (error); @@ -54,9 +53,6 @@ return; } - self->input = retro_input_device_manager_new (); - retro_core_set_input_interface (self->core, RETRO_INPUT (self->input)); - g_application_activate (application); } @@ -74,15 +70,9 @@ if (self->core != NULL) g_object_unref (self->core); - if (self->input != NULL) - g_object_unref (self->input); - if (self->loop != NULL) g_object_unref (self->loop); - if (self->pa_player != NULL) - g_object_unref (self->pa_player); - G_OBJECT_CLASS (retro_demo_application_parent_class)->finalize (object); } @@ -92,7 +82,6 @@ { RetroDemoApplication *self; GtkWidget *window; - RetroInputDevice *input_device; self = RETRO_DEMO_APPLICATION (application); @@ -100,21 +89,17 @@ self->view = retro_core_view_new (); retro_core_view_set_core (self->view, self->core); + retro_core_view_set_as_default_controller (self->view, self->core); - retro_input_device_manager_set_keyboard (self->input, GTK_WIDGET (self->view)); - input_device = retro_core_view_as_input_device (self->view, RETRO_DEVICE_TYPE_POINTER); - retro_input_device_manager_set_controller_device (self->input, 0, input_device); - g_object_unref (input_device); - - self->pa_player = retro_pa_player_new (); - retro_pa_player_set_core (self->pa_player, self->core); + retro_core_set_keyboard (self->core, GTK_WIDGET (self->view)); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW (window), 640, 480); gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (self->view)); gtk_widget_show_all (GTK_WIDGET (window)); - gtk_application_add_window (GTK_APPLICATION (application), GTK_WINDOW (window)); + gtk_application_add_window (GTK_APPLICATION (application), + GTK_WINDOW (window)); self->loop = retro_main_loop_new (self->core); retro_main_loop_start (self->loop); diff -Nru retro-gtk-0.12.1/depcomp retro-gtk-0.14.0/depcomp --- retro-gtk-0.12.1/depcomp 2017-09-30 10:47:39.000000000 +0000 +++ retro-gtk-0.14.0/depcomp 1970-01-01 00:00:00.000000000 +0000 @@ -1,791 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2013-05-30.07; # UTC - -# Copyright (C) 1999-2014 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva . - -case $1 in - '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by 'PROGRAMS ARGS'. - object Object file output by 'PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputting dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -# Get the directory component of the given path, and save it in the -# global variables '$dir'. Note that this directory component will -# be either empty or ending with a '/' character. This is deliberate. -set_dir_from () -{ - case $1 in - */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; - *) dir=;; - esac -} - -# Get the suffix-stripped basename of the given path, and save it the -# global variable '$base'. -set_base_from () -{ - base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` -} - -# If no dependency file was actually created by the compiler invocation, -# we still have to create a dummy depfile, to avoid errors with the -# Makefile "include basename.Plo" scheme. -make_dummy_depfile () -{ - echo "#dummy" > "$depfile" -} - -# Factor out some common post-processing of the generated depfile. -# Requires the auxiliary global variable '$tmpdepfile' to be set. -aix_post_process_depfile () -{ - # If the compiler actually managed to produce a dependency file, - # post-process it. - if test -f "$tmpdepfile"; then - # Each line is of the form 'foo.o: dependency.h'. - # Do two passes, one to just change these to - # $object: dependency.h - # and one to simply output - # dependency.h: - # which is needed to avoid the deleted-header problem. - { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" - sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" - } > "$depfile" - rm -f "$tmpdepfile" - else - make_dummy_depfile - fi -} - -# A tabulation character. -tab=' ' -# A newline character. -nl=' -' -# Character ranges might be problematic outside the C locale. -# These definitions help. -upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ -lower=abcdefghijklmnopqrstuvwxyz -digits=0123456789 -alpha=${upper}${lower} - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Avoid interferences from the environment. -gccflag= dashmflag= - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvisualcpp -fi - -if test "$depmode" = msvc7msys; then - # This is just like msvc7 but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvc7 -fi - -if test "$depmode" = xlc; then - # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. - gccflag=-qmakedep=gcc,-MF - depmode=gcc -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. -## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. -## (see the conditional assignment to $gccflag above). -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). Also, it might not be -## supported by the other compilers which use the 'gcc' depmode. -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - # The second -e expression handles DOS-style file names with drive - # letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the "deleted header file" problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. -## Some versions of gcc put a space before the ':'. On the theory -## that the space means something, we add a space to the output as -## well. hp depmode also adds that space, but also prefixes the VPATH -## to the object. Take care to not repeat it in the output. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like '#:fec' to the end of the - # dependency line. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ - | tr "$nl" ' ' >> "$depfile" - echo >> "$depfile" - # The second pass generates a dummy entry for each header file. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" - else - make_dummy_depfile - fi - rm -f "$tmpdepfile" - ;; - -xlc) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts '$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - set_dir_from "$object" - set_base_from "$object" - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - aix_post_process_depfile - ;; - -tcc) - # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 - # FIXME: That version still under development at the moment of writing. - # Make that this statement remains true also for stable, released - # versions. - # It will wrap lines (doesn't matter whether long or short) with a - # trailing '\', as in: - # - # foo.o : \ - # foo.c \ - # foo.h \ - # - # It will put a trailing '\' even on the last line, and will use leading - # spaces rather than leading tabs (at least since its commit 0394caf7 - # "Emit spaces for -MD"). - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. - # We have to change lines of the first kind to '$object: \'. - sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" - # And for each line of the second kind, we have to emit a 'dep.h:' - # dummy dependency, to avoid the deleted-header problem. - sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" - rm -f "$tmpdepfile" - ;; - -## The order of this option in the case statement is important, since the -## shell code in configure will try each of these formats in the order -## listed in this file. A plain '-MD' option would be understood by many -## compilers, so we must ensure this comes after the gcc and icc options. -pgcc) - # Portland's C compiler understands '-MD'. - # Will always output deps to 'file.d' where file is the root name of the - # source file under compilation, even if file resides in a subdirectory. - # The object file name does not affect the name of the '.d' file. - # pgcc 10.2 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using '\' : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - set_dir_from "$object" - # Use the source, not the object, to determine the base name, since - # that's sadly what pgcc will do too. - set_base_from "$source" - tmpdepfile=$base.d - - # For projects that build the same source file twice into different object - # files, the pgcc approach of using the *source* file root name can cause - # problems in parallel builds. Use a locking strategy to avoid stomping on - # the same $tmpdepfile. - lockdir=$base.d-lock - trap " - echo '$0: caught signal, cleaning up...' >&2 - rmdir '$lockdir' - exit 1 - " 1 2 13 15 - numtries=100 - i=$numtries - while test $i -gt 0; do - # mkdir is a portable test-and-set. - if mkdir "$lockdir" 2>/dev/null; then - # This process acquired the lock. - "$@" -MD - stat=$? - # Release the lock. - rmdir "$lockdir" - break - else - # If the lock is being held by a different process, wait - # until the winning process is done or we timeout. - while test -d "$lockdir" && test $i -gt 0; do - sleep 1 - i=`expr $i - 1` - done - fi - i=`expr $i - 1` - done - trap - 1 2 13 15 - if test $i -le 0; then - echo "$0: failed to acquire lock after $numtries attempts" >&2 - echo "$0: check lockdir '$lockdir'" >&2 - exit 1 - fi - - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - set_dir_from "$object" - set_base_from "$object" - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" - # Add 'dependent.h:' lines. - sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" - else - make_dummy_depfile - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in 'foo.d' instead, so we check for that too. - # Subdirectories are respected. - set_dir_from "$object" - set_base_from "$object" - - if test "$libtool" = yes; then - # Libtool generates 2 separate objects for the 2 libraries. These - # two compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir$base.o.d # libtool 1.5 - tmpdepfile2=$dir.libs/$base.o.d # Likewise. - tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - # Same post-processing that is required for AIX mode. - aix_post_process_depfile - ;; - -msvc7) - if test "$libtool" = yes; then - showIncludes=-Wc,-showIncludes - else - showIncludes=-showIncludes - fi - "$@" $showIncludes > "$tmpdepfile" - stat=$? - grep -v '^Note: including file: ' "$tmpdepfile" - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - # The first sed program below extracts the file names and escapes - # backslashes for cygpath. The second sed program outputs the file - # name when reading, but also accumulates all include files in the - # hold buffer in order to output them again at the end. This only - # works with sed implementations that can handle large buffers. - sed < "$tmpdepfile" -n ' -/^Note: including file: *\(.*\)/ { - s//\1/ - s/\\/\\\\/g - p -}' | $cygpath_u | sort -u | sed -n ' -s/ /\\ /g -s/\(.*\)/'"$tab"'\1 \\/p -s/.\(.*\) \\/\1:/ -H -$ { - s/.*/'"$tab"'/ - G - p -}' >> "$depfile" - echo >> "$depfile" # make sure the fragment doesn't end with a backslash - rm -f "$tmpdepfile" - ;; - -msvc7msys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove '-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for ':' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. - "$@" $dashmflag | - sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this sed invocation - # correctly. Breaking it into two sed invocations is a workaround. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -arch) - eat=yes ;; - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix=`echo "$object" | sed 's/^.*\././'` - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - # makedepend may prepend the VPATH from the source file name to the object. - # No need to regex-escape $object, excess matching of '.' is harmless. - sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process the last invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed '1,2d' "$tmpdepfile" \ - | tr ' ' "$nl" \ - | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove '-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E \ - | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - | sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" - echo "$tab" >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff -Nru retro-gtk-0.12.1/.editorconfig retro-gtk-0.14.0/.editorconfig --- retro-gtk-0.12.1/.editorconfig 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/.editorconfig 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,46 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true + +[*.{c,h}] +indent_size = 2 +tab_size = 2 +indent_style = space +max_line_length = 80 + +[*.{glsl,vs,fs}] +indent_size = 2 +tab_size = 2 +indent_style = space +max_line_length = 80 + +[*.{ui,xml,modules}] +indent_size = 2 +tab_size = 2 +indent_style = space + +[*.py] +indent_size = 4 +tab_size = 4 +indent_style = space + +[*.{ac,am,mk}] +indent_size = 8 +tab_size = 8 +indent_style = tab + +[*.sh] +indent_size = 8 +tab_size = 8 +indent_style = space + +[meson.build] +indent_size = 2 +tab_size = 2 +indent_style = space + +[NEWS] +max_line_length = 72 diff -Nru retro-gtk-0.12.1/flatpak/libretro-cores/libretro-samples.json retro-gtk-0.14.0/flatpak/libretro-cores/libretro-samples.json --- retro-gtk-0.12.1/flatpak/libretro-cores/libretro-samples.json 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/flatpak/libretro-cores/libretro-samples.json 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,23 @@ + { + "name": "libretro-samples", + "no-autogen": true, + "make-args": [ + "--makefile=Makefile", + "prefix=/app" + ], + "make-install-args": [ + "--makefile=Makefile", + "prefix=/app" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/libretro/libretro-samples.git" + }, + { + "type": "file", + "path": "samples-Makefile", + "dest-filename": "Makefile" + } + ] + } diff -Nru retro-gtk-0.12.1/flatpak/libretro-cores/samples-Makefile retro-gtk-0.14.0/flatpak/libretro-cores/samples-Makefile --- retro-gtk-0.12.1/flatpak/libretro-cores/samples-Makefile 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/flatpak/libretro-cores/samples-Makefile 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,13 @@ +NULL= + +CORES= \ + tests/test/test_libretro.so \ + $(NULL) + +all: tests/test/test_libretro.so + +tests/test/test_libretro.so: + make -C $(@D) + +install: $(CORES) + install -Dp -m755 tests/test/test_libretro.so $(DESTDIR)$(prefix)/lib/libretro/test_libretro.so diff -Nru retro-gtk-0.12.1/flatpak/org.gnome.Retro.DemoSamplesTest.desktop retro-gtk-0.14.0/flatpak/org.gnome.Retro.DemoSamplesTest.desktop --- retro-gtk-0.12.1/flatpak/org.gnome.Retro.DemoSamplesTest.desktop 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/flatpak/org.gnome.Retro.DemoSamplesTest.desktop 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,3 @@ +[Desktop Entry] +Name=org.gnome.Retro.DemoSamplesTest +Exec=retro-demo-samples-test diff -Nru retro-gtk-0.12.1/flatpak/org.gnome.Retro.DemoSamplesTest.json retro-gtk-0.14.0/flatpak/org.gnome.Retro.DemoSamplesTest.json --- retro-gtk-0.12.1/flatpak/org.gnome.Retro.DemoSamplesTest.json 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/flatpak/org.gnome.Retro.DemoSamplesTest.json 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,69 @@ +{ + "app-id": "org.gnome.Retro.DemoSamplesTest", + "runtime": "org.gnome.Platform", + "runtime-version": "master", + "sdk": "org.gnome.Sdk", + "command": "retro-demo-samples-test", + "tags": ["nightly"], + "desktop-file-name-prefix": "(Nightly) ", + "finish-args": [ + /* X11 + XShm access */ + "--share=ipc", "--socket=x11", + /* Wayland access */ + "--socket=wayland", + /* PulseAudio access */ + "--device=dri", "--socket=pulseaudio" + ], + "build-options" : { + "cflags": "-O2 -g", + "cxxflags": "-O2 -g" + }, + "cleanup": ["/include", "/lib/pkgconfig", + "/share/pkgconfig", "/share/aclocal", + "/man", "/share/man", "/share/gtk-doc", + "*.la", "*.a", + "/lib/girepository-1.0", + "/share/dbus-1", "/share/doc", "/share/gir-1.0" + ], + "modules": [ + "libretro-cores/libretro-samples.json", + /* + * TODO Move this module after retro-gtk once GNOME Builder support + * building modules after the one being edited. + */ + { + "name": "retro-demo-samples-test", + "buildsystem": "simple", + "build-commands": [ + "mkdir -p /app/bin/", + "install -m755 -pD retro-demo-samples-test /app/bin/retro-demo-samples-test", + "install -m755 -pD org.gnome.Retro.DemoSamplesTest.desktop /app/share/applications/org.gnome.Retro.DemoSamplesTest.desktop" + ], + "sources": [ + { + "type": "script", + "commands": [ + "retro-demo /app/lib/libretro/test_libretro.so" + ], + "dest-filename": "retro-demo-samples-test" + }, + { + "type": "file", + "path": "org.gnome.Retro.DemoSamplesTest.desktop", + "dest-filename": "org.gnome.Retro.DemoSamplesTest.desktop" + } + ] + }, + { + "name": "retro-gtk", + "buildsystem": "meson", + "builddir": true, + "sources": [ + { + "type": "git", + "url": "https://gitlab.gnome.org/GNOME/retro-gtk.git" + } + ] + } + ] +} diff -Nru retro-gtk-0.12.1/INSTALL retro-gtk-0.14.0/INSTALL --- retro-gtk-0.12.1/INSTALL 2017-09-30 10:47:39.000000000 +0000 +++ retro-gtk-0.14.0/INSTALL 1970-01-01 00:00:00.000000000 +0000 @@ -1,370 +0,0 @@ -Installation Instructions -************************* - -Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, -Inc. - - Copying and distribution of this file, with or without modification, -are permitted in any medium without royalty provided the copyright -notice and this notice are preserved. This file is offered as-is, -without warranty of any kind. - -Basic Installation -================== - - Briefly, the shell command `./configure && make && make install' -should configure, build, and install this package. The following -more-detailed instructions are generic; see the `README' file for -instructions specific to this package. Some packages provide this -`INSTALL' file but do not implement all of the features documented -below. The lack of an optional feature in a given package is not -necessarily a bug. More recommendations for GNU packages can be found -in *note Makefile Conventions: (standards)Makefile Conventions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. Caching is -disabled by default to prevent problems with accidental use of stale -cache files. - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You need `configure.ac' if -you want to change it or regenerate `configure' using a newer version -of `autoconf'. - - The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. - - Running `configure' might take a while. While running, it prints - some messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package, generally using the just-built uninstalled binaries. - - 4. Type `make install' to install the programs and any data files and - documentation. When installing into a prefix owned by root, it is - recommended that the package be configured and built as a regular - user, and only the `make install' phase executed with root - privileges. - - 5. Optionally, type `make installcheck' to repeat any self-tests, but - this time using the binaries in their final installed location. - This target does not install anything. Running this target as a - regular user, particularly if the prior `make install' required - root privileges, verifies that the installation completed - correctly. - - 6. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - - 7. Often, you can also type `make uninstall' to remove the installed - files again. In practice, not all packages have tested that - uninstallation works correctly, even though it is required by the - GNU Coding Standards. - - 8. Some packages, particularly those that use Automake, provide `make - distcheck', which can by used by developers to test that all other - targets like `make install' and `make uninstall' work correctly. - This target is generally not run by end users. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. Run `./configure --help' -for details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c99 CFLAGS=-g LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you can use GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. This -is known as a "VPATH" build. - - With a non-GNU `make', it is safer to compile the package for one -architecture at a time in the source code directory. After you have -installed the package for one architecture, use `make distclean' before -reconfiguring for another architecture. - - On MacOS X 10.5 and later systems, you can create libraries and -executables that work on multiple system types--known as "fat" or -"universal" binaries--by specifying multiple `-arch' options to the -compiler but only a single `-arch' option to the preprocessor. Like -this: - - ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ - CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ - CPP="gcc -E" CXXCPP="g++ -E" - - This is not guaranteed to produce working output in all cases, you -may have to build one architecture at a time and combine the results -using the `lipo' tool if you have problems. - -Installation Names -================== - - By default, `make install' installs the package's commands under -`/usr/local/bin', include files under `/usr/local/include', etc. You -can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX', where PREFIX must be an -absolute file name. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -pass the option `--exec-prefix=PREFIX' to `configure', the package uses -PREFIX as the prefix for installing programs and libraries. -Documentation and other data files still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. In general, the -default for these options is expressed in terms of `${prefix}', so that -specifying just `--prefix' will affect all of the other directory -specifications that were not explicitly provided. - - The most portable way to affect installation locations is to pass the -correct locations to `configure'; however, many packages provide one or -both of the following shortcuts of passing variable assignments to the -`make install' command line to change installation locations without -having to reconfigure or recompile. - - The first method involves providing an override variable for each -affected directory. For example, `make install -prefix=/alternate/directory' will choose an alternate location for all -directory configuration variables that were expressed in terms of -`${prefix}'. Any directories that were specified during `configure', -but not in terms of `${prefix}', must each be overridden at install -time for the entire installation to be relocated. The approach of -makefile variable overrides for each directory variable is required by -the GNU Coding Standards, and ideally causes no recompilation. -However, some platforms have known limitations with the semantics of -shared libraries that end up requiring recompilation when using this -method, particularly noticeable in packages that use GNU Libtool. - - The second method involves providing the `DESTDIR' variable. For -example, `make install DESTDIR=/alternate/directory' will prepend -`/alternate/directory' before all installation names. The approach of -`DESTDIR' overrides is not required by the GNU Coding Standards, and -does not work on platforms that have drive letters. On the other hand, -it does better at avoiding recompilation issues, and works well even -when some directory options were not specified in terms of `${prefix}' -at `configure' time. - -Optional Features -================= - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - - Some packages offer the ability to configure how verbose the -execution of `make' will be. For these packages, running `./configure ---enable-silent-rules' sets the default to minimal output, which can be -overridden with `make V=1'; while running `./configure ---disable-silent-rules' sets the default to verbose, which can be -overridden with `make V=0'. - -Particular systems -================== - - On HP-UX, the default C compiler is not ANSI C compatible. If GNU -CC is not installed, it is recommended to use the following options in -order to use an ANSI C compiler: - - ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" - -and if that doesn't work, install pre-built binaries of GCC for HP-UX. - - HP-UX `make' updates targets which have the same time stamps as -their prerequisites, which makes it generally unusable when shipped -generated files such as `configure' are involved. Use GNU `make' -instead. - - On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot -parse its `' header file. The option `-nodtk' can be used as -a workaround. If GNU CC is not installed, it is therefore recommended -to try - - ./configure CC="cc" - -and if that doesn't work, try - - ./configure CC="cc -nodtk" - - On Solaris, don't put `/usr/ucb' early in your `PATH'. This -directory contains several dysfunctional programs; working variants of -these programs are available in `/usr/bin'. So, if you need `/usr/ucb' -in your `PATH', put it _after_ `/usr/bin'. - - On Haiku, software installed for all users goes in `/boot/common', -not `/usr/local'. It is recommended to use the following options: - - ./configure --prefix=/boot/common - -Specifying the System Type -========================== - - There may be some features `configure' cannot figure out -automatically, but needs to determine by the type of machine the package -will run on. Usually, assuming the package is built to be run on the -_same_ architectures, `configure' can figure that out, but if it prints -a message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS - KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the option `--target=TYPE' to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - - Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -causes the specified `gcc' to be used as the C compiler (unless it is -overridden in the site shell script). - -Unfortunately, this technique does not work for `CONFIG_SHELL' due to -an Autoconf limitation. Until the limitation is lifted, you can use -this workaround: - - CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash - -`configure' Invocation -====================== - - `configure' recognizes the following options to control how it -operates. - -`--help' -`-h' - Print a summary of all of the options to `configure', and exit. - -`--help=short' -`--help=recursive' - Print a summary of the options unique to this package's - `configure', and exit. The `short' variant lists options used - only in the top level, while the `recursive' variant lists options - also present in any nested packages. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`--prefix=DIR' - Use DIR as the installation prefix. *note Installation Names:: - for more details, including other options available for fine-tuning - the installation locations. - -`--no-create' -`-n' - Run the configure checks, but stop before creating any output - files. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. diff -Nru retro-gtk-0.12.1/install-sh retro-gtk-0.14.0/install-sh --- retro-gtk-0.12.1/install-sh 2017-09-30 10:47:39.000000000 +0000 +++ retro-gtk-0.14.0/install-sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,501 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2013-12-25.23; # UTC - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# 'make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. - -tab=' ' -nl=' -' -IFS=" $tab$nl" - -# Set DOITPROG to "echo" to test this script. - -doit=${DOITPROG-} -doit_exec=${doit:-exec} - -# Put in absolute file names if you don't have them in your path; -# or use environment vars. - -chgrpprog=${CHGRPPROG-chgrp} -chmodprog=${CHMODPROG-chmod} -chownprog=${CHOWNPROG-chown} -cmpprog=${CMPPROG-cmp} -cpprog=${CPPROG-cp} -mkdirprog=${MKDIRPROG-mkdir} -mvprog=${MVPROG-mv} -rmprog=${RMPROG-rm} -stripprog=${STRIPPROG-strip} - -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chgrpcmd= -chmodcmd=$chmodprog -chowncmd= -mvcmd=$mvprog -rmcmd="$rmprog -f" -stripcmd= - -src= -dst= -dir_arg= -dst_arg= - -copy_on_change=false -is_target_a_directory=possibly - -usage="\ -Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: - --help display this help and exit. - --version display version info and exit. - - -c (ignored) - -C install only if different (preserve the last data modification time) - -d create directories instead of installing files. - -g GROUP $chgrpprog installed files to GROUP. - -m MODE $chmodprog installed files to MODE. - -o USER $chownprog installed files to USER. - -s $stripprog installed files. - -t DIRECTORY install into DIRECTORY. - -T report an error if DSTFILE is a directory. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG - RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) ;; - - -C) copy_on_change=true;; - - -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" - shift;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - case $mode in - *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; - - -o) chowncmd="$chownprog $2" - shift;; - - -s) stripcmd=$stripprog;; - - -t) - is_target_a_directory=always - dst_arg=$2 - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; - - -T) is_target_a_directory=never;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac - shift -done - -# We allow the use of options -d and -T together, by making -d -# take the precedence; this is for compatibility with GNU install. - -if test -n "$dir_arg"; then - if test -n "$dst_arg"; then - echo "$0: target directory not allowed when installing a directory." >&2 - exit 1 - fi -fi - -if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then - # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dst_arg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dst_arg" - shift # fnord - fi - shift # arg - dst_arg=$arg - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - done -fi - -if test $# -eq 0; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call 'install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -if test -z "$dir_arg"; then - if test $# -gt 1 || test "$is_target_a_directory" = always; then - if test ! -d "$dst_arg"; then - echo "$0: $dst_arg: Is not a directory." >&2 - exit 1 - fi - fi -fi - -if test -z "$dir_arg"; then - do_exit='(exit $ret); exit $ret' - trap "ret=129; $do_exit" 1 - trap "ret=130; $do_exit" 2 - trap "ret=141; $do_exit" 13 - trap "ret=143; $do_exit" 15 - - # Set umask so as not to create temps with too-generous modes. - # However, 'strip' requires both read and write access to temps. - case $mode in - # Optimize common cases. - *644) cp_umask=133;; - *755) cp_umask=22;; - - *[0-7]) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw='% 200' - fi - cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; - *) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw=,u+rw - fi - cp_umask=$mode$u_plus_rw;; - esac -fi - -for src -do - # Protect names problematic for 'test' and other utilities. - case $src in - -* | [=\(\)!]) src=./$src;; - esac - - if test -n "$dir_arg"; then - dst=$src - dstdir=$dst - test -d "$dstdir" - dstdir_status=$? - else - - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - dst=$dst_arg - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test "$is_target_a_directory" = never; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 - fi - dstdir=$dst - dst=$dstdir/`basename "$src"` - dstdir_status=0 - else - dstdir=`dirname "$dst"` - test -d "$dstdir" - dstdir_status=$? - fi - fi - - obsolete_mkdir_used=false - - if test $dstdir_status != 0; then - case $posix_mkdir in - '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; - esac - - if - $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" - ) - then : - else - - # The umask is ridiculous, or mkdir does not conform to POSIX, - # or it failed possibly due to a race condition. Create the - # directory the slow way, step by step, checking for races as we go. - - case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; - esac - - oIFS=$IFS - IFS=/ - set -f - set fnord $dstdir - shift - set +f - IFS=$oIFS - - prefixes= - - for d - do - test X"$d" = X && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ - done - - if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true - fi - fi - fi - - if test -n "$dir_arg"; then - { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && - { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || - test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - - # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && - { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && - { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && - - # If -C, don't bother to copy if it wouldn't change the file. - if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - set -f && - set X $old && old=:$2:$4:$5:$6 && - set X $new && new=:$2:$4:$5:$6 && - set +f && - test "$old" = "$new" && - $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 - then - rm -f "$dsttmp" - else - # Rename the file to the real destination. - $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || - - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - fi || exit 1 - - trap '' 0 - fi -done - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff -Nru retro-gtk-0.12.1/ltmain.sh retro-gtk-0.14.0/ltmain.sh --- retro-gtk-0.12.1/ltmain.sh 2017-09-30 10:47:36.000000000 +0000 +++ retro-gtk-0.14.0/ltmain.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,11256 +0,0 @@ -#! /bin/sh -## DO NOT EDIT - This file generated from ../libtool-2.4.6/build-aux/ltmain.in -## by inline-source v2014-01-03.01 - -# libtool (GNU libtool) 2.4.6 -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit , 1996 - -# Copyright (C) 1996-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -PROGRAM=libtool -PACKAGE=libtool -VERSION=2.4.6 -package_revision=2.4.6 - - -## ------ ## -## Usage. ## -## ------ ## - -# Run './libtool --help' for help with using this script from the -# command line. - - -## ------------------------------- ## -## User overridable command paths. ## -## ------------------------------- ## - -# After configure completes, it has a better idea of some of the -# shell tools we need than the defaults used by the functions shared -# with bootstrap, so set those here where they can still be over- -# ridden by the user, but otherwise take precedence. - -: ${AUTOCONF="autoconf"} -: ${AUTOMAKE="automake"} - - -## -------------------------- ## -## Source external libraries. ## -## -------------------------- ## - -# Much of our low-level functionality needs to be sourced from external -# libraries, which are installed to $pkgauxdir. - -# Set a version string for this script. -scriptversion=2015-01-20.17; # UTC - -# General shell script boiler plate, and helper functions. -# Written by Gary V. Vaughan, 2004 - -# Copyright (C) 2004-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. - -# As a special exception to the GNU General Public License, if you distribute -# this file as part of a program or library that is built using GNU Libtool, -# you may include this file under the same distribution terms that you use -# for the rest of that program. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Please report bugs or propose patches to gary@gnu.org. - - -## ------ ## -## Usage. ## -## ------ ## - -# Evaluate this file near the top of your script to gain access to -# the functions and variables defined here: -# -# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh -# -# If you need to override any of the default environment variable -# settings, do that before evaluating this file. - - -## -------------------- ## -## Shell normalisation. ## -## -------------------- ## - -# Some shells need a little help to be as Bourne compatible as possible. -# Before doing anything else, make sure all that help has been provided! - -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac -fi - -# NLS nuisances: We save the old values in case they are required later. -_G_user_locale= -_G_safe_locale= -for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test set = \"\${$_G_var+set}\"; then - save_$_G_var=\$$_G_var - $_G_var=C - export $_G_var - _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" - _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" - fi" -done - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Make sure IFS has a sensible default -sp=' ' -nl=' -' -IFS="$sp $nl" - -# There are apparently some retarded systems that use ';' as a PATH separator! -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - - -## ------------------------- ## -## Locate command utilities. ## -## ------------------------- ## - - -# func_executable_p FILE -# ---------------------- -# Check that FILE is an executable regular file. -func_executable_p () -{ - test -f "$1" && test -x "$1" -} - - -# func_path_progs PROGS_LIST CHECK_FUNC [PATH] -# -------------------------------------------- -# Search for either a program that responds to --version with output -# containing "GNU", or else returned by CHECK_FUNC otherwise, by -# trying all the directories in PATH with each of the elements of -# PROGS_LIST. -# -# CHECK_FUNC should accept the path to a candidate program, and -# set $func_check_prog_result if it truncates its output less than -# $_G_path_prog_max characters. -func_path_progs () -{ - _G_progs_list=$1 - _G_check_func=$2 - _G_PATH=${3-"$PATH"} - - _G_path_prog_max=0 - _G_path_prog_found=false - _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} - for _G_dir in $_G_PATH; do - IFS=$_G_save_IFS - test -z "$_G_dir" && _G_dir=. - for _G_prog_name in $_G_progs_list; do - for _exeext in '' .EXE; do - _G_path_prog=$_G_dir/$_G_prog_name$_exeext - func_executable_p "$_G_path_prog" || continue - case `"$_G_path_prog" --version 2>&1` in - *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; - *) $_G_check_func $_G_path_prog - func_path_progs_result=$func_check_prog_result - ;; - esac - $_G_path_prog_found && break 3 - done - done - done - IFS=$_G_save_IFS - test -z "$func_path_progs_result" && { - echo "no acceptable sed could be found in \$PATH" >&2 - exit 1 - } -} - - -# We want to be able to use the functions in this file before configure -# has figured out where the best binaries are kept, which means we have -# to search for them ourselves - except when the results are already set -# where we skip the searches. - -# Unless the user overrides by setting SED, search the path for either GNU -# sed, or the sed that truncates its output the least. -test -z "$SED" && { - _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for _G_i in 1 2 3 4 5 6 7; do - _G_sed_script=$_G_sed_script$nl$_G_sed_script - done - echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed - _G_sed_script= - - func_check_prog_sed () - { - _G_path_prog=$1 - - _G_count=0 - printf 0123456789 >conftest.in - while : - do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo '' >> conftest.nl - "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break - diff conftest.out conftest.nl >/dev/null 2>&1 || break - _G_count=`expr $_G_count + 1` - if test "$_G_count" -gt "$_G_path_prog_max"; then - # Best one so far, save it but keep looking for a better one - func_check_prog_result=$_G_path_prog - _G_path_prog_max=$_G_count - fi - # 10*(2^10) chars as input seems more than enough - test 10 -lt "$_G_count" && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out - } - - func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin - rm -f conftest.sed - SED=$func_path_progs_result -} - - -# Unless the user overrides by setting GREP, search the path for either GNU -# grep, or the grep that truncates its output the least. -test -z "$GREP" && { - func_check_prog_grep () - { - _G_path_prog=$1 - - _G_count=0 - _G_path_prog_max=0 - printf 0123456789 >conftest.in - while : - do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo 'GREP' >> conftest.nl - "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break - diff conftest.out conftest.nl >/dev/null 2>&1 || break - _G_count=`expr $_G_count + 1` - if test "$_G_count" -gt "$_G_path_prog_max"; then - # Best one so far, save it but keep looking for a better one - func_check_prog_result=$_G_path_prog - _G_path_prog_max=$_G_count - fi - # 10*(2^10) chars as input seems more than enough - test 10 -lt "$_G_count" && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out - } - - func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin - GREP=$func_path_progs_result -} - - -## ------------------------------- ## -## User overridable command paths. ## -## ------------------------------- ## - -# All uppercase variable names are used for environment variables. These -# variables can be overridden by the user before calling a script that -# uses them if a suitable command of that name is not already available -# in the command search PATH. - -: ${CP="cp -f"} -: ${ECHO="printf %s\n"} -: ${EGREP="$GREP -E"} -: ${FGREP="$GREP -F"} -: ${LN_S="ln -s"} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} - - -## -------------------- ## -## Useful sed snippets. ## -## -------------------- ## - -sed_dirname='s|/[^/]*$||' -sed_basename='s|^.*/||' - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='s|\([`"$\\]\)|\\\1|g' - -# Same as above, but do not quote variable references. -sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution that turns a string into a regex matching for the -# string literally. -sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' - -# Sed substitution that converts a w32 file name or path -# that contains forward slashes, into one that contains -# (escaped) backslashes. A very naive implementation. -sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - -# Re-'\' parameter expansions in output of sed_double_quote_subst that -# were '\'-ed in input to the same. If an odd number of '\' preceded a -# '$' in input to sed_double_quote_subst, that '$' was protected from -# expansion. Since each input '\' is now two '\'s, look for any number -# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. -_G_bs='\\' -_G_bs2='\\\\' -_G_bs4='\\\\\\\\' -_G_dollar='\$' -sed_double_backslash="\ - s/$_G_bs4/&\\ -/g - s/^$_G_bs2$_G_dollar/$_G_bs&/ - s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g - s/\n//g" - - -## ----------------- ## -## Global variables. ## -## ----------------- ## - -# Except for the global variables explicitly listed below, the following -# functions in the '^func_' namespace, and the '^require_' namespace -# variables initialised in the 'Resource management' section, sourcing -# this file will not pollute your global namespace with anything -# else. There's no portable way to scope variables in Bourne shell -# though, so actually running these functions will sometimes place -# results into a variable named after the function, and often use -# temporary variables in the '^_G_' namespace. If you are careful to -# avoid using those namespaces casually in your sourcing script, things -# should continue to work as you expect. And, of course, you can freely -# overwrite any of the functions or variables defined here before -# calling anything to customize them. - -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -# Allow overriding, eg assuming that you follow the convention of -# putting '$debug_cmd' at the start of all your functions, you can get -# bash to show function call trace with: -# -# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name -debug_cmd=${debug_cmd-":"} -exit_cmd=: - -# By convention, finish your script with: -# -# exit $exit_status -# -# so that you can set exit_status to non-zero if you want to indicate -# something went wrong during execution without actually bailing out at -# the point of failure. -exit_status=$EXIT_SUCCESS - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath=$0 - -# The name of this program. -progname=`$ECHO "$progpath" |$SED "$sed_basename"` - -# Make sure we have an absolute progpath for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` - progdir=`cd "$progdir" && pwd` - progpath=$progdir/$progname - ;; - *) - _G_IFS=$IFS - IFS=${PATH_SEPARATOR-:} - for progdir in $PATH; do - IFS=$_G_IFS - test -x "$progdir/$progname" && break - done - IFS=$_G_IFS - test -n "$progdir" || progdir=`pwd` - progpath=$progdir/$progname - ;; -esac - - -## ----------------- ## -## Standard options. ## -## ----------------- ## - -# The following options affect the operation of the functions defined -# below, and should be set appropriately depending on run-time para- -# meters passed on the command line. - -opt_dry_run=false -opt_quiet=false -opt_verbose=false - -# Categories 'all' and 'none' are always available. Append any others -# you will pass as the first argument to func_warning from your own -# code. -warning_categories= - -# By default, display warnings according to 'opt_warning_types'. Set -# 'warning_func' to ':' to elide all warnings, or func_fatal_error to -# treat the next displayed warning as a fatal error. -warning_func=func_warn_and_continue - -# Set to 'all' to display all warnings, 'none' to suppress all -# warnings, or a space delimited list of some subset of -# 'warning_categories' to display only the listed warnings. -opt_warning_types=all - - -## -------------------- ## -## Resource management. ## -## -------------------- ## - -# This section contains definitions for functions that each ensure a -# particular resource (a file, or a non-empty configuration variable for -# example) is available, and if appropriate to extract default values -# from pertinent package files. Call them using their associated -# 'require_*' variable to ensure that they are executed, at most, once. -# -# It's entirely deliberate that calling these functions can set -# variables that don't obey the namespace limitations obeyed by the rest -# of this file, in order that that they be as useful as possible to -# callers. - - -# require_term_colors -# ------------------- -# Allow display of bold text on terminals that support it. -require_term_colors=func_require_term_colors -func_require_term_colors () -{ - $debug_cmd - - test -t 1 && { - # COLORTERM and USE_ANSI_COLORS environment variables take - # precedence, because most terminfo databases neglect to describe - # whether color sequences are supported. - test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} - - if test 1 = "$USE_ANSI_COLORS"; then - # Standard ANSI escape sequences - tc_reset='' - tc_bold=''; tc_standout='' - tc_red=''; tc_green='' - tc_blue=''; tc_cyan='' - else - # Otherwise trust the terminfo database after all. - test -n "`tput sgr0 2>/dev/null`" && { - tc_reset=`tput sgr0` - test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` - tc_standout=$tc_bold - test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` - test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` - test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` - test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` - test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` - } - fi - } - - require_term_colors=: -} - - -## ----------------- ## -## Function library. ## -## ----------------- ## - -# This section contains a variety of useful functions to call in your -# scripts. Take note of the portable wrappers for features provided by -# some modern shells, which will fall back to slower equivalents on -# less featureful shells. - - -# func_append VAR VALUE -# --------------------- -# Append VALUE onto the existing contents of VAR. - - # We should try to minimise forks, especially on Windows where they are - # unreasonably slow, so skip the feature probes when bash or zsh are - # being used: - if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then - : ${_G_HAVE_ARITH_OP="yes"} - : ${_G_HAVE_XSI_OPS="yes"} - # The += operator was introduced in bash 3.1 - case $BASH_VERSION in - [12].* | 3.0 | 3.0*) ;; - *) - : ${_G_HAVE_PLUSEQ_OP="yes"} - ;; - esac - fi - - # _G_HAVE_PLUSEQ_OP - # Can be empty, in which case the shell is probed, "yes" if += is - # useable or anything else if it does not work. - test -z "$_G_HAVE_PLUSEQ_OP" \ - && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ - && _G_HAVE_PLUSEQ_OP=yes - -if test yes = "$_G_HAVE_PLUSEQ_OP" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_append () - { - $debug_cmd - - eval "$1+=\$2" - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_append () - { - $debug_cmd - - eval "$1=\$$1\$2" - } -fi - - -# func_append_quoted VAR VALUE -# ---------------------------- -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -if test yes = "$_G_HAVE_PLUSEQ_OP"; then - eval 'func_append_quoted () - { - $debug_cmd - - func_quote_for_eval "$2" - eval "$1+=\\ \$func_quote_for_eval_result" - }' -else - func_append_quoted () - { - $debug_cmd - - func_quote_for_eval "$2" - eval "$1=\$$1\\ \$func_quote_for_eval_result" - } -fi - - -# func_append_uniq VAR VALUE -# -------------------------- -# Append unique VALUE onto the existing contents of VAR, assuming -# entries are delimited by the first character of VALUE. For example: -# -# func_append_uniq options " --another-option option-argument" -# -# will only append to $options if " --another-option option-argument " -# is not already present somewhere in $options already (note spaces at -# each end implied by leading space in second argument). -func_append_uniq () -{ - $debug_cmd - - eval _G_current_value='`$ECHO $'$1'`' - _G_delim=`expr "$2" : '\(.\)'` - - case $_G_delim$_G_current_value$_G_delim in - *"$2$_G_delim"*) ;; - *) func_append "$@" ;; - esac -} - - -# func_arith TERM... -# ------------------ -# Set func_arith_result to the result of evaluating TERMs. - test -z "$_G_HAVE_ARITH_OP" \ - && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ - && _G_HAVE_ARITH_OP=yes - -if test yes = "$_G_HAVE_ARITH_OP"; then - eval 'func_arith () - { - $debug_cmd - - func_arith_result=$(( $* )) - }' -else - func_arith () - { - $debug_cmd - - func_arith_result=`expr "$@"` - } -fi - - -# func_basename FILE -# ------------------ -# Set func_basename_result to FILE with everything up to and including -# the last / stripped. -if test yes = "$_G_HAVE_XSI_OPS"; then - # If this shell supports suffix pattern removal, then use it to avoid - # forking. Hide the definitions single quotes in case the shell chokes - # on unsupported syntax... - _b='func_basename_result=${1##*/}' - _d='case $1 in - */*) func_dirname_result=${1%/*}$2 ;; - * ) func_dirname_result=$3 ;; - esac' - -else - # ...otherwise fall back to using sed. - _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' - _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` - if test "X$func_dirname_result" = "X$1"; then - func_dirname_result=$3 - else - func_append func_dirname_result "$2" - fi' -fi - -eval 'func_basename () -{ - $debug_cmd - - '"$_b"' -}' - - -# func_dirname FILE APPEND NONDIR_REPLACEMENT -# ------------------------------------------- -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -eval 'func_dirname () -{ - $debug_cmd - - '"$_d"' -}' - - -# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT -# -------------------------------------------------------- -# Perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# For efficiency, we do not delegate to the functions above but instead -# duplicate the functionality here. -eval 'func_dirname_and_basename () -{ - $debug_cmd - - '"$_b"' - '"$_d"' -}' - - -# func_echo ARG... -# ---------------- -# Echo program name prefixed message. -func_echo () -{ - $debug_cmd - - _G_message=$* - - func_echo_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_IFS - $ECHO "$progname: $_G_line" - done - IFS=$func_echo_IFS -} - - -# func_echo_all ARG... -# -------------------- -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - - -# func_echo_infix_1 INFIX ARG... -# ------------------------------ -# Echo program name, followed by INFIX on the first line, with any -# additional lines not showing INFIX. -func_echo_infix_1 () -{ - $debug_cmd - - $require_term_colors - - _G_infix=$1; shift - _G_indent=$_G_infix - _G_prefix="$progname: $_G_infix: " - _G_message=$* - - # Strip color escape sequences before counting printable length - for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" - do - test -n "$_G_tc" && { - _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` - _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` - } - done - _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes - - func_echo_infix_1_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_infix_1_IFS - $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 - _G_prefix=$_G_indent - done - IFS=$func_echo_infix_1_IFS -} - - -# func_error ARG... -# ----------------- -# Echo program name prefixed message to standard error. -func_error () -{ - $debug_cmd - - $require_term_colors - - func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 -} - - -# func_fatal_error ARG... -# ----------------------- -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - $debug_cmd - - func_error "$*" - exit $EXIT_FAILURE -} - - -# func_grep EXPRESSION FILENAME -# ----------------------------- -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $debug_cmd - - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_len STRING -# --------------- -# Set func_len_result to the length of STRING. STRING may not -# start with a hyphen. - test -z "$_G_HAVE_XSI_OPS" \ - && (eval 'x=a/b/c; - test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ - && _G_HAVE_XSI_OPS=yes - -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_len () - { - $debug_cmd - - func_len_result=${#1} - }' -else - func_len () - { - $debug_cmd - - func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` - } -fi - - -# func_mkdir_p DIRECTORY-PATH -# --------------------------- -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - $debug_cmd - - _G_directory_path=$1 - _G_dir_list= - - if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then - - # Protect directory names starting with '-' - case $_G_directory_path in - -*) _G_directory_path=./$_G_directory_path ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$_G_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - _G_dir_list=$_G_directory_path:$_G_dir_list - - # If the last portion added has no slash in it, the list is done - case $_G_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` - done - _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` - - func_mkdir_p_IFS=$IFS; IFS=: - for _G_dir in $_G_dir_list; do - IFS=$func_mkdir_p_IFS - # mkdir can fail with a 'File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$_G_dir" 2>/dev/null || : - done - IFS=$func_mkdir_p_IFS - - # Bail out if we (or some other process) failed to create a directory. - test -d "$_G_directory_path" || \ - func_fatal_error "Failed to create '$1'" - fi -} - - -# func_mktempdir [BASENAME] -# ------------------------- -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, BASENAME is the basename for that directory. -func_mktempdir () -{ - $debug_cmd - - _G_template=${TMPDIR-/tmp}/${1-$progname} - - if test : = "$opt_dry_run"; then - # Return a directory name, but don't create it in dry-run mode - _G_tmpdir=$_G_template-$$ - else - - # If mktemp works, use that first and foremost - _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` - - if test ! -d "$_G_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - _G_tmpdir=$_G_template-${RANDOM-0}$$ - - func_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$_G_tmpdir" - umask $func_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$_G_tmpdir" || \ - func_fatal_error "cannot create temporary directory '$_G_tmpdir'" - fi - - $ECHO "$_G_tmpdir" -} - - -# func_normal_abspath PATH -# ------------------------ -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -func_normal_abspath () -{ - $debug_cmd - - # These SED scripts presuppose an absolute path with a trailing slash. - _G_pathcar='s|^/\([^/]*\).*$|\1|' - _G_pathcdr='s|^/[^/]*||' - _G_removedotparts=':dotsl - s|/\./|/|g - t dotsl - s|/\.$|/|' - _G_collapseslashes='s|/\{1,\}|/|g' - _G_finalslash='s|/*$|/|' - - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` - while :; do - # Processed it all yet? - if test / = "$func_normal_abspath_tpath"; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result"; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$_G_pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} - - -# func_notquiet ARG... -# -------------------- -# Echo program name prefixed message only when not in quiet mode. -func_notquiet () -{ - $debug_cmd - - $opt_quiet || func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - - -# func_relative_path SRCDIR DSTDIR -# -------------------------------- -# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. -func_relative_path () -{ - $debug_cmd - - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=$func_dirname_result - if test -z "$func_relative_path_tlibdir"; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done - - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test -n "$func_stripname_result"; then - func_append func_relative_path_result "/$func_stripname_result" - fi - - # Normalisation. If bindir is libdir, return '.' else relative path. - if test -n "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - fi - - test -n "$func_relative_path_result" || func_relative_path_result=. - - : -} - - -# func_quote_for_eval ARG... -# -------------------------- -# Aesthetically quote ARGs to be evaled later. -# This function returns two values: -# i) func_quote_for_eval_result -# double-quoted, suitable for a subsequent eval -# ii) func_quote_for_eval_unquoted_result -# has all characters that are still active within double -# quotes backslashified. -func_quote_for_eval () -{ - $debug_cmd - - func_quote_for_eval_unquoted_result= - func_quote_for_eval_result= - while test 0 -lt $#; do - case $1 in - *[\\\`\"\$]*) - _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; - *) - _G_unquoted_arg=$1 ;; - esac - if test -n "$func_quote_for_eval_unquoted_result"; then - func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" - else - func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" - fi - - case $_G_unquoted_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and variable expansion - # for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - _G_quoted_arg=\"$_G_unquoted_arg\" - ;; - *) - _G_quoted_arg=$_G_unquoted_arg - ;; - esac - - if test -n "$func_quote_for_eval_result"; then - func_append func_quote_for_eval_result " $_G_quoted_arg" - else - func_append func_quote_for_eval_result "$_G_quoted_arg" - fi - shift - done -} - - -# func_quote_for_expand ARG -# ------------------------- -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - $debug_cmd - - case $1 in - *[\\\`\"]*) - _G_arg=`$ECHO "$1" | $SED \ - -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; - *) - _G_arg=$1 ;; - esac - - case $_G_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - _G_arg=\"$_G_arg\" - ;; - esac - - func_quote_for_expand_result=$_G_arg -} - - -# func_stripname PREFIX SUFFIX NAME -# --------------------------------- -# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_stripname () - { - $debug_cmd - - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary variable first. - func_stripname_result=$3 - func_stripname_result=${func_stripname_result#"$1"} - func_stripname_result=${func_stripname_result%"$2"} - }' -else - func_stripname () - { - $debug_cmd - - case $2 in - .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; - *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; - esac - } -fi - - -# func_show_eval CMD [FAIL_EXP] -# ----------------------------- -# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - $debug_cmd - - _G_cmd=$1 - _G_fail_exp=${2-':'} - - func_quote_for_expand "$_G_cmd" - eval "func_notquiet $func_quote_for_expand_result" - - $opt_dry_run || { - eval "$_G_cmd" - _G_status=$? - if test 0 -ne "$_G_status"; then - eval "(exit $_G_status); $_G_fail_exp" - fi - } -} - - -# func_show_eval_locale CMD [FAIL_EXP] -# ------------------------------------ -# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - $debug_cmd - - _G_cmd=$1 - _G_fail_exp=${2-':'} - - $opt_quiet || { - func_quote_for_expand "$_G_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - $opt_dry_run || { - eval "$_G_user_locale - $_G_cmd" - _G_status=$? - eval "$_G_safe_locale" - if test 0 -ne "$_G_status"; then - eval "(exit $_G_status); $_G_fail_exp" - fi - } -} - - -# func_tr_sh -# ---------- -# Turn $1 into a string suitable for a shell variable name. -# Result is stored in $func_tr_sh_result. All characters -# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -# if $1 begins with a digit, a '_' is prepended as well. -func_tr_sh () -{ - $debug_cmd - - case $1 in - [0-9]* | *[!a-zA-Z0-9_]*) - func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` - ;; - * ) - func_tr_sh_result=$1 - ;; - esac -} - - -# func_verbose ARG... -# ------------------- -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $debug_cmd - - $opt_verbose && func_echo "$*" - - : -} - - -# func_warn_and_continue ARG... -# ----------------------------- -# Echo program name prefixed warning message to standard error. -func_warn_and_continue () -{ - $debug_cmd - - $require_term_colors - - func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 -} - - -# func_warning CATEGORY ARG... -# ---------------------------- -# Echo program name prefixed warning message to standard error. Warning -# messages can be filtered according to CATEGORY, where this function -# elides messages where CATEGORY is not listed in the global variable -# 'opt_warning_types'. -func_warning () -{ - $debug_cmd - - # CATEGORY must be in the warning_categories list! - case " $warning_categories " in - *" $1 "*) ;; - *) func_internal_error "invalid warning category '$1'" ;; - esac - - _G_category=$1 - shift - - case " $opt_warning_types " in - *" $_G_category "*) $warning_func ${1+"$@"} ;; - esac -} - - -# func_sort_ver VER1 VER2 -# ----------------------- -# 'sort -V' is not generally available. -# Note this deviates from the version comparison in automake -# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a -# but this should suffice as we won't be specifying old -# version formats or redundant trailing .0 in bootstrap.conf. -# If we did want full compatibility then we should probably -# use m4_version_compare from autoconf. -func_sort_ver () -{ - $debug_cmd - - printf '%s\n%s\n' "$1" "$2" \ - | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n -} - -# func_lt_ver PREV CURR -# --------------------- -# Return true if PREV and CURR are in the correct order according to -# func_sort_ver, otherwise false. Use it like this: -# -# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." -func_lt_ver () -{ - $debug_cmd - - test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` -} - - -# Local variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" -# time-stamp-time-zone: "UTC" -# End: -#! /bin/sh - -# Set a version string for this script. -scriptversion=2014-01-07.03; # UTC - -# A portable, pluggable option parser for Bourne shell. -# Written by Gary V. Vaughan, 2010 - -# Copyright (C) 2010-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Please report bugs or propose patches to gary@gnu.org. - - -## ------ ## -## Usage. ## -## ------ ## - -# This file is a library for parsing options in your shell scripts along -# with assorted other useful supporting features that you can make use -# of too. -# -# For the simplest scripts you might need only: -# -# #!/bin/sh -# . relative/path/to/funclib.sh -# . relative/path/to/options-parser -# scriptversion=1.0 -# func_options ${1+"$@"} -# eval set dummy "$func_options_result"; shift -# ...rest of your script... -# -# In order for the '--version' option to work, you will need to have a -# suitably formatted comment like the one at the top of this file -# starting with '# Written by ' and ending with '# warranty; '. -# -# For '-h' and '--help' to work, you will also need a one line -# description of your script's purpose in a comment directly above the -# '# Written by ' line, like the one at the top of this file. -# -# The default options also support '--debug', which will turn on shell -# execution tracing (see the comment above debug_cmd below for another -# use), and '--verbose' and the func_verbose function to allow your script -# to display verbose messages only when your user has specified -# '--verbose'. -# -# After sourcing this file, you can plug processing for additional -# options by amending the variables from the 'Configuration' section -# below, and following the instructions in the 'Option parsing' -# section further down. - -## -------------- ## -## Configuration. ## -## -------------- ## - -# You should override these variables in your script after sourcing this -# file so that they reflect the customisations you have added to the -# option parser. - -# The usage line for option parsing errors and the start of '-h' and -# '--help' output messages. You can embed shell variables for delayed -# expansion at the time the message is displayed, but you will need to -# quote other shell meta-characters carefully to prevent them being -# expanded when the contents are evaled. -usage='$progpath [OPTION]...' - -# Short help message in response to '-h' and '--help'. Add to this or -# override it after sourcing this library to reflect the full set of -# options your script accepts. -usage_message="\ - --debug enable verbose shell tracing - -W, --warnings=CATEGORY - report the warnings falling in CATEGORY [all] - -v, --verbose verbosely report processing - --version print version information and exit - -h, --help print short or long help message and exit -" - -# Additional text appended to 'usage_message' in response to '--help'. -long_help_message=" -Warning categories include: - 'all' show all warnings - 'none' turn off all the warnings - 'error' warnings are treated as fatal errors" - -# Help message printed before fatal option parsing errors. -fatal_help="Try '\$progname --help' for more information." - - - -## ------------------------- ## -## Hook function management. ## -## ------------------------- ## - -# This section contains functions for adding, removing, and running hooks -# to the main code. A hook is just a named list of of function, that can -# be run in order later on. - -# func_hookable FUNC_NAME -# ----------------------- -# Declare that FUNC_NAME will run hooks added with -# 'func_add_hook FUNC_NAME ...'. -func_hookable () -{ - $debug_cmd - - func_append hookable_fns " $1" -} - - -# func_add_hook FUNC_NAME HOOK_FUNC -# --------------------------------- -# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must -# first have been declared "hookable" by a call to 'func_hookable'. -func_add_hook () -{ - $debug_cmd - - case " $hookable_fns " in - *" $1 "*) ;; - *) func_fatal_error "'$1' does not accept hook functions." ;; - esac - - eval func_append ${1}_hooks '" $2"' -} - - -# func_remove_hook FUNC_NAME HOOK_FUNC -# ------------------------------------ -# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. -func_remove_hook () -{ - $debug_cmd - - eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' -} - - -# func_run_hooks FUNC_NAME [ARG]... -# --------------------------------- -# Run all hook functions registered to FUNC_NAME. -# It is assumed that the list of hook functions contains nothing more -# than a whitespace-delimited list of legal shell function names, and -# no effort is wasted trying to catch shell meta-characters or preserve -# whitespace. -func_run_hooks () -{ - $debug_cmd - - case " $hookable_fns " in - *" $1 "*) ;; - *) func_fatal_error "'$1' does not support hook funcions.n" ;; - esac - - eval _G_hook_fns=\$$1_hooks; shift - - for _G_hook in $_G_hook_fns; do - eval $_G_hook '"$@"' - - # store returned options list back into positional - # parameters for next 'cmd' execution. - eval _G_hook_result=\$${_G_hook}_result - eval set dummy "$_G_hook_result"; shift - done - - func_quote_for_eval ${1+"$@"} - func_run_hooks_result=$func_quote_for_eval_result -} - - - -## --------------- ## -## Option parsing. ## -## --------------- ## - -# In order to add your own option parsing hooks, you must accept the -# full positional parameter list in your hook function, remove any -# options that you action, and then pass back the remaining unprocessed -# options in '_result', escaped suitably for -# 'eval'. Like this: -# -# my_options_prep () -# { -# $debug_cmd -# -# # Extend the existing usage message. -# usage_message=$usage_message' -# -s, --silent don'\''t print informational messages -# ' -# -# func_quote_for_eval ${1+"$@"} -# my_options_prep_result=$func_quote_for_eval_result -# } -# func_add_hook func_options_prep my_options_prep -# -# -# my_silent_option () -# { -# $debug_cmd -# -# # Note that for efficiency, we parse as many options as we can -# # recognise in a loop before passing the remainder back to the -# # caller on the first unrecognised argument we encounter. -# while test $# -gt 0; do -# opt=$1; shift -# case $opt in -# --silent|-s) opt_silent=: ;; -# # Separate non-argument short options: -# -s*) func_split_short_opt "$_G_opt" -# set dummy "$func_split_short_opt_name" \ -# "-$func_split_short_opt_arg" ${1+"$@"} -# shift -# ;; -# *) set dummy "$_G_opt" "$*"; shift; break ;; -# esac -# done -# -# func_quote_for_eval ${1+"$@"} -# my_silent_option_result=$func_quote_for_eval_result -# } -# func_add_hook func_parse_options my_silent_option -# -# -# my_option_validation () -# { -# $debug_cmd -# -# $opt_silent && $opt_verbose && func_fatal_help "\ -# '--silent' and '--verbose' options are mutually exclusive." -# -# func_quote_for_eval ${1+"$@"} -# my_option_validation_result=$func_quote_for_eval_result -# } -# func_add_hook func_validate_options my_option_validation -# -# You'll alse need to manually amend $usage_message to reflect the extra -# options you parse. It's preferable to append if you can, so that -# multiple option parsing hooks can be added safely. - - -# func_options [ARG]... -# --------------------- -# All the functions called inside func_options are hookable. See the -# individual implementations for details. -func_hookable func_options -func_options () -{ - $debug_cmd - - func_options_prep ${1+"$@"} - eval func_parse_options \ - ${func_options_prep_result+"$func_options_prep_result"} - eval func_validate_options \ - ${func_parse_options_result+"$func_parse_options_result"} - - eval func_run_hooks func_options \ - ${func_validate_options_result+"$func_validate_options_result"} - - # save modified positional parameters for caller - func_options_result=$func_run_hooks_result -} - - -# func_options_prep [ARG]... -# -------------------------- -# All initialisations required before starting the option parse loop. -# Note that when calling hook functions, we pass through the list of -# positional parameters. If a hook function modifies that list, and -# needs to propogate that back to rest of this script, then the complete -# modified list must be put in 'func_run_hooks_result' before -# returning. -func_hookable func_options_prep -func_options_prep () -{ - $debug_cmd - - # Option defaults: - opt_verbose=false - opt_warning_types= - - func_run_hooks func_options_prep ${1+"$@"} - - # save modified positional parameters for caller - func_options_prep_result=$func_run_hooks_result -} - - -# func_parse_options [ARG]... -# --------------------------- -# The main option parsing loop. -func_hookable func_parse_options -func_parse_options () -{ - $debug_cmd - - func_parse_options_result= - - # this just eases exit handling - while test $# -gt 0; do - # Defer to hook functions for initial option parsing, so they - # get priority in the event of reusing an option name. - func_run_hooks func_parse_options ${1+"$@"} - - # Adjust func_parse_options positional parameters to match - eval set dummy "$func_run_hooks_result"; shift - - # Break out of the loop if we already parsed every option. - test $# -gt 0 || break - - _G_opt=$1 - shift - case $_G_opt in - --debug|-x) debug_cmd='set -x' - func_echo "enabling shell trace mode" - $debug_cmd - ;; - - --no-warnings|--no-warning|--no-warn) - set dummy --warnings none ${1+"$@"} - shift - ;; - - --warnings|--warning|-W) - test $# = 0 && func_missing_arg $_G_opt && break - case " $warning_categories $1" in - *" $1 "*) - # trailing space prevents matching last $1 above - func_append_uniq opt_warning_types " $1" - ;; - *all) - opt_warning_types=$warning_categories - ;; - *none) - opt_warning_types=none - warning_func=: - ;; - *error) - opt_warning_types=$warning_categories - warning_func=func_fatal_error - ;; - *) - func_fatal_error \ - "unsupported warning category: '$1'" - ;; - esac - shift - ;; - - --verbose|-v) opt_verbose=: ;; - --version) func_version ;; - -\?|-h) func_usage ;; - --help) func_help ;; - - # Separate optargs to long options (plugins may need this): - --*=*) func_split_equals "$_G_opt" - set dummy "$func_split_equals_lhs" \ - "$func_split_equals_rhs" ${1+"$@"} - shift - ;; - - # Separate optargs to short options: - -W*) - func_split_short_opt "$_G_opt" - set dummy "$func_split_short_opt_name" \ - "$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-v*|-x*) - func_split_short_opt "$_G_opt" - set dummy "$func_split_short_opt_name" \ - "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) break ;; - -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; - *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; - esac - done - - # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - func_parse_options_result=$func_quote_for_eval_result -} - - -# func_validate_options [ARG]... -# ------------------------------ -# Perform any sanity checks on option settings and/or unconsumed -# arguments. -func_hookable func_validate_options -func_validate_options () -{ - $debug_cmd - - # Display all warnings if -W was not given. - test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" - - func_run_hooks func_validate_options ${1+"$@"} - - # Bail if the options were screwed! - $exit_cmd $EXIT_FAILURE - - # save modified positional parameters for caller - func_validate_options_result=$func_run_hooks_result -} - - - -## ----------------- ## -## Helper functions. ## -## ----------------- ## - -# This section contains the helper functions used by the rest of the -# hookable option parser framework in ascii-betical order. - - -# func_fatal_help ARG... -# ---------------------- -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - $debug_cmd - - eval \$ECHO \""Usage: $usage"\" - eval \$ECHO \""$fatal_help"\" - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - - -# func_help -# --------- -# Echo long help message to standard output and exit. -func_help () -{ - $debug_cmd - - func_usage_message - $ECHO "$long_help_message" - exit 0 -} - - -# func_missing_arg ARGNAME -# ------------------------ -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - $debug_cmd - - func_error "Missing argument for '$1'." - exit_cmd=exit -} - - -# func_split_equals STRING -# ------------------------ -# Set func_split_equals_lhs and func_split_equals_rhs shell variables after -# splitting STRING at the '=' sign. -test -z "$_G_HAVE_XSI_OPS" \ - && (eval 'x=a/b/c; - test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ - && _G_HAVE_XSI_OPS=yes - -if test yes = "$_G_HAVE_XSI_OPS" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_split_equals () - { - $debug_cmd - - func_split_equals_lhs=${1%%=*} - func_split_equals_rhs=${1#*=} - test "x$func_split_equals_lhs" = "x$1" \ - && func_split_equals_rhs= - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_split_equals () - { - $debug_cmd - - func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` - func_split_equals_rhs= - test "x$func_split_equals_lhs" = "x$1" \ - || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` - } -fi #func_split_equals - - -# func_split_short_opt SHORTOPT -# ----------------------------- -# Set func_split_short_opt_name and func_split_short_opt_arg shell -# variables after splitting SHORTOPT after the 2nd character. -if test yes = "$_G_HAVE_XSI_OPS" -then - # This is an XSI compatible shell, allowing a faster implementation... - eval 'func_split_short_opt () - { - $debug_cmd - - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"} - }' -else - # ...otherwise fall back to using expr, which is often a shell builtin. - func_split_short_opt () - { - $debug_cmd - - func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` - func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` - } -fi #func_split_short_opt - - -# func_usage -# ---------- -# Echo short help message to standard output and exit. -func_usage () -{ - $debug_cmd - - func_usage_message - $ECHO "Run '$progname --help |${PAGER-more}' for full usage" - exit 0 -} - - -# func_usage_message -# ------------------ -# Echo short help message to standard output. -func_usage_message () -{ - $debug_cmd - - eval \$ECHO \""Usage: $usage"\" - echo - $SED -n 's|^# || - /^Written by/{ - x;p;x - } - h - /^Written by/q' < "$progpath" - echo - eval \$ECHO \""$usage_message"\" -} - - -# func_version -# ------------ -# Echo version message to standard output and exit. -func_version () -{ - $debug_cmd - - printf '%s\n' "$progname $scriptversion" - $SED -n ' - /(C)/!b go - :more - /\./!{ - N - s|\n# | | - b more - } - :go - /^# Written by /,/# warranty; / { - s|^# || - s|^# *$|| - s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| - p - } - /^# Written by / { - s|^# || - p - } - /^warranty; /q' < "$progpath" - - exit $? -} - - -# Local variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" -# time-stamp-time-zone: "UTC" -# End: - -# Set a version string. -scriptversion='(GNU libtool) 2.4.6' - - -# func_echo ARG... -# ---------------- -# Libtool also displays the current mode in messages, so override -# funclib.sh func_echo with this custom definition. -func_echo () -{ - $debug_cmd - - _G_message=$* - - func_echo_IFS=$IFS - IFS=$nl - for _G_line in $_G_message; do - IFS=$func_echo_IFS - $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" - done - IFS=$func_echo_IFS -} - - -# func_warning ARG... -# ------------------- -# Libtool warnings are not categorized, so override funclib.sh -# func_warning with this simpler definition. -func_warning () -{ - $debug_cmd - - $warning_func ${1+"$@"} -} - - -## ---------------- ## -## Options parsing. ## -## ---------------- ## - -# Hook in the functions to make sure our own options are parsed during -# the option parsing loop. - -usage='$progpath [OPTION]... [MODE-ARG]...' - -# Short help message in response to '-h'. -usage_message="Options: - --config show all configuration variables - --debug enable verbose shell tracing - -n, --dry-run display commands without modifying any files - --features display basic configuration information and exit - --mode=MODE use operation mode MODE - --no-warnings equivalent to '-Wnone' - --preserve-dup-deps don't remove duplicate dependency libraries - --quiet, --silent don't print informational messages - --tag=TAG use configuration variables from tag TAG - -v, --verbose print more informational messages than default - --version print version information - -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] - -h, --help, --help-all print short, long, or detailed help message -" - -# Additional text appended to 'usage_message' in response to '--help'. -func_help () -{ - $debug_cmd - - func_usage_message - $ECHO "$long_help_message - -MODE must be one of the following: - - clean remove files from the build directory - compile compile a source file into a libtool object - execute automatically set library path, then run a program - finish complete the installation of libtool libraries - install install libraries or executables - link create a library or an executable - uninstall remove libraries from an installed directory - -MODE-ARGS vary depending on the MODE. When passed as first option, -'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. -Try '$progname --help --mode=MODE' for a more detailed description of MODE. - -When reporting a bug, please describe a test case to reproduce it and -include the following information: - - host-triplet: $host - shell: $SHELL - compiler: $LTCC - compiler flags: $LTCFLAGS - linker: $LD (gnu? $with_gnu_ld) - version: $progname (GNU libtool) 2.4.6 - automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` - autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` - -Report bugs to . -GNU libtool home page: . -General help using GNU software: ." - exit 0 -} - - -# func_lo2o OBJECT-NAME -# --------------------- -# Transform OBJECT-NAME from a '.lo' suffix to the platform specific -# object suffix. - -lo2o=s/\\.lo\$/.$objext/ -o2lo=s/\\.$objext\$/.lo/ - -if test yes = "$_G_HAVE_XSI_OPS"; then - eval 'func_lo2o () - { - case $1 in - *.lo) func_lo2o_result=${1%.lo}.$objext ;; - * ) func_lo2o_result=$1 ;; - esac - }' - - # func_xform LIBOBJ-OR-SOURCE - # --------------------------- - # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) - # suffix to a '.lo' libtool-object suffix. - eval 'func_xform () - { - func_xform_result=${1%.*}.lo - }' -else - # ...otherwise fall back to using sed. - func_lo2o () - { - func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` - } - - func_xform () - { - func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` - } -fi - - -# func_fatal_configuration ARG... -# ------------------------------- -# Echo program name prefixed message to standard error, followed by -# a configuration failure hint, and exit. -func_fatal_configuration () -{ - func__fatal_error ${1+"$@"} \ - "See the $PACKAGE documentation for more information." \ - "Fatal configuration error." -} - - -# func_config -# ----------- -# Display the configuration for all the tags in this script. -func_config () -{ - re_begincf='^# ### BEGIN LIBTOOL' - re_endcf='^# ### END LIBTOOL' - - # Default configuration. - $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" - - # Now print the configurations for the tags. - for tagname in $taglist; do - $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" - done - - exit $? -} - - -# func_features -# ------------- -# Display the features supported by this script. -func_features () -{ - echo "host: $host" - if test yes = "$build_libtool_libs"; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test yes = "$build_old_libs"; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - - exit $? -} - - -# func_enable_tag TAGNAME -# ----------------------- -# Verify that TAGNAME is valid, and either flag an error and exit, or -# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -# variable here. -func_enable_tag () -{ - # Global variable: - tagname=$1 - - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf=/$re_begincf/,/$re_endcf/p - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac - - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; - *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - - -# func_check_version_match -# ------------------------ -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - fi - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF - fi - - exit $EXIT_MISMATCH - fi -} - - -# libtool_options_prep [ARG]... -# ----------------------------- -# Preparation for options parsed by libtool. -#libtool_options_prep () -#{ - $debug_mode - - # Option defaults: - opt_verbose=false - opt_warning_types= - - # Option defaults: - opt_config=false - opt_dlopen= - opt_dry_run=false - opt_help=false - opt_mode= - opt_preserve_dup_deps=false - opt_quiet=false - - nonopt= - preserve_args= - - # Shorthand for --mode=foo, only valid as the first argument - case $1 in - clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; - compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; - execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; - finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; - install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; - link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; - uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; - esac -#} - - -# libtool_parse_options [ARG]... -# --------------------------------- -# Provide handling for libtool specific options. -#libtool_parse_options () -#{ - $debug_cmd - - # Perform our own loop to consume as many options as possible in - # each iteration. - while test $# -gt 0; do - _G_opt=$1 - shift - case $_G_opt in - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - - --config) func_config ;; - - --dlopen|-dlopen) - opt_dlopen="${opt_dlopen+$opt_dlopen -}$1" - shift - ;; - - --preserve-dup-deps) - opt_preserve_dup_deps=: ;; - - --features) func_features ;; - - --finish) set dummy --mode finish ${1+"$@"}; shift ;; - - --help) opt_help=: ;; - - --help-all) opt_help=': help-all' ;; - - --mode) test $# = 0 && func_missing_arg $_G_opt && break - opt_mode=$1 - case $1 in - # Valid mode arguments: - clean|compile|execute|finish|install|link|relink|uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $_G_opt" - exit_cmd=exit - break - ;; - esac - shift - ;; - - --no-silent|--no-quiet) - opt_quiet=false - func_append preserve_args " $_G_opt" - ;; - - --no-warnings|--no-warning|--no-warn) - opt_warning=false - func_append preserve_args " $_G_opt" - ;; - - --no-verbose) - opt_verbose=false - func_append preserve_args " $_G_opt" - ;; - - --silent|--quiet) - opt_quiet=: - opt_verbose=false - func_append preserve_args " $_G_opt" - ;; - - --tag) test $# = 0 && func_missing_arg $_G_opt && break - opt_tag=$1 - func_append preserve_args " $_G_opt $1" - func_enable_tag "$1" - shift - ;; - - --verbose|-v) opt_quiet=false - opt_verbose=: - func_append preserve_args " $_G_opt" - ;; - - --debug|-x) debug_cmd='set -x' - func_echo "enabling shell trace mode" - $debug_cmd - ;; - - --no-warnings|--no-warning|--no-warn) - set dummy --warnings none ${1+"$@"} - shift - ;; - - --warnings|--warning|-W) - test $# = 0 && func_missing_arg $_G_opt && break - case " $warning_categories $1" in - *" $1 "*) - # trailing space prevents matching last $1 above - func_append_uniq opt_warning_types " $1" - ;; - *all) - opt_warning_types=$warning_categories - ;; - *none) - opt_warning_types=none - warning_func=: - ;; - *error) - opt_warning_types=$warning_categories - warning_func=func_fatal_error - ;; - *) - func_fatal_error \ - "unsupported warning category: '$1'" - ;; - esac - shift - ;; - - --verbose|-v) opt_verbose=: ;; - --version) func_version ;; - -\?|-h) func_usage ;; - --help) func_help ;; - - # Separate optargs to long options (plugins may need this): - --*=*) func_split_equals "$_G_opt" - set dummy "$func_split_equals_lhs" \ - "$func_split_equals_rhs" ${1+"$@"} - shift - ;; - - # Separate optargs to short options: - -W*) - func_split_short_opt "$_G_opt" - set dummy "$func_split_short_opt_name" \ - "$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-v*|-x*) - func_split_short_opt "$_G_opt" - set dummy "$func_split_short_opt_name" \ - "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) break ;; - -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; - *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; - esac - done -#} - -# Display all warnings if -W was not given. -test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" - - -# libtool_validate_options [ARG]... -# --------------------------------- -# Perform any sanity checks on option settings and/or unconsumed -# arguments. -#libtool_validate_options () -#{ - # save first non-option argument - if test 0 -lt $#; then - nonopt=$_G_opt - shift - fi - - # preserve --debug - test : = "$debug_cmd" || func_append preserve_args " --debug" - - case $host in - # For NIOS2, we want to make sure that it's not caught by the - # more general OS/2 check below. Otherwise, NIOS2 is the same - # as the default option. - *nios2*) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 - # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 - *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - - $opt_help || { - # Sanity checks first: - func_check_version_match - - test yes != "$build_libtool_libs" \ - && test yes != "$build_old_libs" \ - && func_fatal_configuration "not configured to build any kind of library" - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$opt_dlopen" && test execute != "$opt_mode"; then - func_error "unrecognized option '-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help=$help - help="Try '$progname --help --mode=$opt_mode' for more information." - } -#} - -# Bail if the options were screwed! -$exit_cmd $EXIT_FAILURE - -## ----------- ## -## Main. ## -## ----------- ## - -magic='%%%MAGIC variable%%%' -magic_exe='%%%MAGIC EXE variable%%%' - -# Global variables. -extracted_archives= -extracted_serial=0 - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - -# func_generated_by_libtool -# True iff stdin has been generated by Libtool. This function is only -# a basic sanity check; it will hardly flush out determined imposters. -func_generated_by_libtool_p () -{ - $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_p file -# True iff FILE is a libtool '.la' library or '.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool '.la' library or '.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if 'file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case $lalib_p_line in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test yes = "$lalib_p" -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - test -f "$1" && - $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper -} - -# func_ltwrapper_p file -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $debug_cmd - - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$sp$nl - eval cmd=\"$cmd\" - IFS=$save_ifs - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -# behavior happens only for exec(3), not for open(2)! Also, sourcing -# 'FILE.' does not work on cygwin managed mounts. -func_source () -{ - $debug_cmd - - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# func_resolve_sysroot PATH -# Replace a leading = in PATH with a sysroot. Store the result into -# func_resolve_sysroot_result -func_resolve_sysroot () -{ - func_resolve_sysroot_result=$1 - case $func_resolve_sysroot_result in - =*) - func_stripname '=' '' "$func_resolve_sysroot_result" - func_resolve_sysroot_result=$lt_sysroot$func_stripname_result - ;; - esac -} - -# func_replace_sysroot PATH -# If PATH begins with the sysroot, replace it with = and -# store the result into func_replace_sysroot_result. -func_replace_sysroot () -{ - case $lt_sysroot:$1 in - ?*:"$lt_sysroot"*) - func_stripname "$lt_sysroot" '' "$1" - func_replace_sysroot_result='='$func_stripname_result - ;; - *) - # Including no sysroot. - func_replace_sysroot_result=$1 - ;; - esac -} - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - $debug_cmd - - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case "$@ " in - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with '--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=$1 - if test yes = "$build_libtool_libs"; then - write_lobj=\'$2\' - else - write_lobj=none - fi - - if test yes = "$build_old_libs"; then - write_oldobj=\'$3\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T </dev/null` - if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then - func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | - $SED -e "$sed_naive_backslashify"` - else - func_convert_core_file_wine_to_w32_result= - fi - fi -} -# end: func_convert_core_file_wine_to_w32 - - -# func_convert_core_path_wine_to_w32 ARG -# Helper function used by path conversion functions when $build is *nix, and -# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly -# configured wine environment available, with the winepath program in $build's -# $PATH. Assumes ARG has no leading or trailing path separator characters. -# -# ARG is path to be converted from $build format to win32. -# Result is available in $func_convert_core_path_wine_to_w32_result. -# Unconvertible file (directory) names in ARG are skipped; if no directory names -# are convertible, then the result may be empty. -func_convert_core_path_wine_to_w32 () -{ - $debug_cmd - - # unfortunately, winepath doesn't convert paths, only file names - func_convert_core_path_wine_to_w32_result= - if test -n "$1"; then - oldIFS=$IFS - IFS=: - for func_convert_core_path_wine_to_w32_f in $1; do - IFS=$oldIFS - func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" - if test -n "$func_convert_core_file_wine_to_w32_result"; then - if test -z "$func_convert_core_path_wine_to_w32_result"; then - func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result - else - func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" - fi - fi - done - IFS=$oldIFS - fi -} -# end: func_convert_core_path_wine_to_w32 - - -# func_cygpath ARGS... -# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when -# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) -# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or -# (2), returns the Cygwin file name or path in func_cygpath_result (input -# file name or path is assumed to be in w32 format, as previously converted -# from $build's *nix or MSYS format). In case (3), returns the w32 file name -# or path in func_cygpath_result (input file name or path is assumed to be in -# Cygwin format). Returns an empty string on error. -# -# ARGS are passed to cygpath, with the last one being the file name or path to -# be converted. -# -# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH -# environment variable; do not put it in $PATH. -func_cygpath () -{ - $debug_cmd - - if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then - func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` - if test "$?" -ne 0; then - # on failure, ensure result is empty - func_cygpath_result= - fi - else - func_cygpath_result= - func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" - fi -} -#end: func_cygpath - - -# func_convert_core_msys_to_w32 ARG -# Convert file name or path ARG from MSYS format to w32 format. Return -# result in func_convert_core_msys_to_w32_result. -func_convert_core_msys_to_w32 () -{ - $debug_cmd - - # awkward: cmd appends spaces to result - func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` -} -#end: func_convert_core_msys_to_w32 - - -# func_convert_file_check ARG1 ARG2 -# Verify that ARG1 (a file name in $build format) was converted to $host -# format in ARG2. Otherwise, emit an error message, but continue (resetting -# func_to_host_file_result to ARG1). -func_convert_file_check () -{ - $debug_cmd - - if test -z "$2" && test -n "$1"; then - func_error "Could not determine host file name corresponding to" - func_error " '$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback: - func_to_host_file_result=$1 - fi -} -# end func_convert_file_check - - -# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH -# Verify that FROM_PATH (a path in $build format) was converted to $host -# format in TO_PATH. Otherwise, emit an error message, but continue, resetting -# func_to_host_file_result to a simplistic fallback value (see below). -func_convert_path_check () -{ - $debug_cmd - - if test -z "$4" && test -n "$3"; then - func_error "Could not determine the host path corresponding to" - func_error " '$3'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This is a deliberately simplistic "conversion" and - # should not be "improved". See libtool.info. - if test "x$1" != "x$2"; then - lt_replace_pathsep_chars="s|$1|$2|g" - func_to_host_path_result=`echo "$3" | - $SED -e "$lt_replace_pathsep_chars"` - else - func_to_host_path_result=$3 - fi - fi -} -# end func_convert_path_check - - -# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG -# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT -# and appending REPL if ORIG matches BACKPAT. -func_convert_path_front_back_pathsep () -{ - $debug_cmd - - case $4 in - $1 ) func_to_host_path_result=$3$func_to_host_path_result - ;; - esac - case $4 in - $2 ) func_append func_to_host_path_result "$3" - ;; - esac -} -# end func_convert_path_front_back_pathsep - - -################################################## -# $build to $host FILE NAME CONVERSION FUNCTIONS # -################################################## -# invoked via '$to_host_file_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# Result will be available in $func_to_host_file_result. - - -# func_to_host_file ARG -# Converts the file name ARG from $build format to $host format. Return result -# in func_to_host_file_result. -func_to_host_file () -{ - $debug_cmd - - $to_host_file_cmd "$1" -} -# end func_to_host_file - - -# func_to_tool_file ARG LAZY -# converts the file name ARG from $build format to toolchain format. Return -# result in func_to_tool_file_result. If the conversion in use is listed -# in (the comma separated) LAZY, no conversion takes place. -func_to_tool_file () -{ - $debug_cmd - - case ,$2, in - *,"$to_tool_file_cmd",*) - func_to_tool_file_result=$1 - ;; - *) - $to_tool_file_cmd "$1" - func_to_tool_file_result=$func_to_host_file_result - ;; - esac -} -# end func_to_tool_file - - -# func_convert_file_noop ARG -# Copy ARG to func_to_host_file_result. -func_convert_file_noop () -{ - func_to_host_file_result=$1 -} -# end func_convert_file_noop - - -# func_convert_file_msys_to_w32 ARG -# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_file_result. -func_convert_file_msys_to_w32 () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_to_host_file_result=$func_convert_core_msys_to_w32_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_w32 - - -# func_convert_file_cygwin_to_w32 ARG -# Convert file name ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_file_cygwin_to_w32 () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - # because $build is cygwin, we call "the" cygpath in $PATH; no need to use - # LT_CYGPATH in this case. - func_to_host_file_result=`cygpath -m "$1"` - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_cygwin_to_w32 - - -# func_convert_file_nix_to_w32 ARG -# Convert file name ARG from *nix to w32 format. Requires a wine environment -# and a working winepath. Returns result in func_to_host_file_result. -func_convert_file_nix_to_w32 () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - func_convert_core_file_wine_to_w32 "$1" - func_to_host_file_result=$func_convert_core_file_wine_to_w32_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_w32 - - -# func_convert_file_msys_to_cygwin ARG -# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_file_msys_to_cygwin () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_cygpath -u "$func_convert_core_msys_to_w32_result" - func_to_host_file_result=$func_cygpath_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_cygwin - - -# func_convert_file_nix_to_cygwin ARG -# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed -# in a wine environment, working winepath, and LT_CYGPATH set. Returns result -# in func_to_host_file_result. -func_convert_file_nix_to_cygwin () -{ - $debug_cmd - - func_to_host_file_result=$1 - if test -n "$1"; then - # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. - func_convert_core_file_wine_to_w32 "$1" - func_cygpath -u "$func_convert_core_file_wine_to_w32_result" - func_to_host_file_result=$func_cygpath_result - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_cygwin - - -############################################# -# $build to $host PATH CONVERSION FUNCTIONS # -############################################# -# invoked via '$to_host_path_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# The result will be available in $func_to_host_path_result. -# -# Path separators are also converted from $build format to $host format. If -# ARG begins or ends with a path separator character, it is preserved (but -# converted to $host format) on output. -# -# All path conversion functions are named using the following convention: -# file name conversion function : func_convert_file_X_to_Y () -# path conversion function : func_convert_path_X_to_Y () -# where, for any given $build/$host combination the 'X_to_Y' value is the -# same. If conversion functions are added for new $build/$host combinations, -# the two new functions must follow this pattern, or func_init_to_host_path_cmd -# will break. - - -# func_init_to_host_path_cmd -# Ensures that function "pointer" variable $to_host_path_cmd is set to the -# appropriate value, based on the value of $to_host_file_cmd. -to_host_path_cmd= -func_init_to_host_path_cmd () -{ - $debug_cmd - - if test -z "$to_host_path_cmd"; then - func_stripname 'func_convert_file_' '' "$to_host_file_cmd" - to_host_path_cmd=func_convert_path_$func_stripname_result - fi -} - - -# func_to_host_path ARG -# Converts the path ARG from $build format to $host format. Return result -# in func_to_host_path_result. -func_to_host_path () -{ - $debug_cmd - - func_init_to_host_path_cmd - $to_host_path_cmd "$1" -} -# end func_to_host_path - - -# func_convert_path_noop ARG -# Copy ARG to func_to_host_path_result. -func_convert_path_noop () -{ - func_to_host_path_result=$1 -} -# end func_convert_path_noop - - -# func_convert_path_msys_to_w32 ARG -# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_path_result. -func_convert_path_msys_to_w32 () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # Remove leading and trailing path separator characters from ARG. MSYS - # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; - # and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result=$func_convert_core_msys_to_w32_result - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_msys_to_w32 - - -# func_convert_path_cygwin_to_w32 ARG -# Convert path ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_path_cygwin_to_w32 () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_cygwin_to_w32 - - -# func_convert_path_nix_to_w32 ARG -# Convert path ARG from *nix to w32 format. Requires a wine environment and -# a working winepath. Returns result in func_to_host_file_result. -func_convert_path_nix_to_w32 () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result=$func_convert_core_path_wine_to_w32_result - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_nix_to_w32 - - -# func_convert_path_msys_to_cygwin ARG -# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_path_msys_to_cygwin () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_msys_to_w32_result" - func_to_host_path_result=$func_cygpath_result - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_msys_to_cygwin - - -# func_convert_path_nix_to_cygwin ARG -# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a -# a wine environment, working winepath, and LT_CYGPATH set. Returns result in -# func_to_host_file_result. -func_convert_path_nix_to_cygwin () -{ - $debug_cmd - - func_to_host_path_result=$1 - if test -n "$1"; then - # Remove leading and trailing path separator characters from - # ARG. msys behavior is inconsistent here, cygpath turns them - # into '.;' and ';.', and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" - func_to_host_path_result=$func_cygpath_result - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_nix_to_cygwin - - -# func_dll_def_p FILE -# True iff FILE is a Windows DLL '.def' file. -# Keep in sync with _LT_DLL_DEF_P in libtool.m4 -func_dll_def_p () -{ - $debug_cmd - - func_dll_def_p_tmp=`$SED -n \ - -e 's/^[ ]*//' \ - -e '/^\(;.*\)*$/d' \ - -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ - -e q \ - "$1"` - test DEF = "$func_dll_def_p_tmp" -} - - -# func_mode_compile arg... -func_mode_compile () -{ - $debug_cmd - - # Get the compilation command and the source file. - base_compile= - srcfile=$nonopt # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - pie_flag= - - for arg - do - case $arg_mode in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg=$arg - arg_mode=normal - ;; - - target ) - libobj=$arg - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - test -n "$libobj" && \ - func_fatal_error "you cannot specify '-o' more than once" - arg_mode=target - continue - ;; - - -pie | -fpie | -fPIE) - func_append pie_flag " $arg" - continue - ;; - - -shared | -static | -prefer-pic | -prefer-non-pic) - func_append later " $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - lastarg= - save_ifs=$IFS; IFS=, - for arg in $args; do - IFS=$save_ifs - func_append_quoted lastarg "$arg" - done - IFS=$save_ifs - func_stripname ' ' '' "$lastarg" - lastarg=$func_stripname_result - - # Add the arguments to base_compile. - func_append base_compile " $lastarg" - continue - ;; - - *) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg=$srcfile - srcfile=$arg - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - func_append_quoted base_compile "$lastarg" - done # for arg - - case $arg_mode in - arg) - func_fatal_error "you must specify an argument for -Xcompile" - ;; - target) - func_fatal_error "you must specify a target with '-o'" - ;; - *) - # Get the name of the library object. - test -z "$libobj" && { - func_basename "$srcfile" - libobj=$func_basename_result - } - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - case $libobj in - *.[cCFSifmso] | \ - *.ada | *.adb | *.ads | *.asm | \ - *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ - *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) - func_xform "$libobj" - libobj=$func_xform_result - ;; - esac - - case $libobj in - *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; - *) - func_fatal_error "cannot determine name of library object from '$libobj'" - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -shared) - test yes = "$build_libtool_libs" \ - || func_fatal_configuration "cannot build a shared library" - build_old_libs=no - continue - ;; - - -static) - build_libtool_libs=no - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - func_quote_for_eval "$libobj" - test "X$libobj" != "X$func_quote_for_eval_result" \ - && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name '$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname=$func_basename_result - xdir=$func_dirname_result - lobj=$xdir$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # Delete any leftover library objects. - if test yes = "$build_old_libs"; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) - pic_mode=default - ;; - esac - if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test no = "$compiler_c_o"; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext - lockfile=$output_obj.lock - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test yes = "$need_locks"; then - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - elif test warn = "$need_locks"; then - if test -f "$lockfile"; then - $ECHO "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - func_append removelist " $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - func_append removelist " $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 - srcfile=$func_to_tool_file_result - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result - - # Only build a PIC object if we are building libtool libraries. - if test yes = "$build_libtool_libs"; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test no != "$pic_mode"; then - command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - func_append command " -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test warn = "$need_locks" && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test yes = "$suppress_opt"; then - suppress_output=' >/dev/null 2>&1' - fi - fi - - # Only build a position-dependent object if we build old libraries. - if test yes = "$build_old_libs"; then - if test yes != "$pic_mode"; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test yes = "$compiler_c_o"; then - func_append command " -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - func_append command "$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test warn = "$need_locks" && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support '-c' and '-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test no != "$need_locks"; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { - test compile = "$opt_mode" && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $opt_mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - - compile) - $ECHO \ -"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to build PIC objects only - -prefer-non-pic try to build non-PIC objects only - -shared do not build a '.o' file suitable for static linking - -static only build a '.o' file suitable for static linking - -Wc,FLAG pass FLAG directly to the compiler - -COMPILE-COMMAND is a command to be used in creating a 'standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix '.c' with the -library object suffix, '.lo'." - ;; - - execute) - $ECHO \ -"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to '-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - - finish) - $ECHO \ -"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the '--dry-run' option if you just want to see what would be executed." - ;; - - install) - $ECHO \ -"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the 'install' or 'cp' program. - -The following components of INSTALL-COMMAND are treated specially: - - -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - - link) - $ECHO \ -"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -bindir BINDIR specify path to binaries directory (for systems where - libraries must be found in the PATH setting at runtime) - -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE use a list of object files found in FILE to specify objects - -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -weak LIBNAME declare that the target provides the LIBNAME interface - -Wc,FLAG - -Xcompiler FLAG pass linker-specific FLAG directly to the compiler - -Wl,FLAG - -Xlinker FLAG pass linker-specific FLAG directly to the linker - -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) - -All other options (arguments beginning with '-') are ignored. - -Every other argument is treated as a filename. Files ending in '.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in '.la', then a libtool library is created, -only library objects ('.lo' files) may be specified, and '-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created -using 'ar' and 'ranlib', or on Windows using 'lib'. - -If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file -is created, otherwise an executable program is created." - ;; - - uninstall) - $ECHO \ -"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - - *) - func_fatal_help "invalid operation mode '$opt_mode'" - ;; - esac - - echo - $ECHO "Try '$progname --help' for more information about other modes." -} - -# Now that we've collected a possible --mode arg, show help if necessary -if $opt_help; then - if test : = "$opt_help"; then - func_mode_help - else - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - func_mode_help - done - } | $SED -n '1p; 2,$s/^Usage:/ or: /p' - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - echo - func_mode_help - done - } | - $SED '1d - /^When reporting/,/^Report/{ - H - d - } - $x - /information about other modes/d - /more detailed .*MODE/d - s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' - fi - exit $? -fi - - -# func_mode_execute arg... -func_mode_execute () -{ - $debug_cmd - - # The first argument is the command name. - cmd=$nonopt - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - for file in $opt_dlopen; do - test -f "$file" \ - || func_fatal_help "'$file' is not a file" - - dir= - case $file in - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "'$lib' is not a valid libtool archive" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "'$file' was not linked with '-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir=$func_dirname_result - - if test -f "$dir/$objdir/$dlname"; then - func_append dir "/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir=$func_dirname_result - ;; - - *) - func_warning "'-dlopen' is ignored for non-libtool libraries and objects" - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir=$absdir - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic=$magic - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file=$progdir/$program - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file=$progdir/$program - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_append_quoted args "$file" - done - - if $opt_dry_run; then - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - else - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd=\$cmd$args - fi -} - -test execute = "$opt_mode" && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $debug_cmd - - libs= - libdirs= - admincmds= - - for opt in "$nonopt" ${1+"$@"} - do - if test -d "$opt"; then - func_append libdirs " $opt" - - elif test -f "$opt"; then - if func_lalib_unsafe_p "$opt"; then - func_append libs " $opt" - else - func_warning "'$opt' is not a valid libtool archive" - fi - - else - func_fatal_error "invalid argument '$opt'" - fi - done - - if test -n "$libs"; then - if test -n "$lt_sysroot"; then - sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` - sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" - else - sysroot_cmd= - fi - - # Remove sysroot references - if $opt_dry_run; then - for lib in $libs; do - echo "removing references to $lt_sysroot and '=' prefixes from $lib" - done - else - tmpdir=`func_mktempdir` - for lib in $libs; do - $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ - > $tmpdir/tmp-la - mv -f $tmpdir/tmp-la $lib - done - ${RM}r "$tmpdir" - fi - fi - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || func_append admincmds " - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_quiet && exit $EXIT_SUCCESS - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - echo "----------------------------------------------------------------------" - echo "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - echo - echo "If you ever happen to want to link against installed libraries" - echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the '-LLIBDIR'" - echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the '$shlibpath_var' environment variable" - echo " during execution" - fi - if test -n "$runpath_var"; then - echo " - add LIBDIR to the '$runpath_var' environment variable" - echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $ECHO " - use the '$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" - fi - echo - - echo "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" - echo "pages." - ;; - *) - echo "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - echo "----------------------------------------------------------------------" - fi - exit $EXIT_SUCCESS -} - -test finish = "$opt_mode" && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $debug_cmd - - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || - # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac - then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - func_append install_prog "$func_quote_for_eval_result" - install_shared_prog=$install_prog - case " $install_prog " in - *[\\\ /]cp\ *) install_cp=: ;; - *) install_cp=false ;; - esac - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=false - stripme= - no_mode=: - for arg - do - arg2= - if test -n "$dest"; then - func_append files " $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=: ;; - -f) - if $install_cp; then :; else - prev=$arg - fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - if test X-m = "X$prev" && test -n "$install_override_mode"; then - arg2=$install_override_mode - no_mode=false - fi - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - func_append install_prog " $func_quote_for_eval_result" - if test -n "$arg2"; then - func_quote_for_eval "$arg2" - fi - func_append install_shared_prog " $func_quote_for_eval_result" - done - - test -z "$install_prog" && \ - func_fatal_help "you must specify an install program" - - test -n "$prev" && \ - func_fatal_help "the '$prev' option requires an argument" - - if test -n "$install_override_mode" && $no_mode; then - if $install_cp; then :; else - func_quote_for_eval "$install_override_mode" - func_append install_shared_prog " -m $func_quote_for_eval_result" - fi - fi - - if test -z "$files"; then - if test -z "$dest"; then - func_fatal_help "no file or destination specified" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=: - if $isdir; then - destdir=$dest - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir=$func_dirname_result - destname=$func_basename_result - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "'$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "'$destdir' must be an absolute directory name" - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic=$magic - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - func_append staticlibs " $file" - ;; - - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "'$file' is not a valid libtool archive" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) func_append current_libdirs " $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) func_append future_libdirs " $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir=$func_dirname_result - func_append dir "$objdir" - - if test -n "$relink_command"; then - # Strip any trailing slash from the destination. - func_stripname '' '/' "$libdir" - destlibdir=$func_stripname_result - - func_stripname '' '/' "$destdir" - s_destdir=$func_stripname_result - - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "X$s_destdir" | $Xsed -e "s%$destlibdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking '$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname=$1 - shift - - srcname=$realname - test -n "$relink_command" && srcname=${realname}T - - # Install the shared library and build the symlinks. - func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme=$stripme - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme= - ;; - esac - ;; - os2*) - case $realname in - *_dll.a) - tstripme= - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_eval "$striplib $destdir/$realname" 'exit $?' - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try 'ln -sf' first, because the 'ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib=$destdir/$realname - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name=$func_basename_result - instname=$dir/${name}i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && func_append staticlibs " $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile=$destdir/$destname - else - func_basename "$file" - destfile=$func_basename_result - destfile=$destdir/$destfile - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest=$destfile - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to '$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test yes = "$build_old_libs"; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile=$destdir/$destname - else - func_basename "$file" - destfile=$func_basename_result - destfile=$destdir/$destfile - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext= - case $file in - *.exe) - if test ! -f "$file"; then - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=.exe - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script '$wrapper'" - - finalize=: - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` - if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "'$lib' has not been installed in '$libdir'" - finalize=false - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test no = "$fast_install" && test -n "$relink_command"; then - $opt_dry_run || { - if $finalize; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file=$func_basename_result - outputname=$tmpdir/$file - # Replace the output file specification. - relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_quiet || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink '$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file=$outputname - else - func_warning "cannot relink '$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name=$func_basename_result - - # Set up the ranlib parameters. - oldlib=$destdir/$name - func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 - tool_oldlib=$func_to_tool_file_result - - func_show_eval "$install_prog \$file \$oldlib" 'exit $?' - - if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $tool_oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run '$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test install = "$opt_mode" && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $debug_cmd - - my_outputname=$1 - my_originator=$2 - my_pic_p=${3-false} - my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms=${my_outputname}S.c - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist=$output_objdir/$my_outputname.nm - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) -#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" -#endif - -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) - -/* External symbol declarations for the compiler. */\ -" - - if test yes = "$dlself"; then - func_verbose "generating symbol list for '$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do - func_to_tool_file "$progfile" func_convert_file_msys_to_w32 - func_verbose "extracting global C symbols from '$func_to_tool_file_result'" - $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols=$output_objdir/$outputname.exp - $opt_dry_run || { - $RM $export_symbols - eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from '$dlprefile'" - func_basename "$dlprefile" - name=$func_basename_result - case $host in - *cygwin* | *mingw* | *cegcc* ) - # if an import library, we need to obtain dlname - if func_win32_import_lib_p "$dlprefile"; then - func_tr_sh "$dlprefile" - eval "curr_lafile=\$libfile_$func_tr_sh_result" - dlprefile_dlbasename= - if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then - # Use subshell, to avoid clobbering current variable values - dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` - if test -n "$dlprefile_dlname"; then - func_basename "$dlprefile_dlname" - dlprefile_dlbasename=$func_basename_result - else - # no lafile. user explicitly requested -dlpreopen . - $sharedlib_from_linklib_cmd "$dlprefile" - dlprefile_dlbasename=$sharedlib_from_linklib_result - fi - fi - $opt_dry_run || { - if test -n "$dlprefile_dlbasename"; then - eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' - else - func_warning "Could not compute DLL name from $name" - eval '$ECHO ": $name " >> "$nlist"' - fi - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | - $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" - } - else # not an import lib - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - fi - ;; - *) - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - ;; - esac - done - - $opt_dry_run || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $MV "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if $GREP -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - func_show_eval '$RM "${nlist}I"' - if test -n "$global_symbol_to_import"; then - eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' - fi - - echo >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[];\ -" - - if test -s "$nlist"I; then - echo >> "$output_objdir/$my_dlsyms" "\ -static void lt_syminit(void) -{ - LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; - for (; symbol->name; ++symbol) - {" - $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" - echo >> "$output_objdir/$my_dlsyms" "\ - } -}" - fi - echo >> "$output_objdir/$my_dlsyms" "\ -LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{ {\"$my_originator\", (void *) 0}," - - if test -s "$nlist"I; then - echo >> "$output_objdir/$my_dlsyms" "\ - {\"@INIT@\", (void *) <_syminit}," - fi - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - $my_pic_p && pic_flag_for_symtable=" $pic_flag" - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) func_append symtab_cflags " $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' - - # Transform the symbol file into the correct name. - symfileobj=$output_objdir/${my_outputname}S.$objext - case $host in - *cygwin* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - else - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for '$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi -} - -# func_cygming_gnu_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is a GNU/binutils-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_gnu_implib_p () -{ - $debug_cmd - - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` - test -n "$func_cygming_gnu_implib_tmp" -} - -# func_cygming_ms_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is an MS-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_ms_implib_p () -{ - $debug_cmd - - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` - test -n "$func_cygming_ms_implib_tmp" -} - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -# Despite the name, also deal with 64 bit binaries. -func_win32_libid () -{ - $debug_cmd - - win32_libid_type=unknown - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - case $nm_interface in - "MS dumpbin") - if func_cygming_ms_implib_p "$1" || - func_cygming_gnu_implib_p "$1" - then - win32_nmres=import - else - win32_nmres= - fi - ;; - *) - func_to_tool_file "$1" func_convert_file_msys_to_w32 - win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | - $SED -n -e ' - 1,100{ - / I /{ - s|.*|import| - p - q - } - }'` - ;; - esac - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" -} - -# func_cygming_dll_for_implib ARG -# -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib () -{ - $debug_cmd - - sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` -} - -# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs -# -# The is the core of a fallback implementation of a -# platform-specific function to extract the name of the -# DLL associated with the specified import library LIBNAME. -# -# SECTION_NAME is either .idata$6 or .idata$7, depending -# on the platform and compiler that created the implib. -# -# Echos the name of the DLL associated with the -# specified import library. -func_cygming_dll_for_implib_fallback_core () -{ - $debug_cmd - - match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` - $OBJDUMP -s --section "$1" "$2" 2>/dev/null | - $SED '/^Contents of section '"$match_literal"':/{ - # Place marker at beginning of archive member dllname section - s/.*/====MARK====/ - p - d - } - # These lines can sometimes be longer than 43 characters, but - # are always uninteresting - /:[ ]*file format pe[i]\{,1\}-/d - /^In archive [^:]*:/d - # Ensure marker is printed - /^====MARK====/p - # Remove all lines with less than 43 characters - /^.\{43\}/!d - # From remaining lines, remove first 43 characters - s/^.\{43\}//' | - $SED -n ' - # Join marker and all lines until next marker into a single line - /^====MARK====/ b para - H - $ b para - b - :para - x - s/\n//g - # Remove the marker - s/^====MARK====// - # Remove trailing dots and whitespace - s/[\. \t]*$// - # Print - /./p' | - # we now have a list, one entry per line, of the stringified - # contents of the appropriate section of all members of the - # archive that possess that section. Heuristic: eliminate - # all those that have a first or second character that is - # a '.' (that is, objdump's representation of an unprintable - # character.) This should work for all archives with less than - # 0x302f exports -- but will fail for DLLs whose name actually - # begins with a literal '.' or a single character followed by - # a '.'. - # - # Of those that remain, print the first one. - $SED -e '/^\./d;/^.\./d;q' -} - -# func_cygming_dll_for_implib_fallback ARG -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# -# This fallback implementation is for use when $DLLTOOL -# does not support the --identify-strict option. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib_fallback () -{ - $debug_cmd - - if func_cygming_gnu_implib_p "$1"; then - # binutils import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` - elif func_cygming_ms_implib_p "$1"; then - # ms-generated import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` - else - # unknown - sharedlib_from_linklib_result= - fi -} - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - $debug_cmd - - f_ex_an_ar_dir=$1; shift - f_ex_an_ar_oldlib=$1 - if test yes = "$lock_old_archive_extraction"; then - lockfile=$f_ex_an_ar_oldlib.lock - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - fi - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ - 'stat=$?; rm -f "$lockfile"; exit $stat' - if test yes = "$lock_old_archive_extraction"; then - $opt_dry_run || rm -f "$lockfile" - fi - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $debug_cmd - - my_gentop=$1; shift - my_oldlibs=${1+"$@"} - my_oldobjs= - my_xlib= - my_xabs= - my_xdir= - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - func_basename "$my_xlib" - my_xlib=$func_basename_result - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir=$my_gentop/$my_xlib_u - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - func_basename "$darwin_archive" - darwin_base_archive=$func_basename_result - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches; do - func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" - $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" - cd "unfat-$$/$darwin_base_archive-$darwin_arch" - func_extract_an_archive "`pwd`" "$darwin_base_archive" - cd "$darwin_curdir" - $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` - done - - func_extract_archives_result=$my_oldobjs -} - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory where it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=${1-no} - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE) $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - generated_by_libtool_version='$macro_version' - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$ECHO are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - file=\"\$0\"" - - qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` - $ECHO "\ - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - ECHO=\"$qECHO\" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ that is used only on -# windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options that match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's $0 value, followed by "$@". -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=\$0 - shift - for lt_opt - do - case \"\$lt_opt\" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` - test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. - lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` - cat \"\$lt_dump_D/\$lt_dump_F\" - exit 0 - ;; - --lt-*) - \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n \"\$lt_option_debug\"; then - echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" - lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from \$@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - case \" \$* \" in - *\\ --lt-*) - for lt_wr_arg - do - case \$lt_wr_arg in - --lt-*) ;; - *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; - esac - shift - done ;; - esac - func_exec_program_core \${1+\"\$@\"} -} - - # Parse options - func_parse_lt_options \"\$0\" \${1+\"\$@\"} - - # Find the directory that this script lives in. - thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 - if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then - # special case for '.' - if test \"\$thisdir\" = \".\"; then - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test yes = "$fast_install"; then - $ECHO "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $MKDIR \"\$progdir\" - else - $RM \"\$progdir/\$file\" - fi" - - $ECHO "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - \$ECHO \"\$relink_command_output\" >&2 - $RM \"\$progdir/\$file\" - exit 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - if test -f \"\$progdir/\$program\"; then" - - # fixup the dll searchpath if we need to. - # - # Fix the DLL searchpath if we need to. Do this before prepending - # to shlibpath, because on Windows, both are PATH and uninstalled - # libraries must come first. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - # Export our shlibpath_var if we have one. - if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $ECHO "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` - - export $shlibpath_var -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - func_exec_program \${1+\"\$@\"} - fi - else - # The program doesn't exist. - \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 - \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" -} - - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat < -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) - -/* declarations of non-ANSI functions */ -#if defined __MINGW32__ -# ifdef __STRICT_ANSI__ -int _putenv (const char *); -# endif -#elif defined __CYGWIN__ -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined other_platform || defined ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined _MSC_VER -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -#elif defined __MINGW32__ -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined __CYGWIN__ -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined other platforms ... */ -#endif - -#if defined PATH_MAX -# define LT_PATHMAX PATH_MAX -#elif defined MAXPATHLEN -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ - defined __OS2__ -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free (stale); stale = 0; } \ -} while (0) - -#if defined LT_DEBUGWRAPPER -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -EOF - - cat <= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - size_t tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined HAVE_DOS_BASED_FILE_SYSTEM - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined HAVE_DOS_BASED_FILE_SYSTEM - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = (size_t) (q - p); - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (STREQ (str, pat)) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - size_t len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - size_t orig_value_len = strlen (orig_value); - size_t add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - size_t len = strlen (new_value); - while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[--len] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -EOF - case $host_os in - mingw*) - cat <<"EOF" - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -EOF - ;; - esac - - cat <<"EOF" -void lt_dump_script (FILE* f) -{ -EOF - func_emit_wrapper yes | - $SED -n -e ' -s/^\(.\{79\}\)\(..*\)/\1\ -\2/ -h -s/\([\\"]\)/\\\1/g -s/$/\\n/ -s/\([^\n]*\).*/ fputs ("\1", f);/p -g -D' - cat <<"EOF" -} -EOF -} -# end: func_emit_cwrapperexe_src - -# func_win32_import_lib_p ARG -# True if ARG is an import lib, as indicated by $file_magic_cmd -func_win32_import_lib_p () -{ - $debug_cmd - - case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in - *import*) : ;; - *) false ;; - esac -} - -# func_suncc_cstd_abi -# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! -# Several compiler flags select an ABI that is incompatible with the -# Cstd library. Avoid specifying it if any are in CXXFLAGS. -func_suncc_cstd_abi () -{ - $debug_cmd - - case " $compile_command " in - *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) - suncc_use_cstd_abi=no - ;; - *) - suncc_use_cstd_abi=yes - ;; - esac -} - -# func_mode_link arg... -func_mode_link () -{ - $debug_cmd - - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # what system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll that has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args=$nonopt - base_compile="$nonopt $@" - compile_command=$nonopt - finalize_command=$nonopt - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no - bindir= - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - os2dllname= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=false - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - weak_libs= - single_module=$wl-single_module - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test yes != "$build_libtool_libs" \ - && func_fatal_configuration "cannot build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg=$1 - shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - bindir) - bindir=$arg - prev= - continue - ;; - dlfiles|dlprefiles) - $preload || { - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=: - } - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test no = "$dlself"; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test dlprefiles = "$prev"; then - dlself=yes - elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test dlfiles = "$prev"; then - func_append dlfiles " $arg" - else - func_append dlprefiles " $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols=$arg - test -f "$arg" \ - || func_fatal_error "symbol file '$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex=$arg - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) func_append deplibs " $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir=$arg - prev= - continue - ;; - mllvm) - # Clang does not use LLVM to link, so we can simply discard any - # '-mllvm $arg' options when doing the link step. - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# func_append moreargs " $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test none = "$pic_object" && - test none = "$non_pic_object"; then - func_fatal_error "cannot find name of object for '$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - if test none != "$pic_object"; then - # Prepend the subdirectory the object is found in. - pic_object=$xdir$pic_object - - if test dlfiles = "$prev"; then - if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test dlprefiles = "$prev"; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg=$pic_object - fi - - # Non-PIC object. - if test none != "$non_pic_object"; then - # Prepend the subdirectory the object is found in. - non_pic_object=$xdir$non_pic_object - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test none = "$pic_object"; then - arg=$non_pic_object - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object=$pic_object - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "'$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file '$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - os2dllname) - os2dllname=$arg - prev= - continue - ;; - precious_regex) - precious_files_regex=$arg - prev= - continue - ;; - release) - release=-$arg - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test rpath = "$prev"; then - case "$rpath " in - *" $arg "*) ;; - *) func_append rpath " $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) func_append xrpath " $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds=$arg - prev= - continue - ;; - weak) - func_append weak_libs " $arg" - prev= - continue - ;; - xcclinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg=$arg - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "'-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -bindir) - prev=bindir - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test X-export-symbols = "X$arg"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - func_stripname "-L" '' "$arg" - if test -z "$func_stripname_result"; then - if test "$#" -gt 0; then - func_fatal_error "require no space between '-L' and '$1'" - else - func_fatal_error "need path for '-L' option" - fi - fi - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of '$dir'" - dir=$absdir - ;; - esac - case "$deplibs " in - *" -L$dir "* | *" $arg "*) - # Will only happen for absolute or sysroot arguments - ;; - *) - # Preserve sysroot, but never include relative directories - case $dir in - [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; - *) func_append deplibs " -L$dir" ;; - esac - func_append lib_search_path " $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) func_append dllsearchpath ":$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test X-lc = "X$arg" || test X-lm = "X$arg"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test X-lc = "X$arg" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) - # Do not include libc due to us having libc/libc_r. - test X-lc = "X$arg" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - func_append deplibs " System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test X-lc = "X$arg" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test X-lc = "X$arg" && continue - ;; - esac - elif test X-lc_r = "X$arg"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - func_append deplibs " $arg" - continue - ;; - - -mllvm) - prev=mllvm - continue - ;; - - -module) - module=yes - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot|--sysroot) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case "$new_inherited_linker_flags " in - *" $arg "*) ;; - * ) func_append new_inherited_linker_flags " $arg" ;; - esac - continue - ;; - - -multi_module) - single_module=$wl-multi_module - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "'-no-install' is ignored for $host" - func_warning "assuming '-no-fast-install' instead" - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -os2dllname) - prev=os2dllname - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - =*) - func_stripname '=' '' "$dir" - dir=$lt_sysroot$func_stripname_result - ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs=$IFS; IFS=, - for flag in $args; do - IFS=$save_ifs - func_quote_for_eval "$flag" - func_append arg " $func_quote_for_eval_result" - func_append compiler_flags " $func_quote_for_eval_result" - done - IFS=$save_ifs - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs=$IFS; IFS=, - for flag in $args; do - IFS=$save_ifs - func_quote_for_eval "$flag" - func_append arg " $wl$func_quote_for_eval_result" - func_append compiler_flags " $wl$func_quote_for_eval_result" - func_append linker_flags " $func_quote_for_eval_result" - done - IFS=$save_ifs - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - ;; - - # Flags to be passed through unchanged, with rationale: - # -64, -mips[0-9] enable 64-bit mode for the SGI compiler - # -r[0-9][0-9]* specify processor for the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler - # +DA*, +DD* enable 64-bit mode for the HP compiler - # -q* compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* architecture-specific flags for GCC - # -F/path path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* profiling flags for GCC - # -fstack-protector* stack protector flags for GCC - # @file GCC response files - # -tp=* Portland pgcc target processor selection - # --sysroot=* for sysroot support - # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization - # -stdlib=* select c++ std lib with clang - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - func_append compile_command " $arg" - func_append finalize_command " $arg" - func_append compiler_flags " $arg" - continue - ;; - - -Z*) - if test os2 = "`expr $host : '.*\(os2\)'`"; then - # OS/2 uses -Zxxx to specify OS/2-specific options - compiler_flags="$compiler_flags $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case $arg in - -Zlinker | -Zstack) - prev=xcompiler - ;; - esac - continue - else - # Otherwise treat like 'Some other compiler flag' below - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - fi - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - ;; - - *.$objext) - # A standard object. - func_append objs " $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test none = "$pic_object" && - test none = "$non_pic_object"; then - func_fatal_error "cannot find name of object for '$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - test none = "$pic_object" || { - # Prepend the subdirectory the object is found in. - pic_object=$xdir$pic_object - - if test dlfiles = "$prev"; then - if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test dlprefiles = "$prev"; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg=$pic_object - } - - # Non-PIC object. - if test none != "$non_pic_object"; then - # Prepend the subdirectory the object is found in. - non_pic_object=$xdir$non_pic_object - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test none = "$pic_object"; then - arg=$non_pic_object - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object=$pic_object - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir=$func_dirname_result - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "'$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - func_append deplibs " $arg" - func_append old_deplibs " $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - func_resolve_sysroot "$arg" - if test dlfiles = "$prev"; then - # This library was specified with -dlopen. - func_append dlfiles " $func_resolve_sysroot_result" - prev= - elif test dlprefiles = "$prev"; then - # The library was specified with -dlpreopen. - func_append dlprefiles " $func_resolve_sysroot_result" - prev= - else - func_append deplibs " $func_resolve_sysroot_result" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the '$prevarg' option requires an argument" - - if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname=$func_basename_result - libobjs_save=$libobjs - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - # Definition is injected by LT_CONFIG during libtool generation. - func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" - - func_dirname "$output" "/" "" - output_objdir=$func_dirname_result$objdir - func_to_tool_file "$output_objdir/" - tool_output_objdir=$func_to_tool_file_result - # Create the object directory. - func_mkdir_p "$output_objdir" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if $opt_preserve_dup_deps; then - case "$libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append libs " $deplib" - done - - if test lib = "$linkmode"; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; - esac - func_append pre_post_deps " $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - - case $linkmode in - lib) - passes="conv dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=false - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - - for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test lib,link = "$linkmode,$pass"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs=$tmp_deplibs - fi - - if test lib,link = "$linkmode,$pass" || - test prog,scan = "$linkmode,$pass"; then - libs=$deplibs - deplibs= - fi - if test prog = "$linkmode"; then - case $pass in - dlopen) libs=$dlfiles ;; - dlpreopen) libs=$dlprefiles ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test lib,dlpreopen = "$linkmode,$pass"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - func_resolve_sysroot "$lib" - case $lib in - *.la) func_source "$func_resolve_sysroot_result" ;; - esac - - # Collect preopened libtool deplibs, except any this library - # has declared as weak libs - for deplib in $dependency_libs; do - func_basename "$deplib" - deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; - *) func_append deplibs " $deplib" ;; - esac - done - done - libs=$dlprefiles - fi - if test dlopen = "$pass"; then - # Collect dlpreopened libraries - save_deplibs=$deplibs - deplibs= - fi - - for deplib in $libs; do - lib= - found=false - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ - |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append compiler_flags " $deplib" - if test lib = "$linkmode"; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test lib != "$linkmode" && test prog != "$linkmode"; then - func_warning "'-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - if test lib = "$linkmode"; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib=$searchdir/lib$name$search_ext - if test -f "$lib"; then - if test .la = "$search_ext"; then - found=: - else - found=false - fi - break 2 - fi - done - done - if $found; then - # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test yes = "$allow_libtool_libs_with_static_runtimes"; then - case " $predeps $postdeps " in - *" $deplib "*) - if func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - for l in $old_library $library_names; do - ll=$l - done - if test "X$ll" = "X$old_library"; then # only static version available - found=false - func_dirname "$lib" "" "." - ladir=$func_dirname_result - lib=$ladir/$old_library - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - else - # deplib doesn't seem to be a libtool library - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - ;; # -l - *.ltframework) - if test prog,link = "$linkmode,$pass"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test lib = "$linkmode"; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test conv = "$pass" && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - prog) - if test conv = "$pass"; then - deplibs="$deplib $deplibs" - continue - fi - if test scan = "$pass"; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - *) - func_warning "'-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test link = "$pass"; then - func_stripname '-R' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) - func_resolve_sysroot "$deplib" - lib=$func_resolve_sysroot_result - ;; - *.$libext) - if test conv = "$pass"; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules into shared libraries is allowed, - # but linking other static libraries is non-portable. - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=false - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=: - fi - ;; - pass_all) - valid_a_lib=: - ;; - esac - if $valid_a_lib; then - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - else - echo - $ECHO "*** Warning: Trying to link with static lib archive $deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because the file extensions .$libext of this argument makes me believe" - echo "*** that it is just a static archive that I should not use here." - fi - ;; - esac - continue - ;; - prog) - if test link != "$pass"; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test conv = "$pass"; then - deplibs="$deplib $deplibs" - elif test prog = "$linkmode"; then - if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - func_append newdlprefiles " $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append newdlfiles " $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=: - continue - ;; - esac # case $deplib - - $found || test -f "$lib" \ - || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "'$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir=$func_dirname_result - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` - for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do - case " $new_inherited_linker_flags " in - *" $tmp_inherited_linker_flag "*) ;; - *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; - esac - done - fi - dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test lib,link = "$linkmode,$pass" || - test prog,scan = "$linkmode,$pass" || - { test prog != "$linkmode" && test lib != "$linkmode"; }; then - test -n "$dlopen" && func_append dlfiles " $dlopen" - test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" - fi - - if test conv = "$pass"; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for '$lib'" - fi - # It is a libtool convenience library, so add in its objects. - func_append convenience " $ladir/$objdir/$old_library" - func_append old_convenience " $ladir/$objdir/$old_library" - elif test prog != "$linkmode" && test lib != "$linkmode"; then - func_fatal_error "'$lib' is not a convenience library" - fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - if test -n "$old_library" && - { test yes = "$prefer_static_libs" || - test built,no = "$prefer_static_libs,$installed"; }; then - linklib=$old_library - else - for l in $old_library $library_names; do - linklib=$l - done - fi - if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for '$lib'" - fi - - # This library was specified with -dlopen. - if test dlopen = "$pass"; then - test -z "$libdir" \ - && func_fatal_error "cannot -dlopen a convenience library: '$lib'" - if test -z "$dlname" || - test yes != "$dlopen_support" || - test no = "$build_libtool_libs" - then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - func_append dlprefiles " $lib $dependency_libs" - else - func_append newdlfiles " $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of '$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir=$ladir - fi - ;; - esac - func_basename "$lib" - laname=$func_basename_result - - # Find the relevant object directory and library name. - if test yes = "$installed"; then - if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library '$lib' was moved." - dir=$ladir - absdir=$abs_ladir - libdir=$abs_ladir - else - dir=$lt_sysroot$libdir - absdir=$lt_sysroot$libdir - fi - test yes = "$hardcode_automatic" && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir=$ladir - absdir=$abs_ladir - # Remove this search path later - func_append notinst_path " $abs_ladir" - else - dir=$ladir/$objdir - absdir=$abs_ladir/$objdir - # Remove this search path later - func_append notinst_path " $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test dlpreopen = "$pass"; then - if test -z "$libdir" && test prog = "$linkmode"; then - func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" - fi - case $host in - # special handling for platforms with PE-DLLs. - *cygwin* | *mingw* | *cegcc* ) - # Linker will automatically link against shared library if both - # static and shared are present. Therefore, ensure we extract - # symbols from the import library if a shared library is present - # (otherwise, the dlopen module name will be incorrect). We do - # this by putting the import library name into $newdlprefiles. - # We recover the dlopen module name by 'saving' the la file - # name in a special purpose variable, and (later) extracting the - # dlname from the la file. - if test -n "$dlname"; then - func_tr_sh "$dir/$linklib" - eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" - func_append newdlprefiles " $dir/$linklib" - else - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - fi - ;; - * ) - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - func_append newdlprefiles " $dir/$dlname" - else - func_append newdlprefiles " $dir/$linklib" - fi - ;; - esac - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test lib = "$linkmode"; then - deplibs="$dir/$old_library $deplibs" - elif test prog,link = "$linkmode,$pass"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test prog = "$linkmode" && test link != "$pass"; then - func_append newlib_search_path " $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=false - if test no != "$link_all_deplibs" || test -z "$library_names" || - test no = "$build_libtool_libs"; then - linkalldeplibs=: - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - esac - # Need to link against all dependency_libs? - if $linkalldeplibs; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test prog,link = "$linkmode,$pass"; then - if test -n "$library_names" && - { { test no = "$prefer_static_libs" || - test built,yes = "$prefer_static_libs,$installed"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then - # Make sure the rpath contains only unique directories. - case $temp_rpath: in - *"$absdir:"*) ;; - *) func_append temp_rpath "$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if $alldeplibs && - { test pass_all = "$deplibs_check_method" || - { test yes = "$build_libtool_libs" && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test built = "$use_static_libs" && test yes = "$installed"; then - use_static_libs=no - fi - if test -n "$library_names" && - { test no = "$use_static_libs" || test -z "$old_library"; }; then - case $host in - *nios2*) - # For NIOS2, we want to make sure that it's not caught by the - # more general OS/2 check below. Otherwise, NIOS2 is the same - # as the default option. - if test no = "$installed"; then - func_append notinst_deplibs " $lib" - need_relink=yes - fi - ;; - *cygwin* | *mingw* | *cegcc* | *os2*) - # No point in relinking DLLs because paths are not encoded - func_append notinst_deplibs " $lib" - need_relink=no - ;; - *) - if test no = "$installed"; then - func_append notinst_deplibs " $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule= - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule=$dlpremoduletest - break - fi - done - if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then - echo - if test prog = "$linkmode"; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test lib = "$linkmode" && - test yes = "$hardcode_into_libs"; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname=$1 - shift - libname=`eval "\\$ECHO \"$libname_spec\""` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname=$dlname - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *nios2*) - # For NIOS2, we want to make sure that it's not caught by the - # more general OS/2 check below. Otherwise, NIOS2 is the same - # as the default option. - ;; - *cygwin* | mingw* | *cegcc* | *os2*) - func_arith $current - $age - major=$func_arith_result - versuffix=-$major - ;; - esac - eval soname=\"$soname_spec\" - else - soname=$realname - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot=$soname - func_basename "$soroot" - soname=$func_basename_result - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from '$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for '$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test prog = "$linkmode" || test relink != "$opt_mode"; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test no = "$hardcode_direct"; then - add=$dir/$linklib - case $host in - *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; - *-*-sysv4*uw2*) add_dir=-L$dir ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir=-L$dir ;; - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we cannot - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null; then - if test "X$dlopenmodule" != "X$lib"; then - $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library"; then - echo - echo "*** And there doesn't seem to be a static archive available" - echo "*** The link will probably fail, sorry" - else - add=$dir/$old_library - fi - elif test -n "$old_library"; then - add=$dir/$old_library - fi - fi - esac - elif test no = "$hardcode_minus_L"; then - case $host in - *-*-sunos*) add_shlibpath=$dir ;; - esac - add_dir=-L$dir - add=-l$name - elif test no = "$hardcode_shlibpath_var"; then - add_shlibpath=$dir - add=-l$name - else - lib_linked=no - fi - ;; - relink) - if test yes = "$hardcode_direct" && - test no = "$hardcode_direct_absolute"; then - add=$dir/$linklib - elif test yes = "$hardcode_minus_L"; then - add_dir=-L$absdir - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add=-l$name - elif test yes = "$hardcode_shlibpath_var"; then - add_shlibpath=$dir - add=-l$name - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test yes != "$lib_linked"; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) func_append compile_shlibpath "$add_shlibpath:" ;; - esac - fi - if test prog = "$linkmode"; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test yes != "$hardcode_direct" && - test yes != "$hardcode_minus_L" && - test yes = "$hardcode_shlibpath_var"; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - fi - fi - fi - - if test prog = "$linkmode" || test relink = "$opt_mode"; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test yes = "$hardcode_direct" && - test no = "$hardcode_direct_absolute"; then - add=$libdir/$linklib - elif test yes = "$hardcode_minus_L"; then - add_dir=-L$libdir - add=-l$name - elif test yes = "$hardcode_shlibpath_var"; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - add=-l$name - elif test yes = "$hardcode_automatic"; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib"; then - add=$inst_prefix_dir$libdir/$linklib - else - add=$libdir/$linklib - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$lt_sysroot$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add=-l$name - fi - - if test prog = "$linkmode"; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test prog = "$linkmode"; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test unsupported != "$hardcode_direct"; then - test -n "$old_library" && linklib=$old_library - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test yes = "$build_libtool_libs"; then - # Not a shared library - if test pass_all != "$deplibs_check_method"; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - echo - $ECHO "*** Warning: This system cannot link to static lib archive $lib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - if test yes = "$module"; then - echo "*** But as you try to build a module library, libtool will still create " - echo "*** a static module, that should work as long as the dlopening application" - echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using 'nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** 'nm' from GNU binutils and a full rebuild may help." - fi - if test no = "$build_old_libs"; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test lib = "$linkmode"; then - if test -n "$dependency_libs" && - { test yes != "$hardcode_into_libs" || - test yes = "$build_old_libs" || - test yes = "$link_static"; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) func_append xrpath " $temp_xrpath";; - esac;; - *) func_append temp_deplibs " $libdir";; - esac - done - dependency_libs=$temp_deplibs - fi - - func_append newlib_search_path " $absdir" - # Link against this library - test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result";; - *) func_resolve_sysroot "$deplib" ;; - esac - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $func_resolve_sysroot_result "*) - func_append specialdeplibs " $func_resolve_sysroot_result" ;; - esac - fi - func_append tmp_libs " $func_resolve_sysroot_result" - done - - if test no != "$link_all_deplibs"; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - path= - case $deplib in - -L*) path=$deplib ;; - *.la) - func_resolve_sysroot "$deplib" - deplib=$func_resolve_sysroot_result - func_dirname "$deplib" "" "." - dir=$func_dirname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of '$dir'" - absdir=$dir - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names"; then - for tmp in $deplibrary_names; do - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl"; then - depdepl=$absdir/$objdir/$depdepl - darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" - func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" - path= - fi - fi - ;; - *) - path=-L$absdir/$objdir - ;; - esac - else - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "'$deplib' is not a valid libtool archive" - test "$absdir" != "$libdir" && \ - func_warning "'$deplib' seems to be moved" - - path=-L$absdir - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test link = "$pass"; then - if test prog = "$linkmode"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs=$newdependency_libs - if test dlpreopen = "$pass"; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test dlopen != "$pass"; then - test conv = "$pass" || { - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) func_append lib_search_path " $dir" ;; - esac - done - newlib_search_path= - } - - if test prog,link = "$linkmode,$pass"; then - vars="compile_deplibs finalize_deplibs" - else - vars=deplibs - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) func_append tmp_libs " $deplib" ;; - esac - ;; - *) func_append tmp_libs " $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - - # Add Sun CC postdeps if required: - test CXX = "$tagname" && { - case $host_os in - linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C++ 5.9 - func_suncc_cstd_abi - - if test no != "$suncc_use_cstd_abi"; then - func_append postdeps ' -library=Cstd -library=Crun' - fi - ;; - esac - ;; - - solaris*) - func_cc_basename "$CC" - case $func_cc_basename_result in - CC* | sunCC*) - func_suncc_cstd_abi - - if test no != "$suncc_use_cstd_abi"; then - func_append postdeps ' -library=Cstd -library=Crun' - fi - ;; - esac - ;; - esac - } - - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i= - ;; - esac - if test -n "$i"; then - func_append tmp_libs " $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test prog = "$linkmode"; then - dlfiles=$newdlfiles - fi - if test prog = "$linkmode" || test lib = "$linkmode"; then - dlprefiles=$newdlprefiles - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then - func_warning "'-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "'-l' and '-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "'-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "'-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "'-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "'-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "'-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs=$output - func_append objs "$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form 'libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test no = "$module" \ - && func_fatal_help "libtool library '$output' must begin with 'lib'" - - if test no != "$need_lib_prefix"; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - if test pass_all != "$deplibs_check_method"; then - func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" - else - echo - $ECHO "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - func_append libobjs " $objs" - fi - fi - - test no = "$dlself" \ - || func_warning "'-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test 1 -lt "$#" \ - && func_warning "ignoring multiple '-rpath's for a libtool library" - - install_libdir=$1 - - oldlibs= - if test -z "$rpath"; then - if test yes = "$build_libtool_libs"; then - # Building a libtool convenience library. - # Some compilers have problems with a '.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - test -n "$vinfo" && \ - func_warning "'-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "'-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs=$IFS; IFS=: - set dummy $vinfo 0 0 0 - shift - IFS=$save_ifs - - test -n "$7" && \ - func_fatal_help "too many parameters to '-version-info'" - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major=$1 - number_minor=$2 - number_revision=$3 - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # that has an extra 1 added just for fun - # - case $version_type in - # correct linux to gnu/linux during the next big refactor - darwin|freebsd-elf|linux|osf|windows|none) - func_arith $number_major + $number_minor - current=$func_arith_result - age=$number_minor - revision=$number_revision - ;; - freebsd-aout|qnx|sunos) - current=$number_major - revision=$number_minor - age=0 - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age=$number_minor - revision=$number_minor - lt_irix_increment=no - ;; - esac - ;; - no) - current=$1 - revision=$2 - age=$3 - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "CURRENT '$current' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "REVISION '$revision' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "AGE '$age' must be a nonnegative integer" - func_fatal_error "'$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE '$age' is greater than the current interface number '$current'" - func_fatal_error "'$vinfo' is not valid version information" - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - func_arith $current - $age - major=.$func_arith_result - versuffix=$major.$age.$revision - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - # On Darwin other compilers - case $CC in - nagfor*) - verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" - ;; - *) - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - esac - ;; - - freebsd-aout) - major=.$current - versuffix=.$current.$revision - ;; - - freebsd-elf) - func_arith $current - $age - major=.$func_arith_result - versuffix=$major.$age.$revision - ;; - - irix | nonstopux) - if test no = "$lt_irix_increment"; then - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring=$verstring_prefix$major.$revision - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test 0 -ne "$loop"; do - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring=$verstring_prefix$major.$iface:$verstring - done - - # Before this point, $major must not contain '.'. - major=.$major - versuffix=$major.$revision - ;; - - linux) # correct to gnu/linux during the next big refactor - func_arith $current - $age - major=.$func_arith_result - versuffix=$major.$age.$revision - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - versuffix=.$current.$age.$revision - verstring=$current.$age.$revision - - # Add in all the interfaces that we are compatible with. - loop=$age - while test 0 -ne "$loop"; do - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring=$verstring:$iface.0 - done - - # Make executables depend on our current version. - func_append verstring ":$current.0" - ;; - - qnx) - major=.$current - versuffix=.$current - ;; - - sco) - major=.$current - versuffix=.$current - ;; - - sunos) - major=.$current - versuffix=.$current.$revision - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 file systems. - func_arith $current - $age - major=$func_arith_result - versuffix=-$major - ;; - - *) - func_fatal_configuration "unknown library version type '$version_type'" - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring=0.0 - ;; - esac - if test no = "$need_version"; then - versuffix= - else - versuffix=.0.0 - fi - fi - - # Remove version info from name if versioning should be avoided - if test yes,no = "$avoid_version,$need_version"; then - major= - versuffix= - verstring= - fi - - # Check to see if the archive will have undefined symbols. - if test yes = "$allow_undefined"; then - if test unsupported = "$allow_undefined_flag"; then - if test yes = "$build_old_libs"; then - func_warning "undefined symbols not allowed in $host shared libraries; building static only" - build_libtool_libs=no - else - func_fatal_error "can't build $host shared library unless -no-undefined is specified" - fi - fi - else - # Don't allow undefined symbols. - allow_undefined_flag=$no_undefined_flag - fi - - fi - - func_generate_dlsyms "$libname" "$libname" : - func_append libobjs " $symfileobj" - test " " = "$libobjs" && libobjs= - - if test relink != "$opt_mode"; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) - if test -n "$precious_files_regex"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - func_append removelist " $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then - func_append oldlibs " $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - #for path in $notinst_path; do - # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` - # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` - # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` - #done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - func_replace_sysroot "$libdir" - func_append temp_xrpath " -R$func_replace_sysroot_result" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles=$dlfiles - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) func_append dlfiles " $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles=$dlprefiles - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) func_append dlprefiles " $lib" ;; - esac - done - - if test yes = "$build_libtool_libs"; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - func_append deplibs " System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test yes = "$build_libtool_need_lc"; then - func_append deplibs " -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release= - versuffix= - major= - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $opt_dry_run || $RM conftest.c - cat > conftest.c </dev/null` - $nocaseglob - else - potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` - fi - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib=$potent_lib - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | $SED 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; - *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | - $SED -e 10q | - $EGREP "$file_magic_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib= - break 2 - fi - done - done - fi - if test -n "$a_deplib"; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib"; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test yes = "$allow_libtool_libs_with_static_runtimes"; then - case " $predeps $postdeps " in - *" $a_deplib "*) - func_append newdeplibs " $a_deplib" - a_deplib= - ;; - esac - fi - if test -n "$a_deplib"; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib=$potent_lib # see symlink-check above in file_magic test - if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib= - break 2 - fi - done - done - fi - if test -n "$a_deplib"; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib"; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs= - tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test yes = "$allow_libtool_libs_with_static_runtimes"; then - for i in $predeps $postdeps; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` - done - fi - case $tmp_deplibs in - *[!\ \ ]*) - echo - if test none = "$deplibs_check_method"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - ;; - esac - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - if test yes = "$droppeddeps"; then - if test yes = "$module"; then - echo - echo "*** Warning: libtool could not satisfy all declared inter-library" - $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using 'nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** 'nm' from GNU binutils and a full rebuild may help." - fi - if test no = "$build_old_libs"; then - oldlibs=$output_objdir/$libname.$libext - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - - if test no = "$allow_undefined"; then - echo - echo "*** Since this library must not contain undefined symbols," - echo "*** because either the platform does not support them or" - echo "*** it was explicitly requested with -no-undefined," - echo "*** libtool will only create a static version of it." - if test no = "$build_old_libs"; then - oldlibs=$output_objdir/$libname.$libext - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - deplibs=$new_libs - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test yes = "$build_libtool_libs"; then - # Remove $wl instances when linking with ld. - # FIXME: should test the right _cmds variable. - case $archive_cmds in - *\$LD\ *) wl= ;; - esac - if test yes = "$hardcode_into_libs"; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath=$finalize_rpath - test relink = "$opt_mode" || rpath=$compile_rpath$rpath - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - func_replace_sysroot "$libdir" - libdir=$func_replace_sysroot_result - func_stripname '=' '' "$libdir" - libdir=$func_stripname_result - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - # We only want to hardcode in an rpath if it isn't in the - # default dlsearch path. - func_normal_abspath "$libdir" - libdir_norm=$func_normal_abspath_result - case " $sys_lib_dlsearch_path " in - *" $libdir_norm "*) ;; - *) eval flag=\"$hardcode_libdir_flag_spec\" - func_append dep_rpath " $flag" - ;; - esac - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs - eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath=$finalize_shlibpath - test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - shift - realname=$1 - shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname=$realname - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib=$output_objdir/$realname - linknames= - for link - do - func_append linknames " $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` - test "X$libobjs" = "X " && libobjs= - - delfiles= - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols=$output_objdir/$libname.uexp - func_append delfiles " $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - func_dll_def_p "$export_symbols" || { - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols=$export_symbols - export_symbols= - always_export_symbols=yes - } - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for '$libname.la'" - export_symbols=$output_objdir/$libname.exp - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs=$IFS; IFS='~' - for cmd1 in $cmds; do - IFS=$save_ifs - # Take the normal branch if the nm_file_list_spec branch - # doesn't work or if tool conversion is not needed. - case $nm_file_list_spec~$to_tool_file_cmd in - *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) - try_normal_branch=yes - eval cmd=\"$cmd1\" - func_len " $cmd" - len=$func_len_result - ;; - *) - try_normal_branch=no - ;; - esac - if test yes = "$try_normal_branch" \ - && { test "$len" -lt "$max_cmd_len" \ - || test "$max_cmd_len" -le -1; } - then - func_show_eval "$cmd" 'exit $?' - skipped_export=false - elif test -n "$nm_file_list_spec"; then - func_basename "$output" - output_la=$func_basename_result - save_libobjs=$libobjs - save_output=$output - output=$output_objdir/$output_la.nm - func_to_tool_file "$output" - libobjs=$nm_file_list_spec$func_to_tool_file_result - func_append delfiles " $output" - func_verbose "creating $NM input file list: $output" - for obj in $save_libobjs; do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > "$output" - eval cmd=\"$cmd1\" - func_show_eval "$cmd" 'exit $?' - output=$save_output - libobjs=$save_libobjs - skipped_export=false - else - # The command line is too long to execute in one step. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS=$save_ifs - if test -n "$export_symbols_regex" && test : != "$skipped_export"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols=$export_symbols - test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test : != "$skipped_export" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for '$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands, which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - func_append tmp_deplibs " $test_deplib" - ;; - esac - done - deplibs=$tmp_deplibs - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test yes = "$compiler_needs_object" && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - fi - - if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - func_append linker_flags " $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test relink = "$opt_mode"; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test yes = "$module" && test -n "$module_cmds"; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test : != "$skipped_export" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - func_basename "$output" - output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then - output=$output_objdir/$output_la.lnkscript - func_verbose "creating GNU ld script: $output" - echo 'INPUT (' > $output - for obj in $save_libobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - echo ')' >> $output - func_append delfiles " $output" - func_to_tool_file "$output" - output=$func_to_tool_file_result - elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then - output=$output_objdir/$output_la.lnk - func_verbose "creating linker input file list: $output" - : > $output - set x $save_libobjs - shift - firstobj= - if test yes = "$compiler_needs_object"; then - firstobj="$1 " - shift - fi - for obj - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - func_append delfiles " $output" - func_to_tool_file "$output" - output=$firstobj\"$file_list_spec$func_to_tool_file_result\" - else - if test -n "$save_libobjs"; then - func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-$k.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test -z "$objlist" || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test 1 -eq "$k"; then - # The first file doesn't have a previous command to add. - reload_objs=$objlist - eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" - fi - last_robj=$output_objdir/$output_la-$k.$objext - func_arith $k + 1 - k=$func_arith_result - output=$output_objdir/$output_la-$k.$objext - objlist=" $obj" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds$reload_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - func_append delfiles " $output" - - else - output= - fi - - ${skipped_export-false} && { - func_verbose "generating symbol list for '$libname.la'" - export_symbols=$output_objdir/$libname.exp - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - } - - test -n "$save_libobjs" && - func_verbose "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs=$IFS; IFS='~' - for cmd in $concat_cmds; do - IFS=$save_ifs - $opt_quiet || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS=$save_ifs - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - ${skipped_export-false} && { - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols=$export_symbols - test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for '$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands, which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - } - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test yes = "$module" && test -n "$module_cmds"; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs=$IFS; IFS='~' - for cmd in $cmds; do - IFS=$sp$nl - eval cmd=\"$cmd\" - IFS=$save_ifs - $opt_quiet || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS=$save_ifs - - # Restore the uninstalled library and exit - if test relink = "$opt_mode"; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test yes = "$module" || test yes = "$export_dynamic"; then - # On all known operating systems, these are identical. - dlname=$soname - fi - fi - ;; - - obj) - if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then - func_warning "'-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "'-l' and '-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "'-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "'-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "'-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "'-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object '$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj=$output - ;; - esac - - # Delete the old objects. - $opt_dry_run || $RM $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # if reload_cmds runs $LD directly, get rid of -Wl from - # whole_archive_flag_spec and hope we can get by with turning comma - # into space. - case $reload_cmds in - *\$LD[\ \$]*) wl= ;; - esac - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` - reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags - else - gentop=$output_objdir/${obj}x - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # If we're not building shared, we need to use non_pic_objs - test yes = "$build_libtool_libs" || libobjs=$non_pic_objects - - # Create the old-style object. - reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs - - output=$obj - func_execute_cmds "$reload_cmds" 'exit $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - test yes = "$build_libtool_libs" || { - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - } - - if test -n "$pic_flag" || test default != "$pic_mode"; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output=$libobj - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "'-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "'-release' is ignored for programs" - - $preload \ - && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ - && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test CXX = "$tagname"; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - func_append compile_command " $wl-bind_at_load" - func_append finalize_command " $wl-bind_at_load" - ;; - esac - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - compile_deplibs=$new_libs - - - func_append compile_command " $compile_deplibs" - func_append finalize_command " $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - func_replace_sysroot "$libdir" - libdir=$func_replace_sysroot_result - func_stripname '=' '' "$libdir" - libdir=$func_stripname_result - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - # We only want to hardcode in an rpath if it isn't in the - # default dlsearch path. - func_normal_abspath "$libdir" - libdir_norm=$func_normal_abspath_result - case " $sys_lib_dlsearch_path " in - *" $libdir_norm "*) ;; - *) eval flag=\"$hardcode_libdir_flag_spec\" - rpath+=" $flag" - ;; - esac - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) func_append dllsearchpath ":$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath=$rpath - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - func_replace_sysroot "$libdir" - libdir=$func_replace_sysroot_result - func_stripname '=' '' "$libdir" - libdir=$func_stripname_result - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs=$libdir - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - # We only want to hardcode in an rpath if it isn't in the - # default dlsearch path. - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - ;; - esac - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) func_append finalize_perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir=$hardcode_libdirs - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath=$rpath - - if test -n "$libobjs" && test yes = "$build_old_libs"; then - # Transform all the library objects into standard objects. - compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" false - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - wrappers_required=: - case $host in - *cegcc* | *mingw32ce*) - # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=false - ;; - *cygwin* | *mingw* ) - test yes = "$build_libtool_libs" || wrappers_required=false - ;; - *) - if test no = "$need_relink" || test yes != "$build_libtool_libs"; then - wrappers_required=false - fi - ;; - esac - $wrappers_required || { - # Replace the output file specification. - compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command=$compile_command$compile_rpath - - # We have no uninstalled library dependencies, so finalize right now. - exit_status=0 - func_show_eval "$link_command" 'exit_status=$?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Delete the generated files. - if test -f "$output_objdir/${outputname}S.$objext"; then - func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' - fi - - exit $exit_status - } - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - func_append rpath "$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test yes = "$no_install"; then - # We don't need to create a wrapper script. - link_command=$compile_var$compile_command$compile_rpath - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $opt_dry_run || $RM $output - # Link the executable and exit - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - exit $EXIT_SUCCESS - fi - - case $hardcode_action,$fast_install in - relink,*) - # Fast installation is not supported - link_command=$compile_var$compile_command$compile_rpath - relink_command=$finalize_var$finalize_command$finalize_rpath - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "'$output' will be relinked during installation" - ;; - *,yes) - link_command=$finalize_var$compile_command$finalize_rpath - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - ;; - *,no) - link_command=$compile_var$compile_command$compile_rpath - relink_command=$finalize_var$finalize_command$finalize_rpath - ;; - *,needless) - link_command=$finalize_var$compile_command$finalize_rpath - relink_command= - ;; - esac - - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output_objdir/$outputname" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Now create the wrapper script. - func_verbose "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - cwrappersource=$output_path/$objdir/lt-$output_name.c - cwrapper=$output_path/$output_name.exe - $RM $cwrappersource $cwrapper - trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host"; then - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - case $build_libtool_libs in - convenience) - oldobjs="$libobjs_save $symfileobj" - addlibs=$convenience - build_libtool_libs=no - ;; - module) - oldobjs=$libobjs_save - addlibs=$old_convenience - build_libtool_libs=no - ;; - *) - oldobjs="$old_deplibs $non_pic_objects" - $preload && test -f "$symfileobj" \ - && func_append oldobjs " $symfileobj" - addlibs=$old_convenience - ;; - esac - - if test -n "$addlibs"; then - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $addlibs - func_append oldobjs " $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append oldobjs " $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - echo "copying selected object files to avoid basename conflicts..." - gentop=$output_objdir/${outputname}x - func_append generated " $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase=$func_basename_result - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - func_append oldobjs " $gentop/$newobj" - ;; - *) func_append oldobjs " $obj" ;; - esac - done - fi - func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 - tool_oldlib=$func_to_tool_file_result - eval cmds=\"$old_archive_cmds\" - - func_len " $cmds" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - elif test -n "$archiver_list_spec"; then - func_verbose "using command file archive linking..." - for obj in $oldobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > $output_objdir/$libname.libcmd - func_to_tool_file "$output_objdir/$libname.libcmd" - oldobjs=" $archiver_list_spec$func_to_tool_file_result" - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - func_verbose "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - oldobjs= - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj"; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" - objlist= - len=$len0 - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test -z "$oldobjs"; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test yes = "$build_old_libs" && old_library=$libname.$libext - func_verbose "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test yes = "$hardcode_automatic"; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test yes = "$installed"; then - if test -z "$install_libdir"; then - break - fi - output=$output_objdir/${outputname}i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name=$func_basename_result - func_resolve_sysroot "$deplib" - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` - test -z "$libdir" && \ - func_fatal_error "'$deplib' is not a valid libtool archive" - func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" - ;; - -L*) - func_stripname -L '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -L$func_replace_sysroot_result" - ;; - -R*) - func_stripname -R '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -R$func_replace_sysroot_result" - ;; - *) func_append newdependency_libs " $deplib" ;; - esac - done - dependency_libs=$newdependency_libs - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name=$func_basename_result - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "'$lib' is not a valid libtool archive" - func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" - ;; - *) func_append newdlfiles " $lib" ;; - esac - done - dlfiles=$newdlfiles - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name=$func_basename_result - eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "'$lib' is not a valid libtool archive" - func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" - ;; - esac - done - dlprefiles=$newdlprefiles - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlfiles " $abs" - done - dlfiles=$newdlfiles - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlprefiles " $abs" - done - dlprefiles=$newdlprefiles - fi - $RM $output - # place dlname in correct position for cygwin - # In fact, it would be nice if we could use this code for all target - # systems that can't hard-code library paths into their executables - # and that have no shared library path variable independent of PATH, - # but it turns out we can't easily determine that from inspecting - # libtool variables, so we have to hard-code the OSs to which it - # applies here; at the moment, that means platforms that use the PE - # object format with DLL files. See the long comment at the top of - # tests/bindir.at for full details. - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) - # If a -bindir argument was supplied, place the dll there. - if test -n "$bindir"; then - func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result/$dlname - else - # Otherwise fall back on heuristic. - tdlname=../bin/$dlname - fi - ;; - esac - $ECHO > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Linker flags that cannot go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test no,yes = "$installed,$need_relink"; then - $ECHO >> $output "\ -relink_command=\"$relink_command\"" - fi - done - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -if test link = "$opt_mode" || test relink = "$opt_mode"; then - func_mode_link ${1+"$@"} -fi - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $debug_cmd - - RM=$nonopt - files= - rmforce=false - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic=$magic - - for arg - do - case $arg in - -f) func_append RM " $arg"; rmforce=: ;; - -*) func_append RM " $arg" ;; - *) func_append files " $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - for file in $files; do - func_dirname "$file" "" "." - dir=$func_dirname_result - if test . = "$dir"; then - odir=$objdir - else - odir=$dir/$objdir - fi - func_basename "$file" - name=$func_basename_result - test uninstall = "$opt_mode" && odir=$dir - - # Remember odir for removal later, being careful to avoid duplicates - if test clean = "$opt_mode"; then - case " $rmdirs " in - *" $odir "*) ;; - *) func_append rmdirs " $odir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif $rmforce; then - continue - fi - - rmfiles=$file - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - func_append rmfiles " $odir/$n" - done - test -n "$old_library" && func_append rmfiles " $odir/$old_library" - - case $opt_mode in - clean) - case " $library_names " in - *" $dlname "*) ;; - *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; - esac - test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && test none != "$pic_object"; then - func_append rmfiles " $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && test none != "$non_pic_object"; then - func_append rmfiles " $dir/$non_pic_object" - fi - fi - ;; - - *) - if test clean = "$opt_mode"; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - func_append rmfiles " $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - func_append rmfiles " $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.$objext" - if test yes = "$fast_install" && test -n "$relink_command"; then - func_append rmfiles " $odir/lt-$name" - fi - if test "X$noexename" != "X$name"; then - func_append rmfiles " $odir/lt-$noexename.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - - # Try to remove the $objdir's in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then - func_mode_uninstall ${1+"$@"} -fi - -test -z "$opt_mode" && { - help=$generic_help - func_fatal_help "you must specify a MODE" -} - -test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode '$opt_mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# The TAGs below are defined such that we never get into a situation -# where we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: diff -Nru retro-gtk-0.12.1/Makefile.am retro-gtk-0.14.0/Makefile.am --- retro-gtk-0.12.1/Makefile.am 2017-05-11 05:51:58.000000000 +0000 +++ retro-gtk-0.14.0/Makefile.am 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ -## Process this file with automake to produce Makefile.in - -NULL = - -SUBDIRS = retro-gtk demos po - -dist_doc_DATA = \ - README \ - COPYING \ - AUTHORS \ - ChangeLog \ - INSTALL \ - NEWS \ - $(NULL) - - -INTLTOOL_FILES = intltool-extract.in \ - intltool-merge.in \ - intltool-update.in \ - $(NULL) - -EXTRA_DIST = \ - $(INTLTOOL_FILES) \ - $(NULL) - -DISTCLEANFILES = intltool-extract \ - intltool-merge \ - intltool-update \ - po/.intltool-merge-cache \ - $(NULL) - -MAINTAINERCLEANFILES = \ - $(GITIGNORE_MAINTAINERCLEANFILES_TOPLEVEL) \ - $(GITIGNORE_MAINTAINERCLEANFILES_MAKEFILE_IN) \ - .flatpak-builder \ - $(NULL) - -# Remove doc directory on uninstall -uninstall-local: - -rm -r $(docdir) - --include $(top_srcdir)/git.mk diff -Nru retro-gtk-0.12.1/Makefile.in retro-gtk-0.14.0/Makefile.in --- retro-gtk-0.12.1/Makefile.in 2017-09-30 10:47:39.000000000 +0000 +++ retro-gtk-0.14.0/Makefile.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,943 +0,0 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2014 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = . -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ - $(am__configure_deps) $(dist_doc_DATA) $(am__DIST_COMMON) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(docdir)" -DATA = $(dist_doc_DATA) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - cscope distdir dist dist-all distcheck -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ - $(LISP)config.h.in -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -CSCOPE = cscope -DIST_SUBDIRS = $(SUBDIRS) -am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \ - COPYING ChangeLog INSTALL NEWS README ar-lib compile \ - config.guess config.sub install-sh ltmain.sh missing -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi -am__post_remove_distdir = $(am__remove_distdir) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -GZIP_ENV = --best -DIST_ARCHIVES = $(distdir).tar.xz -DIST_TARGETS = dist-xz -distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -ALL_LINGUAS = @ALL_LINGUAS@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ -GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLLIBS = @INTLLIBS@ -INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ -INTLTOOL_MERGE = @INTLTOOL_MERGE@ -INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ -INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ -INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ -INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ -INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ -INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ -INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ -INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ -INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ -INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ -INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ -INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ -INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ -INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGFMT_OPTS = @MSGFMT_OPTS@ -MSGMERGE = @MSGMERGE@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -POFILES = @POFILES@ -POSUB = @POSUB@ -PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ -PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ -RANLIB = @RANLIB@ -RETRO_GTK_CFLAGS = @RETRO_GTK_CFLAGS@ -RETRO_GTK_LIBS = @RETRO_GTK_LIBS@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VALAC = @VALAC@ -VERSION = @VERSION@ -XGETTEXT = @XGETTEXT@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -intltool__v_merge_options_ = @intltool__v_merge_options_@ -intltool__v_merge_options_0 = @intltool__v_merge_options_0@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -retro_gtk_pkg_modules = @retro_gtk_pkg_modules@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -NULL = -SUBDIRS = retro-gtk demos po -dist_doc_DATA = \ - README \ - COPYING \ - AUTHORS \ - ChangeLog \ - INSTALL \ - NEWS \ - $(NULL) - -INTLTOOL_FILES = intltool-extract.in \ - intltool-merge.in \ - intltool-update.in \ - $(NULL) - -EXTRA_DIST = \ - $(INTLTOOL_FILES) \ - $(NULL) - -DISTCLEANFILES = intltool-extract \ - intltool-merge \ - intltool-update \ - po/.intltool-merge-cache \ - $(NULL) - -MAINTAINERCLEANFILES = \ - $(GITIGNORE_MAINTAINERCLEANFILES_TOPLEVEL) \ - $(GITIGNORE_MAINTAINERCLEANFILES_MAKEFILE_IN) \ - .flatpak-builder \ - $(NULL) - -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -am--refresh: Makefile - @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -config.h: stamp-h1 - @test -f $@ || rm -f stamp-h1 - @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt -install-dist_docDATA: $(dist_doc_DATA) - @$(NORMAL_INSTALL) - @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ - done - -uninstall-dist_docDATA: - @$(NORMAL_UNINSTALL) - @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) - -# This directory's subdirectories are mostly independent; you can cd -# into them and run 'make' without going through this Makefile. -# To change the values of 'make' variables: instead of editing Makefiles, -# (1) if the variable is set in 'config.status', edit 'config.status' -# (which will cause the Makefiles to be regenerated when you run 'make'); -# (2) otherwise, pass the desired values on the 'make' command line. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscope: cscope.files - test ! -s cscope.files \ - || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) -clean-cscope: - -rm -f cscope.files -cscope.files: clean-cscope cscopelist -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -rm -f cscope.out cscope.in.out cscope.po.out cscope.files - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__post_remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__post_remove_distdir) - -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__post_remove_distdir) -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__post_remove_distdir) - -dist-tarZ: distdir - @echo WARNING: "Support for distribution archives compressed with" \ - "legacy program 'compress' is deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__post_remove_distdir) - -dist-shar: distdir - @echo WARNING: "Support for shar distribution archives is" \ - "deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__post_remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__post_remove_distdir) - -dist dist-all: - $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' - $(am__post_remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir) - chmod u+w $(distdir) - mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build/sub \ - && ../../configure \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - --srcdir=../.. --prefix="$$dc_install_base" \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__post_remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile $(DATA) config.h -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(docdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-hdr \ - distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-dist_docDATA - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-dist_docDATA uninstall-local - -.MAKE: $(am__recursive_targets) all install-am install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ - am--refresh check check-am clean clean-cscope clean-generic \ - clean-libtool cscope cscopelist-am ctags ctags-am dist \ - dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ - dist-xz dist-zip distcheck distclean distclean-generic \ - distclean-hdr distclean-libtool distclean-tags distcleancheck \ - distdir distuninstallcheck dvi dvi-am html html-am info \ - info-am install install-am install-data install-data-am \ - install-dist_docDATA install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am uninstall-dist_docDATA uninstall-local - -.PRECIOUS: Makefile - - -# Remove doc directory on uninstall -uninstall-local: - -rm -r $(docdir) - --include $(top_srcdir)/git.mk - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru retro-gtk-0.12.1/meson.build retro-gtk-0.14.0/meson.build --- retro-gtk-0.12.1/meson.build 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/meson.build 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,37 @@ +project('retro-gtk','c', + version: '0.14.0', + meson_version: '>= 0.43.0', +) + +cc = meson.get_compiler('c') +gnome = import('gnome') + +prefix = get_option('prefix') +libdir = join_paths(prefix, get_option('libdir')) +libretrodir = join_paths(libdir, 'libretro') + +confinc = include_directories('.') +srcinc = include_directories('retro-gtk') + +glib_version = '>= 2.50' +gtk_version = '>= 3.22' + +epoxy = dependency ('epoxy') +gio = dependency ('gio-2.0', version: glib_version) +glib = dependency ('glib-2.0', version: glib_version) +gmodule = dependency ('gmodule-2.0', version: glib_version) +gobject = dependency ('gobject-2.0', version: glib_version) +gtk = dependency ('gtk+-3.0', version: gtk_version) +libpulse_simple = dependency ('libpulse-simple') +m = cc.find_library('m', required : false) + +config_h = configuration_data() +config_h.set_quoted ('RETRO_PLUGIN_PATH', ':'.join ([libretrodir, libdir])) + +configure_file( + output: 'retro-gtk-config.h', + configuration: config_h, +) + +subdir('retro-gtk') +subdir('demos') diff -Nru retro-gtk-0.12.1/missing retro-gtk-0.14.0/missing --- retro-gtk-0.12.1/missing 2017-09-30 10:47:39.000000000 +0000 +++ retro-gtk-0.14.0/missing 1970-01-01 00:00:00.000000000 +0000 @@ -1,215 +0,0 @@ -#! /bin/sh -# Common wrapper for a few potentially missing GNU programs. - -scriptversion=2013-10-28.13; # UTC - -# Copyright (C) 1996-2014 Free Software Foundation, Inc. -# Originally written by Fran,cois Pinard , 1996. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try '$0 --help' for more information" - exit 1 -fi - -case $1 in - - --is-lightweight) - # Used by our autoconf macros to check whether the available missing - # script is modern enough. - exit 0 - ;; - - --run) - # Back-compat with the calling convention used by older automake. - shift - ;; - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due -to PROGRAM being missing or too old. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - -Supported PROGRAM values: - aclocal autoconf autoheader autom4te automake makeinfo - bison yacc flex lex help2man - -Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and -'g' are ignored when checking the name. - -Send bug reports to ." - exit $? - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit $? - ;; - - -*) - echo 1>&2 "$0: unknown '$1' option" - echo 1>&2 "Try '$0 --help' for more information" - exit 1 - ;; - -esac - -# Run the given program, remember its exit status. -"$@"; st=$? - -# If it succeeded, we are done. -test $st -eq 0 && exit 0 - -# Also exit now if we it failed (or wasn't found), and '--version' was -# passed; such an option is passed most likely to detect whether the -# program is present and works. -case $2 in --version|--help) exit $st;; esac - -# Exit code 63 means version mismatch. This often happens when the user -# tries to use an ancient version of a tool on a file that requires a -# minimum version. -if test $st -eq 63; then - msg="probably too old" -elif test $st -eq 127; then - # Program was missing. - msg="missing on your system" -else - # Program was found and executed, but failed. Give up. - exit $st -fi - -perl_URL=http://www.perl.org/ -flex_URL=http://flex.sourceforge.net/ -gnu_software_URL=http://www.gnu.org/software - -program_details () -{ - case $1 in - aclocal|automake) - echo "The '$1' program is part of the GNU Automake package:" - echo "<$gnu_software_URL/automake>" - echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" - echo "<$gnu_software_URL/autoconf>" - echo "<$gnu_software_URL/m4/>" - echo "<$perl_URL>" - ;; - autoconf|autom4te|autoheader) - echo "The '$1' program is part of the GNU Autoconf package:" - echo "<$gnu_software_URL/autoconf/>" - echo "It also requires GNU m4 and Perl in order to run:" - echo "<$gnu_software_URL/m4/>" - echo "<$perl_URL>" - ;; - esac -} - -give_advice () -{ - # Normalize program name to check for. - normalized_program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - - printf '%s\n' "'$1' is $msg." - - configure_deps="'configure.ac' or m4 files included by 'configure.ac'" - case $normalized_program in - autoconf*) - echo "You should only need it if you modified 'configure.ac'," - echo "or m4 files included by it." - program_details 'autoconf' - ;; - autoheader*) - echo "You should only need it if you modified 'acconfig.h' or" - echo "$configure_deps." - program_details 'autoheader' - ;; - automake*) - echo "You should only need it if you modified 'Makefile.am' or" - echo "$configure_deps." - program_details 'automake' - ;; - aclocal*) - echo "You should only need it if you modified 'acinclude.m4' or" - echo "$configure_deps." - program_details 'aclocal' - ;; - autom4te*) - echo "You might have modified some maintainer files that require" - echo "the 'autom4te' program to be rebuilt." - program_details 'autom4te' - ;; - bison*|yacc*) - echo "You should only need it if you modified a '.y' file." - echo "You may want to install the GNU Bison package:" - echo "<$gnu_software_URL/bison/>" - ;; - lex*|flex*) - echo "You should only need it if you modified a '.l' file." - echo "You may want to install the Fast Lexical Analyzer package:" - echo "<$flex_URL>" - ;; - help2man*) - echo "You should only need it if you modified a dependency" \ - "of a man page." - echo "You may want to install the GNU Help2man package:" - echo "<$gnu_software_URL/help2man/>" - ;; - makeinfo*) - echo "You should only need it if you modified a '.texi' file, or" - echo "any other file indirectly affecting the aspect of the manual." - echo "You might want to install the Texinfo package:" - echo "<$gnu_software_URL/texinfo/>" - echo "The spurious makeinfo call might also be the consequence of" - echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" - echo "want to install GNU make:" - echo "<$gnu_software_URL/make/>" - ;; - *) - echo "You might have modified some files without having the proper" - echo "tools for further handling them. Check the 'README' file, it" - echo "often tells you about the needed prerequisites for installing" - echo "this package. You may also peek at any GNU archive site, in" - echo "case some other package contains this missing '$1' program." - ;; - esac -} - -give_advice "$1" | sed -e '1s/^/WARNING: /' \ - -e '2,$s/^/ /' >&2 - -# Propagate the correct exit status (expected to be 127 for a program -# not found, 63 for a program that failed due to version mismatch). -exit $st - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff -Nru retro-gtk-0.12.1/NEWS retro-gtk-0.14.0/NEWS --- retro-gtk-0.12.1/NEWS 2017-09-11 17:49:40.000000000 +0000 +++ retro-gtk-0.14.0/NEWS 2018-03-10 13:02:01.000000000 +0000 @@ -1,4 +1,85 @@ ============== +Version 0.14.0 +============== + +* Add dependency on libepoxy. +* RetroCoreView: + - Render the video with OpenGL instead of Cairo. + - Drop the 'pixbuf' property, bt keep the pixbuf accessor functions. + This avoids an automatic and probably useless convertion of the video + to a GdkPixbuf as it isn't part of the rendering pipeline anymore. + - Grab the focus when clicked, avoiding to miss the player's keyboard + events to control the game. + - Allow it to be the default widget by default bt setting the + 'can-default' property to TRUE on construction. +* Add internal support for GLSL based video filters and port the + existing ones to GLSL so they can work with the OpenGL renderer. +* Add RETRO_VIDEO_FILTER_CRT, a RetroVideoFilter demanding the video + display to mimick a CRT TV screen. +* RetroPixdata: + - Add retro_pixdata_get_width/height() and + retro_pixdata_load_gl_texture(), allowing to export the pixel data to + an OpenGL texture and to draw it at the expected size. + - Don't fail when constructing with a non-zero rowstride, as these are + valid values. +* Add the set_rumble_state() virtual method to RetroController and + implement it in RetroCoreViewController. +* Build system change: make retro-gtk-demo properly depend on retro-gtk. +* The project moved to https://gitlab.gnome.org/GNOME/retro-gtk. + +* Bugs fixed: + - https://bugzilla.gnome.org/show_bug.cgi?id=790454 + +============== +Version 0.13.2 +============== + +* Port the build system to Meson, requiring version 0.43.0 and drop the + Autotools. +* Drop retro_core_remove_controller(), to remove a controller instead + set it to NULL. +* Make retro_core_poll_controllers(), + retro_core_get_controller_input_state() and + retro_core_get_controller_capabilities() private as they are meant to + be used by the Libretro core and not the end users. +* Add retro_core_set_default_controller() to set controllers to be used + by default when there is no controller with the requested capability + in the requested port. Add retro_core_view_set_as_default_controller() + to easily set the controllers of a RetroCoreView as the default + controllers of a RetroCore. retro-demo now uses these. +* Add retro_controller_has_capability() to easily check if a controller + has the given RetroControllerType capability. +* Add RetroInput to encapsulate the inputs used in an input state query. + It is used in retro_controller_get_input_state() and + retro_core_view_get_input_state(). +* Replace gboolean by bool in get_variable_update() to avoid crashes. +* Add a count enumeration value to RetroControllerType and the various + controller code enumerations. +* Better check the creation of the PuleAudio sound output to avoid + crashes. + +============== +Version 0.13.1 +============== + +This version ports retro-gtk from Vala to C and simnplifies the API a +lot. It comes with lots of API breaks, so many that it would be simpler +to list what remained similar to the 0.12 branch than what changed. + +The API will keep changing during the 0.14 development cycle, but it is +hoped to lead to less API breaks after that. + +Reviewers: given how much changed, consider this as a new librarby, +don't review it in comparison with its previous versions. + +* Bugs fixed: + 782501 retro-gtk: Port to C + 787548 mGBA fails to save memory + 787769 retro-gtk: Keyboard keys can be stuck + 788826 Can't find libretro cores with firmwares + + +============== Version 0.12.0 ============== diff -Nru retro-gtk-0.12.1/NEWS.retro-gobject-pre-merge retro-gtk-0.14.0/NEWS.retro-gobject-pre-merge --- retro-gtk-0.12.1/NEWS.retro-gobject-pre-merge 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/NEWS.retro-gobject-pre-merge 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,40 @@ +====================== +Version 0.6 +====================== + +* Fix critical error when getting an unknown option variable + +* Bugs fixed: + 27 Lots of assertion when getting Option.current + + +====================== +Version 0.4 +====================== + +* Plugins + - Switch the default plugins directory to "$(libdir)/retro-1.0/plugins". + - Add get_plugins_dir(), returns the default plugins directory. + - Add Retro.search_module(), look for modules in thedefault plugins dir and in paths from the "RETRO_PLUGIN_PATH_1_0" env variable. + + * Deprecate CoreFactory. + +* Module + - Make serialize()'s data param no more out to properly implement Libretro. + +* Core stack + - Make the "caller Core stack" hold unowned references. + - Make pop_cb_data() static. + +* Core + - Implement the memory related methods in C. + - Fix the return types of some callbacks from gboolean to the actually expected types. + +* Input: remove the dependency on Core + - Notify controller (dis)connection. + - Add foreach_controller(). + - Add key_event() signal. + +* Makefile + - Make retro-core.c depend on the internal header. + - Make .h files build dependencies. diff -Nru retro-gtk-0.12.1/po/Makefile.in.in retro-gtk-0.14.0/po/Makefile.in.in --- retro-gtk-0.12.1/po/Makefile.in.in 2017-09-30 10:47:36.000000000 +0000 +++ retro-gtk-0.14.0/po/Makefile.in.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,221 +0,0 @@ -# Makefile for program source directory in GNU NLS utilities package. -# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper -# Copyright (C) 2004-2008 Rodney Dawes -# -# This file may be copied and used freely without restrictions. It may -# be used in projects which are not available under a GNU Public License, -# but which still want to provide support for the GNU gettext functionality. -# -# - Modified by Owen Taylor to use GETTEXT_PACKAGE -# instead of PACKAGE and to look for po2tbl in ./ not in intl/ -# -# - Modified by jacob berkman to install -# Makefile.in.in and po2tbl.sed.in for use with glib-gettextize -# -# - Modified by Rodney Dawes for use with intltool -# -# We have the following line for use by intltoolize: -# INTLTOOL_MAKEFILE - -GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ -PACKAGE = @PACKAGE@ -VERSION = @VERSION@ - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -top_builddir = @top_builddir@ -VPATH = @srcdir@ - -prefix = @prefix@ -exec_prefix = @exec_prefix@ -datadir = @datadir@ -datarootdir = @datarootdir@ -libdir = @libdir@ -localedir = @localedir@ -subdir = po -install_sh = @install_sh@ -# Automake >= 1.8 provides @mkdir_p@. -# Until it can be supposed, use the safe fallback: -mkdir_p = $(install_sh) -d - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ - -GMSGFMT = @GMSGFMT@ -MSGFMT = @MSGFMT@ -XGETTEXT = @XGETTEXT@ -INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ -INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ -MSGMERGE = INTLTOOL_EXTRACT="$(INTLTOOL_EXTRACT)" XGETTEXT="$(XGETTEXT)" srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist -GENPOT = INTLTOOL_EXTRACT="$(INTLTOOL_EXTRACT)" XGETTEXT="$(XGETTEXT)" srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot - -ALL_LINGUAS = @ALL_LINGUAS@ - -PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; else echo "$(ALL_LINGUAS)"; fi) - -USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep \^$$lang$$ $(srcdir)/LINGUAS 2>/dev/null`" -o -n "`echo $$ALINGUAS|tr ' ' '\n'|grep \^$$lang$$`"; then printf "$$lang "; fi; done; fi) - -USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)" -o -n "$(LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n "$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in $$LLINGUAS; do printf "$$lang "; done) - -POFILES=$(shell LINGUAS="$(PO_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.po "; done) - -DISTFILES = Makefile.in.in POTFILES.in $(POFILES) -EXTRA_DISTFILES = ChangeLog POTFILES.skip Makevars LINGUAS - -POTFILES = \ -# This comment gets stripped out - -CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.gmo "; done) - -.SUFFIXES: -.SUFFIXES: .po .pox .gmo .mo .msg .cat - -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -INTLTOOL_V_MSGFMT = $(INTLTOOL__v_MSGFMT_$(V)) -INTLTOOL__v_MSGFMT_= $(INTLTOOL__v_MSGFMT_$(AM_DEFAULT_VERBOSITY)) -INTLTOOL__v_MSGFMT_0 = @echo " MSGFMT" $@; - -.po.pox: - $(MAKE) $(GETTEXT_PACKAGE).pot - $(MSGMERGE) $* $(GETTEXT_PACKAGE).pot -o $*.pox - -.po.mo: - $(INTLTOOL_V_MSGFMT)$(MSGFMT) -o $@ $< - -.po.gmo: - $(INTLTOOL_V_MSGFMT)file=`echo $* | sed 's,.*/,,'`.gmo \ - && rm -f $$file && $(GMSGFMT) -o $$file $< - -.po.cat: - sed -f ../intl/po2msg.sed < $< > $*.msg \ - && rm -f $@ && gencat $@ $*.msg - - -all: all-@USE_NLS@ - -all-yes: $(CATALOGS) -all-no: - -$(GETTEXT_PACKAGE).pot: $(POTFILES) - $(GENPOT) - -install: install-data -install-data: install-data-@USE_NLS@ -install-data-no: all -install-data-yes: all - linguas="$(USE_LINGUAS)"; \ - for lang in $$linguas; do \ - dir=$(DESTDIR)$(localedir)/$$lang/LC_MESSAGES; \ - $(mkdir_p) $$dir; \ - if test -r $$lang.gmo; then \ - $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \ - echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \ - else \ - $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \ - echo "installing $(srcdir)/$$lang.gmo as" \ - "$$dir/$(GETTEXT_PACKAGE).mo"; \ - fi; \ - if test -r $$lang.gmo.m; then \ - $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \ - echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \ - else \ - if test -r $(srcdir)/$$lang.gmo.m ; then \ - $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \ - $$dir/$(GETTEXT_PACKAGE).mo.m; \ - echo "installing $(srcdir)/$$lang.gmo.m as" \ - "$$dir/$(GETTEXT_PACKAGE).mo.m"; \ - else \ - true; \ - fi; \ - fi; \ - done - -# Empty stubs to satisfy archaic automake needs -dvi info ctags tags CTAGS TAGS ID: - -# Define this as empty until I found a useful application. -install-exec installcheck: - -uninstall: - linguas="$(USE_LINGUAS)"; \ - for lang in $$linguas; do \ - rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \ - rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \ - done - -check: all $(GETTEXT_PACKAGE).pot - rm -f missing notexist - srcdir=$(srcdir) $(INTLTOOL_UPDATE) -m - if [ -r missing -o -r notexist ]; then \ - exit 1; \ - fi - -mostlyclean: - rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp - rm -f .intltool-merge-cache - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES stamp-it - rm -f *.mo *.msg *.cat *.cat.m *.gmo - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f Makefile.in.in - -distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: $(DISTFILES) - dists="$(DISTFILES)"; \ - extra_dists="$(EXTRA_DISTFILES)"; \ - for file in $$extra_dists; do \ - test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \ - done; \ - for file in $$dists; do \ - test -f $$file || file="$(srcdir)/$$file"; \ - ln $$file $(distdir) 2> /dev/null \ - || cp -p $$file $(distdir); \ - done - -update-po: Makefile - $(MAKE) $(GETTEXT_PACKAGE).pot - tmpdir=`pwd`; \ - linguas="$(USE_LINGUAS)"; \ - for lang in $$linguas; do \ - echo "$$lang:"; \ - result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \ - if $$result; then \ - if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "msgmerge for $$lang.gmo failed!"; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi; \ - done - -Makefile POTFILES: stamp-it - @if test ! -f $@; then \ - rm -f stamp-it; \ - $(MAKE) stamp-it; \ - fi - -stamp-it: Makefile.in.in $(top_builddir)/config.status POTFILES.in - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \ - $(SHELL) ./config.status - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru retro-gtk-0.12.1/README.md retro-gtk-0.14.0/README.md --- retro-gtk-0.12.1/README.md 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/README.md 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,30 @@ +# retro-gtk + +retro-gtk is a toolkit to write GTK+ 3 based Libretro frontends. + +## Dependencies + +retro-gtk depends on the following libraries at compile time and at run time: +- gobject-2.0 +- glib-2.0 +- gio-2.0 +- gmodule-2.0 +- gtk+-3.0 +- cairo +- libpulse +- libpulse-simple + +## Compiling + +To configure the compilation, do: +`meson build` + +You can specify the installation prefix by doing: +`meson build --prefix /my/prefix` + +Then compile: +`ninja -C build` + +## Installing + +`ninja -C build install` diff -Nru retro-gtk-0.12.1/retro-gtk/audio/pa-player.c retro-gtk-0.14.0/retro-gtk/audio/pa-player.c --- retro-gtk-0.12.1/retro-gtk/audio/pa-player.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/audio/pa-player.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,215 +0,0 @@ -/* pa-player.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from pa-player.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include -#include -#include -#include -#include - - -#define RETRO_TYPE_PA_PLAYER (retro_pa_player_get_type ()) -#define RETRO_PA_PLAYER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_PA_PLAYER, RetroPaPlayer)) -#define RETRO_PA_PLAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_PA_PLAYER, RetroPaPlayerClass)) -#define RETRO_IS_PA_PLAYER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_PA_PLAYER)) -#define RETRO_IS_PA_PLAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_PA_PLAYER)) -#define RETRO_PA_PLAYER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_PA_PLAYER, RetroPaPlayerClass)) - -typedef struct _RetroPaPlayer RetroPaPlayer; -typedef struct _RetroPaPlayerClass RetroPaPlayerClass; -typedef struct _RetroPaPlayerPrivate RetroPaPlayerPrivate; - -#define RETRO_TYPE_CORE (retro_core_get_type ()) -#define RETRO_CORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CORE, RetroCore)) -#define RETRO_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CORE, RetroCoreClass)) -#define RETRO_IS_CORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CORE)) -#define RETRO_IS_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CORE)) -#define RETRO_CORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CORE, RetroCoreClass)) - -typedef struct _RetroCore RetroCore; -typedef struct _RetroCoreClass RetroCoreClass; -enum { - RETRO_PA_PLAYER_DUMMY_PROPERTY, - RETRO_PA_PLAYER_LAST_PROPERTY -}; -static GParamSpec* retro_pa_player_properties[RETRO_PA_PLAYER_LAST_PROPERTY]; -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) -#define _pa_simple_free0(var) ((var == NULL) ? NULL : (var = (pa_simple_free (var), NULL))) - -struct _RetroPaPlayer { - GObject parent_instance; - RetroPaPlayerPrivate * priv; -}; - -struct _RetroPaPlayerClass { - GObjectClass parent_class; -}; - -struct _RetroPaPlayerPrivate { - RetroCore* core; - gulong on_audio_output_id; - gdouble sample_rate; - pa_simple* simple; -}; - - -static gpointer retro_pa_player_parent_class = NULL; - -GType retro_pa_player_get_type (void) G_GNUC_CONST; -GType retro_core_get_type (void) G_GNUC_CONST; -#define RETRO_PA_PLAYER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), RETRO_TYPE_PA_PLAYER, RetroPaPlayerPrivate)) -void retro_pa_player_set_core (RetroPaPlayer* self, RetroCore* core); -static void retro_pa_player_on_audio_output (RetroPaPlayer* self, gint16* data, int data_length1, gdouble sample_rate); -static void _retro_pa_player_on_audio_output_retro_core_audio_output (RetroCore* _sender, gint16* frames, int frames_length1, gdouble sample_rate, gpointer self); -static void retro_pa_player_prepare_for_sample_rate (RetroPaPlayer* self, gdouble sample_rate); -RetroPaPlayer* retro_pa_player_new (void); -RetroPaPlayer* retro_pa_player_construct (GType object_type); -static void retro_pa_player_finalize (GObject * obj); - - -static gpointer _g_object_ref0 (gpointer self) { - return self ? g_object_ref (self) : NULL; -} - - -static void _retro_pa_player_on_audio_output_retro_core_audio_output (RetroCore* _sender, gint16* frames, int frames_length1, gdouble sample_rate, gpointer self) { - retro_pa_player_on_audio_output ((RetroPaPlayer*) self, frames, frames_length1, sample_rate); -} - - -void retro_pa_player_set_core (RetroPaPlayer* self, RetroCore* core) { - RetroCore* _tmp0_; - RetroCore* _tmp3_; - RetroCore* _tmp4_; - RetroCore* _tmp5_; - g_return_if_fail (self != NULL); - _tmp0_ = self->priv->core; - if (_tmp0_ != NULL) { - RetroCore* _tmp1_; - gulong _tmp2_; - _tmp1_ = self->priv->core; - _tmp2_ = self->priv->on_audio_output_id; - g_signal_handler_disconnect ((GObject*) _tmp1_, _tmp2_); - } - _tmp3_ = core; - _tmp4_ = _g_object_ref0 (_tmp3_); - _g_object_unref0 (self->priv->core); - self->priv->core = _tmp4_; - _tmp5_ = self->priv->core; - if (_tmp5_ != NULL) { - RetroCore* _tmp6_; - gulong _tmp7_; - _tmp6_ = core; - _tmp7_ = g_signal_connect_object (_tmp6_, "audio-output", (GCallback) _retro_pa_player_on_audio_output_retro_core_audio_output, self, 0); - self->priv->on_audio_output_id = _tmp7_; - } - _pa_simple_free0 (self->priv->simple); - self->priv->simple = NULL; -} - - -static void retro_pa_player_on_audio_output (RetroPaPlayer* self, gint16* data, int data_length1, gdouble sample_rate) { - gboolean _tmp0_ = FALSE; - pa_simple* _tmp1_; - pa_simple* _tmp5_; - gint16* _tmp6_; - gint _tmp6__length1; - gint16* _tmp7_; - gint _tmp7__length1; - g_return_if_fail (self != NULL); - _tmp1_ = self->priv->simple; - if (_tmp1_ == NULL) { - _tmp0_ = TRUE; - } else { - gdouble _tmp2_; - gdouble _tmp3_; - _tmp2_ = sample_rate; - _tmp3_ = self->priv->sample_rate; - _tmp0_ = _tmp2_ != _tmp3_; - } - if (_tmp0_) { - gdouble _tmp4_; - _tmp4_ = sample_rate; - retro_pa_player_prepare_for_sample_rate (self, _tmp4_); - } - _tmp5_ = self->priv->simple; - _tmp6_ = data; - _tmp6__length1 = data_length1; - _tmp7_ = data; - _tmp7__length1 = data_length1; - pa_simple_write (_tmp5_, _tmp6_, (gsize) (sizeof (gint16) * _tmp7__length1), NULL); -} - - -static void retro_pa_player_prepare_for_sample_rate (RetroPaPlayer* self, gdouble sample_rate) { - gdouble _tmp0_; - pa_sample_spec sample_spec = {0}; - gdouble _tmp1_; - pa_sample_spec _tmp2_ = {0}; - pa_sample_spec _tmp3_; - pa_simple* _tmp4_; - g_return_if_fail (self != NULL); - _tmp0_ = sample_rate; - self->priv->sample_rate = _tmp0_; - _tmp1_ = sample_rate; - pa_sample_spec_init (&_tmp2_); - _tmp2_.format = PA_SAMPLE_S16NE; - _tmp2_.rate = (guint32) _tmp1_; - _tmp2_.channels = (guint8) 2; - sample_spec = _tmp2_; - _tmp3_ = sample_spec; - _tmp4_ = pa_simple_new (NULL, NULL, PA_STREAM_PLAYBACK, NULL, "", &_tmp3_, NULL, NULL, NULL); - _pa_simple_free0 (self->priv->simple); - self->priv->simple = _tmp4_; -} - - -RetroPaPlayer* retro_pa_player_construct (GType object_type) { - RetroPaPlayer * self = NULL; - self = (RetroPaPlayer*) g_object_new (object_type, NULL); - return self; -} - - -RetroPaPlayer* retro_pa_player_new (void) { - return retro_pa_player_construct (RETRO_TYPE_PA_PLAYER); -} - - -static void retro_pa_player_class_init (RetroPaPlayerClass * klass) { - retro_pa_player_parent_class = g_type_class_peek_parent (klass); - g_type_class_add_private (klass, sizeof (RetroPaPlayerPrivate)); - G_OBJECT_CLASS (klass)->finalize = retro_pa_player_finalize; -} - - -static void retro_pa_player_instance_init (RetroPaPlayer * self) { - self->priv = RETRO_PA_PLAYER_GET_PRIVATE (self); -} - - -static void retro_pa_player_finalize (GObject * obj) { - RetroPaPlayer * self; - self = G_TYPE_CHECK_INSTANCE_CAST (obj, RETRO_TYPE_PA_PLAYER, RetroPaPlayer); - _g_object_unref0 (self->priv->core); - _pa_simple_free0 (self->priv->simple); - G_OBJECT_CLASS (retro_pa_player_parent_class)->finalize (obj); -} - - -GType retro_pa_player_get_type (void) { - static volatile gsize retro_pa_player_type_id__volatile = 0; - if (g_once_init_enter (&retro_pa_player_type_id__volatile)) { - static const GTypeInfo g_define_type_info = { sizeof (RetroPaPlayerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) retro_pa_player_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RetroPaPlayer), 0, (GInstanceInitFunc) retro_pa_player_instance_init, NULL }; - GType retro_pa_player_type_id; - retro_pa_player_type_id = g_type_register_static (G_TYPE_OBJECT, "RetroPaPlayer", &g_define_type_info, 0); - g_once_init_leave (&retro_pa_player_type_id__volatile, retro_pa_player_type_id); - } - return retro_pa_player_type_id__volatile; -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/audio/pa-player.vala retro-gtk-0.14.0/retro-gtk/audio/pa-player.vala --- retro-gtk-0.12.1/retro-gtk/audio/pa-player.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/audio/pa-player.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -public class Retro.PaPlayer : GLib.Object { - private Core core; - private ulong on_audio_output_id; - private double sample_rate; - private PulseAudio.Simple simple; - - public void set_core (Core? core) { - if (this.core != null) - this.core.disconnect (on_audio_output_id); - - this.core = core; - - if (this.core != null) - on_audio_output_id = core.audio_output.connect (on_audio_output); - - simple = null; - } - - private void on_audio_output (int16[] data, double sample_rate) { - if (simple == null || sample_rate != this.sample_rate) - prepare_for_sample_rate (sample_rate); - - simple.write (data, sizeof (int16) * data.length); - } - - private void prepare_for_sample_rate (double sample_rate) { - this.sample_rate = sample_rate; - - var sample_spec = PulseAudio.SampleSpec() { - format = PulseAudio.SampleFormat.S16NE, - rate = (uint32) sample_rate, - channels = 2 - }; - simple = new PulseAudio.Simple (null, null, PulseAudio.Stream.Direction.PLAYBACK, - null, "", sample_spec, null, null, - null); - } -} diff -Nru retro-gtk-0.12.1/retro-gtk/core.c retro-gtk-0.14.0/retro-gtk/core.c --- retro-gtk-0.12.1/retro-gtk/core.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/core.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1010 +0,0 @@ -/* core.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from core.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include -#include -#include -#include -#include -#include - - -#define RETRO_TYPE_CORE (retro_core_get_type ()) -#define RETRO_CORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CORE, RetroCore)) -#define RETRO_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CORE, RetroCoreClass)) -#define RETRO_IS_CORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CORE)) -#define RETRO_IS_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CORE)) -#define RETRO_CORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CORE, RetroCoreClass)) - -typedef struct _RetroCore RetroCore; -typedef struct _RetroCoreClass RetroCoreClass; -typedef struct _RetroCorePrivate RetroCorePrivate; - -#define RETRO_TYPE_VARIABLES (retro_variables_get_type ()) -#define RETRO_VARIABLES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_VARIABLES, RetroVariables)) -#define RETRO_IS_VARIABLES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_VARIABLES)) -#define RETRO_VARIABLES_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_VARIABLES, RetroVariablesIface)) - -typedef struct _RetroVariables RetroVariables; -typedef struct _RetroVariablesIface RetroVariablesIface; - -#define RETRO_TYPE_VARIABLE (retro_variable_get_type ()) -typedef struct _RetroVariable RetroVariable; - -#define RETRO_TYPE_INPUT (retro_input_get_type ()) -#define RETRO_INPUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_INPUT, RetroInput)) -#define RETRO_IS_INPUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_INPUT)) -#define RETRO_INPUT_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_INPUT, RetroInputIface)) - -typedef struct _RetroInput RetroInput; -typedef struct _RetroInputIface RetroInputIface; - -#define RETRO_TYPE_DEVICE_TYPE (retro_device_type_get_type ()) - -#define RETRO_TYPE_INPUT_DESCRIPTOR (retro_input_descriptor_get_type ()) -typedef struct _RetroInputDescriptor RetroInputDescriptor; - -#define RETRO_TYPE_INPUT_DEVICE (retro_input_device_get_type ()) -#define RETRO_INPUT_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_INPUT_DEVICE, RetroInputDevice)) -#define RETRO_IS_INPUT_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_INPUT_DEVICE)) -#define RETRO_INPUT_DEVICE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_INPUT_DEVICE, RetroInputDeviceIface)) - -typedef struct _RetroInputDevice RetroInputDevice; -typedef struct _RetroInputDeviceIface RetroInputDeviceIface; - -#define RETRO_TYPE_RUMBLE (retro_rumble_get_type ()) -#define RETRO_RUMBLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_RUMBLE, RetroRumble)) -#define RETRO_IS_RUMBLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_RUMBLE)) -#define RETRO_RUMBLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_RUMBLE, RetroRumbleIface)) - -typedef struct _RetroRumble RetroRumble; -typedef struct _RetroRumbleIface RetroRumbleIface; - -#define RETRO_TYPE_RUMBLE_EFFECT (retro_rumble_effect_get_type ()) -enum { - RETRO_CORE_DUMMY_PROPERTY, - RETRO_CORE_API_VERSION, - RETRO_CORE_FILE_NAME, - RETRO_CORE_SYSTEM_DIRECTORY, - RETRO_CORE_LIBRETRO_PATH, - RETRO_CORE_CONTENT_DIRECTORY, - RETRO_CORE_SAVE_DIRECTORY, - RETRO_CORE_IS_INITIATED, - RETRO_CORE_GAME_LOADED, - RETRO_CORE_SUPPORT_NO_GAME, - RETRO_CORE_FRAMES_PER_SECOND, - RETRO_CORE_INPUT_INTERFACE, - RETRO_CORE_RUMBLE_INTERFACE, - RETRO_CORE_LAST_PROPERTY -}; -static GParamSpec* retro_core_properties[RETRO_CORE_LAST_PROPERTY]; -#define _g_free0(var) (var = (g_free (var), NULL)) -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) - -#define RETRO_TYPE_MEMORY_TYPE (retro_memory_type_get_type ()) - -#define RETRO_TYPE_PIXEL_FORMAT (retro_pixel_format_get_type ()) -enum { - RETRO_CORE_VIDEO_OUTPUT_SIGNAL, - RETRO_CORE_AUDIO_OUTPUT_SIGNAL, - RETRO_CORE_LOG_SIGNAL, - RETRO_CORE_SHUTDOWN_SIGNAL, - RETRO_CORE_MESSAGE_SIGNAL, - RETRO_CORE_LAST_SIGNAL -}; -static guint retro_core_signals[RETRO_CORE_LAST_SIGNAL] = {0}; - -struct _RetroVariable { - gchar* key; - gchar* value; -}; - -struct _RetroVariablesIface { - GTypeInterface parent_iface; - gchar* (*get_variable) (RetroVariables* self, const gchar* key); - void (*set_variable) (RetroVariables* self, RetroVariable* variables, int variables_length1); - gboolean (*get_variable_update) (RetroVariables* self); - RetroCore* (*get_core) (RetroVariables* self); - void (*set_core) (RetroVariables* self, RetroCore* value); -}; - -struct _RetroCore { - GObject parent_instance; - RetroCorePrivate * priv; - gdouble _frames_per_second; - RetroVariables* variables_interface; - void* environment_internal; -}; - -struct _RetroCoreClass { - GObjectClass parent_class; -}; - -typedef enum { - RETRO_DEVICE_TYPE_TYPE_MASK = 0xff, - RETRO_DEVICE_TYPE_NONE = 0, - RETRO_DEVICE_TYPE_JOYPAD = 1, - RETRO_DEVICE_TYPE_MOUSE = 2, - RETRO_DEVICE_TYPE_KEYBOARD = 3, - RETRO_DEVICE_TYPE_LIGHTGUN = 4, - RETRO_DEVICE_TYPE_ANALOG = 5, - RETRO_DEVICE_TYPE_POINTER = 6 -} RetroDeviceType; - -struct _RetroInputDescriptor { - guint port; - RetroDeviceType device; - guint index; - guint id; - gchar* description; -}; - -struct _RetroInputDeviceIface { - GTypeInterface parent_iface; - void (*poll) (RetroInputDevice* self); - gint16 (*get_input_state) (RetroInputDevice* self, RetroDeviceType device, guint index, guint id); - RetroDeviceType (*get_device_type) (RetroInputDevice* self); - guint64 (*get_device_capabilities) (RetroInputDevice* self); -}; - -typedef void (*RetroInputControllerCallback) (guint port, RetroInputDevice* device, void* user_data); -struct _RetroInputIface { - GTypeInterface parent_iface; - void (*poll) (RetroInput* self); - gint16 (*get_state) (RetroInput* self, guint port, RetroDeviceType device, guint index, guint id); - void (*set_descriptors) (RetroInput* self, RetroInputDescriptor* input_descriptors, int input_descriptors_length1); - guint64 (*get_device_capabilities) (RetroInput* self); - void (*foreach_controller) (RetroInput* self, RetroInputControllerCallback callback, void* callback_target); -}; - -typedef enum { - RETRO_RUMBLE_EFFECT_STRONG, - RETRO_RUMBLE_EFFECT_WEAK -} RetroRumbleEffect; - -struct _RetroRumbleIface { - GTypeInterface parent_iface; - gboolean (*set_rumble_state) (RetroRumble* self, guint port, RetroRumbleEffect effect, guint16 strength); -}; - -struct _RetroCorePrivate { - gchar* _file_name; - gchar* _system_directory; - gchar* _libretro_path; - gchar* _content_directory; - gchar* _save_directory; - gboolean _is_initiated; - gboolean _game_loaded; - gboolean _support_no_game; - RetroInput* _input_interface; - gulong input_controller_connected_id; - gulong input_controller_disconnected_id; - gulong input_key_event_id; - RetroRumble* _rumble_interface; -}; - -typedef enum { - RETRO_MEMORY_TYPE_SAVE_RAM = 0, - RETRO_MEMORY_TYPE_RTC = 1, - RETRO_MEMORY_TYPE_SYSTEM_RAM = 2, - RETRO_MEMORY_TYPE_VIDEO_RAM = 3 -} RetroMemoryType; - -typedef enum { - RETRO_PIXEL_FORMAT_XRGB1555, - RETRO_PIXEL_FORMAT_XRGB8888, - RETRO_PIXEL_FORMAT_RGB565, - RETRO_PIXEL_FORMAT_UNKNOWN = -1 -} RetroPixelFormat; - - -static gpointer retro_core_parent_class = NULL; - -GType retro_core_get_type (void) G_GNUC_CONST; -GType retro_variable_get_type (void) G_GNUC_CONST; -RetroVariable* retro_variable_dup (const RetroVariable* self); -void retro_variable_free (RetroVariable* self); -void retro_variable_copy (const RetroVariable* self, RetroVariable* dest); -void retro_variable_destroy (RetroVariable* self); -GType retro_variables_get_type (void) G_GNUC_CONST; -GType retro_device_type_get_type (void) G_GNUC_CONST; -GType retro_input_descriptor_get_type (void) G_GNUC_CONST; -RetroInputDescriptor* retro_input_descriptor_dup (const RetroInputDescriptor* self); -void retro_input_descriptor_free (RetroInputDescriptor* self); -void retro_input_descriptor_copy (const RetroInputDescriptor* self, RetroInputDescriptor* dest); -void retro_input_descriptor_destroy (RetroInputDescriptor* self); -GType retro_input_device_get_type (void) G_GNUC_CONST; -GType retro_input_get_type (void) G_GNUC_CONST; -GType retro_rumble_effect_get_type (void) G_GNUC_CONST; -GType retro_rumble_get_type (void) G_GNUC_CONST; -#define RETRO_CORE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), RETRO_TYPE_CORE, RetroCorePrivate)) -void retro_core_destructor (RetroCore* self); -void retro_core_push_cb_data (RetroCore* self); -void retro_core_pop_cb_data (void); -RetroCore* retro_core_get_cb_data (void); -guint retro_core_get_api_version_real (RetroCore* self); -RetroCore* retro_core_new (const gchar* file_name); -RetroCore* retro_core_construct (GType object_type, const gchar* file_name); -void retro_core_constructor (RetroCore* self, const gchar* file_name); -void retro_core_init (RetroCore* self, GError** error); -void retro_core_set_medias (RetroCore* self, gchar** uris); -void retro_core_set_current_media (RetroCore* self, guint media_index, GError** error); -void retro_core_set_controller_port_device (RetroCore* self, guint port, RetroDeviceType device); -void retro_core_reset (RetroCore* self); -void retro_core_run (RetroCore* self); -gboolean retro_core_supports_serialization (RetroCore* self); -guint8* retro_core_serialize_state (RetroCore* self, gsize* result_length1, GError** error); -void retro_core_deserialize_state (RetroCore* self, guint8* data, gsize data_length1, GError** error); -GType retro_memory_type_get_type (void) G_GNUC_CONST; -gsize retro_core_get_memory_size (RetroCore* self, RetroMemoryType id); -guint8* retro_core_get_memory (RetroCore* self, RetroMemoryType id, int* result_length1); -void retro_core_set_memory (RetroCore* self, RetroMemoryType id, guint8* data, int data_length1); -void retro_core_init_input (RetroCore* self); -void retro_core_on_input_controller_connected (RetroCore* self, guint port, RetroInputDevice* device); -void retro_core_on_input_controller_disconnected (RetroCore* self, guint port); -gboolean retro_core_on_key_event (RetroCore* self, GdkEventKey* event); -guint retro_core_get_api_version (RetroCore* self); -const gchar* retro_core_get_file_name (RetroCore* self); -void retro_core_set_file_name (RetroCore* self, const gchar* value); -const gchar* retro_core_get_system_directory (RetroCore* self); -void retro_core_set_system_directory (RetroCore* self, const gchar* value); -const gchar* retro_core_get_libretro_path (RetroCore* self); -void retro_core_set_libretro_path (RetroCore* self, const gchar* value); -const gchar* retro_core_get_content_directory (RetroCore* self); -void retro_core_set_content_directory (RetroCore* self, const gchar* value); -const gchar* retro_core_get_save_directory (RetroCore* self); -void retro_core_set_save_directory (RetroCore* self, const gchar* value); -gboolean retro_core_get_is_initiated (RetroCore* self); -void retro_core_set_is_initiated (RetroCore* self, gboolean value); -gboolean retro_core_get_game_loaded (RetroCore* self); -void retro_core_set_game_loaded (RetroCore* self, gboolean value); -gboolean retro_core_get_support_no_game (RetroCore* self); -void retro_core_set_support_no_game (RetroCore* self, gboolean value); -gdouble retro_core_get_frames_per_second (RetroCore* self); -RetroInput* retro_core_get_input_interface (RetroCore* self); -void retro_core_set_input_interface (RetroCore* self, RetroInput* value); -static void _retro_core_on_input_controller_connected_retro_input_controller_connected (RetroInput* _sender, guint port, RetroInputDevice* device, gpointer self); -static void _retro_core_on_input_controller_disconnected_retro_input_controller_disconnected (RetroInput* _sender, guint port, gpointer self); -static gboolean _retro_core_on_key_event_retro_input_key_event (RetroInput* _sender, GdkEventKey* event, gpointer self); -RetroRumble* retro_core_get_rumble_interface (RetroCore* self); -void retro_core_set_rumble_interface (RetroCore* self, RetroRumble* value); -GType retro_pixel_format_get_type (void) G_GNUC_CONST; -static void g_cclosure_user_marshal_VOID__POINTER_INT_UINT_UINT_ULONG_ENUM_FLOAT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); -static void g_cclosure_user_marshal_VOID__POINTER_INT_DOUBLE (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); -static void g_cclosure_user_marshal_VOID__STRING_UINT_STRING (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); -static void g_cclosure_user_marshal_BOOLEAN__VOID (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); -static void g_cclosure_user_marshal_BOOLEAN__STRING_UINT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); -static void retro_core_finalize (GObject * obj); -static void _vala_retro_core_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec); -static void _vala_retro_core_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec); - - -/** - * Stores the current Core instance in a stack. - * - * Stores the current instance of Core in a thread local global stack. - * It allows to know wich Core a callback is related to. - * - * Must be called before any call to a function from the module. - */ -/** - * Removes the Core at the head of the stack. - * - * Must be called after any call to {@link push_cb_data()}. - */ -/** - * Creates a Core from the file name of a Libretro implementation. - * - * The file must be a dynamically loadable shared object implementing the - * same version of the Libretro API as Retro. - * - * @param file_name the file name of the Libretro implementation to load - */ -RetroCore* retro_core_construct (GType object_type, const gchar* file_name) { - RetroCore * self = NULL; - const gchar* _tmp0_; - g_return_val_if_fail (file_name != NULL, NULL); - self = (RetroCore*) g_object_new (object_type, NULL); - _tmp0_ = file_name; - retro_core_constructor (self, _tmp0_); - return self; -} - - -RetroCore* retro_core_new (const gchar* file_name) { - return retro_core_construct (RETRO_TYPE_CORE, file_name); -} - - -/** - * Initializes the module. - * - * Must be called before loading a game and running the core. - */ -/** - * Resets the current game. - */ -/** - * Runs the game for one video frame. - * - * The callbacks must be set and the core must be initialized before - * running the core. - * - * During {@link run}, the input_poll callback will be called - * at least once. - * - * If a frame is not rendered for reasons where a game "dropped" a frame, - * this still counts as a frame, and {@link run} will explicitly dupe a - * frame if the can_dupe property of {@link video_interface} is set to true. - * In this case, the video callback can take a null argument for data. - */ -/** - * Gets the size of a region of memory. - * - * @param id the region of memory - * @return the size of the region of memory - */ -/** - * Gets a region of memory. - * - * @param id the region of memory - * @return the region of memory - */ -/** - * Sets a region of memory. - * - * @param id the region of memory - * @param data the data to write in the memory region - */ -guint retro_core_get_api_version (RetroCore* self) { - guint result; - guint _tmp0_; - g_return_val_if_fail (self != NULL, 0U); - _tmp0_ = retro_core_get_api_version_real (self); - result = _tmp0_; - return result; -} - - -const gchar* retro_core_get_file_name (RetroCore* self) { - const gchar* result; - const gchar* _tmp0_; - g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = self->priv->_file_name; - result = _tmp0_; - return result; -} - - -void retro_core_set_file_name (RetroCore* self, const gchar* value) { - g_return_if_fail (self != NULL); - if (g_strcmp0 (value, retro_core_get_file_name (self)) != 0) { - const gchar* _tmp0_; - gchar* _tmp1_; - _tmp0_ = value; - _tmp1_ = g_strdup (_tmp0_); - _g_free0 (self->priv->_file_name); - self->priv->_file_name = _tmp1_; - g_object_notify_by_pspec ((GObject *) self, retro_core_properties[RETRO_CORE_FILE_NAME]); - } -} - - -const gchar* retro_core_get_system_directory (RetroCore* self) { - const gchar* result; - const gchar* _tmp0_; - g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = self->priv->_system_directory; - result = _tmp0_; - return result; -} - - -void retro_core_set_system_directory (RetroCore* self, const gchar* value) { - g_return_if_fail (self != NULL); - if (g_strcmp0 (value, retro_core_get_system_directory (self)) != 0) { - const gchar* _tmp0_; - gchar* _tmp1_; - _tmp0_ = value; - _tmp1_ = g_strdup (_tmp0_); - _g_free0 (self->priv->_system_directory); - self->priv->_system_directory = _tmp1_; - g_object_notify_by_pspec ((GObject *) self, retro_core_properties[RETRO_CORE_SYSTEM_DIRECTORY]); - } -} - - -const gchar* retro_core_get_libretro_path (RetroCore* self) { - const gchar* result; - const gchar* _tmp0_; - g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = self->priv->_libretro_path; - result = _tmp0_; - return result; -} - - -void retro_core_set_libretro_path (RetroCore* self, const gchar* value) { - g_return_if_fail (self != NULL); - if (g_strcmp0 (value, retro_core_get_libretro_path (self)) != 0) { - const gchar* _tmp0_; - gchar* _tmp1_; - _tmp0_ = value; - _tmp1_ = g_strdup (_tmp0_); - _g_free0 (self->priv->_libretro_path); - self->priv->_libretro_path = _tmp1_; - g_object_notify_by_pspec ((GObject *) self, retro_core_properties[RETRO_CORE_LIBRETRO_PATH]); - } -} - - -const gchar* retro_core_get_content_directory (RetroCore* self) { - const gchar* result; - const gchar* _tmp0_; - g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = self->priv->_content_directory; - result = _tmp0_; - return result; -} - - -void retro_core_set_content_directory (RetroCore* self, const gchar* value) { - g_return_if_fail (self != NULL); - if (g_strcmp0 (value, retro_core_get_content_directory (self)) != 0) { - const gchar* _tmp0_; - gchar* _tmp1_; - _tmp0_ = value; - _tmp1_ = g_strdup (_tmp0_); - _g_free0 (self->priv->_content_directory); - self->priv->_content_directory = _tmp1_; - g_object_notify_by_pspec ((GObject *) self, retro_core_properties[RETRO_CORE_CONTENT_DIRECTORY]); - } -} - - -const gchar* retro_core_get_save_directory (RetroCore* self) { - const gchar* result; - const gchar* _tmp0_; - g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = self->priv->_save_directory; - result = _tmp0_; - return result; -} - - -void retro_core_set_save_directory (RetroCore* self, const gchar* value) { - g_return_if_fail (self != NULL); - if (g_strcmp0 (value, retro_core_get_save_directory (self)) != 0) { - const gchar* _tmp0_; - gchar* _tmp1_; - _tmp0_ = value; - _tmp1_ = g_strdup (_tmp0_); - _g_free0 (self->priv->_save_directory); - self->priv->_save_directory = _tmp1_; - g_object_notify_by_pspec ((GObject *) self, retro_core_properties[RETRO_CORE_SAVE_DIRECTORY]); - } -} - - -gboolean retro_core_get_is_initiated (RetroCore* self) { - gboolean result; - gboolean _tmp0_; - g_return_val_if_fail (self != NULL, FALSE); - _tmp0_ = self->priv->_is_initiated; - result = _tmp0_; - return result; -} - - -void retro_core_set_is_initiated (RetroCore* self, gboolean value) { - g_return_if_fail (self != NULL); - if (retro_core_get_is_initiated (self) != value) { - gboolean _tmp0_; - _tmp0_ = value; - self->priv->_is_initiated = _tmp0_; - g_object_notify_by_pspec ((GObject *) self, retro_core_properties[RETRO_CORE_IS_INITIATED]); - } -} - - -gboolean retro_core_get_game_loaded (RetroCore* self) { - gboolean result; - gboolean _tmp0_; - g_return_val_if_fail (self != NULL, FALSE); - _tmp0_ = self->priv->_game_loaded; - result = _tmp0_; - return result; -} - - -void retro_core_set_game_loaded (RetroCore* self, gboolean value) { - g_return_if_fail (self != NULL); - if (retro_core_get_game_loaded (self) != value) { - gboolean _tmp0_; - _tmp0_ = value; - self->priv->_game_loaded = _tmp0_; - g_object_notify_by_pspec ((GObject *) self, retro_core_properties[RETRO_CORE_GAME_LOADED]); - } -} - - -gboolean retro_core_get_support_no_game (RetroCore* self) { - gboolean result; - gboolean _tmp0_; - g_return_val_if_fail (self != NULL, FALSE); - _tmp0_ = self->priv->_support_no_game; - result = _tmp0_; - return result; -} - - -void retro_core_set_support_no_game (RetroCore* self, gboolean value) { - g_return_if_fail (self != NULL); - if (retro_core_get_support_no_game (self) != value) { - gboolean _tmp0_; - _tmp0_ = value; - self->priv->_support_no_game = _tmp0_; - g_object_notify_by_pspec ((GObject *) self, retro_core_properties[RETRO_CORE_SUPPORT_NO_GAME]); - } -} - - -gdouble retro_core_get_frames_per_second (RetroCore* self) { - gdouble result; - gdouble _tmp0_; - g_return_val_if_fail (self != NULL, 0.0); - _tmp0_ = self->_frames_per_second; - result = _tmp0_; - return result; -} - - -RetroInput* retro_core_get_input_interface (RetroCore* self) { - RetroInput* result; - RetroInput* _tmp0_; - g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = self->priv->_input_interface; - result = _tmp0_; - return result; -} - - -static void _retro_core_on_input_controller_connected_retro_input_controller_connected (RetroInput* _sender, guint port, RetroInputDevice* device, gpointer self) { - retro_core_on_input_controller_connected ((RetroCore*) self, port, device); -} - - -static void _retro_core_on_input_controller_disconnected_retro_input_controller_disconnected (RetroInput* _sender, guint port, gpointer self) { - retro_core_on_input_controller_disconnected ((RetroCore*) self, port); -} - - -static gboolean _retro_core_on_key_event_retro_input_key_event (RetroInput* _sender, GdkEventKey* event, gpointer self) { - gboolean result; - result = retro_core_on_key_event ((RetroCore*) self, event); - return result; -} - - -void retro_core_set_input_interface (RetroCore* self, RetroInput* value) { - RetroInput* _tmp0_; - RetroInput* _tmp1_; - RetroInput* _tmp2_; - RetroInput* _tmp3_; - RetroInput* _tmp4_; - RetroInput* _tmp14_; - RetroInput* _tmp15_; - RetroInput* _tmp16_; - RetroInput* _tmp17_; - RetroInput* _tmp18_; - RetroInput* _tmp19_; - RetroInput* _tmp20_; - RetroInput* _tmp21_; - RetroInput* _tmp22_; - gboolean _tmp23_; - g_return_if_fail (self != NULL); - _tmp0_ = value; - _tmp1_ = retro_core_get_input_interface (self); - _tmp2_ = _tmp1_; - if (_tmp0_ == _tmp2_) { - return; - } - _tmp3_ = retro_core_get_input_interface (self); - _tmp4_ = _tmp3_; - if (_tmp4_ != NULL) { - RetroInput* _tmp5_; - RetroInput* _tmp6_; - gulong _tmp7_; - RetroInput* _tmp8_; - RetroInput* _tmp9_; - gulong _tmp10_; - RetroInput* _tmp11_; - RetroInput* _tmp12_; - gulong _tmp13_; - _tmp5_ = retro_core_get_input_interface (self); - _tmp6_ = _tmp5_; - _tmp7_ = self->priv->input_controller_connected_id; - g_signal_handler_disconnect ((GObject*) _tmp6_, _tmp7_); - _tmp8_ = retro_core_get_input_interface (self); - _tmp9_ = _tmp8_; - _tmp10_ = self->priv->input_controller_disconnected_id; - g_signal_handler_disconnect ((GObject*) _tmp9_, _tmp10_); - _tmp11_ = retro_core_get_input_interface (self); - _tmp12_ = _tmp11_; - _tmp13_ = self->priv->input_key_event_id; - g_signal_handler_disconnect ((GObject*) _tmp12_, _tmp13_); - } - _tmp14_ = value; - self->priv->_input_interface = _tmp14_; - _tmp15_ = retro_core_get_input_interface (self); - _tmp16_ = _tmp15_; - if (_tmp16_ == NULL) { - return; - } - _tmp17_ = retro_core_get_input_interface (self); - _tmp18_ = _tmp17_; - g_signal_connect_object (_tmp18_, "controller-connected", (GCallback) _retro_core_on_input_controller_connected_retro_input_controller_connected, self, 0); - _tmp19_ = retro_core_get_input_interface (self); - _tmp20_ = _tmp19_; - g_signal_connect_object (_tmp20_, "controller-disconnected", (GCallback) _retro_core_on_input_controller_disconnected_retro_input_controller_disconnected, self, 0); - _tmp21_ = retro_core_get_input_interface (self); - _tmp22_ = _tmp21_; - g_signal_connect_object (_tmp22_, "key-event", (GCallback) _retro_core_on_key_event_retro_input_key_event, self, 0); - _tmp23_ = self->priv->_is_initiated; - if (_tmp23_) { - retro_core_init_input (self); - } - g_object_notify_by_pspec ((GObject *) self, retro_core_properties[RETRO_CORE_INPUT_INTERFACE]); -} - - -RetroRumble* retro_core_get_rumble_interface (RetroCore* self) { - RetroRumble* result; - RetroRumble* _tmp0_; - g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = self->priv->_rumble_interface; - result = _tmp0_; - return result; -} - - -static gpointer _g_object_ref0 (gpointer self) { - return self ? g_object_ref (self) : NULL; -} - - -void retro_core_set_rumble_interface (RetroCore* self, RetroRumble* value) { - g_return_if_fail (self != NULL); - if (retro_core_get_rumble_interface (self) != value) { - RetroRumble* _tmp0_; - RetroRumble* _tmp1_; - _tmp0_ = value; - _tmp1_ = _g_object_ref0 (_tmp0_); - _g_object_unref0 (self->priv->_rumble_interface); - self->priv->_rumble_interface = _tmp1_; - g_object_notify_by_pspec ((GObject *) self, retro_core_properties[RETRO_CORE_RUMBLE_INTERFACE]); - } -} - - -static void g_cclosure_user_marshal_VOID__POINTER_INT_UINT_UINT_ULONG_ENUM_FLOAT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { - typedef void (*GMarshalFunc_VOID__POINTER_INT_UINT_UINT_ULONG_ENUM_FLOAT) (gpointer data1, gpointer arg_1, gint arg_2, guint arg_3, guint arg_4, gsize arg_5, gint arg_6, gfloat arg_7, gpointer data2); - register GMarshalFunc_VOID__POINTER_INT_UINT_UINT_ULONG_ENUM_FLOAT callback; - register GCClosure * cc; - register gpointer data1; - register gpointer data2; - cc = (GCClosure *) closure; - g_return_if_fail (n_param_values == 8); - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = param_values->data[0].v_pointer; - } else { - data1 = param_values->data[0].v_pointer; - data2 = closure->data; - } - callback = (GMarshalFunc_VOID__POINTER_INT_UINT_UINT_ULONG_ENUM_FLOAT) (marshal_data ? marshal_data : cc->callback); - callback (data1, g_value_get_pointer (param_values + 1), g_value_get_int (param_values + 2), g_value_get_uint (param_values + 3), g_value_get_uint (param_values + 4), g_value_get_ulong (param_values + 5), g_value_get_enum (param_values + 6), g_value_get_float (param_values + 7), data2); -} - - -static void g_cclosure_user_marshal_VOID__POINTER_INT_DOUBLE (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { - typedef void (*GMarshalFunc_VOID__POINTER_INT_DOUBLE) (gpointer data1, gpointer arg_1, gint arg_2, gdouble arg_3, gpointer data2); - register GMarshalFunc_VOID__POINTER_INT_DOUBLE callback; - register GCClosure * cc; - register gpointer data1; - register gpointer data2; - cc = (GCClosure *) closure; - g_return_if_fail (n_param_values == 4); - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = param_values->data[0].v_pointer; - } else { - data1 = param_values->data[0].v_pointer; - data2 = closure->data; - } - callback = (GMarshalFunc_VOID__POINTER_INT_DOUBLE) (marshal_data ? marshal_data : cc->callback); - callback (data1, g_value_get_pointer (param_values + 1), g_value_get_int (param_values + 2), g_value_get_double (param_values + 3), data2); -} - - -static void g_cclosure_user_marshal_VOID__STRING_UINT_STRING (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { - typedef void (*GMarshalFunc_VOID__STRING_UINT_STRING) (gpointer data1, const char* arg_1, gint arg_2, const char* arg_3, gpointer data2); - register GMarshalFunc_VOID__STRING_UINT_STRING callback; - register GCClosure * cc; - register gpointer data1; - register gpointer data2; - cc = (GCClosure *) closure; - g_return_if_fail (n_param_values == 4); - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = param_values->data[0].v_pointer; - } else { - data1 = param_values->data[0].v_pointer; - data2 = closure->data; - } - callback = (GMarshalFunc_VOID__STRING_UINT_STRING) (marshal_data ? marshal_data : cc->callback); - callback (data1, g_value_get_string (param_values + 1), g_value_get_uint (param_values + 2), g_value_get_string (param_values + 3), data2); -} - - -static void g_cclosure_user_marshal_BOOLEAN__VOID (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { - typedef gboolean (*GMarshalFunc_BOOLEAN__VOID) (gpointer data1, gpointer data2); - register GMarshalFunc_BOOLEAN__VOID callback; - register GCClosure * cc; - register gpointer data1; - register gpointer data2; - gboolean v_return; - cc = (GCClosure *) closure; - g_return_if_fail (return_value != NULL); - g_return_if_fail (n_param_values == 1); - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = param_values->data[0].v_pointer; - } else { - data1 = param_values->data[0].v_pointer; - data2 = closure->data; - } - callback = (GMarshalFunc_BOOLEAN__VOID) (marshal_data ? marshal_data : cc->callback); - v_return = callback (data1, data2); - g_value_set_boolean (return_value, v_return); -} - - -static void g_cclosure_user_marshal_BOOLEAN__STRING_UINT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { - typedef gboolean (*GMarshalFunc_BOOLEAN__STRING_UINT) (gpointer data1, const char* arg_1, guint arg_2, gpointer data2); - register GMarshalFunc_BOOLEAN__STRING_UINT callback; - register GCClosure * cc; - register gpointer data1; - register gpointer data2; - gboolean v_return; - cc = (GCClosure *) closure; - g_return_if_fail (return_value != NULL); - g_return_if_fail (n_param_values == 3); - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = param_values->data[0].v_pointer; - } else { - data1 = param_values->data[0].v_pointer; - data2 = closure->data; - } - callback = (GMarshalFunc_BOOLEAN__STRING_UINT) (marshal_data ? marshal_data : cc->callback); - v_return = callback (data1, g_value_get_string (param_values + 1), g_value_get_uint (param_values + 2), data2); - g_value_set_boolean (return_value, v_return); -} - - -static void retro_core_class_init (RetroCoreClass * klass) { - retro_core_parent_class = g_type_class_peek_parent (klass); - g_type_class_add_private (klass, sizeof (RetroCorePrivate)); - G_OBJECT_CLASS (klass)->get_property = _vala_retro_core_get_property; - G_OBJECT_CLASS (klass)->set_property = _vala_retro_core_set_property; - G_OBJECT_CLASS (klass)->finalize = retro_core_finalize; - /** - * The version of Libretro used by the module. - * - * Can be compared with {@link API_VERSION} to validate ABI - * compatibility. - */ - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_CORE_API_VERSION, retro_core_properties[RETRO_CORE_API_VERSION] = g_param_spec_uint ("api-version", "api-version", "api-version", 0, G_MAXUINT, 0U, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE)); - /** - * The file name of the module. - */ - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_CORE_FILE_NAME, retro_core_properties[RETRO_CORE_FILE_NAME] = g_param_spec_string ("file-name", "file-name", "file-name", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); - /** - * The directory the core will use to look for for additional data. - */ - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_CORE_SYSTEM_DIRECTORY, retro_core_properties[RETRO_CORE_SYSTEM_DIRECTORY] = g_param_spec_string ("system-directory", "system-directory", "system-directory", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); - /** - * The absolute path to the source module file. - */ - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_CORE_LIBRETRO_PATH, retro_core_properties[RETRO_CORE_LIBRETRO_PATH] = g_param_spec_string ("libretro-path", "libretro-path", "libretro-path", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); - /** - * The directory the core will use to look for for additional assets. - */ - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_CORE_CONTENT_DIRECTORY, retro_core_properties[RETRO_CORE_CONTENT_DIRECTORY] = g_param_spec_string ("content-directory", "content-directory", "content-directory", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); - /** - * The directory the core will use to save user data. - */ - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_CORE_SAVE_DIRECTORY, retro_core_properties[RETRO_CORE_SAVE_DIRECTORY] = g_param_spec_string ("save-directory", "save-directory", "save-directory", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); - /** - * Whether or not the a game is loaded. - */ - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_CORE_IS_INITIATED, retro_core_properties[RETRO_CORE_IS_INITIATED] = g_param_spec_boolean ("is-initiated", "is-initiated", "is-initiated", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); - /** - * Whether or not the a game is loaded. - */ - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_CORE_GAME_LOADED, retro_core_properties[RETRO_CORE_GAME_LOADED] = g_param_spec_boolean ("game-loaded", "game-loaded", "game-loaded", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); - /** - * Whether or not the core supports games. - */ - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_CORE_SUPPORT_NO_GAME, retro_core_properties[RETRO_CORE_SUPPORT_NO_GAME] = g_param_spec_boolean ("support-no-game", "support-no-game", "support-no-game", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_CORE_FRAMES_PER_SECOND, retro_core_properties[RETRO_CORE_FRAMES_PER_SECOND] = g_param_spec_double ("frames-per-second", "frames-per-second", "frames-per-second", -G_MAXDOUBLE, G_MAXDOUBLE, 0.0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE)); - /** - * The input interface. - * - * It must be set before {@link init} is called. - */ - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_CORE_INPUT_INTERFACE, retro_core_properties[RETRO_CORE_INPUT_INTERFACE] = g_param_spec_object ("input-interface", "input-interface", "input-interface", RETRO_TYPE_INPUT, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT)); - /** - * The rumble interface. - * - * Optional. - * If set, it must be set before {@link init} is called. - */ - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_CORE_RUMBLE_INTERFACE, retro_core_properties[RETRO_CORE_RUMBLE_INTERFACE] = g_param_spec_object ("rumble-interface", "rumble-interface", "rumble-interface", RETRO_TYPE_RUMBLE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); - retro_core_signals[RETRO_CORE_VIDEO_OUTPUT_SIGNAL] = g_signal_new ("video_output", RETRO_TYPE_CORE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__POINTER_INT_UINT_UINT_ULONG_ENUM_FLOAT, G_TYPE_NONE, 7, G_TYPE_POINTER, G_TYPE_INT, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_ULONG, RETRO_TYPE_PIXEL_FORMAT, G_TYPE_FLOAT); - retro_core_signals[RETRO_CORE_AUDIO_OUTPUT_SIGNAL] = g_signal_new ("audio_output", RETRO_TYPE_CORE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__POINTER_INT_DOUBLE, G_TYPE_NONE, 3, G_TYPE_POINTER, G_TYPE_INT, G_TYPE_DOUBLE); - retro_core_signals[RETRO_CORE_LOG_SIGNAL] = g_signal_new ("log", RETRO_TYPE_CORE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__STRING_UINT_STRING, G_TYPE_NONE, 3, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_STRING); - /** - * Asks the frontend to shut down. - */ - retro_core_signals[RETRO_CORE_SHUTDOWN_SIGNAL] = g_signal_new ("shutdown", RETRO_TYPE_CORE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_BOOLEAN__VOID, G_TYPE_BOOLEAN, 0); - /** - * Asks the frontend to display a message for an amount of frames. - */ - retro_core_signals[RETRO_CORE_MESSAGE_SIGNAL] = g_signal_new ("message", RETRO_TYPE_CORE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_BOOLEAN__STRING_UINT, G_TYPE_BOOLEAN, 2, G_TYPE_STRING, G_TYPE_UINT); -} - - -static void retro_core_instance_init (RetroCore * self) { - gchar* _tmp0_; - gchar* _tmp1_; - gchar* _tmp2_; - gchar* _tmp3_; - self->priv = RETRO_CORE_GET_PRIVATE (self); - _tmp0_ = g_strdup ("."); - self->priv->_system_directory = _tmp0_; - _tmp1_ = g_strdup ("."); - self->priv->_libretro_path = _tmp1_; - _tmp2_ = g_strdup ("."); - self->priv->_content_directory = _tmp2_; - _tmp3_ = g_strdup ("."); - self->priv->_save_directory = _tmp3_; - self->priv->_is_initiated = FALSE; - self->priv->_game_loaded = FALSE; - self->priv->_support_no_game = FALSE; -} - - -static void retro_core_finalize (GObject * obj) { - RetroCore * self; - self = G_TYPE_CHECK_INSTANCE_CAST (obj, RETRO_TYPE_CORE, RetroCore); - retro_core_destructor (self); - _g_free0 (self->priv->_file_name); - _g_free0 (self->priv->_system_directory); - _g_free0 (self->priv->_libretro_path); - _g_free0 (self->priv->_content_directory); - _g_free0 (self->priv->_save_directory); - _g_object_unref0 (self->priv->_rumble_interface); - _g_object_unref0 (self->variables_interface); - G_OBJECT_CLASS (retro_core_parent_class)->finalize (obj); -} - - -/** - * Handles a Libretro module. - */ -GType retro_core_get_type (void) { - static volatile gsize retro_core_type_id__volatile = 0; - if (g_once_init_enter (&retro_core_type_id__volatile)) { - static const GTypeInfo g_define_type_info = { sizeof (RetroCoreClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) retro_core_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RetroCore), 0, (GInstanceInitFunc) retro_core_instance_init, NULL }; - GType retro_core_type_id; - retro_core_type_id = g_type_register_static (G_TYPE_OBJECT, "RetroCore", &g_define_type_info, 0); - g_once_init_leave (&retro_core_type_id__volatile, retro_core_type_id); - } - return retro_core_type_id__volatile; -} - - -static void _vala_retro_core_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { - RetroCore * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, RETRO_TYPE_CORE, RetroCore); - switch (property_id) { - case RETRO_CORE_API_VERSION: - g_value_set_uint (value, retro_core_get_api_version (self)); - break; - case RETRO_CORE_FILE_NAME: - g_value_set_string (value, retro_core_get_file_name (self)); - break; - case RETRO_CORE_SYSTEM_DIRECTORY: - g_value_set_string (value, retro_core_get_system_directory (self)); - break; - case RETRO_CORE_LIBRETRO_PATH: - g_value_set_string (value, retro_core_get_libretro_path (self)); - break; - case RETRO_CORE_CONTENT_DIRECTORY: - g_value_set_string (value, retro_core_get_content_directory (self)); - break; - case RETRO_CORE_SAVE_DIRECTORY: - g_value_set_string (value, retro_core_get_save_directory (self)); - break; - case RETRO_CORE_IS_INITIATED: - g_value_set_boolean (value, retro_core_get_is_initiated (self)); - break; - case RETRO_CORE_GAME_LOADED: - g_value_set_boolean (value, retro_core_get_game_loaded (self)); - break; - case RETRO_CORE_SUPPORT_NO_GAME: - g_value_set_boolean (value, retro_core_get_support_no_game (self)); - break; - case RETRO_CORE_FRAMES_PER_SECOND: - g_value_set_double (value, retro_core_get_frames_per_second (self)); - break; - case RETRO_CORE_INPUT_INTERFACE: - g_value_set_object (value, retro_core_get_input_interface (self)); - break; - case RETRO_CORE_RUMBLE_INTERFACE: - g_value_set_object (value, retro_core_get_rumble_interface (self)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - - -static void _vala_retro_core_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { - RetroCore * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, RETRO_TYPE_CORE, RetroCore); - switch (property_id) { - case RETRO_CORE_FILE_NAME: - retro_core_set_file_name (self, g_value_get_string (value)); - break; - case RETRO_CORE_SYSTEM_DIRECTORY: - retro_core_set_system_directory (self, g_value_get_string (value)); - break; - case RETRO_CORE_LIBRETRO_PATH: - retro_core_set_libretro_path (self, g_value_get_string (value)); - break; - case RETRO_CORE_CONTENT_DIRECTORY: - retro_core_set_content_directory (self, g_value_get_string (value)); - break; - case RETRO_CORE_SAVE_DIRECTORY: - retro_core_set_save_directory (self, g_value_get_string (value)); - break; - case RETRO_CORE_IS_INITIATED: - retro_core_set_is_initiated (self, g_value_get_boolean (value)); - break; - case RETRO_CORE_GAME_LOADED: - retro_core_set_game_loaded (self, g_value_get_boolean (value)); - break; - case RETRO_CORE_SUPPORT_NO_GAME: - retro_core_set_support_no_game (self, g_value_get_boolean (value)); - break; - case RETRO_CORE_INPUT_INTERFACE: - retro_core_set_input_interface (self, g_value_get_object (value)); - break; - case RETRO_CORE_RUMBLE_INTERFACE: - retro_core_set_rumble_interface (self, g_value_get_object (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/core-error.c retro-gtk-0.14.0/retro-gtk/core-error.c --- retro-gtk-0.12.1/retro-gtk/core-error.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/core-error.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -/* core-error.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from core-error.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include - - -typedef enum { - RETRO_CORE_ERROR_COULDNT_SERIALIZE, - RETRO_CORE_ERROR_COULDNT_DESERIALIZE, - RETRO_CORE_ERROR_SERIALIZATION_NOT_SUPPORTED -} RetroCoreError; -#define RETRO_CORE_ERROR retro_core_error_quark () - - -GQuark retro_core_error_quark (void); - - -GQuark retro_core_error_quark (void) { - return g_quark_from_static_string ("retro_core_error-quark"); -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/core-error.vala retro-gtk-0.14.0/retro-gtk/core-error.vala --- retro-gtk-0.12.1/retro-gtk/core-error.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/core-error.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -private errordomain Retro.CoreError { - COULDNT_SERIALIZE, - COULDNT_DESERIALIZE, - SERIALIZATION_NOT_SUPPORTED, -} diff -Nru retro-gtk-0.12.1/retro-gtk/core.vala retro-gtk-0.14.0/retro-gtk/core.vala --- retro-gtk-0.12.1/retro-gtk/core.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/core.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,235 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -namespace Retro { - -/** - * Handles a Libretro module. - */ -public class Core : Object { - public signal void video_output (uint8[] data, uint width, uint height, size_t pitch, PixelFormat pixel_format, float aspect_ratio); - public signal void audio_output (int16[] frames, double sample_rate); - public signal void log (string log_domain, LogLevelFlags log_level, string message); - - /** - * Stores the current Core instance in a stack. - * - * Stores the current instance of Core in a thread local global stack. - * It allows to know wich Core a callback is related to. - * - * Must be called before any call to a function from the module. - */ - internal extern void push_cb_data (); - - /** - * Removes the Core at the head of the stack. - * - * Must be called after any call to {@link push_cb_data()}. - */ - internal extern static void pop_cb_data (); - - internal extern static unowned Core get_cb_data (); - - private extern uint get_api_version_real (); - /** - * The version of Libretro used by the module. - * - * Can be compared with {@link API_VERSION} to validate ABI - * compatibility. - */ - public uint api_version { - get { return get_api_version_real (); } - } - - /** - * The file name of the module. - */ - public string file_name { internal set; get; } - - /** - * The directory the core will use to look for for additional data. - */ - public string system_directory { set; get; default = "."; } - - /** - * The absolute path to the source module file. - */ - public string libretro_path { set; get; default = "."; } - - /** - * The directory the core will use to look for for additional assets. - */ - public string content_directory { set; get; default = "."; } - - /** - * The directory the core will use to save user data. - */ - public string save_directory { set; get; default = "."; } - - /** - * Whether or not the a game is loaded. - */ - public bool is_initiated { internal set; get; default = false; } - - /** - * Whether or not the a game is loaded. - */ - public bool game_loaded { internal set; get; default = false; } - - /** - * Whether or not the core supports games. - */ - public bool support_no_game { internal set; get; default = false; } - - internal double _frames_per_second; - public double frames_per_second { - get { return _frames_per_second; } - } - - private weak Input _input_interface; - private ulong input_controller_connected_id; - private ulong input_controller_disconnected_id; - private ulong input_key_event_id; - /** - * The input interface. - * - * It must be set before {@link init} is called. - */ - public Input input_interface { - get { return _input_interface; } - construct set { - if (value == input_interface) - return; - - if (input_interface != null) { - input_interface.disconnect (input_controller_connected_id); - input_interface.disconnect (input_controller_disconnected_id); - input_interface.disconnect (input_key_event_id); - } - - _input_interface = value; - - if (input_interface == null) - return; - - input_interface.controller_connected.connect (on_input_controller_connected); - input_interface.controller_disconnected.connect (on_input_controller_disconnected); - input_interface.key_event.connect (on_key_event); - - if (is_initiated) - init_input (); - } - } - - /** - * The rumble interface. - * - * Optional. - * If set, it must be set before {@link init} is called. - */ - public Rumble rumble_interface { set; get; } - - /** - * Asks the frontend to shut down. - */ - public signal bool shutdown (); - - /** - * Asks the frontend to display a message for an amount of frames. - */ - public signal bool message (string message, uint frames); - - internal Variables variables_interface; - - internal void *environment_internal; - - /** - * Creates a Core from the file name of a Libretro implementation. - * - * The file must be a dynamically loadable shared object implementing the - * same version of the Libretro API as Retro. - * - * @param file_name the file name of the Libretro implementation to load - */ - public Core (string file_name) { - constructor (file_name); - } - - ~Core () { - destructor (); - } - - private extern void constructor (string file_name); - private extern void destructor (); - - /** - * Initializes the module. - * - * Must be called before loading a game and running the core. - */ - public extern void init () throws Error; - - public extern void set_medias ([CCode (array_null_terminated = true, array_length = false)] string[] uris); - - public extern void set_current_media (uint media_index) throws Error; - - public extern void set_controller_port_device (uint port, DeviceType device); - - /** - * Resets the current game. - */ - public extern void reset (); - - /** - * Runs the game for one video frame. - * - * The callbacks must be set and the core must be initialized before - * running the core. - * - * During {@link run}, the input_poll callback will be called - * at least once. - * - * If a frame is not rendered for reasons where a game "dropped" a frame, - * this still counts as a frame, and {@link run} will explicitly dupe a - * frame if the can_dupe property of {@link video_interface} is set to true. - * In this case, the video callback can take a null argument for data. - */ - public extern void run (); - - public extern bool supports_serialization (); - - [CCode (array_length_type = "gsize")] - public extern uint8[] serialize_state () throws Error; - - public extern void deserialize_state ([CCode (array_length_type = "gsize")] uint8[] data) throws Error; - - /** - * Gets the size of a region of memory. - * - * @param id the region of memory - * @return the size of the region of memory - */ - public extern size_t get_memory_size (MemoryType id); - - /** - * Gets a region of memory. - * - * @param id the region of memory - * @return the region of memory - */ - public extern uint8[] get_memory (MemoryType id); - - /** - * Sets a region of memory. - * - * @param id the region of memory - * @param data the data to write in the memory region - */ - public extern void set_memory (MemoryType id, uint8[] data); - - private extern void init_input (); - private extern void on_input_controller_connected (uint port, InputDevice device); - private extern void on_input_controller_disconnected (uint port); - private extern bool on_key_event (Gdk.EventKey event); -} - -} diff -Nru retro-gtk-0.12.1/retro-gtk/glsl-filters/crt-simple.filter retro-gtk-0.14.0/retro-gtk/glsl-filters/crt-simple.filter --- retro-gtk-0.12.1/retro-gtk/glsl-filters/crt-simple.filter 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/glsl-filters/crt-simple.filter 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,8 @@ +[GLSL Filter] +Filter=Linear +Wrap=Border +Vertex=crt-simple.vs +Fragment=crt-simple.fs +Authors=hunterk; +License=GPL-2.0+; +URL=https://github.com/hizzlekizzle/quark-shaders/tree/master/CRT-Simple.shader diff -Nru retro-gtk-0.12.1/retro-gtk/glsl-filters/crt-simple.fs retro-gtk-0.14.0/retro-gtk/glsl-filters/crt-simple.fs --- retro-gtk-0.12.1/retro-gtk/glsl-filters/crt-simple.fs 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/glsl-filters/crt-simple.fs 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,127 @@ +#version 150 + +uniform sampler2D source[]; +uniform vec4 sourceSize[]; + +in Vertex { + vec2 texCoord; + vec2 one; + float mod_factor; +}; + +out vec4 fragColor; + + uniform vec4 targetSize; + uniform vec2 outputSize; + + // Enable screen curvature. + #define CURVATURE + + // Controls the intensity of the barrel distortion used to emulate the + // curvature of a CRT. 0.0 is perfectly flat, 1.0 is annoyingly + // distorted, higher values are increasingly ridiculous. + #define distortion 0.08 + + // Simulate a CRT gamma of 2.4. + #define inputGamma 2.4 + + // Compensate for the standard sRGB gamma of 2.2. + #define outputGamma 2.2 + + // Macros. + #define TEX2D(c) pow(texture2D(source[0], (c)), vec4(inputGamma)) + #define PI 3.141592653589 + + // Apply radial distortion to the given coordinate. + vec2 radialDistortion(vec2 coord) + { + vec2 cc = coord - 0.5; + float dist = dot(cc, cc) * distortion; + return (coord + cc * (1.0 + dist) * dist); + } + + // Calculate the influence of a scanline on the current pixel. + // + // 'distance' is the distance in texture coordinates from the current + // pixel to the scanline in question. + // 'color' is the colour of the scanline at the horizontal location of + // the current pixel. + vec4 scanlineWeights(float distance, vec4 color) + { + // The "width" of the scanline beam is set as 2*(1 + x^4) for + // each RGB channel. + vec4 wid = 2.0 + 2.0 * pow(color, vec4(4.0)); + + // The "weights" lines basically specify the formula that gives + // you the profile of the beam, i.e. the intensity as + // a function of distance from the vertical center of the + // scanline. In this case, it is gaussian if width=2, and + // becomes nongaussian for larger widths. Ideally this should + // be normalized so that the integral across the beam is + // independent of its width. That is, for a narrower beam + // "weights" should have a higher peak at the center of the + // scanline than for a wider beam. + vec4 weights = vec4(distance / 0.3); + return 1.4 * exp(-pow(weights * inversesqrt(0.5 * wid), wid)) / (0.6 + 0.2 * wid); + } + +void main() { + // Here's a helpful diagram to keep in mind while trying to + // understand the code: + // + // | | | | | + // ------------------------------- + // | | | | | + // | 01 | 11 | 21 | 31 | <-- current scanline + // | | @ | | | + // ------------------------------- + // | | | | | + // | 02 | 12 | 22 | 32 | <-- next scanline + // | | | | | + // ------------------------------- + // | | | | | + // + // Each character-cell represents a pixel on the output + // surface, "@" represents the current pixel (always somewhere + // in the bottom half of the current scan-line, or the top-half + // of the next scanline). The grid of lines represents the + // edges of the texels of the underlying texture. + + // Texture coordinates of the texel containing the active pixel. + #ifdef CURVATURE + vec2 xy = radialDistortion(texCoord); + #else + vec2 xy = texCoord; + #endif + + // Of all the pixels that are mapped onto the texel we are + // currently rendering, which pixel are we currently rendering? + vec2 ratio_scale = xy * sourceSize[0].xy - vec2(0.5); + vec2 uv_ratio = fract(ratio_scale); + + // Snap to the center of the underlying texel. + xy.y = (floor(ratio_scale.y) + 0.5) / sourceSize[0].y; + + // Calculate the effective colour of the current and next + // scanlines at the horizontal location of the current pixel. + vec4 col = TEX2D(xy); + vec4 col2 = TEX2D(xy + vec2(0.0, one.y)); + + // Calculate the influence of the current and next scanlines on + // the current pixel. + vec4 weights = scanlineWeights(uv_ratio.y, col); + vec4 weights2 = scanlineWeights(1.0 - uv_ratio.y, col2); + vec3 mul_res = (col * weights + col2 * weights2).rgb; + + // dot-mask emulation: + // Output pixels are alternately tinted green and magenta. + vec3 dotMaskWeights = mix( + vec3(1.0, 0.7, 1.0), + vec3(0.7, 1.0, 0.7), + floor(mod(mod_factor, 2.0)) + ); + + mul_res *= dotMaskWeights; + + fragColor = vec4(pow(mul_res, vec3(1.0 / outputGamma)), 1.0); +} diff -Nru retro-gtk-0.12.1/retro-gtk/glsl-filters/crt-simple.vs retro-gtk-0.14.0/retro-gtk/glsl-filters/crt-simple.vs --- retro-gtk-0.12.1/retro-gtk/glsl-filters/crt-simple.vs 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/glsl-filters/crt-simple.vs 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,32 @@ +#version 150 + +in vec4 position; +in vec2 texCoord; + +out Vertex { + vec2 texCoord; + // Define some calculations that will be used in fragment shader. + vec2 one; + float mod_factor; +} vertexOut; + +uniform float relative_aspect_ratio; +uniform vec4 targetSize; +uniform vec2 outputSize; +uniform vec4 sourceSize[]; + +void main() { + vec2 aspect_ratio = (relative_aspect_ratio > 1.0f) ? + vec2 (1.0 / relative_aspect_ratio, 1.0) : + vec2 (1.0, relative_aspect_ratio); + + vertexOut.texCoord = texCoord; + gl_Position = vec4 (position.xy * aspect_ratio, 0.0, 1.0); + // gl_Position = vec4 (position); + + // The size of one texel, in texture-coordinates. + vertexOut.one = 1.0 / sourceSize[0].xy; + + // Resulting X pixel-coordinate of the pixel we're drawing. + vertexOut.mod_factor = texCoord.x * targetSize.x * aspect_ratio.x; +} diff -Nru retro-gtk-0.12.1/retro-gtk/input/controller.c retro-gtk-0.14.0/retro-gtk/input/controller.c --- retro-gtk-0.12.1/retro-gtk/input/controller.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/input/controller.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,135 +0,0 @@ -/* controller.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from controller.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include -#include -#include - - -#define RETRO_TYPE_CONTROLLER_DESCRIPTION (retro_controller_description_get_type ()) -typedef struct _RetroControllerDescription RetroControllerDescription; -#define _g_free0(var) (var = (g_free (var), NULL)) - -#define RETRO_TYPE_CONTROLLER_INFO (retro_controller_info_get_type ()) -typedef struct _RetroControllerInfo RetroControllerInfo; -#define _retro_controller_description_free0(var) ((var == NULL) ? NULL : (var = (retro_controller_description_free (var), NULL))) - -struct _RetroControllerDescription { - gchar* desc; - guint id; -}; - -struct _RetroControllerInfo { - RetroControllerDescription* types; - guint num_types; -}; - - - -GType retro_controller_description_get_type (void) G_GNUC_CONST; -RetroControllerDescription* retro_controller_description_dup (const RetroControllerDescription* self); -void retro_controller_description_free (RetroControllerDescription* self); -void retro_controller_description_copy (const RetroControllerDescription* self, RetroControllerDescription* dest); -void retro_controller_description_destroy (RetroControllerDescription* self); -GType retro_controller_info_get_type (void) G_GNUC_CONST; -RetroControllerInfo* retro_controller_info_dup (const RetroControllerInfo* self); -void retro_controller_info_free (RetroControllerInfo* self); -void retro_controller_info_copy (const RetroControllerInfo* self, RetroControllerInfo* dest); -void retro_controller_info_destroy (RetroControllerInfo* self); - - -void retro_controller_description_copy (const RetroControllerDescription* self, RetroControllerDescription* dest) { - const gchar* _tmp0_; - gchar* _tmp1_; - guint _tmp2_; - _tmp0_ = (*self).desc; - _tmp1_ = g_strdup (_tmp0_); - _g_free0 ((*dest).desc); - (*dest).desc = _tmp1_; - _tmp2_ = (*self).id; - (*dest).id = _tmp2_; -} - - -void retro_controller_description_destroy (RetroControllerDescription* self) { - _g_free0 ((*self).desc); -} - - -RetroControllerDescription* retro_controller_description_dup (const RetroControllerDescription* self) { - RetroControllerDescription* dup; - dup = g_new0 (RetroControllerDescription, 1); - retro_controller_description_copy (self, dup); - return dup; -} - - -void retro_controller_description_free (RetroControllerDescription* self) { - retro_controller_description_destroy (self); - g_free (self); -} - - -GType retro_controller_description_get_type (void) { - static volatile gsize retro_controller_description_type_id__volatile = 0; - if (g_once_init_enter (&retro_controller_description_type_id__volatile)) { - GType retro_controller_description_type_id; - retro_controller_description_type_id = g_boxed_type_register_static ("RetroControllerDescription", (GBoxedCopyFunc) retro_controller_description_dup, (GBoxedFreeFunc) retro_controller_description_free); - g_once_init_leave (&retro_controller_description_type_id__volatile, retro_controller_description_type_id); - } - return retro_controller_description_type_id__volatile; -} - - -static gpointer _retro_controller_description_dup0 (gpointer self) { - return self ? retro_controller_description_dup (self) : NULL; -} - - -void retro_controller_info_copy (const RetroControllerInfo* self, RetroControllerInfo* dest) { - RetroControllerDescription* _tmp0_; - RetroControllerDescription* _tmp1_; - guint _tmp2_; - _tmp0_ = (*self).types; - _tmp1_ = _retro_controller_description_dup0 (_tmp0_); - _retro_controller_description_free0 ((*dest).types); - (*dest).types = _tmp1_; - _tmp2_ = (*self).num_types; - (*dest).num_types = _tmp2_; -} - - -void retro_controller_info_destroy (RetroControllerInfo* self) { - _retro_controller_description_free0 ((*self).types); -} - - -RetroControllerInfo* retro_controller_info_dup (const RetroControllerInfo* self) { - RetroControllerInfo* dup; - dup = g_new0 (RetroControllerInfo, 1); - retro_controller_info_copy (self, dup); - return dup; -} - - -void retro_controller_info_free (RetroControllerInfo* self) { - retro_controller_info_destroy (self); - g_free (self); -} - - -GType retro_controller_info_get_type (void) { - static volatile gsize retro_controller_info_type_id__volatile = 0; - if (g_once_init_enter (&retro_controller_info_type_id__volatile)) { - GType retro_controller_info_type_id; - retro_controller_info_type_id = g_boxed_type_register_static ("RetroControllerInfo", (GBoxedCopyFunc) retro_controller_info_dup, (GBoxedFreeFunc) retro_controller_info_free); - g_once_init_leave (&retro_controller_info_type_id__volatile, retro_controller_info_type_id); - } - return retro_controller_info_type_id__volatile; -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/input/controller.vala retro-gtk-0.14.0/retro-gtk/input/controller.vala --- retro-gtk-0.12.1/retro-gtk/input/controller.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/input/controller.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -namespace Retro { - -/** - * TODO Change visibility once the interface have been tested. - */ -internal struct ControllerDescription { - string desc; - uint id; -} - -/** - * TODO Change visibility once the interface have been tested. - */ -internal struct ControllerInfo { - ControllerDescription? types; - uint num_types; -} - -} - diff -Nru retro-gtk-0.12.1/retro-gtk/input/device.c retro-gtk-0.14.0/retro-gtk/input/device.c --- retro-gtk-0.12.1/retro-gtk/input/device.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/input/device.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,300 +0,0 @@ -/* device.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from device.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include -#include -#include - - -#define RETRO_TYPE_DEVICE_TYPE (retro_device_type_get_type ()) - -#define RETRO_TYPE_JOYPAD_ID (retro_joypad_id_get_type ()) - -#define RETRO_TYPE_ANALOG_INDEX (retro_analog_index_get_type ()) - -#define RETRO_TYPE_ANALOG_ID (retro_analog_id_get_type ()) - -#define RETRO_TYPE_MOUSE_ID (retro_mouse_id_get_type ()) - -#define RETRO_TYPE_LIGHTGUN_ID (retro_lightgun_id_get_type ()) - -#define RETRO_TYPE_POINTER_ID (retro_pointer_id_get_type ()) - -#define RETRO_TYPE_INPUT_DESCRIPTOR (retro_input_descriptor_get_type ()) -typedef struct _RetroInputDescriptor RetroInputDescriptor; -#define _g_free0(var) (var = (g_free (var), NULL)) - -typedef enum { - RETRO_DEVICE_TYPE_TYPE_MASK = 0xff, - RETRO_DEVICE_TYPE_NONE = 0, - RETRO_DEVICE_TYPE_JOYPAD = 1, - RETRO_DEVICE_TYPE_MOUSE = 2, - RETRO_DEVICE_TYPE_KEYBOARD = 3, - RETRO_DEVICE_TYPE_LIGHTGUN = 4, - RETRO_DEVICE_TYPE_ANALOG = 5, - RETRO_DEVICE_TYPE_POINTER = 6 -} RetroDeviceType; - -typedef enum { - RETRO_JOYPAD_ID_B, - RETRO_JOYPAD_ID_Y, - RETRO_JOYPAD_ID_SELECT, - RETRO_JOYPAD_ID_START, - RETRO_JOYPAD_ID_UP, - RETRO_JOYPAD_ID_DOWN, - RETRO_JOYPAD_ID_LEFT, - RETRO_JOYPAD_ID_RIGHT, - RETRO_JOYPAD_ID_A, - RETRO_JOYPAD_ID_X, - RETRO_JOYPAD_ID_L, - RETRO_JOYPAD_ID_R, - RETRO_JOYPAD_ID_L2, - RETRO_JOYPAD_ID_R2, - RETRO_JOYPAD_ID_L3, - RETRO_JOYPAD_ID_R3, - RETRO_JOYPAD_ID_COUNT -} RetroJoypadId; - -typedef enum { - RETRO_ANALOG_INDEX_LEFT, - RETRO_ANALOG_INDEX_RIGHT -} RetroAnalogIndex; - -typedef enum { - RETRO_ANALOG_ID_X, - RETRO_ANALOG_ID_Y -} RetroAnalogId; - -typedef enum { - RETRO_MOUSE_ID_X, - RETRO_MOUSE_ID_Y, - RETRO_MOUSE_ID_LEFT, - RETRO_MOUSE_ID_RIGHT, - RETRO_MOUSE_ID_WHEELUP, - RETRO_MOUSE_ID_WHEELDOWN, - RETRO_MOUSE_ID_MIDDLE, - RETRO_MOUSE_ID_HORIZ_WHEELUP, - RETRO_MOUSE_ID_HORIZ_WHEELDOWN -} RetroMouseId; - -typedef enum { - RETRO_LIGHTGUN_ID_X, - RETRO_LIGHTGUN_ID_Y, - RETRO_LIGHTGUN_ID_TRIGGER, - RETRO_LIGHTGUN_ID_CURSOR, - RETRO_LIGHTGUN_ID_TURBO, - RETRO_LIGHTGUN_ID_PAUSE, - RETRO_LIGHTGUN_ID_START -} RetroLightgunId; - -typedef enum { - RETRO_POINTER_ID_X, - RETRO_POINTER_ID_Y, - RETRO_POINTER_ID_PRESSED -} RetroPointerId; - -struct _RetroInputDescriptor { - guint port; - RetroDeviceType device; - guint index; - guint id; - gchar* description; -}; - - - -GType retro_device_type_get_type (void) G_GNUC_CONST; -RetroDeviceType retro_device_type_get_basic_type (RetroDeviceType self); -GType retro_joypad_id_get_type (void) G_GNUC_CONST; -GType retro_analog_index_get_type (void) G_GNUC_CONST; -GType retro_analog_id_get_type (void) G_GNUC_CONST; -GType retro_mouse_id_get_type (void) G_GNUC_CONST; -GType retro_lightgun_id_get_type (void) G_GNUC_CONST; -GType retro_pointer_id_get_type (void) G_GNUC_CONST; -GType retro_input_descriptor_get_type (void) G_GNUC_CONST; -RetroInputDescriptor* retro_input_descriptor_dup (const RetroInputDescriptor* self); -void retro_input_descriptor_free (RetroInputDescriptor* self); -void retro_input_descriptor_copy (const RetroInputDescriptor* self, RetroInputDescriptor* dest); -void retro_input_descriptor_destroy (RetroInputDescriptor* self); - - -/** - * Gets the basic type of a device type. - * - * Applies the type mask on a DeviceType to get its basic type. - * If the device type is already basic, it will return the same type. - * - * E.g DeviceType.JOYPAD_MULTITAP.get_basic_type () returns - * DeviceType.JOYPAD, and DeviceType.JOYPAD.get_basic_type () also - * returns Type.JOYPAD. - * - * @return the basic type of a device type - */ -RetroDeviceType retro_device_type_get_basic_type (RetroDeviceType self) { - RetroDeviceType result = 0; - result = self & RETRO_DEVICE_TYPE_TYPE_MASK; - return result; -} - - -/** - * The device types. - */ -GType retro_device_type_get_type (void) { - static volatile gsize retro_device_type_type_id__volatile = 0; - if (g_once_init_enter (&retro_device_type_type_id__volatile)) { - static const GEnumValue values[] = {{RETRO_DEVICE_TYPE_TYPE_MASK, "RETRO_DEVICE_TYPE_TYPE_MASK", "type-mask"}, {RETRO_DEVICE_TYPE_NONE, "RETRO_DEVICE_TYPE_NONE", "none"}, {RETRO_DEVICE_TYPE_JOYPAD, "RETRO_DEVICE_TYPE_JOYPAD", "joypad"}, {RETRO_DEVICE_TYPE_MOUSE, "RETRO_DEVICE_TYPE_MOUSE", "mouse"}, {RETRO_DEVICE_TYPE_KEYBOARD, "RETRO_DEVICE_TYPE_KEYBOARD", "keyboard"}, {RETRO_DEVICE_TYPE_LIGHTGUN, "RETRO_DEVICE_TYPE_LIGHTGUN", "lightgun"}, {RETRO_DEVICE_TYPE_ANALOG, "RETRO_DEVICE_TYPE_ANALOG", "analog"}, {RETRO_DEVICE_TYPE_POINTER, "RETRO_DEVICE_TYPE_POINTER", "pointer"}, {0, NULL, NULL}}; - GType retro_device_type_type_id; - retro_device_type_type_id = g_enum_register_static ("RetroDeviceType", values); - g_once_init_leave (&retro_device_type_type_id__volatile, retro_device_type_type_id); - } - return retro_device_type_type_id__volatile; -} - - -/** - * The input types of a joypad. - */ -GType retro_joypad_id_get_type (void) { - static volatile gsize retro_joypad_id_type_id__volatile = 0; - if (g_once_init_enter (&retro_joypad_id_type_id__volatile)) { - static const GEnumValue values[] = {{RETRO_JOYPAD_ID_B, "RETRO_JOYPAD_ID_B", "b"}, {RETRO_JOYPAD_ID_Y, "RETRO_JOYPAD_ID_Y", "y"}, {RETRO_JOYPAD_ID_SELECT, "RETRO_JOYPAD_ID_SELECT", "select"}, {RETRO_JOYPAD_ID_START, "RETRO_JOYPAD_ID_START", "start"}, {RETRO_JOYPAD_ID_UP, "RETRO_JOYPAD_ID_UP", "up"}, {RETRO_JOYPAD_ID_DOWN, "RETRO_JOYPAD_ID_DOWN", "down"}, {RETRO_JOYPAD_ID_LEFT, "RETRO_JOYPAD_ID_LEFT", "left"}, {RETRO_JOYPAD_ID_RIGHT, "RETRO_JOYPAD_ID_RIGHT", "right"}, {RETRO_JOYPAD_ID_A, "RETRO_JOYPAD_ID_A", "a"}, {RETRO_JOYPAD_ID_X, "RETRO_JOYPAD_ID_X", "x"}, {RETRO_JOYPAD_ID_L, "RETRO_JOYPAD_ID_L", "l"}, {RETRO_JOYPAD_ID_R, "RETRO_JOYPAD_ID_R", "r"}, {RETRO_JOYPAD_ID_L2, "RETRO_JOYPAD_ID_L2", "l2"}, {RETRO_JOYPAD_ID_R2, "RETRO_JOYPAD_ID_R2", "r2"}, {RETRO_JOYPAD_ID_L3, "RETRO_JOYPAD_ID_L3", "l3"}, {RETRO_JOYPAD_ID_R3, "RETRO_JOYPAD_ID_R3", "r3"}, {RETRO_JOYPAD_ID_COUNT, "RETRO_JOYPAD_ID_COUNT", "count"}, {0, NULL, NULL}}; - GType retro_joypad_id_type_id; - retro_joypad_id_type_id = g_enum_register_static ("RetroJoypadId", values); - g_once_init_leave (&retro_joypad_id_type_id__volatile, retro_joypad_id_type_id); - } - return retro_joypad_id_type_id__volatile; -} - - -/** - * The analog sticks of an analog joypad. - */ -GType retro_analog_index_get_type (void) { - static volatile gsize retro_analog_index_type_id__volatile = 0; - if (g_once_init_enter (&retro_analog_index_type_id__volatile)) { - static const GEnumValue values[] = {{RETRO_ANALOG_INDEX_LEFT, "RETRO_ANALOG_INDEX_LEFT", "left"}, {RETRO_ANALOG_INDEX_RIGHT, "RETRO_ANALOG_INDEX_RIGHT", "right"}, {0, NULL, NULL}}; - GType retro_analog_index_type_id; - retro_analog_index_type_id = g_enum_register_static ("RetroAnalogIndex", values); - g_once_init_leave (&retro_analog_index_type_id__volatile, retro_analog_index_type_id); - } - return retro_analog_index_type_id__volatile; -} - - -/** - * The axes of an analog stick. - */ -GType retro_analog_id_get_type (void) { - static volatile gsize retro_analog_id_type_id__volatile = 0; - if (g_once_init_enter (&retro_analog_id_type_id__volatile)) { - static const GEnumValue values[] = {{RETRO_ANALOG_ID_X, "RETRO_ANALOG_ID_X", "x"}, {RETRO_ANALOG_ID_Y, "RETRO_ANALOG_ID_Y", "y"}, {0, NULL, NULL}}; - GType retro_analog_id_type_id; - retro_analog_id_type_id = g_enum_register_static ("RetroAnalogId", values); - g_once_init_leave (&retro_analog_id_type_id__volatile, retro_analog_id_type_id); - } - return retro_analog_id_type_id__volatile; -} - - -/** - * The input types of a mouse. - */ -GType retro_mouse_id_get_type (void) { - static volatile gsize retro_mouse_id_type_id__volatile = 0; - if (g_once_init_enter (&retro_mouse_id_type_id__volatile)) { - static const GEnumValue values[] = {{RETRO_MOUSE_ID_X, "RETRO_MOUSE_ID_X", "x"}, {RETRO_MOUSE_ID_Y, "RETRO_MOUSE_ID_Y", "y"}, {RETRO_MOUSE_ID_LEFT, "RETRO_MOUSE_ID_LEFT", "left"}, {RETRO_MOUSE_ID_RIGHT, "RETRO_MOUSE_ID_RIGHT", "right"}, {RETRO_MOUSE_ID_WHEELUP, "RETRO_MOUSE_ID_WHEELUP", "wheelup"}, {RETRO_MOUSE_ID_WHEELDOWN, "RETRO_MOUSE_ID_WHEELDOWN", "wheeldown"}, {RETRO_MOUSE_ID_MIDDLE, "RETRO_MOUSE_ID_MIDDLE", "middle"}, {RETRO_MOUSE_ID_HORIZ_WHEELUP, "RETRO_MOUSE_ID_HORIZ_WHEELUP", "horiz-wheelup"}, {RETRO_MOUSE_ID_HORIZ_WHEELDOWN, "RETRO_MOUSE_ID_HORIZ_WHEELDOWN", "horiz-wheeldown"}, {0, NULL, NULL}}; - GType retro_mouse_id_type_id; - retro_mouse_id_type_id = g_enum_register_static ("RetroMouseId", values); - g_once_init_leave (&retro_mouse_id_type_id__volatile, retro_mouse_id_type_id); - } - return retro_mouse_id_type_id__volatile; -} - - -/** - * The input types of a lightgun. - */ -GType retro_lightgun_id_get_type (void) { - static volatile gsize retro_lightgun_id_type_id__volatile = 0; - if (g_once_init_enter (&retro_lightgun_id_type_id__volatile)) { - static const GEnumValue values[] = {{RETRO_LIGHTGUN_ID_X, "RETRO_LIGHTGUN_ID_X", "x"}, {RETRO_LIGHTGUN_ID_Y, "RETRO_LIGHTGUN_ID_Y", "y"}, {RETRO_LIGHTGUN_ID_TRIGGER, "RETRO_LIGHTGUN_ID_TRIGGER", "trigger"}, {RETRO_LIGHTGUN_ID_CURSOR, "RETRO_LIGHTGUN_ID_CURSOR", "cursor"}, {RETRO_LIGHTGUN_ID_TURBO, "RETRO_LIGHTGUN_ID_TURBO", "turbo"}, {RETRO_LIGHTGUN_ID_PAUSE, "RETRO_LIGHTGUN_ID_PAUSE", "pause"}, {RETRO_LIGHTGUN_ID_START, "RETRO_LIGHTGUN_ID_START", "start"}, {0, NULL, NULL}}; - GType retro_lightgun_id_type_id; - retro_lightgun_id_type_id = g_enum_register_static ("RetroLightgunId", values); - g_once_init_leave (&retro_lightgun_id_type_id__volatile, retro_lightgun_id_type_id); - } - return retro_lightgun_id_type_id__volatile; -} - - -/** - * The input types of a pointer. - */ -GType retro_pointer_id_get_type (void) { - static volatile gsize retro_pointer_id_type_id__volatile = 0; - if (g_once_init_enter (&retro_pointer_id_type_id__volatile)) { - static const GEnumValue values[] = {{RETRO_POINTER_ID_X, "RETRO_POINTER_ID_X", "x"}, {RETRO_POINTER_ID_Y, "RETRO_POINTER_ID_Y", "y"}, {RETRO_POINTER_ID_PRESSED, "RETRO_POINTER_ID_PRESSED", "pressed"}, {0, NULL, NULL}}; - GType retro_pointer_id_type_id; - retro_pointer_id_type_id = g_enum_register_static ("RetroPointerId", values); - g_once_init_leave (&retro_pointer_id_type_id__volatile, retro_pointer_id_type_id); - } - return retro_pointer_id_type_id__volatile; -} - - -void retro_input_descriptor_copy (const RetroInputDescriptor* self, RetroInputDescriptor* dest) { - guint _tmp0_; - RetroDeviceType _tmp1_; - guint _tmp2_; - guint _tmp3_; - const gchar* _tmp4_; - gchar* _tmp5_; - _tmp0_ = (*self).port; - (*dest).port = _tmp0_; - _tmp1_ = (*self).device; - (*dest).device = _tmp1_; - _tmp2_ = (*self).index; - (*dest).index = _tmp2_; - _tmp3_ = (*self).id; - (*dest).id = _tmp3_; - _tmp4_ = (*self).description; - _tmp5_ = g_strdup (_tmp4_); - _g_free0 ((*dest).description); - (*dest).description = _tmp5_; -} - - -void retro_input_descriptor_destroy (RetroInputDescriptor* self) { - _g_free0 ((*self).description); -} - - -RetroInputDescriptor* retro_input_descriptor_dup (const RetroInputDescriptor* self) { - RetroInputDescriptor* dup; - dup = g_new0 (RetroInputDescriptor, 1); - retro_input_descriptor_copy (self, dup); - return dup; -} - - -void retro_input_descriptor_free (RetroInputDescriptor* self) { - retro_input_descriptor_destroy (self); - g_free (self); -} - - -GType retro_input_descriptor_get_type (void) { - static volatile gsize retro_input_descriptor_type_id__volatile = 0; - if (g_once_init_enter (&retro_input_descriptor_type_id__volatile)) { - GType retro_input_descriptor_type_id; - retro_input_descriptor_type_id = g_boxed_type_register_static ("RetroInputDescriptor", (GBoxedCopyFunc) retro_input_descriptor_dup, (GBoxedFreeFunc) retro_input_descriptor_free); - g_once_init_leave (&retro_input_descriptor_type_id__volatile, retro_input_descriptor_type_id); - } - return retro_input_descriptor_type_id__volatile; -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/input/device.vala retro-gtk-0.14.0/retro-gtk/input/device.vala --- retro-gtk-0.12.1/retro-gtk/input/device.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/input/device.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,126 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -namespace Retro { - -/** - * The device types. - */ -public enum DeviceType { - TYPE_MASK = 0xff, - - /* See RETRO_DEVICE_NONE and below in libretro.h for docs */ - NONE = 0, - JOYPAD = 1, - MOUSE = 2, - KEYBOARD = 3, - LIGHTGUN = 4, - ANALOG = 5, - POINTER = 6; - - /** - * Gets the basic type of a device type. - * - * Applies the type mask on a DeviceType to get its basic type. - * If the device type is already basic, it will return the same type. - * - * E.g DeviceType.JOYPAD_MULTITAP.get_basic_type () returns - * DeviceType.JOYPAD, and DeviceType.JOYPAD.get_basic_type () also - * returns Type.JOYPAD. - * - * @return the basic type of a device type - */ - public DeviceType get_basic_type () { - return this & DeviceType.TYPE_MASK; - } -} - -/** - * The input types of a joypad. - */ -public enum JoypadId { - B, - Y, - SELECT, - START, - UP, - DOWN, - LEFT, - RIGHT, - A, - X, - L, - R, - L2, - R2, - L3, - R3, - COUNT, -} - -/** - * The analog sticks of an analog joypad. - */ -public enum AnalogIndex { - LEFT, - RIGHT -} - -/** - * The axes of an analog stick. - */ -public enum AnalogId { - X, - Y -} - -/** - * The input types of a mouse. - */ -private enum MouseId { - X, - Y, - LEFT, - RIGHT, - WHEELUP, - WHEELDOWN, - MIDDLE, - HORIZ_WHEELUP, - HORIZ_WHEELDOWN, -} - -/** - * The input types of a lightgun. - */ -private enum LightgunId { - X, - Y, - TRIGGER, - CURSOR, - TURBO, - PAUSE, - START -} - -/** - * The input types of a pointer. - */ -private enum PointerId { - X, - Y, - PRESSED -} - -/** - * Describes an input source. - */ -public struct InputDescriptor { - uint port; - DeviceType device; - uint index; - uint id; - - string description; -} - -} - diff -Nru retro-gtk-0.12.1/retro-gtk/input/input.c retro-gtk-0.14.0/retro-gtk/input/input.c --- retro-gtk-0.12.1/retro-gtk/input/input.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/input/input.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,220 +0,0 @@ -/* input.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from input.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include -#include -#include -#include - - -#define RETRO_TYPE_INPUT (retro_input_get_type ()) -#define RETRO_INPUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_INPUT, RetroInput)) -#define RETRO_IS_INPUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_INPUT)) -#define RETRO_INPUT_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_INPUT, RetroInputIface)) - -typedef struct _RetroInput RetroInput; -typedef struct _RetroInputIface RetroInputIface; - -#define RETRO_TYPE_DEVICE_TYPE (retro_device_type_get_type ()) - -#define RETRO_TYPE_INPUT_DESCRIPTOR (retro_input_descriptor_get_type ()) -typedef struct _RetroInputDescriptor RetroInputDescriptor; - -#define RETRO_TYPE_INPUT_DEVICE (retro_input_device_get_type ()) -#define RETRO_INPUT_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_INPUT_DEVICE, RetroInputDevice)) -#define RETRO_IS_INPUT_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_INPUT_DEVICE)) -#define RETRO_INPUT_DEVICE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_INPUT_DEVICE, RetroInputDeviceIface)) - -typedef struct _RetroInputDevice RetroInputDevice; -typedef struct _RetroInputDeviceIface RetroInputDeviceIface; -enum { - RETRO_INPUT_CONTROLLER_CONNECTED_SIGNAL, - RETRO_INPUT_CONTROLLER_DISCONNECTED_SIGNAL, - RETRO_INPUT_KEY_EVENT_SIGNAL, - RETRO_INPUT_LAST_SIGNAL -}; -static guint retro_input_signals[RETRO_INPUT_LAST_SIGNAL] = {0}; - -typedef enum { - RETRO_DEVICE_TYPE_TYPE_MASK = 0xff, - RETRO_DEVICE_TYPE_NONE = 0, - RETRO_DEVICE_TYPE_JOYPAD = 1, - RETRO_DEVICE_TYPE_MOUSE = 2, - RETRO_DEVICE_TYPE_KEYBOARD = 3, - RETRO_DEVICE_TYPE_LIGHTGUN = 4, - RETRO_DEVICE_TYPE_ANALOG = 5, - RETRO_DEVICE_TYPE_POINTER = 6 -} RetroDeviceType; - -struct _RetroInputDescriptor { - guint port; - RetroDeviceType device; - guint index; - guint id; - gchar* description; -}; - -struct _RetroInputDeviceIface { - GTypeInterface parent_iface; - void (*poll) (RetroInputDevice* self); - gint16 (*get_input_state) (RetroInputDevice* self, RetroDeviceType device, guint index, guint id); - RetroDeviceType (*get_device_type) (RetroInputDevice* self); - guint64 (*get_device_capabilities) (RetroInputDevice* self); -}; - -typedef void (*RetroInputControllerCallback) (guint port, RetroInputDevice* device, void* user_data); -struct _RetroInputIface { - GTypeInterface parent_iface; - void (*poll) (RetroInput* self); - gint16 (*get_state) (RetroInput* self, guint port, RetroDeviceType device, guint index, guint id); - void (*set_descriptors) (RetroInput* self, RetroInputDescriptor* input_descriptors, int input_descriptors_length1); - guint64 (*get_device_capabilities) (RetroInput* self); - void (*foreach_controller) (RetroInput* self, RetroInputControllerCallback callback, void* callback_target); -}; - - - -GType retro_device_type_get_type (void) G_GNUC_CONST; -GType retro_input_descriptor_get_type (void) G_GNUC_CONST; -RetroInputDescriptor* retro_input_descriptor_dup (const RetroInputDescriptor* self); -void retro_input_descriptor_free (RetroInputDescriptor* self); -void retro_input_descriptor_copy (const RetroInputDescriptor* self, RetroInputDescriptor* dest); -void retro_input_descriptor_destroy (RetroInputDescriptor* self); -GType retro_input_device_get_type (void) G_GNUC_CONST; -GType retro_input_get_type (void) G_GNUC_CONST; -void retro_input_poll (RetroInput* self); -gint16 retro_input_get_state (RetroInput* self, guint port, RetroDeviceType device, guint index, guint id); -void retro_input_set_descriptors (RetroInput* self, RetroInputDescriptor* input_descriptors, int input_descriptors_length1); -guint64 retro_input_get_device_capabilities (RetroInput* self); -void retro_input_foreach_controller (RetroInput* self, RetroInputControllerCallback callback, void* callback_target); -static void g_cclosure_user_marshal_VOID__UINT_OBJECT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); -static void g_cclosure_user_marshal_BOOLEAN__BOXED (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); - - -/** - * Asks the frontend to poll inputs. - */ -void retro_input_poll (RetroInput* self) { - g_return_if_fail (self != NULL); - RETRO_INPUT_GET_INTERFACE (self)->poll (self); -} - - -/** - * Gets the state of a specific input. - * - * @param port the port of the controller to check the input state from - * @param device the type of the device to check the input state from - * @param index the index of given input (left or right stick) - * @param id the specific input to get (button or axis) - * @return the value of the given state - */ -gint16 retro_input_get_state (RetroInput* self, guint port, RetroDeviceType device, guint index, guint id) { - g_return_val_if_fail (self != NULL, 0); - return RETRO_INPUT_GET_INTERFACE (self)->get_state (self, port, device, index, id); -} - - -/** - * Sets how the {@link core} handles the inputs in a human-readable way. - * - * @param input_descriptors the descriptors of the inputs used by the - * {@link core} - */ -void retro_input_set_descriptors (RetroInput* self, RetroInputDescriptor* input_descriptors, int input_descriptors_length1) { - g_return_if_fail (self != NULL); - RETRO_INPUT_GET_INTERFACE (self)->set_descriptors (self, input_descriptors, input_descriptors_length1); -} - - -/** - * Gets the flags of the devices implemented by the frontend. - * - * @return flags of the devices implemented by the frontend - */ -guint64 retro_input_get_device_capabilities (RetroInput* self) { - g_return_val_if_fail (self != NULL, 0ULL); - return RETRO_INPUT_GET_INTERFACE (self)->get_device_capabilities (self); -} - - -void retro_input_foreach_controller (RetroInput* self, RetroInputControllerCallback callback, void* callback_target) { - g_return_if_fail (self != NULL); - RETRO_INPUT_GET_INTERFACE (self)->foreach_controller (self, callback, callback_target); -} - - -static void g_cclosure_user_marshal_VOID__UINT_OBJECT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { - typedef void (*GMarshalFunc_VOID__UINT_OBJECT) (gpointer data1, guint arg_1, gpointer arg_2, gpointer data2); - register GMarshalFunc_VOID__UINT_OBJECT callback; - register GCClosure * cc; - register gpointer data1; - register gpointer data2; - cc = (GCClosure *) closure; - g_return_if_fail (n_param_values == 3); - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = param_values->data[0].v_pointer; - } else { - data1 = param_values->data[0].v_pointer; - data2 = closure->data; - } - callback = (GMarshalFunc_VOID__UINT_OBJECT) (marshal_data ? marshal_data : cc->callback); - callback (data1, g_value_get_uint (param_values + 1), g_value_get_object (param_values + 2), data2); -} - - -static void g_cclosure_user_marshal_BOOLEAN__BOXED (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { - typedef gboolean (*GMarshalFunc_BOOLEAN__BOXED) (gpointer data1, gpointer arg_1, gpointer data2); - register GMarshalFunc_BOOLEAN__BOXED callback; - register GCClosure * cc; - register gpointer data1; - register gpointer data2; - gboolean v_return; - cc = (GCClosure *) closure; - g_return_if_fail (return_value != NULL); - g_return_if_fail (n_param_values == 2); - if (G_CCLOSURE_SWAP_DATA (closure)) { - data1 = closure->data; - data2 = param_values->data[0].v_pointer; - } else { - data1 = param_values->data[0].v_pointer; - data2 = closure->data; - } - callback = (GMarshalFunc_BOOLEAN__BOXED) (marshal_data ? marshal_data : cc->callback); - v_return = callback (data1, g_value_get_boxed (param_values + 1), data2); - g_value_set_boolean (return_value, v_return); -} - - -static void retro_input_base_init (RetroInputIface * iface) { - static gboolean initialized = FALSE; - if (!initialized) { - initialized = TRUE; - retro_input_signals[RETRO_INPUT_CONTROLLER_CONNECTED_SIGNAL] = g_signal_new ("controller_connected", RETRO_TYPE_INPUT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__UINT_OBJECT, G_TYPE_NONE, 2, G_TYPE_UINT, RETRO_TYPE_INPUT_DEVICE); - retro_input_signals[RETRO_INPUT_CONTROLLER_DISCONNECTED_SIGNAL] = g_signal_new ("controller_disconnected", RETRO_TYPE_INPUT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__UINT, G_TYPE_NONE, 1, G_TYPE_UINT); - retro_input_signals[RETRO_INPUT_KEY_EVENT_SIGNAL] = g_signal_new ("key_event", RETRO_TYPE_INPUT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_BOOLEAN__BOXED, G_TYPE_BOOLEAN, 1, gdk_event_get_type ()); - } -} - - -/** - * An interface to render a {@link Core}'s inputs. - */ -GType retro_input_get_type (void) { - static volatile gsize retro_input_type_id__volatile = 0; - if (g_once_init_enter (&retro_input_type_id__volatile)) { - static const GTypeInfo g_define_type_info = { sizeof (RetroInputIface), (GBaseInitFunc) retro_input_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL }; - GType retro_input_type_id; - retro_input_type_id = g_type_register_static (G_TYPE_INTERFACE, "RetroInput", &g_define_type_info, 0); - g_type_interface_add_prerequisite (retro_input_type_id, G_TYPE_OBJECT); - g_once_init_leave (&retro_input_type_id__volatile, retro_input_type_id); - } - return retro_input_type_id__volatile; -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/input/input-device.c retro-gtk-0.14.0/retro-gtk/input/input-device.c --- retro-gtk-0.12.1/retro-gtk/input/input-device.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/input/input-device.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,94 +0,0 @@ -/* input-device.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from input-device.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include - - -#define RETRO_TYPE_INPUT_DEVICE (retro_input_device_get_type ()) -#define RETRO_INPUT_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_INPUT_DEVICE, RetroInputDevice)) -#define RETRO_IS_INPUT_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_INPUT_DEVICE)) -#define RETRO_INPUT_DEVICE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_INPUT_DEVICE, RetroInputDeviceIface)) - -typedef struct _RetroInputDevice RetroInputDevice; -typedef struct _RetroInputDeviceIface RetroInputDeviceIface; - -#define RETRO_TYPE_DEVICE_TYPE (retro_device_type_get_type ()) - -typedef enum { - RETRO_DEVICE_TYPE_TYPE_MASK = 0xff, - RETRO_DEVICE_TYPE_NONE = 0, - RETRO_DEVICE_TYPE_JOYPAD = 1, - RETRO_DEVICE_TYPE_MOUSE = 2, - RETRO_DEVICE_TYPE_KEYBOARD = 3, - RETRO_DEVICE_TYPE_LIGHTGUN = 4, - RETRO_DEVICE_TYPE_ANALOG = 5, - RETRO_DEVICE_TYPE_POINTER = 6 -} RetroDeviceType; - -struct _RetroInputDeviceIface { - GTypeInterface parent_iface; - void (*poll) (RetroInputDevice* self); - gint16 (*get_input_state) (RetroInputDevice* self, RetroDeviceType device, guint index, guint id); - RetroDeviceType (*get_device_type) (RetroInputDevice* self); - guint64 (*get_device_capabilities) (RetroInputDevice* self); -}; - - - -GType retro_device_type_get_type (void) G_GNUC_CONST; -GType retro_input_device_get_type (void) G_GNUC_CONST; -void retro_input_device_poll (RetroInputDevice* self); -gint16 retro_input_device_get_input_state (RetroInputDevice* self, RetroDeviceType device, guint index, guint id); -RetroDeviceType retro_input_device_get_device_type (RetroInputDevice* self); -guint64 retro_input_device_get_device_capabilities (RetroInputDevice* self); - - -void retro_input_device_poll (RetroInputDevice* self) { - g_return_if_fail (self != NULL); - RETRO_INPUT_DEVICE_GET_INTERFACE (self)->poll (self); -} - - -gint16 retro_input_device_get_input_state (RetroInputDevice* self, RetroDeviceType device, guint index, guint id) { - g_return_val_if_fail (self != NULL, 0); - return RETRO_INPUT_DEVICE_GET_INTERFACE (self)->get_input_state (self, device, index, id); -} - - -RetroDeviceType retro_input_device_get_device_type (RetroInputDevice* self) { - g_return_val_if_fail (self != NULL, 0); - return RETRO_INPUT_DEVICE_GET_INTERFACE (self)->get_device_type (self); -} - - -guint64 retro_input_device_get_device_capabilities (RetroInputDevice* self) { - g_return_val_if_fail (self != NULL, 0ULL); - return RETRO_INPUT_DEVICE_GET_INTERFACE (self)->get_device_capabilities (self); -} - - -static void retro_input_device_base_init (RetroInputDeviceIface * iface) { - static gboolean initialized = FALSE; - if (!initialized) { - initialized = TRUE; - } -} - - -GType retro_input_device_get_type (void) { - static volatile gsize retro_input_device_type_id__volatile = 0; - if (g_once_init_enter (&retro_input_device_type_id__volatile)) { - static const GTypeInfo g_define_type_info = { sizeof (RetroInputDeviceIface), (GBaseInitFunc) retro_input_device_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL }; - GType retro_input_device_type_id; - retro_input_device_type_id = g_type_register_static (G_TYPE_INTERFACE, "RetroInputDevice", &g_define_type_info, 0); - g_type_interface_add_prerequisite (retro_input_device_type_id, G_TYPE_OBJECT); - g_once_init_leave (&retro_input_device_type_id__volatile, retro_input_device_type_id); - } - return retro_input_device_type_id__volatile; -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/input/input-device-manager.c retro-gtk-0.14.0/retro-gtk/input/input-device-manager.c --- retro-gtk-0.12.1/retro-gtk/input/input-device-manager.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/input/input-device-manager.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,502 +0,0 @@ -/* input-device-manager.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from input-device-manager.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include -#include -#include -#include -#include - - -#define RETRO_TYPE_INPUT (retro_input_get_type ()) -#define RETRO_INPUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_INPUT, RetroInput)) -#define RETRO_IS_INPUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_INPUT)) -#define RETRO_INPUT_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_INPUT, RetroInputIface)) - -typedef struct _RetroInput RetroInput; -typedef struct _RetroInputIface RetroInputIface; - -#define RETRO_TYPE_DEVICE_TYPE (retro_device_type_get_type ()) - -#define RETRO_TYPE_INPUT_DESCRIPTOR (retro_input_descriptor_get_type ()) -typedef struct _RetroInputDescriptor RetroInputDescriptor; - -#define RETRO_TYPE_INPUT_DEVICE (retro_input_device_get_type ()) -#define RETRO_INPUT_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_INPUT_DEVICE, RetroInputDevice)) -#define RETRO_IS_INPUT_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_INPUT_DEVICE)) -#define RETRO_INPUT_DEVICE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_INPUT_DEVICE, RetroInputDeviceIface)) - -typedef struct _RetroInputDevice RetroInputDevice; -typedef struct _RetroInputDeviceIface RetroInputDeviceIface; - -#define RETRO_TYPE_INPUT_DEVICE_MANAGER (retro_input_device_manager_get_type ()) -#define RETRO_INPUT_DEVICE_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_INPUT_DEVICE_MANAGER, RetroInputDeviceManager)) -#define RETRO_INPUT_DEVICE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_INPUT_DEVICE_MANAGER, RetroInputDeviceManagerClass)) -#define RETRO_IS_INPUT_DEVICE_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_INPUT_DEVICE_MANAGER)) -#define RETRO_IS_INPUT_DEVICE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_INPUT_DEVICE_MANAGER)) -#define RETRO_INPUT_DEVICE_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_INPUT_DEVICE_MANAGER, RetroInputDeviceManagerClass)) - -typedef struct _RetroInputDeviceManager RetroInputDeviceManager; -typedef struct _RetroInputDeviceManagerClass RetroInputDeviceManagerClass; -typedef struct _RetroInputDeviceManagerPrivate RetroInputDeviceManagerPrivate; -enum { - RETRO_INPUT_DEVICE_MANAGER_DUMMY_PROPERTY, - RETRO_INPUT_DEVICE_MANAGER_LAST_PROPERTY -}; -static GParamSpec* retro_input_device_manager_properties[RETRO_INPUT_DEVICE_MANAGER_LAST_PROPERTY]; -#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL))) -#define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL))) -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) - -typedef enum { - RETRO_DEVICE_TYPE_TYPE_MASK = 0xff, - RETRO_DEVICE_TYPE_NONE = 0, - RETRO_DEVICE_TYPE_JOYPAD = 1, - RETRO_DEVICE_TYPE_MOUSE = 2, - RETRO_DEVICE_TYPE_KEYBOARD = 3, - RETRO_DEVICE_TYPE_LIGHTGUN = 4, - RETRO_DEVICE_TYPE_ANALOG = 5, - RETRO_DEVICE_TYPE_POINTER = 6 -} RetroDeviceType; - -struct _RetroInputDescriptor { - guint port; - RetroDeviceType device; - guint index; - guint id; - gchar* description; -}; - -struct _RetroInputDeviceIface { - GTypeInterface parent_iface; - void (*poll) (RetroInputDevice* self); - gint16 (*get_input_state) (RetroInputDevice* self, RetroDeviceType device, guint index, guint id); - RetroDeviceType (*get_device_type) (RetroInputDevice* self); - guint64 (*get_device_capabilities) (RetroInputDevice* self); -}; - -typedef void (*RetroInputControllerCallback) (guint port, RetroInputDevice* device, void* user_data); -struct _RetroInputIface { - GTypeInterface parent_iface; - void (*poll) (RetroInput* self); - gint16 (*get_state) (RetroInput* self, guint port, RetroDeviceType device, guint index, guint id); - void (*set_descriptors) (RetroInput* self, RetroInputDescriptor* input_descriptors, int input_descriptors_length1); - guint64 (*get_device_capabilities) (RetroInput* self); - void (*foreach_controller) (RetroInput* self, RetroInputControllerCallback callback, void* callback_target); -}; - -struct _RetroInputDeviceManager { - GObject parent_instance; - RetroInputDeviceManagerPrivate * priv; -}; - -struct _RetroInputDeviceManagerClass { - GObjectClass parent_class; -}; - -struct _RetroInputDeviceManagerPrivate { - GHashTable* controller_devices; -}; - - -static gpointer retro_input_device_manager_parent_class = NULL; -static RetroInputIface * retro_input_device_manager_retro_input_parent_iface = NULL; - -GType retro_device_type_get_type (void) G_GNUC_CONST; -GType retro_input_descriptor_get_type (void) G_GNUC_CONST; -RetroInputDescriptor* retro_input_descriptor_dup (const RetroInputDescriptor* self); -void retro_input_descriptor_free (RetroInputDescriptor* self); -void retro_input_descriptor_copy (const RetroInputDescriptor* self, RetroInputDescriptor* dest); -void retro_input_descriptor_destroy (RetroInputDescriptor* self); -GType retro_input_device_get_type (void) G_GNUC_CONST; -GType retro_input_get_type (void) G_GNUC_CONST; -GType retro_input_device_manager_get_type (void) G_GNUC_CONST; -#define RETRO_INPUT_DEVICE_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), RETRO_TYPE_INPUT_DEVICE_MANAGER, RetroInputDeviceManagerPrivate)) -static void retro_input_device_manager_real_poll (RetroInput* base); -void retro_input_device_poll (RetroInputDevice* self); -static gint16 retro_input_device_manager_real_get_state (RetroInput* base, guint port, RetroDeviceType device, guint index, guint id); -guint64 retro_input_device_get_device_capabilities (RetroInputDevice* self); -gint16 retro_input_device_get_input_state (RetroInputDevice* self, RetroDeviceType device, guint index, guint id); -static void retro_input_device_manager_real_set_descriptors (RetroInput* base, RetroInputDescriptor* input_descriptors, int input_descriptors_length1); -static guint64 retro_input_device_manager_real_get_device_capabilities (RetroInput* base); -void retro_input_device_manager_set_controller_device (RetroInputDeviceManager* self, guint port, RetroInputDevice* device); -static guint* _uint_dup (guint* self); -void retro_input_device_manager_set_keyboard (RetroInputDeviceManager* self, GtkWidget* widget); -static gboolean __lambda4_ (RetroInputDeviceManager* self, GtkWidget* w, GdkEventKey* e); -static gboolean ___lambda4__gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self); -static gboolean __lambda5_ (RetroInputDeviceManager* self, GtkWidget* w, GdkEventKey* e); -static gboolean ___lambda5__gtk_widget_key_release_event (GtkWidget* _sender, GdkEventKey* event, gpointer self); -void retro_input_device_manager_remove_controller_device (RetroInputDeviceManager* self, guint port); -static void retro_input_device_manager_real_foreach_controller (RetroInput* base, RetroInputControllerCallback callback, void* callback_target); -RetroInputDeviceManager* retro_input_device_manager_new (void); -RetroInputDeviceManager* retro_input_device_manager_construct (GType object_type); -static GObject * retro_input_device_manager_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); -static void _g_free0_ (gpointer var); -static void _g_object_unref0_ (gpointer var); -static void retro_input_device_manager_finalize (GObject * obj); - - -static void retro_input_device_manager_real_poll (RetroInput* base) { - RetroInputDeviceManager * self; - GHashTable* _tmp0_; - GList* _tmp1_; - self = (RetroInputDeviceManager*) base; - _tmp0_ = self->priv->controller_devices; - _tmp1_ = g_hash_table_get_values (_tmp0_); - { - GList* device_collection = NULL; - GList* device_it = NULL; - device_collection = _tmp1_; - for (device_it = device_collection; device_it != NULL; device_it = device_it->next) { - RetroInputDevice* device = NULL; - device = (RetroInputDevice*) device_it->data; - { - RetroInputDevice* _tmp2_; - _tmp2_ = device; - if (_tmp2_ != NULL) { - RetroInputDevice* _tmp3_; - _tmp3_ = device; - retro_input_device_poll (_tmp3_); - } - } - } - _g_list_free0 (device_collection); - } -} - - -static gpointer _g_object_ref0 (gpointer self) { - return self ? g_object_ref (self) : NULL; -} - - -static gint16 retro_input_device_manager_real_get_state (RetroInput* base, guint port, RetroDeviceType device, guint index, guint id) { - RetroInputDeviceManager * self; - gint16 result = 0; - GHashTable* _tmp0_; - guint _tmp1_; - gboolean _tmp2_; - self = (RetroInputDeviceManager*) base; - _tmp0_ = self->priv->controller_devices; - _tmp1_ = port; - _tmp2_ = g_hash_table_contains (_tmp0_, &_tmp1_); - if (_tmp2_) { - RetroInputDevice* controller_device = NULL; - GHashTable* _tmp3_; - guint _tmp4_; - gconstpointer _tmp5_; - RetroInputDevice* _tmp6_; - RetroInputDevice* _tmp7_; - _tmp3_ = self->priv->controller_devices; - _tmp4_ = port; - _tmp5_ = g_hash_table_lookup (_tmp3_, &_tmp4_); - _tmp6_ = _g_object_ref0 ((RetroInputDevice*) _tmp5_); - controller_device = _tmp6_; - _tmp7_ = controller_device; - if (_tmp7_ != NULL) { - guint64 capabilities = 0ULL; - RetroInputDevice* _tmp8_; - guint64 _tmp9_; - gboolean is_capable = FALSE; - guint64 _tmp10_; - RetroDeviceType _tmp11_; - gboolean _tmp12_; - _tmp8_ = controller_device; - _tmp9_ = retro_input_device_get_device_capabilities (_tmp8_); - capabilities = _tmp9_; - _tmp10_ = capabilities; - _tmp11_ = device; - is_capable = (_tmp10_ & (1 << _tmp11_)) != ((guint64) 0); - _tmp12_ = is_capable; - if (_tmp12_) { - RetroInputDevice* _tmp13_; - RetroDeviceType _tmp14_; - guint _tmp15_; - guint _tmp16_; - gint16 _tmp17_; - _tmp13_ = controller_device; - _tmp14_ = device; - _tmp15_ = index; - _tmp16_ = id; - _tmp17_ = retro_input_device_get_input_state (_tmp13_, _tmp14_, _tmp15_, _tmp16_); - result = _tmp17_; - _g_object_unref0 (controller_device); - return result; - } - } - _g_object_unref0 (controller_device); - } - result = (gint16) 0; - return result; -} - - -static void retro_input_device_manager_real_set_descriptors (RetroInput* base, RetroInputDescriptor* input_descriptors, int input_descriptors_length1) { - RetroInputDeviceManager * self; - self = (RetroInputDeviceManager*) base; -} - - -static guint64 retro_input_device_manager_real_get_device_capabilities (RetroInput* base) { - RetroInputDeviceManager * self; - guint64 result = 0ULL; - self = (RetroInputDeviceManager*) base; - result = (guint64) 0; - return result; -} - - -static guint* _uint_dup (guint* self) { - guint* dup; - dup = g_new0 (guint, 1); - memcpy (dup, self, sizeof (guint)); - return dup; -} - - -static gpointer __uint_dup0 (gpointer self) { - return self ? _uint_dup (self) : NULL; -} - - -void retro_input_device_manager_set_controller_device (RetroInputDeviceManager* self, guint port, RetroInputDevice* device) { - GHashTable* _tmp0_; - guint _tmp1_; - gboolean _tmp2_; - guint _tmp13_; - RetroInputDevice* _tmp14_; - g_return_if_fail (self != NULL); - g_return_if_fail (device != NULL); - _tmp0_ = self->priv->controller_devices; - _tmp1_ = port; - _tmp2_ = g_hash_table_contains (_tmp0_, &_tmp1_); - if (_tmp2_) { - GHashTable* _tmp3_; - guint _tmp4_; - guint* _tmp5_; - RetroInputDevice* _tmp6_; - RetroInputDevice* _tmp7_; - _tmp3_ = self->priv->controller_devices; - _tmp4_ = port; - _tmp5_ = __uint_dup0 (&_tmp4_); - _tmp6_ = device; - _tmp7_ = _g_object_ref0 (_tmp6_); - g_hash_table_replace (_tmp3_, _tmp5_, _tmp7_); - } else { - GHashTable* _tmp8_; - guint _tmp9_; - guint* _tmp10_; - RetroInputDevice* _tmp11_; - RetroInputDevice* _tmp12_; - _tmp8_ = self->priv->controller_devices; - _tmp9_ = port; - _tmp10_ = __uint_dup0 (&_tmp9_); - _tmp11_ = device; - _tmp12_ = _g_object_ref0 (_tmp11_); - g_hash_table_insert (_tmp8_, _tmp10_, _tmp12_); - } - _tmp13_ = port; - _tmp14_ = device; - g_signal_emit_by_name ((RetroInput*) self, "controller-connected", _tmp13_, _tmp14_); -} - - -static gboolean __lambda4_ (RetroInputDeviceManager* self, GtkWidget* w, GdkEventKey* e) { - gboolean result = FALSE; - GdkEventKey* _tmp0_; - gboolean _tmp1_ = FALSE; - g_return_val_if_fail (w != NULL, FALSE); - g_return_val_if_fail (e != NULL, FALSE); - _tmp0_ = e; - g_signal_emit_by_name ((RetroInput*) self, "key-event", _tmp0_, &_tmp1_); - result = _tmp1_; - return result; -} - - -static gboolean ___lambda4__gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self) { - gboolean result; - result = __lambda4_ ((RetroInputDeviceManager*) self, _sender, event); - return result; -} - - -static gboolean __lambda5_ (RetroInputDeviceManager* self, GtkWidget* w, GdkEventKey* e) { - gboolean result = FALSE; - GdkEventKey* _tmp0_; - gboolean _tmp1_ = FALSE; - g_return_val_if_fail (w != NULL, FALSE); - g_return_val_if_fail (e != NULL, FALSE); - _tmp0_ = e; - g_signal_emit_by_name ((RetroInput*) self, "key-event", _tmp0_, &_tmp1_); - result = _tmp1_; - return result; -} - - -static gboolean ___lambda5__gtk_widget_key_release_event (GtkWidget* _sender, GdkEventKey* event, gpointer self) { - gboolean result; - result = __lambda5_ ((RetroInputDeviceManager*) self, _sender, event); - return result; -} - - -void retro_input_device_manager_set_keyboard (RetroInputDeviceManager* self, GtkWidget* widget) { - GtkWidget* _tmp0_; - GtkWidget* _tmp1_; - g_return_if_fail (self != NULL); - g_return_if_fail (widget != NULL); - _tmp0_ = widget; - g_signal_connect_object (_tmp0_, "key-press-event", (GCallback) ___lambda4__gtk_widget_key_press_event, self, 0); - _tmp1_ = widget; - g_signal_connect_object (_tmp1_, "key-release-event", (GCallback) ___lambda5__gtk_widget_key_release_event, self, 0); -} - - -void retro_input_device_manager_remove_controller_device (RetroInputDeviceManager* self, guint port) { - GHashTable* _tmp0_; - guint _tmp1_; - gboolean _tmp2_; - GHashTable* _tmp3_; - guint _tmp4_; - guint _tmp5_; - g_return_if_fail (self != NULL); - _tmp0_ = self->priv->controller_devices; - _tmp1_ = port; - _tmp2_ = g_hash_table_contains (_tmp0_, &_tmp1_); - if (!_tmp2_) { - return; - } - _tmp3_ = self->priv->controller_devices; - _tmp4_ = port; - g_hash_table_remove (_tmp3_, &_tmp4_); - _tmp5_ = port; - g_signal_emit_by_name ((RetroInput*) self, "controller-disconnected", _tmp5_); -} - - -static void retro_input_device_manager_real_foreach_controller (RetroInput* base, RetroInputControllerCallback callback, void* callback_target) { - RetroInputDeviceManager * self; - GHashTable* _tmp0_; - GList* _tmp1_; - self = (RetroInputDeviceManager*) base; - _tmp0_ = self->priv->controller_devices; - _tmp1_ = g_hash_table_get_keys (_tmp0_); - { - GList* port_collection = NULL; - GList* port_it = NULL; - port_collection = _tmp1_; - for (port_it = port_collection; port_it != NULL; port_it = port_it->next) { - guint* port = NULL; - port = (guint*) port_it->data; - { - RetroInputControllerCallback _tmp2_; - void* _tmp2__target; - guint* _tmp3_; - GHashTable* _tmp4_; - guint* _tmp5_; - gconstpointer _tmp6_; - _tmp2_ = callback; - _tmp2__target = callback_target; - _tmp3_ = port; - _tmp4_ = self->priv->controller_devices; - _tmp5_ = port; - _tmp6_ = g_hash_table_lookup (_tmp4_, _tmp5_); - _tmp2_ (*_tmp3_, (RetroInputDevice*) _tmp6_, _tmp2__target); - } - } - _g_list_free0 (port_collection); - } -} - - -RetroInputDeviceManager* retro_input_device_manager_construct (GType object_type) { - RetroInputDeviceManager * self = NULL; - self = (RetroInputDeviceManager*) g_object_new (object_type, NULL); - return self; -} - - -RetroInputDeviceManager* retro_input_device_manager_new (void) { - return retro_input_device_manager_construct (RETRO_TYPE_INPUT_DEVICE_MANAGER); -} - - -static void _g_free0_ (gpointer var) { - (var == NULL) ? NULL : (var = (g_free (var), NULL)); -} - - -static void _g_object_unref0_ (gpointer var) { - (var == NULL) ? NULL : (var = (g_object_unref (var), NULL)); -} - - -static GObject * retro_input_device_manager_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { - GObject * obj; - GObjectClass * parent_class; - RetroInputDeviceManager * self; - GHashFunc _tmp0_; - GEqualFunc _tmp1_; - GHashTable* _tmp2_; - parent_class = G_OBJECT_CLASS (retro_input_device_manager_parent_class); - obj = parent_class->constructor (type, n_construct_properties, construct_properties); - self = G_TYPE_CHECK_INSTANCE_CAST (obj, RETRO_TYPE_INPUT_DEVICE_MANAGER, RetroInputDeviceManager); - _tmp0_ = g_int_hash; - _tmp1_ = g_int_equal; - _tmp2_ = g_hash_table_new_full (_tmp0_, _tmp1_, _g_free0_, _g_object_unref0_); - _g_hash_table_unref0 (self->priv->controller_devices); - self->priv->controller_devices = _tmp2_; - return obj; -} - - -static void retro_input_device_manager_class_init (RetroInputDeviceManagerClass * klass) { - retro_input_device_manager_parent_class = g_type_class_peek_parent (klass); - g_type_class_add_private (klass, sizeof (RetroInputDeviceManagerPrivate)); - G_OBJECT_CLASS (klass)->constructor = retro_input_device_manager_constructor; - G_OBJECT_CLASS (klass)->finalize = retro_input_device_manager_finalize; -} - - -static void retro_input_device_manager_retro_input_interface_init (RetroInputIface * iface) { - retro_input_device_manager_retro_input_parent_iface = g_type_interface_peek_parent (iface); - iface->poll = (void (*) (RetroInput *)) retro_input_device_manager_real_poll; - iface->get_state = (gint16 (*) (RetroInput *, guint, RetroDeviceType, guint, guint)) retro_input_device_manager_real_get_state; - iface->set_descriptors = (void (*) (RetroInput *, RetroInputDescriptor*, int)) retro_input_device_manager_real_set_descriptors; - iface->get_device_capabilities = (guint64 (*) (RetroInput *)) retro_input_device_manager_real_get_device_capabilities; - iface->foreach_controller = (void (*) (RetroInput *, RetroInputControllerCallback, void*)) retro_input_device_manager_real_foreach_controller; -} - - -static void retro_input_device_manager_instance_init (RetroInputDeviceManager * self) { - self->priv = RETRO_INPUT_DEVICE_MANAGER_GET_PRIVATE (self); -} - - -static void retro_input_device_manager_finalize (GObject * obj) { - RetroInputDeviceManager * self; - self = G_TYPE_CHECK_INSTANCE_CAST (obj, RETRO_TYPE_INPUT_DEVICE_MANAGER, RetroInputDeviceManager); - _g_hash_table_unref0 (self->priv->controller_devices); - G_OBJECT_CLASS (retro_input_device_manager_parent_class)->finalize (obj); -} - - -GType retro_input_device_manager_get_type (void) { - static volatile gsize retro_input_device_manager_type_id__volatile = 0; - if (g_once_init_enter (&retro_input_device_manager_type_id__volatile)) { - static const GTypeInfo g_define_type_info = { sizeof (RetroInputDeviceManagerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) retro_input_device_manager_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RetroInputDeviceManager), 0, (GInstanceInitFunc) retro_input_device_manager_instance_init, NULL }; - static const GInterfaceInfo retro_input_info = { (GInterfaceInitFunc) retro_input_device_manager_retro_input_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; - GType retro_input_device_manager_type_id; - retro_input_device_manager_type_id = g_type_register_static (G_TYPE_OBJECT, "RetroInputDeviceManager", &g_define_type_info, 0); - g_type_add_interface_static (retro_input_device_manager_type_id, RETRO_TYPE_INPUT, &retro_input_info); - g_once_init_leave (&retro_input_device_manager_type_id__volatile, retro_input_device_manager_type_id); - } - return retro_input_device_manager_type_id__volatile; -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/input/input-device-manager.vala retro-gtk-0.14.0/retro-gtk/input/input-device-manager.vala --- retro-gtk-0.12.1/retro-gtk/input/input-device-manager.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/input/input-device-manager.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,70 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -namespace Retro { - -public class InputDeviceManager : Object, Input { - private HashTable controller_devices; - - construct { - controller_devices = new HashTable (int_hash, int_equal); - } - - private void poll () { - foreach (var device in controller_devices.get_values ()) - if (device != null) device.poll (); - } - - private int16 get_state (uint port, DeviceType device, uint index, uint id) { - if (controller_devices.contains (port)) { - var controller_device = controller_devices.lookup (port); - if (controller_device != null) { - var capabilities = controller_device.get_device_capabilities (); - bool is_capable = (capabilities & (1 << device)) != 0; - if (is_capable) return controller_device.get_input_state (device, index, id); - } - } - - return 0; - } - - public void set_descriptors (InputDescriptor[] input_descriptors) { - // TODO - } - - public uint64 get_device_capabilities () { - // TODO - return 0; - } - - public void set_controller_device (uint port, InputDevice device) { - if (controller_devices.contains (port)) - controller_devices.replace (port, device); - else - controller_devices.insert (port, device); - - controller_connected (port, device); - } - - public void set_keyboard (Gtk.Widget widget) { - widget.key_press_event.connect ((w, e) => key_event (e)); - widget.key_release_event.connect ((w, e) => key_event (e)); - } - - public void remove_controller_device (uint port) { - if (!controller_devices.contains (port)) - return; - - controller_devices.remove (port); - - controller_disconnected (port); - } - - public void foreach_controller (Input.ControllerCallback callback) { - foreach (var port in controller_devices.get_keys ()) { - callback (port, controller_devices[port]); - } - } -} - -} - diff -Nru retro-gtk-0.12.1/retro-gtk/input/input-device.vala retro-gtk-0.14.0/retro-gtk/input/input-device.vala --- retro-gtk-0.12.1/retro-gtk/input/input-device.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/input/input-device.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -namespace Retro { - -public interface InputDevice : Object { - public abstract void poll (); - public abstract int16 get_input_state (DeviceType device, uint index, uint id); - - public abstract DeviceType get_device_type (); - public abstract uint64 get_device_capabilities (); -} - -} - diff -Nru retro-gtk-0.12.1/retro-gtk/input/input.vala retro-gtk-0.14.0/retro-gtk/input/input.vala --- retro-gtk-0.12.1/retro-gtk/input/input.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/input/input.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -namespace Retro { - -/** - * An interface to render a {@link Core}'s inputs. - */ -public interface Input : Object { - public delegate void ControllerCallback (uint port, InputDevice device); - - public signal void controller_connected (uint port, InputDevice device); - public signal void controller_disconnected (uint port); - - public signal bool key_event (Gdk.EventKey event); - - /** - * Asks the frontend to poll inputs. - */ - public abstract void poll (); - - /** - * Gets the state of a specific input. - * - * @param port the port of the controller to check the input state from - * @param device the type of the device to check the input state from - * @param index the index of given input (left or right stick) - * @param id the specific input to get (button or axis) - * @return the value of the given state - */ - public abstract int16 get_state (uint port, DeviceType device, uint index, uint id); - - /** - * Sets how the {@link core} handles the inputs in a human-readable way. - * - * @param input_descriptors the descriptors of the inputs used by the - * {@link core} - */ - public abstract void set_descriptors (InputDescriptor[] input_descriptors); - - /** - * Gets the flags of the devices implemented by the frontend. - * - * @return flags of the devices implemented by the frontend - */ - public abstract uint64 get_device_capabilities (); - - public abstract void foreach_controller (ControllerCallback callback); - -} - -} diff -Nru retro-gtk-0.12.1/retro-gtk/input/retro-keyboard-key.c retro-gtk-0.14.0/retro-gtk/input/retro-keyboard-key.c --- retro-gtk-0.12.1/retro-gtk/input/retro-keyboard-key.c 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/input/retro-keyboard-key.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,152 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -#include "retro-keyboard-key.h" - -RetroKeyboardModifierKey -retro_keyboard_modifier_key_converter (guint keyval, - GdkModifierType modifiers) -{ - RetroKeyboardModifierKey retro_modifiers = RETRO_KEYBOARD_MODIFIER_KEY_NONE; - - if (modifiers & GDK_SHIFT_MASK) - retro_modifiers |= RETRO_KEYBOARD_MODIFIER_KEY_SHIFT; - if (modifiers & GDK_CONTROL_MASK) - retro_modifiers |= RETRO_KEYBOARD_MODIFIER_KEY_CTRL; - if (modifiers & GDK_MOD1_MASK) - retro_modifiers |= RETRO_KEYBOARD_MODIFIER_KEY_ALT; - if (modifiers & GDK_META_MASK) - retro_modifiers |= RETRO_KEYBOARD_MODIFIER_KEY_META; - if (keyval == GDK_KEY_Num_Lock) - retro_modifiers |= RETRO_KEYBOARD_MODIFIER_KEY_NUMLOCK; - if (modifiers & GDK_LOCK_MASK) - retro_modifiers |= RETRO_KEYBOARD_MODIFIER_KEY_CAPSLOCK; - if (keyval == GDK_KEY_Scroll_Lock) - retro_modifiers |= RETRO_KEYBOARD_MODIFIER_KEY_SCROLLOCK; - - return retro_modifiers; -} - -RetroKeyboardKey -retro_keyboard_key_converter (guint keyval) -{ - guint key; - - // Common keys (0x0020 to 0x00fe) - if (keyval < 0x80) { - key = (0x7f & keyval); - - // If the key is uppercase, turn it lower case - if (key >= 'A' && key <= 'Z') - return key + 0x20; - - return key; - } - - // Function keys - key = keyval - GDK_KEY_F1; - if (key < 15) - return RETRO_KEYBOARD_KEY_F1 + key; - - // Keypad digits - key = keyval - GDK_KEY_KP_0; - if (key < 10) - return RETRO_KEYBOARD_KEY_KP0 + key; - - // Various keys - // Missing keys: MODE, COMPOSE, POWER - switch (keyval) { - case GDK_KEY_BackSpace: - return RETRO_KEYBOARD_KEY_BACKSPACE; - case GDK_KEY_Tab: - return RETRO_KEYBOARD_KEY_TAB; - case GDK_KEY_Clear: - return RETRO_KEYBOARD_KEY_CLEAR; - case GDK_KEY_Return: - return RETRO_KEYBOARD_KEY_RETURN; - case GDK_KEY_Pause: - return RETRO_KEYBOARD_KEY_PAUSE; - case GDK_KEY_Escape: - return RETRO_KEYBOARD_KEY_ESCAPE; - case GDK_KEY_Delete: - return RETRO_KEYBOARD_KEY_DELETE; - - case GDK_KEY_Up: - return RETRO_KEYBOARD_KEY_UP; - case GDK_KEY_Down: - return RETRO_KEYBOARD_KEY_DOWN; - case GDK_KEY_Left: - return RETRO_KEYBOARD_KEY_LEFT; - case GDK_KEY_Right: - return RETRO_KEYBOARD_KEY_RIGHT; - case GDK_KEY_Insert: - return RETRO_KEYBOARD_KEY_INSERT; - case GDK_KEY_Home: - return RETRO_KEYBOARD_KEY_HOME; - case GDK_KEY_End: - return RETRO_KEYBOARD_KEY_END; - case GDK_KEY_Page_Up: - return RETRO_KEYBOARD_KEY_PAGEUP; - case GDK_KEY_Page_Down: - return RETRO_KEYBOARD_KEY_PAGEDOWN; - - case GDK_KEY_KP_Decimal: - return RETRO_KEYBOARD_KEY_KP_PERIOD; - case GDK_KEY_KP_Divide: - return RETRO_KEYBOARD_KEY_KP_DIVIDE; - case GDK_KEY_KP_Multiply: - return RETRO_KEYBOARD_KEY_KP_MULTIPLY; - case GDK_KEY_KP_Subtract: - return RETRO_KEYBOARD_KEY_KP_MINUS; - case GDK_KEY_KP_Add: - return RETRO_KEYBOARD_KEY_KP_PLUS; - case GDK_KEY_KP_Enter: - return RETRO_KEYBOARD_KEY_KP_ENTER; - case GDK_KEY_KP_Equal: - return RETRO_KEYBOARD_KEY_KP_EQUALS; - - case GDK_KEY_Num_Lock: - return RETRO_KEYBOARD_KEY_NUMLOCK; - case GDK_KEY_Caps_Lock: - return RETRO_KEYBOARD_KEY_CAPSLOCK; - case GDK_KEY_Scroll_Lock: - return RETRO_KEYBOARD_KEY_SCROLLOCK; - case GDK_KEY_Shift_R: - return RETRO_KEYBOARD_KEY_RSHIFT; - case GDK_KEY_Shift_L: - return RETRO_KEYBOARD_KEY_LSHIFT; - case GDK_KEY_Control_R: - return RETRO_KEYBOARD_KEY_RCTRL; - case GDK_KEY_Control_L: - return RETRO_KEYBOARD_KEY_LCTRL; - case GDK_KEY_Alt_R: - return RETRO_KEYBOARD_KEY_RALT; - case GDK_KEY_Alt_L: - return RETRO_KEYBOARD_KEY_LALT; - case GDK_KEY_Meta_R: - return RETRO_KEYBOARD_KEY_RMETA; - case GDK_KEY_Meta_L: - return RETRO_KEYBOARD_KEY_LMETA; - case GDK_KEY_Super_R: - return RETRO_KEYBOARD_KEY_RSUPER; - case GDK_KEY_Super_L: - return RETRO_KEYBOARD_KEY_LSUPER; - - case GDK_KEY_Help: - return RETRO_KEYBOARD_KEY_HELP; - case GDK_KEY_Print: - return RETRO_KEYBOARD_KEY_PRINT; - case GDK_KEY_Sys_Req: - return RETRO_KEYBOARD_KEY_SYSREQ; - case GDK_KEY_Break: - return RETRO_KEYBOARD_KEY_BREAK; - case GDK_KEY_Menu: - return RETRO_KEYBOARD_KEY_MENU; - case GDK_KEY_EuroSign: - return RETRO_KEYBOARD_KEY_EURO; - case GDK_KEY_Undo: - return RETRO_KEYBOARD_KEY_UNDO; - - default: - return RETRO_KEYBOARD_KEY_UNKNOWN; - } -} diff -Nru retro-gtk-0.12.1/retro-gtk/input/retro-keyboard-key.h retro-gtk-0.14.0/retro-gtk/input/retro-keyboard-key.h --- retro-gtk-0.12.1/retro-gtk/input/retro-keyboard-key.h 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/input/retro-keyboard-key.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,168 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -#ifndef RETRO_KEYBOARD_KEY_H -#define RETRO_KEYBOARD_KEY_H - -#include - -G_BEGIN_DECLS - -typedef enum { - RETRO_KEYBOARD_KEY_UNKNOWN = 0, - RETRO_KEYBOARD_KEY_FIRST = 0, - RETRO_KEYBOARD_KEY_BACKSPACE = 8, - RETRO_KEYBOARD_KEY_TAB = 9, - RETRO_KEYBOARD_KEY_CLEAR = 12, - RETRO_KEYBOARD_KEY_RETURN = 13, - RETRO_KEYBOARD_KEY_PAUSE = 19, - RETRO_KEYBOARD_KEY_ESCAPE = 27, - RETRO_KEYBOARD_KEY_SPACE = 32, - RETRO_KEYBOARD_KEY_EXCLAIM = 33, - RETRO_KEYBOARD_KEY_QUOTEDBL = 34, - RETRO_KEYBOARD_KEY_HASH = 35, - RETRO_KEYBOARD_KEY_DOLLAR = 36, - RETRO_KEYBOARD_KEY_AMPERSAND = 38, - RETRO_KEYBOARD_KEY_QUOTE = 39, - RETRO_KEYBOARD_KEY_LEFTPAREN = 40, - RETRO_KEYBOARD_KEY_RIGHTPAREN = 41, - RETRO_KEYBOARD_KEY_ASTERISK = 42, - RETRO_KEYBOARD_KEY_PLUS = 43, - RETRO_KEYBOARD_KEY_COMMA = 44, - RETRO_KEYBOARD_KEY_MINUS = 45, - RETRO_KEYBOARD_KEY_PERIOD = 46, - RETRO_KEYBOARD_KEY_SLASH = 47, - RETRO_KEYBOARD_KEY_ZERO = 48, - RETRO_KEYBOARD_KEY_ONE = 49, - RETRO_KEYBOARD_KEY_TWO = 50, - RETRO_KEYBOARD_KEY_THREE = 51, - RETRO_KEYBOARD_KEY_FOUR = 52, - RETRO_KEYBOARD_KEY_FINE = 53, - RETRO_KEYBOARD_KEY_SIX = 54, - RETRO_KEYBOARD_KEY_SEVEN = 55, - RETRO_KEYBOARD_KEY_HEIGHT = 56, - RETRO_KEYBOARD_KEY_NINE = 57, - RETRO_KEYBOARD_KEY_COLON = 58, - RETRO_KEYBOARD_KEY_SEMICOLON = 59, - RETRO_KEYBOARD_KEY_LESS = 60, - RETRO_KEYBOARD_KEY_EQUALS = 61, - RETRO_KEYBOARD_KEY_GREATER = 62, - RETRO_KEYBOARD_KEY_QUESTION = 63, - RETRO_KEYBOARD_KEY_AT = 64, - RETRO_KEYBOARD_KEY_LEFTBRACKET = 91, - RETRO_KEYBOARD_KEY_BACKSLASH = 92, - RETRO_KEYBOARD_KEY_RIGHTBRACKET = 93, - RETRO_KEYBOARD_KEY_CARET = 94, - RETRO_KEYBOARD_KEY_UNDERSCORE = 95, - RETRO_KEYBOARD_KEY_BACKQUOTE = 96, - RETRO_KEYBOARD_KEY_a = 97, - RETRO_KEYBOARD_KEY_b = 98, - RETRO_KEYBOARD_KEY_c = 99, - RETRO_KEYBOARD_KEY_d = 100, - RETRO_KEYBOARD_KEY_e = 101, - RETRO_KEYBOARD_KEY_f = 102, - RETRO_KEYBOARD_KEY_g = 103, - RETRO_KEYBOARD_KEY_h = 104, - RETRO_KEYBOARD_KEY_i = 105, - RETRO_KEYBOARD_KEY_j = 106, - RETRO_KEYBOARD_KEY_k = 107, - RETRO_KEYBOARD_KEY_l = 108, - RETRO_KEYBOARD_KEY_m = 109, - RETRO_KEYBOARD_KEY_n = 110, - RETRO_KEYBOARD_KEY_o = 111, - RETRO_KEYBOARD_KEY_p = 112, - RETRO_KEYBOARD_KEY_q = 113, - RETRO_KEYBOARD_KEY_r = 114, - RETRO_KEYBOARD_KEY_s = 115, - RETRO_KEYBOARD_KEY_t = 116, - RETRO_KEYBOARD_KEY_u = 117, - RETRO_KEYBOARD_KEY_v = 118, - RETRO_KEYBOARD_KEY_w = 119, - RETRO_KEYBOARD_KEY_x = 120, - RETRO_KEYBOARD_KEY_y = 121, - RETRO_KEYBOARD_KEY_z = 122, - RETRO_KEYBOARD_KEY_DELETE = 127, - RETRO_KEYBOARD_KEY_KP0 = 256, - RETRO_KEYBOARD_KEY_KP1 = 257, - RETRO_KEYBOARD_KEY_KP2 = 258, - RETRO_KEYBOARD_KEY_KP3 = 259, - RETRO_KEYBOARD_KEY_KP4 = 260, - RETRO_KEYBOARD_KEY_KP5 = 261, - RETRO_KEYBOARD_KEY_KP6 = 262, - RETRO_KEYBOARD_KEY_KP7 = 263, - RETRO_KEYBOARD_KEY_KP8 = 264, - RETRO_KEYBOARD_KEY_KP9 = 265, - RETRO_KEYBOARD_KEY_KP_PERIOD = 266, - RETRO_KEYBOARD_KEY_KP_DIVIDE = 267, - RETRO_KEYBOARD_KEY_KP_MULTIPLY = 268, - RETRO_KEYBOARD_KEY_KP_MINUS = 269, - RETRO_KEYBOARD_KEY_KP_PLUS = 270, - RETRO_KEYBOARD_KEY_KP_ENTER = 271, - RETRO_KEYBOARD_KEY_KP_EQUALS = 272, - RETRO_KEYBOARD_KEY_UP = 273, - RETRO_KEYBOARD_KEY_DOWN = 274, - RETRO_KEYBOARD_KEY_RIGHT = 275, - RETRO_KEYBOARD_KEY_LEFT = 276, - RETRO_KEYBOARD_KEY_INSERT = 277, - RETRO_KEYBOARD_KEY_HOME = 278, - RETRO_KEYBOARD_KEY_END = 279, - RETRO_KEYBOARD_KEY_PAGEUP = 280, - RETRO_KEYBOARD_KEY_PAGEDOWN = 281, - RETRO_KEYBOARD_KEY_F1 = 282, - RETRO_KEYBOARD_KEY_F2 = 283, - RETRO_KEYBOARD_KEY_F3 = 284, - RETRO_KEYBOARD_KEY_F4 = 285, - RETRO_KEYBOARD_KEY_F5 = 286, - RETRO_KEYBOARD_KEY_F6 = 287, - RETRO_KEYBOARD_KEY_F7 = 288, - RETRO_KEYBOARD_KEY_F8 = 289, - RETRO_KEYBOARD_KEY_F9 = 290, - RETRO_KEYBOARD_KEY_F10 = 291, - RETRO_KEYBOARD_KEY_F11 = 292, - RETRO_KEYBOARD_KEY_F12 = 293, - RETRO_KEYBOARD_KEY_F13 = 294, - RETRO_KEYBOARD_KEY_F14 = 295, - RETRO_KEYBOARD_KEY_F15 = 296, - RETRO_KEYBOARD_KEY_NUMLOCK = 300, - RETRO_KEYBOARD_KEY_CAPSLOCK = 301, - RETRO_KEYBOARD_KEY_SCROLLOCK = 302, - RETRO_KEYBOARD_KEY_RSHIFT = 303, - RETRO_KEYBOARD_KEY_LSHIFT = 304, - RETRO_KEYBOARD_KEY_RCTRL = 305, - RETRO_KEYBOARD_KEY_LCTRL = 306, - RETRO_KEYBOARD_KEY_RALT = 307, - RETRO_KEYBOARD_KEY_LALT = 308, - RETRO_KEYBOARD_KEY_RMETA = 309, - RETRO_KEYBOARD_KEY_LMETA = 310, - RETRO_KEYBOARD_KEY_LSUPER = 311, - RETRO_KEYBOARD_KEY_RSUPER = 312, - RETRO_KEYBOARD_KEY_MODE = 313, - RETRO_KEYBOARD_KEY_COMPOSE = 314, - RETRO_KEYBOARD_KEY_HELP = 315, - RETRO_KEYBOARD_KEY_PRINT = 316, - RETRO_KEYBOARD_KEY_SYSREQ = 317, - RETRO_KEYBOARD_KEY_BREAK = 318, - RETRO_KEYBOARD_KEY_MENU = 319, - RETRO_KEYBOARD_KEY_POWER = 320, - RETRO_KEYBOARD_KEY_EURO = 321, - RETRO_KEYBOARD_KEY_UNDO = 322, - RETRO_KEYBOARD_KEY_LAST -} RetroKeyboardKey; - -typedef enum { - RETRO_KEYBOARD_MODIFIER_KEY_NONE = 0x0000, - RETRO_KEYBOARD_MODIFIER_KEY_SHIFT = 0x01, - RETRO_KEYBOARD_MODIFIER_KEY_CTRL = 0x02, - RETRO_KEYBOARD_MODIFIER_KEY_ALT = 0x04, - RETRO_KEYBOARD_MODIFIER_KEY_META = 0x08, - RETRO_KEYBOARD_MODIFIER_KEY_NUMLOCK = 0x10, - RETRO_KEYBOARD_MODIFIER_KEY_CAPSLOCK = 0x20, - RETRO_KEYBOARD_MODIFIER_KEY_SCROLLOCK = 0x40 -} RetroKeyboardModifierKey; - -RetroKeyboardModifierKey retro_keyboard_modifier_key_converter (guint keyval, - GdkModifierType modifiers); -RetroKeyboardKey retro_keyboard_key_converter (guint keyval); - -G_END_DECLS - -#endif /* RETRO_KEYBOARD_KEY_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/libretro_gtk_la_vala.stamp retro-gtk-0.14.0/retro-gtk/libretro_gtk_la_vala.stamp --- retro-gtk-0.12.1/retro-gtk/libretro_gtk_la_vala.stamp 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/libretro_gtk_la_vala.stamp 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -stamp diff -Nru retro-gtk-0.12.1/retro-gtk/libretro.h retro-gtk-0.14.0/retro-gtk/libretro.h --- retro-gtk-0.12.1/retro-gtk/libretro.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/libretro.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,2163 @@ +/* Copyright (C) 2010-2017 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this libretro API header (libretro.h). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef LIBRETRO_H__ +#define LIBRETRO_H__ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef __cplusplus +#if defined(_MSC_VER) && !defined(SN_TARGET_PS3) +/* Hack applied for MSVC when compiling in C89 mode + * as it isn't C99-compliant. */ +#define bool unsigned char +#define true 1 +#define false 0 +#else +#include +#endif +#endif + +#ifndef RETRO_CALLCONV +# if defined(__GNUC__) && defined(__i386__) && !defined(__x86_64__) +# define RETRO_CALLCONV __attribute__((cdecl)) +# elif defined(_MSC_VER) && defined(_M_X86) && !defined(_M_X64) +# define RETRO_CALLCONV __cdecl +# else +# define RETRO_CALLCONV /* all other platforms only have one calling convention each */ +# endif +#endif + +#ifndef RETRO_API +# if defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) +# ifdef RETRO_IMPORT_SYMBOLS +# ifdef __GNUC__ +# define RETRO_API RETRO_CALLCONV __attribute__((__dllimport__)) +# else +# define RETRO_API RETRO_CALLCONV __declspec(dllimport) +# endif +# else +# ifdef __GNUC__ +# define RETRO_API RETRO_CALLCONV __attribute__((__dllexport__)) +# else +# define RETRO_API RETRO_CALLCONV __declspec(dllexport) +# endif +# endif +# else +# if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__CELLOS_LV2__) +# define RETRO_API RETRO_CALLCONV __attribute__((__visibility__("default"))) +# else +# define RETRO_API RETRO_CALLCONV +# endif +# endif +#endif + +/* Used for checking API/ABI mismatches that can break libretro + * implementations. + * It is not incremented for compatible changes to the API. + */ +#define RETRO_API_VERSION 1 + +/* + * Libretro's fundamental device abstractions. + * + * Libretro's input system consists of some standardized device types, + * such as a joypad (with/without analog), mouse, keyboard, lightgun + * and a pointer. + * + * The functionality of these devices are fixed, and individual cores + * map their own concept of a controller to libretro's abstractions. + * This makes it possible for frontends to map the abstract types to a + * real input device, and not having to worry about binding input + * correctly to arbitrary controller layouts. + */ + +#define RETRO_DEVICE_TYPE_SHIFT 8 +#define RETRO_DEVICE_MASK ((1 << RETRO_DEVICE_TYPE_SHIFT) - 1) +#define RETRO_DEVICE_SUBCLASS(base, id) (((id + 1) << RETRO_DEVICE_TYPE_SHIFT) | base) + +/* Input disabled. */ +#define RETRO_DEVICE_NONE 0 + +/* The JOYPAD is called RetroPad. It is essentially a Super Nintendo + * controller, but with additional L2/R2/L3/R3 buttons, similar to a + * PS1 DualShock. */ +#define RETRO_DEVICE_JOYPAD 1 + +/* The mouse is a simple mouse, similar to Super Nintendo's mouse. + * X and Y coordinates are reported relatively to last poll (poll callback). + * It is up to the libretro implementation to keep track of where the mouse + * pointer is supposed to be on the screen. + * The frontend must make sure not to interfere with its own hardware + * mouse pointer. + */ +#define RETRO_DEVICE_MOUSE 2 + +/* KEYBOARD device lets one poll for raw key pressed. + * It is poll based, so input callback will return with the current + * pressed state. + * For event/text based keyboard input, see + * RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK. + */ +#define RETRO_DEVICE_KEYBOARD 3 + +/* Lightgun X/Y coordinates are reported relatively to last poll, + * similar to mouse. */ +#define RETRO_DEVICE_LIGHTGUN 4 + +/* The ANALOG device is an extension to JOYPAD (RetroPad). + * Similar to DualShock it adds two analog sticks. + * This is treated as a separate device type as it returns values in the + * full analog range of [-0x8000, 0x7fff]. Positive X axis is right. + * Positive Y axis is down. + * Only use ANALOG type when polling for analog values of the axes. + */ +#define RETRO_DEVICE_ANALOG 5 + +/* Abstracts the concept of a pointing mechanism, e.g. touch. + * This allows libretro to query in absolute coordinates where on the + * screen a mouse (or something similar) is being placed. + * For a touch centric device, coordinates reported are the coordinates + * of the press. + * + * Coordinates in X and Y are reported as: + * [-0x7fff, 0x7fff]: -0x7fff corresponds to the far left/top of the screen, + * and 0x7fff corresponds to the far right/bottom of the screen. + * The "screen" is here defined as area that is passed to the frontend and + * later displayed on the monitor. + * + * The frontend is free to scale/resize this screen as it sees fit, however, + * (X, Y) = (-0x7fff, -0x7fff) will correspond to the top-left pixel of the + * game image, etc. + * + * To check if the pointer coordinates are valid (e.g. a touch display + * actually being touched), PRESSED returns 1 or 0. + * + * If using a mouse on a desktop, PRESSED will usually correspond to the + * left mouse button, but this is a frontend decision. + * PRESSED will only return 1 if the pointer is inside the game screen. + * + * For multi-touch, the index variable can be used to successively query + * more presses. + * If index = 0 returns true for _PRESSED, coordinates can be extracted + * with _X, _Y for index = 0. One can then query _PRESSED, _X, _Y with + * index = 1, and so on. + * Eventually _PRESSED will return false for an index. No further presses + * are registered at this point. */ +#define RETRO_DEVICE_POINTER 6 + +/* Buttons for the RetroPad (JOYPAD). + * The placement of these is equivalent to placements on the + * Super Nintendo controller. + * L2/R2/L3/R3 buttons correspond to the PS1 DualShock. */ +#define RETRO_DEVICE_ID_JOYPAD_B 0 +#define RETRO_DEVICE_ID_JOYPAD_Y 1 +#define RETRO_DEVICE_ID_JOYPAD_SELECT 2 +#define RETRO_DEVICE_ID_JOYPAD_START 3 +#define RETRO_DEVICE_ID_JOYPAD_UP 4 +#define RETRO_DEVICE_ID_JOYPAD_DOWN 5 +#define RETRO_DEVICE_ID_JOYPAD_LEFT 6 +#define RETRO_DEVICE_ID_JOYPAD_RIGHT 7 +#define RETRO_DEVICE_ID_JOYPAD_A 8 +#define RETRO_DEVICE_ID_JOYPAD_X 9 +#define RETRO_DEVICE_ID_JOYPAD_L 10 +#define RETRO_DEVICE_ID_JOYPAD_R 11 +#define RETRO_DEVICE_ID_JOYPAD_L2 12 +#define RETRO_DEVICE_ID_JOYPAD_R2 13 +#define RETRO_DEVICE_ID_JOYPAD_L3 14 +#define RETRO_DEVICE_ID_JOYPAD_R3 15 + +/* Index / Id values for ANALOG device. */ +#define RETRO_DEVICE_INDEX_ANALOG_LEFT 0 +#define RETRO_DEVICE_INDEX_ANALOG_RIGHT 1 +#define RETRO_DEVICE_ID_ANALOG_X 0 +#define RETRO_DEVICE_ID_ANALOG_Y 1 + +/* Id values for MOUSE. */ +#define RETRO_DEVICE_ID_MOUSE_X 0 +#define RETRO_DEVICE_ID_MOUSE_Y 1 +#define RETRO_DEVICE_ID_MOUSE_LEFT 2 +#define RETRO_DEVICE_ID_MOUSE_RIGHT 3 +#define RETRO_DEVICE_ID_MOUSE_WHEELUP 4 +#define RETRO_DEVICE_ID_MOUSE_WHEELDOWN 5 +#define RETRO_DEVICE_ID_MOUSE_MIDDLE 6 +#define RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELUP 7 +#define RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELDOWN 8 + +/* Id values for LIGHTGUN types. */ +#define RETRO_DEVICE_ID_LIGHTGUN_X 0 +#define RETRO_DEVICE_ID_LIGHTGUN_Y 1 +#define RETRO_DEVICE_ID_LIGHTGUN_TRIGGER 2 +#define RETRO_DEVICE_ID_LIGHTGUN_CURSOR 3 +#define RETRO_DEVICE_ID_LIGHTGUN_TURBO 4 +#define RETRO_DEVICE_ID_LIGHTGUN_PAUSE 5 +#define RETRO_DEVICE_ID_LIGHTGUN_START 6 + +/* Id values for POINTER. */ +#define RETRO_DEVICE_ID_POINTER_X 0 +#define RETRO_DEVICE_ID_POINTER_Y 1 +#define RETRO_DEVICE_ID_POINTER_PRESSED 2 + +/* Returned from retro_get_region(). */ +#define RETRO_REGION_NTSC 0 +#define RETRO_REGION_PAL 1 + +/* Id values for LANGUAGE */ +enum retro_language +{ + RETRO_LANGUAGE_ENGLISH = 0, + RETRO_LANGUAGE_JAPANESE = 1, + RETRO_LANGUAGE_FRENCH = 2, + RETRO_LANGUAGE_SPANISH = 3, + RETRO_LANGUAGE_GERMAN = 4, + RETRO_LANGUAGE_ITALIAN = 5, + RETRO_LANGUAGE_DUTCH = 6, + RETRO_LANGUAGE_PORTUGUESE = 7, + RETRO_LANGUAGE_RUSSIAN = 8, + RETRO_LANGUAGE_KOREAN = 9, + RETRO_LANGUAGE_CHINESE_TRADITIONAL = 10, + RETRO_LANGUAGE_CHINESE_SIMPLIFIED = 11, + RETRO_LANGUAGE_ESPERANTO = 12, + RETRO_LANGUAGE_POLISH = 13, + RETRO_LANGUAGE_VIETNAMESE = 14, + RETRO_LANGUAGE_LAST, + + /* Ensure sizeof(enum) == sizeof(int) */ + RETRO_LANGUAGE_DUMMY = INT_MAX +}; + +/* Passed to retro_get_memory_data/size(). + * If the memory type doesn't apply to the + * implementation NULL/0 can be returned. + */ +#define RETRO_MEMORY_MASK 0xff + +/* Regular save RAM. This RAM is usually found on a game cartridge, + * backed up by a battery. + * If save game data is too complex for a single memory buffer, + * the SAVE_DIRECTORY (preferably) or SYSTEM_DIRECTORY environment + * callback can be used. */ +#define RETRO_MEMORY_SAVE_RAM 0 + +/* Some games have a built-in clock to keep track of time. + * This memory is usually just a couple of bytes to keep track of time. + */ +#define RETRO_MEMORY_RTC 1 + +/* System ram lets a frontend peek into a game systems main RAM. */ +#define RETRO_MEMORY_SYSTEM_RAM 2 + +/* Video ram lets a frontend peek into a game systems video RAM (VRAM). */ +#define RETRO_MEMORY_VIDEO_RAM 3 + +/* Keysyms used for ID in input state callback when polling RETRO_KEYBOARD. */ +enum retro_key +{ + RETROK_UNKNOWN = 0, + RETROK_FIRST = 0, + RETROK_BACKSPACE = 8, + RETROK_TAB = 9, + RETROK_CLEAR = 12, + RETROK_RETURN = 13, + RETROK_PAUSE = 19, + RETROK_ESCAPE = 27, + RETROK_SPACE = 32, + RETROK_EXCLAIM = 33, + RETROK_QUOTEDBL = 34, + RETROK_HASH = 35, + RETROK_DOLLAR = 36, + RETROK_AMPERSAND = 38, + RETROK_QUOTE = 39, + RETROK_LEFTPAREN = 40, + RETROK_RIGHTPAREN = 41, + RETROK_ASTERISK = 42, + RETROK_PLUS = 43, + RETROK_COMMA = 44, + RETROK_MINUS = 45, + RETROK_PERIOD = 46, + RETROK_SLASH = 47, + RETROK_0 = 48, + RETROK_1 = 49, + RETROK_2 = 50, + RETROK_3 = 51, + RETROK_4 = 52, + RETROK_5 = 53, + RETROK_6 = 54, + RETROK_7 = 55, + RETROK_8 = 56, + RETROK_9 = 57, + RETROK_COLON = 58, + RETROK_SEMICOLON = 59, + RETROK_LESS = 60, + RETROK_EQUALS = 61, + RETROK_GREATER = 62, + RETROK_QUESTION = 63, + RETROK_AT = 64, + RETROK_LEFTBRACKET = 91, + RETROK_BACKSLASH = 92, + RETROK_RIGHTBRACKET = 93, + RETROK_CARET = 94, + RETROK_UNDERSCORE = 95, + RETROK_BACKQUOTE = 96, + RETROK_a = 97, + RETROK_b = 98, + RETROK_c = 99, + RETROK_d = 100, + RETROK_e = 101, + RETROK_f = 102, + RETROK_g = 103, + RETROK_h = 104, + RETROK_i = 105, + RETROK_j = 106, + RETROK_k = 107, + RETROK_l = 108, + RETROK_m = 109, + RETROK_n = 110, + RETROK_o = 111, + RETROK_p = 112, + RETROK_q = 113, + RETROK_r = 114, + RETROK_s = 115, + RETROK_t = 116, + RETROK_u = 117, + RETROK_v = 118, + RETROK_w = 119, + RETROK_x = 120, + RETROK_y = 121, + RETROK_z = 122, + RETROK_DELETE = 127, + + RETROK_KP0 = 256, + RETROK_KP1 = 257, + RETROK_KP2 = 258, + RETROK_KP3 = 259, + RETROK_KP4 = 260, + RETROK_KP5 = 261, + RETROK_KP6 = 262, + RETROK_KP7 = 263, + RETROK_KP8 = 264, + RETROK_KP9 = 265, + RETROK_KP_PERIOD = 266, + RETROK_KP_DIVIDE = 267, + RETROK_KP_MULTIPLY = 268, + RETROK_KP_MINUS = 269, + RETROK_KP_PLUS = 270, + RETROK_KP_ENTER = 271, + RETROK_KP_EQUALS = 272, + + RETROK_UP = 273, + RETROK_DOWN = 274, + RETROK_RIGHT = 275, + RETROK_LEFT = 276, + RETROK_INSERT = 277, + RETROK_HOME = 278, + RETROK_END = 279, + RETROK_PAGEUP = 280, + RETROK_PAGEDOWN = 281, + + RETROK_F1 = 282, + RETROK_F2 = 283, + RETROK_F3 = 284, + RETROK_F4 = 285, + RETROK_F5 = 286, + RETROK_F6 = 287, + RETROK_F7 = 288, + RETROK_F8 = 289, + RETROK_F9 = 290, + RETROK_F10 = 291, + RETROK_F11 = 292, + RETROK_F12 = 293, + RETROK_F13 = 294, + RETROK_F14 = 295, + RETROK_F15 = 296, + + RETROK_NUMLOCK = 300, + RETROK_CAPSLOCK = 301, + RETROK_SCROLLOCK = 302, + RETROK_RSHIFT = 303, + RETROK_LSHIFT = 304, + RETROK_RCTRL = 305, + RETROK_LCTRL = 306, + RETROK_RALT = 307, + RETROK_LALT = 308, + RETROK_RMETA = 309, + RETROK_LMETA = 310, + RETROK_LSUPER = 311, + RETROK_RSUPER = 312, + RETROK_MODE = 313, + RETROK_COMPOSE = 314, + + RETROK_HELP = 315, + RETROK_PRINT = 316, + RETROK_SYSREQ = 317, + RETROK_BREAK = 318, + RETROK_MENU = 319, + RETROK_POWER = 320, + RETROK_EURO = 321, + RETROK_UNDO = 322, + + RETROK_LAST, + + RETROK_DUMMY = INT_MAX /* Ensure sizeof(enum) == sizeof(int) */ +}; + +enum retro_mod +{ + RETROKMOD_NONE = 0x0000, + + RETROKMOD_SHIFT = 0x01, + RETROKMOD_CTRL = 0x02, + RETROKMOD_ALT = 0x04, + RETROKMOD_META = 0x08, + + RETROKMOD_NUMLOCK = 0x10, + RETROKMOD_CAPSLOCK = 0x20, + RETROKMOD_SCROLLOCK = 0x40, + + RETROKMOD_DUMMY = INT_MAX /* Ensure sizeof(enum) == sizeof(int) */ +}; + +/* If set, this call is not part of the public libretro API yet. It can + * change or be removed at any time. */ +#define RETRO_ENVIRONMENT_EXPERIMENTAL 0x10000 +/* Environment callback to be used internally in frontend. */ +#define RETRO_ENVIRONMENT_PRIVATE 0x20000 + +/* Environment commands. */ +#define RETRO_ENVIRONMENT_SET_ROTATION 1 /* const unsigned * -- + * Sets screen rotation of graphics. + * Is only implemented if rotation can be accelerated by hardware. + * Valid values are 0, 1, 2, 3, which rotates screen by 0, 90, 180, + * 270 degrees counter-clockwise respectively. + */ +#define RETRO_ENVIRONMENT_GET_OVERSCAN 2 /* bool * -- + * Boolean value whether or not the implementation should use overscan, + * or crop away overscan. + */ +#define RETRO_ENVIRONMENT_GET_CAN_DUPE 3 /* bool * -- + * Boolean value whether or not frontend supports frame duping, + * passing NULL to video frame callback. + */ + + /* Environ 4, 5 are no longer supported (GET_VARIABLE / SET_VARIABLES), + * and reserved to avoid possible ABI clash. + */ + +#define RETRO_ENVIRONMENT_SET_MESSAGE 6 /* const struct retro_message * -- + * Sets a message to be displayed in implementation-specific manner + * for a certain amount of 'frames'. + * Should not be used for trivial messages, which should simply be + * logged via RETRO_ENVIRONMENT_GET_LOG_INTERFACE (or as a + * fallback, stderr). + */ +#define RETRO_ENVIRONMENT_SHUTDOWN 7 /* N/A (NULL) -- + * Requests the frontend to shutdown. + * Should only be used if game has a specific + * way to shutdown the game from a menu item or similar. + */ +#define RETRO_ENVIRONMENT_SET_PERFORMANCE_LEVEL 8 + /* const unsigned * -- + * Gives a hint to the frontend how demanding this implementation + * is on a system. E.g. reporting a level of 2 means + * this implementation should run decently on all frontends + * of level 2 and up. + * + * It can be used by the frontend to potentially warn + * about too demanding implementations. + * + * The levels are "floating". + * + * This function can be called on a per-game basis, + * as certain games an implementation can play might be + * particularly demanding. + * If called, it should be called in retro_load_game(). + */ +#define RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY 9 + /* const char ** -- + * Returns the "system" directory of the frontend. + * This directory can be used to store system specific + * content such as BIOSes, configuration data, etc. + * The returned value can be NULL. + * If so, no such directory is defined, + * and it's up to the implementation to find a suitable directory. + * + * NOTE: Some cores used this folder also for "save" data such as + * memory cards, etc, for lack of a better place to put it. + * This is now discouraged, and if possible, cores should try to + * use the new GET_SAVE_DIRECTORY. + */ +#define RETRO_ENVIRONMENT_SET_PIXEL_FORMAT 10 + /* const enum retro_pixel_format * -- + * Sets the internal pixel format used by the implementation. + * The default pixel format is RETRO_PIXEL_FORMAT_0RGB1555. + * This pixel format however, is deprecated (see enum retro_pixel_format). + * If the call returns false, the frontend does not support this pixel + * format. + * + * This function should be called inside retro_load_game() or + * retro_get_system_av_info(). + */ +#define RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS 11 + /* const struct retro_input_descriptor * -- + * Sets an array of retro_input_descriptors. + * It is up to the frontend to present this in a usable way. + * The array is terminated by retro_input_descriptor::description + * being set to NULL. + * This function can be called at any time, but it is recommended + * to call it as early as possible. + */ +#define RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK 12 + /* const struct retro_keyboard_callback * -- + * Sets a callback function used to notify core about keyboard events. + */ +#define RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE 13 + /* const struct retro_disk_control_callback * -- + * Sets an interface which frontend can use to eject and insert + * disk images. + * This is used for games which consist of multiple images and + * must be manually swapped out by the user (e.g. PSX). + */ +#define RETRO_ENVIRONMENT_SET_HW_RENDER 14 + /* struct retro_hw_render_callback * -- + * Sets an interface to let a libretro core render with + * hardware acceleration. + * Should be called in retro_load_game(). + * If successful, libretro cores will be able to render to a + * frontend-provided framebuffer. + * The size of this framebuffer will be at least as large as + * max_width/max_height provided in get_av_info(). + * If HW rendering is used, pass only RETRO_HW_FRAME_BUFFER_VALID or + * NULL to retro_video_refresh_t. + */ +#define RETRO_ENVIRONMENT_GET_VARIABLE 15 + /* struct retro_variable * -- + * Interface to acquire user-defined information from environment + * that cannot feasibly be supported in a multi-system way. + * 'key' should be set to a key which has already been set by + * SET_VARIABLES. + * 'data' will be set to a value or NULL. + */ +#define RETRO_ENVIRONMENT_SET_VARIABLES 16 + /* const struct retro_variable * -- + * Allows an implementation to signal the environment + * which variables it might want to check for later using + * GET_VARIABLE. + * This allows the frontend to present these variables to + * a user dynamically. + * This should be called as early as possible (ideally in + * retro_set_environment). + * + * 'data' points to an array of retro_variable structs + * terminated by a { NULL, NULL } element. + * retro_variable::key should be namespaced to not collide + * with other implementations' keys. E.g. A core called + * 'foo' should use keys named as 'foo_option'. + * retro_variable::value should contain a human readable + * description of the key as well as a '|' delimited list + * of expected values. + * + * The number of possible options should be very limited, + * i.e. it should be feasible to cycle through options + * without a keyboard. + * + * First entry should be treated as a default. + * + * Example entry: + * { "foo_option", "Speed hack coprocessor X; false|true" } + * + * Text before first ';' is description. This ';' must be + * followed by a space, and followed by a list of possible + * values split up with '|'. + * + * Only strings are operated on. The possible values will + * generally be displayed and stored as-is by the frontend. + */ +#define RETRO_ENVIRONMENT_GET_VARIABLE_UPDATE 17 + /* bool * -- + * Result is set to true if some variables are updated by + * frontend since last call to RETRO_ENVIRONMENT_GET_VARIABLE. + * Variables should be queried with GET_VARIABLE. + */ +#define RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME 18 + /* const bool * -- + * If true, the libretro implementation supports calls to + * retro_load_game() with NULL as argument. + * Used by cores which can run without particular game data. + * This should be called within retro_set_environment() only. + */ +#define RETRO_ENVIRONMENT_GET_LIBRETRO_PATH 19 + /* const char ** -- + * Retrieves the absolute path from where this libretro + * implementation was loaded. + * NULL is returned if the libretro was loaded statically + * (i.e. linked statically to frontend), or if the path cannot be + * determined. + * Mostly useful in cooperation with SET_SUPPORT_NO_GAME as assets can + * be loaded without ugly hacks. + */ + + /* Environment 20 was an obsolete version of SET_AUDIO_CALLBACK. + * It was not used by any known core at the time, + * and was removed from the API. */ +#define RETRO_ENVIRONMENT_SET_AUDIO_CALLBACK 22 + /* const struct retro_audio_callback * -- + * Sets an interface which is used to notify a libretro core about audio + * being available for writing. + * The callback can be called from any thread, so a core using this must + * have a thread safe audio implementation. + * It is intended for games where audio and video are completely + * asynchronous and audio can be generated on the fly. + * This interface is not recommended for use with emulators which have + * highly synchronous audio. + * + * The callback only notifies about writability; the libretro core still + * has to call the normal audio callbacks + * to write audio. The audio callbacks must be called from within the + * notification callback. + * The amount of audio data to write is up to the implementation. + * Generally, the audio callback will be called continously in a loop. + * + * Due to thread safety guarantees and lack of sync between audio and + * video, a frontend can selectively disallow this interface based on + * internal configuration. A core using this interface must also + * implement the "normal" audio interface. + * + * A libretro core using SET_AUDIO_CALLBACK should also make use of + * SET_FRAME_TIME_CALLBACK. + */ +#define RETRO_ENVIRONMENT_SET_FRAME_TIME_CALLBACK 21 + /* const struct retro_frame_time_callback * -- + * Lets the core know how much time has passed since last + * invocation of retro_run(). + * The frontend can tamper with the timing to fake fast-forward, + * slow-motion, frame stepping, etc. + * In this case the delta time will use the reference value + * in frame_time_callback.. + */ +#define RETRO_ENVIRONMENT_GET_RUMBLE_INTERFACE 23 + /* struct retro_rumble_interface * -- + * Gets an interface which is used by a libretro core to set + * state of rumble motors in controllers. + * A strong and weak motor is supported, and they can be + * controlled indepedently. + */ +#define RETRO_ENVIRONMENT_GET_INPUT_DEVICE_CAPABILITIES 24 + /* uint64_t * -- + * Gets a bitmask telling which device type are expected to be + * handled properly in a call to retro_input_state_t. + * Devices which are not handled or recognized always return + * 0 in retro_input_state_t. + * Example bitmask: caps = (1 << RETRO_DEVICE_JOYPAD) | (1 << RETRO_DEVICE_ANALOG). + * Should only be called in retro_run(). + */ +#define RETRO_ENVIRONMENT_GET_SENSOR_INTERFACE (25 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* struct retro_sensor_interface * -- + * Gets access to the sensor interface. + * The purpose of this interface is to allow + * setting state related to sensors such as polling rate, + * enabling/disable it entirely, etc. + * Reading sensor state is done via the normal + * input_state_callback API. + */ +#define RETRO_ENVIRONMENT_GET_CAMERA_INTERFACE (26 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* struct retro_camera_callback * -- + * Gets an interface to a video camera driver. + * A libretro core can use this interface to get access to a + * video camera. + * New video frames are delivered in a callback in same + * thread as retro_run(). + * + * GET_CAMERA_INTERFACE should be called in retro_load_game(). + * + * Depending on the camera implementation used, camera frames + * will be delivered as a raw framebuffer, + * or as an OpenGL texture directly. + * + * The core has to tell the frontend here which types of + * buffers can be handled properly. + * An OpenGL texture can only be handled when using a + * libretro GL core (SET_HW_RENDER). + * It is recommended to use a libretro GL core when + * using camera interface. + * + * The camera is not started automatically. The retrieved start/stop + * functions must be used to explicitly + * start and stop the camera driver. + */ +#define RETRO_ENVIRONMENT_GET_LOG_INTERFACE 27 + /* struct retro_log_callback * -- + * Gets an interface for logging. This is useful for + * logging in a cross-platform way + * as certain platforms cannot use use stderr for logging. + * It also allows the frontend to + * show logging information in a more suitable way. + * If this interface is not used, libretro cores should + * log to stderr as desired. + */ +#define RETRO_ENVIRONMENT_GET_PERF_INTERFACE 28 + /* struct retro_perf_callback * -- + * Gets an interface for performance counters. This is useful + * for performance logging in a cross-platform way and for detecting + * architecture-specific features, such as SIMD support. + */ +#define RETRO_ENVIRONMENT_GET_LOCATION_INTERFACE 29 + /* struct retro_location_callback * -- + * Gets access to the location interface. + * The purpose of this interface is to be able to retrieve + * location-based information from the host device, + * such as current latitude / longitude. + */ +#define RETRO_ENVIRONMENT_GET_CONTENT_DIRECTORY 30 /* Old name, kept for compatibility. */ +#define RETRO_ENVIRONMENT_GET_CORE_ASSETS_DIRECTORY 30 + /* const char ** -- + * Returns the "core assets" directory of the frontend. + * This directory can be used to store specific assets that the + * core relies upon, such as art assets, + * input data, etc etc. + * The returned value can be NULL. + * If so, no such directory is defined, + * and it's up to the implementation to find a suitable directory. + */ +#define RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY 31 + /* const char ** -- + * Returns the "save" directory of the frontend. + * This directory can be used to store SRAM, memory cards, + * high scores, etc, if the libretro core + * cannot use the regular memory interface (retro_get_memory_data()). + * + * NOTE: libretro cores used to check GET_SYSTEM_DIRECTORY for + * similar things before. + * They should still check GET_SYSTEM_DIRECTORY if they want to + * be backwards compatible. + * The path here can be NULL. It should only be non-NULL if the + * frontend user has set a specific save path. + */ +#define RETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO 32 + /* const struct retro_system_av_info * -- + * Sets a new av_info structure. This can only be called from + * within retro_run(). + * This should *only* be used if the core is completely altering the + * internal resolutions, aspect ratios, timings, sampling rate, etc. + * Calling this can require a full reinitialization of video/audio + * drivers in the frontend, + * + * so it is important to call it very sparingly, and usually only with + * the users explicit consent. + * An eventual driver reinitialize will happen so that video and + * audio callbacks + * happening after this call within the same retro_run() call will + * target the newly initialized driver. + * + * This callback makes it possible to support configurable resolutions + * in games, which can be useful to + * avoid setting the "worst case" in max_width/max_height. + * + * ***HIGHLY RECOMMENDED*** Do not call this callback every time + * resolution changes in an emulator core if it's + * expected to be a temporary change, for the reasons of possible + * driver reinitialization. + * This call is not a free pass for not trying to provide + * correct values in retro_get_system_av_info(). If you need to change + * things like aspect ratio or nominal width/height, + * use RETRO_ENVIRONMENT_SET_GEOMETRY, which is a softer variant + * of SET_SYSTEM_AV_INFO. + * + * If this returns false, the frontend does not acknowledge a + * changed av_info struct. + */ +#define RETRO_ENVIRONMENT_SET_PROC_ADDRESS_CALLBACK 33 + /* const struct retro_get_proc_address_interface * -- + * Allows a libretro core to announce support for the + * get_proc_address() interface. + * This interface allows for a standard way to extend libretro where + * use of environment calls are too indirect, + * e.g. for cases where the frontend wants to call directly into the core. + * + * If a core wants to expose this interface, SET_PROC_ADDRESS_CALLBACK + * **MUST** be called from within retro_set_environment(). + */ +#define RETRO_ENVIRONMENT_SET_SUBSYSTEM_INFO 34 + /* const struct retro_subsystem_info * -- + * This environment call introduces the concept of libretro "subsystems". + * A subsystem is a variant of a libretro core which supports + * different kinds of games. + * The purpose of this is to support e.g. emulators which might + * have special needs, e.g. Super Nintendo's Super GameBoy, Sufami Turbo. + * It can also be used to pick among subsystems in an explicit way + * if the libretro implementation is a multi-system emulator itself. + * + * Loading a game via a subsystem is done with retro_load_game_special(), + * and this environment call allows a libretro core to expose which + * subsystems are supported for use with retro_load_game_special(). + * A core passes an array of retro_game_special_info which is terminated + * with a zeroed out retro_game_special_info struct. + * + * If a core wants to use this functionality, SET_SUBSYSTEM_INFO + * **MUST** be called from within retro_set_environment(). + */ +#define RETRO_ENVIRONMENT_SET_CONTROLLER_INFO 35 + /* const struct retro_controller_info * -- + * This environment call lets a libretro core tell the frontend + * which controller types are recognized in calls to + * retro_set_controller_port_device(). + * + * Some emulators such as Super Nintendo + * support multiple lightgun types which must be specifically + * selected from. + * It is therefore sometimes necessary for a frontend to be able + * to tell the core about a special kind of input device which is + * not covered by the libretro input API. + * + * In order for a frontend to understand the workings of an input device, + * it must be a specialized type + * of the generic device types already defined in the libretro API. + * + * Which devices are supported can vary per input port. + * The core must pass an array of const struct retro_controller_info which + * is terminated with a blanked out struct. Each element of the struct + * corresponds to an ascending port index to + * retro_set_controller_port_device(). + * Even if special device types are set in the libretro core, + * libretro should only poll input based on the base input device types. + */ +#define RETRO_ENVIRONMENT_SET_MEMORY_MAPS (36 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* const struct retro_memory_map * -- + * This environment call lets a libretro core tell the frontend + * about the memory maps this core emulates. + * This can be used to implement, for example, cheats in a core-agnostic way. + * + * Should only be used by emulators; it doesn't make much sense for + * anything else. + * It is recommended to expose all relevant pointers through + * retro_get_memory_* as well. + * + * Can be called from retro_init and retro_load_game. + */ +#define RETRO_ENVIRONMENT_SET_GEOMETRY 37 + /* const struct retro_game_geometry * -- + * This environment call is similar to SET_SYSTEM_AV_INFO for changing + * video parameters, but provides a guarantee that drivers will not be + * reinitialized. + * This can only be called from within retro_run(). + * + * The purpose of this call is to allow a core to alter nominal + * width/heights as well as aspect ratios on-the-fly, which can be + * useful for some emulators to change in run-time. + * + * max_width/max_height arguments are ignored and cannot be changed + * with this call as this could potentially require a reinitialization or a + * non-constant time operation. + * If max_width/max_height are to be changed, SET_SYSTEM_AV_INFO is required. + * + * A frontend must guarantee that this environment call completes in + * constant time. + */ +#define RETRO_ENVIRONMENT_GET_USERNAME 38 + /* const char ** + * Returns the specified username of the frontend, if specified by the user. + * This username can be used as a nickname for a core that has online facilities + * or any other mode where personalization of the user is desirable. + * The returned value can be NULL. + * If this environ callback is used by a core that requires a valid username, + * a default username should be specified by the core. + */ +#define RETRO_ENVIRONMENT_GET_LANGUAGE 39 + /* unsigned * -- + * Returns the specified language of the frontend, if specified by the user. + * It can be used by the core for localization purposes. + */ +#define RETRO_ENVIRONMENT_GET_CURRENT_SOFTWARE_FRAMEBUFFER (40 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* struct retro_framebuffer * -- + * Returns a preallocated framebuffer which the core can use for rendering + * the frame into when not using SET_HW_RENDER. + * The framebuffer returned from this call must not be used + * after the current call to retro_run() returns. + * + * The goal of this call is to allow zero-copy behavior where a core + * can render directly into video memory, avoiding extra bandwidth cost by copying + * memory from core to video memory. + * + * If this call succeeds and the core renders into it, + * the framebuffer pointer and pitch can be passed to retro_video_refresh_t. + * If the buffer from GET_CURRENT_SOFTWARE_FRAMEBUFFER is to be used, + * the core must pass the exact + * same pointer as returned by GET_CURRENT_SOFTWARE_FRAMEBUFFER; + * i.e. passing a pointer which is offset from the + * buffer is undefined. The width, height and pitch parameters + * must also match exactly to the values obtained from GET_CURRENT_SOFTWARE_FRAMEBUFFER. + * + * It is possible for a frontend to return a different pixel format + * than the one used in SET_PIXEL_FORMAT. This can happen if the frontend + * needs to perform conversion. + * + * It is still valid for a core to render to a different buffer + * even if GET_CURRENT_SOFTWARE_FRAMEBUFFER succeeds. + * + * A frontend must make sure that the pointer obtained from this function is + * writeable (and readable). + */ + +enum retro_hw_render_interface_type +{ + RETRO_HW_RENDER_INTERFACE_VULKAN = 0, + RETRO_HW_RENDER_INTERFACE_DUMMY = INT_MAX +}; + +/* Base struct. All retro_hw_render_interface_* types + * contain at least these fields. */ +struct retro_hw_render_interface +{ + enum retro_hw_render_interface_type interface_type; + unsigned interface_version; +}; +#define RETRO_ENVIRONMENT_GET_HW_RENDER_INTERFACE (41 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* const struct retro_hw_render_interface ** -- + * Returns an API specific rendering interface for accessing API specific data. + * Not all HW rendering APIs support or need this. + * The contents of the returned pointer is specific to the rendering API + * being used. See the various headers like libretro_vulkan.h, etc. + * + * GET_HW_RENDER_INTERFACE cannot be called before context_reset has been called. + * Similarly, after context_destroyed callback returns, + * the contents of the HW_RENDER_INTERFACE are invalidated. + */ + +#define RETRO_ENVIRONMENT_SET_SUPPORT_ACHIEVEMENTS (42 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* const bool * -- + * If true, the libretro implementation supports achievements + * either via memory descriptors set with RETRO_ENVIRONMENT_SET_MEMORY_MAPS + * or via retro_get_memory_data/retro_get_memory_size. + * + * This must be called before the first call to retro_run. + */ + +enum retro_hw_render_context_negotiation_interface_type +{ + RETRO_HW_RENDER_CONTEXT_NEGOTIATION_INTERFACE_VULKAN = 0, + RETRO_HW_RENDER_CONTEXT_NEGOTIATION_INTERFACE_DUMMY = INT_MAX +}; + +/* Base struct. All retro_hw_render_context_negotiation_interface_* types + * contain at least these fields. */ +struct retro_hw_render_context_negotiation_interface +{ + enum retro_hw_render_context_negotiation_interface_type interface_type; + unsigned interface_version; +}; +#define RETRO_ENVIRONMENT_SET_HW_RENDER_CONTEXT_NEGOTIATION_INTERFACE (43 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* const struct retro_hw_render_context_negotiation_interface * -- + * Sets an interface which lets the libretro core negotiate with frontend how a context is created. + * The semantics of this interface depends on which API is used in SET_HW_RENDER earlier. + * This interface will be used when the frontend is trying to create a HW rendering context, + * so it will be used after SET_HW_RENDER, but before the context_reset callback. + */ + +/* Serialized state is incomplete in some way. Set if serialization is + * usable in typical end-user cases but should not be relied upon to + * implement frame-sensitive frontend features such as netplay or + * rerecording. */ +#define RETRO_SERIALIZATION_QUIRK_INCOMPLETE (1 << 0) +/* The core must spend some time initializing before serialization is + * supported. retro_serialize() will initially fail; retro_unserialize() + * and retro_serialize_size() may or may not work correctly either. */ +#define RETRO_SERIALIZATION_QUIRK_MUST_INITIALIZE (1 << 1) +/* Serialization size may change within a session. */ +#define RETRO_SERIALIZATION_QUIRK_CORE_VARIABLE_SIZE (1 << 2) +/* Set by the frontend to acknowledge that it supports variable-sized + * states. */ +#define RETRO_SERIALIZATION_QUIRK_FRONT_VARIABLE_SIZE (1 << 3) +/* Serialized state can only be loaded during the same session. */ +#define RETRO_SERIALIZATION_QUIRK_SINGLE_SESSION (1 << 4) +/* Serialized state cannot be loaded on an architecture with a different + * endianness from the one it was saved on. */ +#define RETRO_SERIALIZATION_QUIRK_ENDIAN_DEPENDENT (1 << 5) +/* Serialized state cannot be loaded on a different platform from the one it + * was saved on for reasons other than endianness, such as word size + * dependence */ +#define RETRO_SERIALIZATION_QUIRK_PLATFORM_DEPENDENT (1 << 6) + +#define RETRO_ENVIRONMENT_SET_SERIALIZATION_QUIRKS 44 + /* uint64_t * -- + * Sets quirk flags associated with serialization. The frontend will zero any flags it doesn't + * recognize or support. Should be set in either retro_init or retro_load_game, but not both. + */ + + +#define RETRO_MEMDESC_CONST (1 << 0) /* The frontend will never change this memory area once retro_load_game has returned. */ +#define RETRO_MEMDESC_BIGENDIAN (1 << 1) /* The memory area contains big endian data. Default is little endian. */ +#define RETRO_MEMDESC_ALIGN_2 (1 << 16) /* All memory access in this area is aligned to their own size, or 2, whichever is smaller. */ +#define RETRO_MEMDESC_ALIGN_4 (2 << 16) +#define RETRO_MEMDESC_ALIGN_8 (3 << 16) +#define RETRO_MEMDESC_MINSIZE_2 (1 << 24) /* All memory in this region is accessed at least 2 bytes at the time. */ +#define RETRO_MEMDESC_MINSIZE_4 (2 << 24) +#define RETRO_MEMDESC_MINSIZE_8 (3 << 24) +struct retro_memory_descriptor +{ + uint64_t flags; + + /* Pointer to the start of the relevant ROM or RAM chip. + * It's strongly recommended to use 'offset' if possible, rather than + * doing math on the pointer. + * + * If the same byte is mapped my multiple descriptors, their descriptors + * must have the same pointer. + * If 'start' does not point to the first byte in the pointer, put the + * difference in 'offset' instead. + * + * May be NULL if there's nothing usable here (e.g. hardware registers and + * open bus). No flags should be set if the pointer is NULL. + * It's recommended to minimize the number of descriptors if possible, + * but not mandatory. */ + void *ptr; + size_t offset; + + /* This is the location in the emulated address space + * where the mapping starts. */ + size_t start; + + /* Which bits must be same as in 'start' for this mapping to apply. + * The first memory descriptor to claim a certain byte is the one + * that applies. + * A bit which is set in 'start' must also be set in this. + * Can be zero, in which case each byte is assumed mapped exactly once. + * In this case, 'len' must be a power of two. */ + size_t select; + + /* If this is nonzero, the set bits are assumed not connected to the + * memory chip's address pins. */ + size_t disconnect; + + /* This one tells the size of the current memory area. + * If, after start+disconnect are applied, the address is higher than + * this, the highest bit of the address is cleared. + * + * If the address is still too high, the next highest bit is cleared. + * Can be zero, in which case it's assumed to be infinite (as limited + * by 'select' and 'disconnect'). */ + size_t len; + + /* To go from emulated address to physical address, the following + * order applies: + * Subtract 'start', pick off 'disconnect', apply 'len', add 'offset'. */ + + /* The address space name must consist of only a-zA-Z0-9_-, + * should be as short as feasible (maximum length is 8 plus the NUL), + * and may not be any other address space plus one or more 0-9A-F + * at the end. + * However, multiple memory descriptors for the same address space is + * allowed, and the address space name can be empty. NULL is treated + * as empty. + * + * Address space names are case sensitive, but avoid lowercase if possible. + * The same pointer may exist in multiple address spaces. + * + * Examples: + * blank+blank - valid (multiple things may be mapped in the same namespace) + * 'Sp'+'Sp' - valid (multiple things may be mapped in the same namespace) + * 'A'+'B' - valid (neither is a prefix of each other) + * 'S'+blank - valid ('S' is not in 0-9A-F) + * 'a'+blank - valid ('a' is not in 0-9A-F) + * 'a'+'A' - valid (neither is a prefix of each other) + * 'AR'+blank - valid ('R' is not in 0-9A-F) + * 'ARB'+blank - valid (the B can't be part of the address either, because + * there is no namespace 'AR') + * blank+'B' - not valid, because it's ambigous which address space B1234 + * would refer to. + * The length can't be used for that purpose; the frontend may want + * to append arbitrary data to an address, without a separator. */ + const char *addrspace; + + /* TODO: When finalizing this one, add a description field, which should be + * "WRAM" or something roughly equally long. */ + + /* TODO: When finalizing this one, replace 'select' with 'limit', which tells + * which bits can vary and still refer to the same address (limit = ~select). + * TODO: limit? range? vary? something else? */ + + /* TODO: When finalizing this one, if 'len' is above what 'select' (or + * 'limit') allows, it's bankswitched. Bankswitched data must have both 'len' + * and 'select' != 0, and the mappings don't tell how the system switches the + * banks. */ + + /* TODO: When finalizing this one, fix the 'len' bit removal order. + * For len=0x1800, pointer 0x1C00 should go to 0x1400, not 0x0C00. + * Algorithm: Take bits highest to lowest, but if it goes above len, clear + * the most recent addition and continue on the next bit. + * TODO: Can the above be optimized? Is "remove the lowest bit set in both + * pointer and 'len'" equivalent? */ + + /* TODO: Some emulators (MAME?) emulate big endian systems by only accessing + * the emulated memory in 32-bit chunks, native endian. But that's nothing + * compared to Darek Mihocka + * (section Emulation 103 - Nearly Free Byte Reversal) - he flips the ENTIRE + * RAM backwards! I'll want to represent both of those, via some flags. + * + * I suspect MAME either didn't think of that idea, or don't want the #ifdef. + * Not sure which, nor do I really care. */ + + /* TODO: Some of those flags are unused and/or don't really make sense. Clean + * them up. */ +}; + +/* The frontend may use the largest value of 'start'+'select' in a + * certain namespace to infer the size of the address space. + * + * If the address space is larger than that, a mapping with .ptr=NULL + * should be at the end of the array, with .select set to all ones for + * as long as the address space is big. + * + * Sample descriptors (minus .ptr, and RETRO_MEMFLAG_ on the flags): + * SNES WRAM: + * .start=0x7E0000, .len=0x20000 + * (Note that this must be mapped before the ROM in most cases; some of the + * ROM mappers + * try to claim $7E0000, or at least $7E8000.) + * SNES SPC700 RAM: + * .addrspace="S", .len=0x10000 + * SNES WRAM mirrors: + * .flags=MIRROR, .start=0x000000, .select=0xC0E000, .len=0x2000 + * .flags=MIRROR, .start=0x800000, .select=0xC0E000, .len=0x2000 + * SNES WRAM mirrors, alternate equivalent descriptor: + * .flags=MIRROR, .select=0x40E000, .disconnect=~0x1FFF + * (Various similar constructions can be created by combining parts of + * the above two.) + * SNES LoROM (512KB, mirrored a couple of times): + * .flags=CONST, .start=0x008000, .select=0x408000, .disconnect=0x8000, .len=512*1024 + * .flags=CONST, .start=0x400000, .select=0x400000, .disconnect=0x8000, .len=512*1024 + * SNES HiROM (4MB): + * .flags=CONST, .start=0x400000, .select=0x400000, .len=4*1024*1024 + * .flags=CONST, .offset=0x8000, .start=0x008000, .select=0x408000, .len=4*1024*1024 + * SNES ExHiROM (8MB): + * .flags=CONST, .offset=0, .start=0xC00000, .select=0xC00000, .len=4*1024*1024 + * .flags=CONST, .offset=4*1024*1024, .start=0x400000, .select=0xC00000, .len=4*1024*1024 + * .flags=CONST, .offset=0x8000, .start=0x808000, .select=0xC08000, .len=4*1024*1024 + * .flags=CONST, .offset=4*1024*1024+0x8000, .start=0x008000, .select=0xC08000, .len=4*1024*1024 + * Clarify the size of the address space: + * .ptr=NULL, .select=0xFFFFFF + * .len can be implied by .select in many of them, but was included for clarity. + */ + +struct retro_memory_map +{ + const struct retro_memory_descriptor *descriptors; + unsigned num_descriptors; +}; + +struct retro_controller_description +{ + /* Human-readable description of the controller. Even if using a generic + * input device type, this can be set to the particular device type the + * core uses. */ + const char *desc; + + /* Device type passed to retro_set_controller_port_device(). If the device + * type is a sub-class of a generic input device type, use the + * RETRO_DEVICE_SUBCLASS macro to create an ID. + * + * E.g. RETRO_DEVICE_SUBCLASS(RETRO_DEVICE_JOYPAD, 1). */ + unsigned id; +}; + +struct retro_controller_info +{ + const struct retro_controller_description *types; + unsigned num_types; +}; + +struct retro_subsystem_memory_info +{ + /* The extension associated with a memory type, e.g. "psram". */ + const char *extension; + + /* The memory type for retro_get_memory(). This should be at + * least 0x100 to avoid conflict with standardized + * libretro memory types. */ + unsigned type; +}; + +struct retro_subsystem_rom_info +{ + /* Describes what the content is (SGB BIOS, GB ROM, etc). */ + const char *desc; + + /* Same definition as retro_get_system_info(). */ + const char *valid_extensions; + + /* Same definition as retro_get_system_info(). */ + bool need_fullpath; + + /* Same definition as retro_get_system_info(). */ + bool block_extract; + + /* This is set if the content is required to load a game. + * If this is set to false, a zeroed-out retro_game_info can be passed. */ + bool required; + + /* Content can have multiple associated persistent + * memory types (retro_get_memory()). */ + const struct retro_subsystem_memory_info *memory; + unsigned num_memory; +}; + +struct retro_subsystem_info +{ + /* Human-readable string of the subsystem type, e.g. "Super GameBoy" */ + const char *desc; + + /* A computer friendly short string identifier for the subsystem type. + * This name must be [a-z]. + * E.g. if desc is "Super GameBoy", this can be "sgb". + * This identifier can be used for command-line interfaces, etc. + */ + const char *ident; + + /* Infos for each content file. The first entry is assumed to be the + * "most significant" content for frontend purposes. + * E.g. with Super GameBoy, the first content should be the GameBoy ROM, + * as it is the most "significant" content to a user. + * If a frontend creates new file paths based on the content used + * (e.g. savestates), it should use the path for the first ROM to do so. */ + const struct retro_subsystem_rom_info *roms; + + /* Number of content files associated with a subsystem. */ + unsigned num_roms; + + /* The type passed to retro_load_game_special(). */ + unsigned id; +}; + +typedef void (RETRO_CALLCONV *retro_proc_address_t)(void); + +/* libretro API extension functions: + * (None here so far). + * + * Get a symbol from a libretro core. + * Cores should only return symbols which are actual + * extensions to the libretro API. + * + * Frontends should not use this to obtain symbols to standard + * libretro entry points (static linking or dlsym). + * + * The symbol name must be equal to the function name, + * e.g. if void retro_foo(void); exists, the symbol must be called "retro_foo". + * The returned function pointer must be cast to the corresponding type. + */ +typedef retro_proc_address_t (RETRO_CALLCONV *retro_get_proc_address_t)(const char *sym); + +struct retro_get_proc_address_interface +{ + retro_get_proc_address_t get_proc_address; +}; + +enum retro_log_level +{ + RETRO_LOG_DEBUG = 0, + RETRO_LOG_INFO, + RETRO_LOG_WARN, + RETRO_LOG_ERROR, + + RETRO_LOG_DUMMY = INT_MAX +}; + +/* Logging function. Takes log level argument as well. */ +typedef void (RETRO_CALLCONV *retro_log_printf_t)(enum retro_log_level level, + const char *fmt, ...); + +struct retro_log_callback +{ + retro_log_printf_t log; +}; + +/* Performance related functions */ + +/* ID values for SIMD CPU features */ +#define RETRO_SIMD_SSE (1 << 0) +#define RETRO_SIMD_SSE2 (1 << 1) +#define RETRO_SIMD_VMX (1 << 2) +#define RETRO_SIMD_VMX128 (1 << 3) +#define RETRO_SIMD_AVX (1 << 4) +#define RETRO_SIMD_NEON (1 << 5) +#define RETRO_SIMD_SSE3 (1 << 6) +#define RETRO_SIMD_SSSE3 (1 << 7) +#define RETRO_SIMD_MMX (1 << 8) +#define RETRO_SIMD_MMXEXT (1 << 9) +#define RETRO_SIMD_SSE4 (1 << 10) +#define RETRO_SIMD_SSE42 (1 << 11) +#define RETRO_SIMD_AVX2 (1 << 12) +#define RETRO_SIMD_VFPU (1 << 13) +#define RETRO_SIMD_PS (1 << 14) +#define RETRO_SIMD_AES (1 << 15) +#define RETRO_SIMD_VFPV3 (1 << 16) +#define RETRO_SIMD_VFPV4 (1 << 17) +#define RETRO_SIMD_POPCNT (1 << 18) +#define RETRO_SIMD_MOVBE (1 << 19) +#define RETRO_SIMD_CMOV (1 << 20) +#define RETRO_SIMD_ASIMD (1 << 21) + +typedef uint64_t retro_perf_tick_t; +typedef int64_t retro_time_t; + +struct retro_perf_counter +{ + const char *ident; + retro_perf_tick_t start; + retro_perf_tick_t total; + retro_perf_tick_t call_cnt; + + bool registered; +}; + +/* Returns current time in microseconds. + * Tries to use the most accurate timer available. + */ +typedef retro_time_t (RETRO_CALLCONV *retro_perf_get_time_usec_t)(void); + +/* A simple counter. Usually nanoseconds, but can also be CPU cycles. + * Can be used directly if desired (when creating a more sophisticated + * performance counter system). + * */ +typedef retro_perf_tick_t (RETRO_CALLCONV *retro_perf_get_counter_t)(void); + +/* Returns a bit-mask of detected CPU features (RETRO_SIMD_*). */ +typedef uint64_t (RETRO_CALLCONV *retro_get_cpu_features_t)(void); + +/* Asks frontend to log and/or display the state of performance counters. + * Performance counters can always be poked into manually as well. + */ +typedef void (RETRO_CALLCONV *retro_perf_log_t)(void); + +/* Register a performance counter. + * ident field must be set with a discrete value and other values in + * retro_perf_counter must be 0. + * Registering can be called multiple times. To avoid calling to + * frontend redundantly, you can check registered field first. */ +typedef void (RETRO_CALLCONV *retro_perf_register_t)(struct retro_perf_counter *counter); + +/* Starts a registered counter. */ +typedef void (RETRO_CALLCONV *retro_perf_start_t)(struct retro_perf_counter *counter); + +/* Stops a registered counter. */ +typedef void (RETRO_CALLCONV *retro_perf_stop_t)(struct retro_perf_counter *counter); + +/* For convenience it can be useful to wrap register, start and stop in macros. + * E.g.: + * #ifdef LOG_PERFORMANCE + * #define RETRO_PERFORMANCE_INIT(perf_cb, name) static struct retro_perf_counter name = {#name}; if (!name.registered) perf_cb.perf_register(&(name)) + * #define RETRO_PERFORMANCE_START(perf_cb, name) perf_cb.perf_start(&(name)) + * #define RETRO_PERFORMANCE_STOP(perf_cb, name) perf_cb.perf_stop(&(name)) + * #else + * ... Blank macros ... + * #endif + * + * These can then be used mid-functions around code snippets. + * + * extern struct retro_perf_callback perf_cb; * Somewhere in the core. + * + * void do_some_heavy_work(void) + * { + * RETRO_PERFORMANCE_INIT(cb, work_1; + * RETRO_PERFORMANCE_START(cb, work_1); + * heavy_work_1(); + * RETRO_PERFORMANCE_STOP(cb, work_1); + * + * RETRO_PERFORMANCE_INIT(cb, work_2); + * RETRO_PERFORMANCE_START(cb, work_2); + * heavy_work_2(); + * RETRO_PERFORMANCE_STOP(cb, work_2); + * } + * + * void retro_deinit(void) + * { + * perf_cb.perf_log(); * Log all perf counters here for example. + * } + */ + +struct retro_perf_callback +{ + retro_perf_get_time_usec_t get_time_usec; + retro_get_cpu_features_t get_cpu_features; + + retro_perf_get_counter_t get_perf_counter; + retro_perf_register_t perf_register; + retro_perf_start_t perf_start; + retro_perf_stop_t perf_stop; + retro_perf_log_t perf_log; +}; + +/* FIXME: Document the sensor API and work out behavior. + * It will be marked as experimental until then. + */ +enum retro_sensor_action +{ + RETRO_SENSOR_ACCELEROMETER_ENABLE = 0, + RETRO_SENSOR_ACCELEROMETER_DISABLE, + + RETRO_SENSOR_DUMMY = INT_MAX +}; + +/* Id values for SENSOR types. */ +#define RETRO_SENSOR_ACCELEROMETER_X 0 +#define RETRO_SENSOR_ACCELEROMETER_Y 1 +#define RETRO_SENSOR_ACCELEROMETER_Z 2 + +typedef bool (RETRO_CALLCONV *retro_set_sensor_state_t)(unsigned port, + enum retro_sensor_action action, unsigned rate); + +typedef float (RETRO_CALLCONV *retro_sensor_get_input_t)(unsigned port, unsigned id); + +struct retro_sensor_interface +{ + retro_set_sensor_state_t set_sensor_state; + retro_sensor_get_input_t get_sensor_input; +}; + +enum retro_camera_buffer +{ + RETRO_CAMERA_BUFFER_OPENGL_TEXTURE = 0, + RETRO_CAMERA_BUFFER_RAW_FRAMEBUFFER, + + RETRO_CAMERA_BUFFER_DUMMY = INT_MAX +}; + +/* Starts the camera driver. Can only be called in retro_run(). */ +typedef bool (RETRO_CALLCONV *retro_camera_start_t)(void); + +/* Stops the camera driver. Can only be called in retro_run(). */ +typedef void (RETRO_CALLCONV *retro_camera_stop_t)(void); + +/* Callback which signals when the camera driver is initialized + * and/or deinitialized. + * retro_camera_start_t can be called in initialized callback. + */ +typedef void (RETRO_CALLCONV *retro_camera_lifetime_status_t)(void); + +/* A callback for raw framebuffer data. buffer points to an XRGB8888 buffer. + * Width, height and pitch are similar to retro_video_refresh_t. + * First pixel is top-left origin. + */ +typedef void (RETRO_CALLCONV *retro_camera_frame_raw_framebuffer_t)(const uint32_t *buffer, + unsigned width, unsigned height, size_t pitch); + +/* A callback for when OpenGL textures are used. + * + * texture_id is a texture owned by camera driver. + * Its state or content should be considered immutable, except for things like + * texture filtering and clamping. + * + * texture_target is the texture target for the GL texture. + * These can include e.g. GL_TEXTURE_2D, GL_TEXTURE_RECTANGLE, and possibly + * more depending on extensions. + * + * affine points to a packed 3x3 column-major matrix used to apply an affine + * transform to texture coordinates. (affine_matrix * vec3(coord_x, coord_y, 1.0)) + * After transform, normalized texture coord (0, 0) should be bottom-left + * and (1, 1) should be top-right (or (width, height) for RECTANGLE). + * + * GL-specific typedefs are avoided here to avoid relying on gl.h in + * the API definition. + */ +typedef void (RETRO_CALLCONV *retro_camera_frame_opengl_texture_t)(unsigned texture_id, + unsigned texture_target, const float *affine); + +struct retro_camera_callback +{ + /* Set by libretro core. + * Example bitmask: caps = (1 << RETRO_CAMERA_BUFFER_OPENGL_TEXTURE) | (1 << RETRO_CAMERA_BUFFER_RAW_FRAMEBUFFER). + */ + uint64_t caps; + + /* Desired resolution for camera. Is only used as a hint. */ + unsigned width; + unsigned height; + + /* Set by frontend. */ + retro_camera_start_t start; + retro_camera_stop_t stop; + + /* Set by libretro core if raw framebuffer callbacks will be used. */ + retro_camera_frame_raw_framebuffer_t frame_raw_framebuffer; + + /* Set by libretro core if OpenGL texture callbacks will be used. */ + retro_camera_frame_opengl_texture_t frame_opengl_texture; + + /* Set by libretro core. Called after camera driver is initialized and + * ready to be started. + * Can be NULL, in which this callback is not called. + */ + retro_camera_lifetime_status_t initialized; + + /* Set by libretro core. Called right before camera driver is + * deinitialized. + * Can be NULL, in which this callback is not called. + */ + retro_camera_lifetime_status_t deinitialized; +}; + +/* Sets the interval of time and/or distance at which to update/poll + * location-based data. + * + * To ensure compatibility with all location-based implementations, + * values for both interval_ms and interval_distance should be provided. + * + * interval_ms is the interval expressed in milliseconds. + * interval_distance is the distance interval expressed in meters. + */ +typedef void (RETRO_CALLCONV *retro_location_set_interval_t)(unsigned interval_ms, + unsigned interval_distance); + +/* Start location services. The device will start listening for changes to the + * current location at regular intervals (which are defined with + * retro_location_set_interval_t). */ +typedef bool (RETRO_CALLCONV *retro_location_start_t)(void); + +/* Stop location services. The device will stop listening for changes + * to the current location. */ +typedef void (RETRO_CALLCONV *retro_location_stop_t)(void); + +/* Get the position of the current location. Will set parameters to + * 0 if no new location update has happened since the last time. */ +typedef bool (RETRO_CALLCONV *retro_location_get_position_t)(double *lat, double *lon, + double *horiz_accuracy, double *vert_accuracy); + +/* Callback which signals when the location driver is initialized + * and/or deinitialized. + * retro_location_start_t can be called in initialized callback. + */ +typedef void (RETRO_CALLCONV *retro_location_lifetime_status_t)(void); + +struct retro_location_callback +{ + retro_location_start_t start; + retro_location_stop_t stop; + retro_location_get_position_t get_position; + retro_location_set_interval_t set_interval; + + retro_location_lifetime_status_t initialized; + retro_location_lifetime_status_t deinitialized; +}; + +enum retro_rumble_effect +{ + RETRO_RUMBLE_STRONG = 0, + RETRO_RUMBLE_WEAK = 1, + + RETRO_RUMBLE_DUMMY = INT_MAX +}; + +/* Sets rumble state for joypad plugged in port 'port'. + * Rumble effects are controlled independently, + * and setting e.g. strong rumble does not override weak rumble. + * Strength has a range of [0, 0xffff]. + * + * Returns true if rumble state request was honored. + * Calling this before first retro_run() is likely to return false. */ +typedef bool (RETRO_CALLCONV *retro_set_rumble_state_t)(unsigned port, + enum retro_rumble_effect effect, uint16_t strength); + +struct retro_rumble_interface +{ + retro_set_rumble_state_t set_rumble_state; +}; + +/* Notifies libretro that audio data should be written. */ +typedef void (RETRO_CALLCONV *retro_audio_callback_t)(void); + +/* True: Audio driver in frontend is active, and callback is + * expected to be called regularily. + * False: Audio driver in frontend is paused or inactive. + * Audio callback will not be called until set_state has been + * called with true. + * Initial state is false (inactive). + */ +typedef void (RETRO_CALLCONV *retro_audio_set_state_callback_t)(bool enabled); + +struct retro_audio_callback +{ + retro_audio_callback_t callback; + retro_audio_set_state_callback_t set_state; +}; + +/* Notifies a libretro core of time spent since last invocation + * of retro_run() in microseconds. + * + * It will be called right before retro_run() every frame. + * The frontend can tamper with timing to support cases like + * fast-forward, slow-motion and framestepping. + * + * In those scenarios the reference frame time value will be used. */ +typedef int64_t retro_usec_t; +typedef void (RETRO_CALLCONV *retro_frame_time_callback_t)(retro_usec_t usec); +struct retro_frame_time_callback +{ + retro_frame_time_callback_t callback; + /* Represents the time of one frame. It is computed as + * 1000000 / fps, but the implementation will resolve the + * rounding to ensure that framestepping, etc is exact. */ + retro_usec_t reference; +}; + +/* Pass this to retro_video_refresh_t if rendering to hardware. + * Passing NULL to retro_video_refresh_t is still a frame dupe as normal. + * */ +#define RETRO_HW_FRAME_BUFFER_VALID ((void*)-1) + +/* Invalidates the current HW context. + * Any GL state is lost, and must not be deinitialized explicitly. + * If explicit deinitialization is desired by the libretro core, + * it should implement context_destroy callback. + * If called, all GPU resources must be reinitialized. + * Usually called when frontend reinits video driver. + * Also called first time video driver is initialized, + * allowing libretro core to initialize resources. + */ +typedef void (RETRO_CALLCONV *retro_hw_context_reset_t)(void); + +/* Gets current framebuffer which is to be rendered to. + * Could change every frame potentially. + */ +typedef uintptr_t (RETRO_CALLCONV *retro_hw_get_current_framebuffer_t)(void); + +/* Get a symbol from HW context. */ +typedef retro_proc_address_t (RETRO_CALLCONV *retro_hw_get_proc_address_t)(const char *sym); + +enum retro_hw_context_type +{ + RETRO_HW_CONTEXT_NONE = 0, + /* OpenGL 2.x. Driver can choose to use latest compatibility context. */ + RETRO_HW_CONTEXT_OPENGL = 1, + /* OpenGL ES 2.0. */ + RETRO_HW_CONTEXT_OPENGLES2 = 2, + /* Modern desktop core GL context. Use version_major/ + * version_minor fields to set GL version. */ + RETRO_HW_CONTEXT_OPENGL_CORE = 3, + /* OpenGL ES 3.0 */ + RETRO_HW_CONTEXT_OPENGLES3 = 4, + /* OpenGL ES 3.1+. Set version_major/version_minor. For GLES2 and GLES3, + * use the corresponding enums directly. */ + RETRO_HW_CONTEXT_OPENGLES_VERSION = 5, + + /* Vulkan, see RETRO_ENVIRONMENT_GET_HW_RENDER_INTERFACE. */ + RETRO_HW_CONTEXT_VULKAN = 6, + + RETRO_HW_CONTEXT_DUMMY = INT_MAX +}; + +struct retro_hw_render_callback +{ + /* Which API to use. Set by libretro core. */ + enum retro_hw_context_type context_type; + + /* Called when a context has been created or when it has been reset. + * An OpenGL context is only valid after context_reset() has been called. + * + * When context_reset is called, OpenGL resources in the libretro + * implementation are guaranteed to be invalid. + * + * It is possible that context_reset is called multiple times during an + * application lifecycle. + * If context_reset is called without any notification (context_destroy), + * the OpenGL context was lost and resources should just be recreated + * without any attempt to "free" old resources. + */ + retro_hw_context_reset_t context_reset; + + /* Set by frontend. + * TODO: This is rather obsolete. The frontend should not + * be providing preallocated framebuffers. */ + retro_hw_get_current_framebuffer_t get_current_framebuffer; + + /* Set by frontend. + * Can return all relevant functions, including glClear on Windows. */ + retro_hw_get_proc_address_t get_proc_address; + + /* Set if render buffers should have depth component attached. + * TODO: Obsolete. */ + bool depth; + + /* Set if stencil buffers should be attached. + * TODO: Obsolete. */ + bool stencil; + + /* If depth and stencil are true, a packed 24/8 buffer will be added. + * Only attaching stencil is invalid and will be ignored. */ + + /* Use conventional bottom-left origin convention. If false, + * standard libretro top-left origin semantics are used. + * TODO: Move to GL specific interface. */ + bool bottom_left_origin; + + /* Major version number for core GL context or GLES 3.1+. */ + unsigned version_major; + + /* Minor version number for core GL context or GLES 3.1+. */ + unsigned version_minor; + + /* If this is true, the frontend will go very far to avoid + * resetting context in scenarios like toggling fullscreen, etc. + * TODO: Obsolete? Maybe frontend should just always assume this ... + */ + bool cache_context; + + /* The reset callback might still be called in extreme situations + * such as if the context is lost beyond recovery. + * + * For optimal stability, set this to false, and allow context to be + * reset at any time. + */ + + /* A callback to be called before the context is destroyed in a + * controlled way by the frontend. */ + retro_hw_context_reset_t context_destroy; + + /* OpenGL resources can be deinitialized cleanly at this step. + * context_destroy can be set to NULL, in which resources will + * just be destroyed without any notification. + * + * Even when context_destroy is non-NULL, it is possible that + * context_reset is called without any destroy notification. + * This happens if context is lost by external factors (such as + * notified by GL_ARB_robustness). + * + * In this case, the context is assumed to be already dead, + * and the libretro implementation must not try to free any OpenGL + * resources in the subsequent context_reset. + */ + + /* Creates a debug context. */ + bool debug_context; +}; + +/* Callback type passed in RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK. + * Called by the frontend in response to keyboard events. + * down is set if the key is being pressed, or false if it is being released. + * keycode is the RETROK value of the char. + * character is the text character of the pressed key. (UTF-32). + * key_modifiers is a set of RETROKMOD values or'ed together. + * + * The pressed/keycode state can be indepedent of the character. + * It is also possible that multiple characters are generated from a + * single keypress. + * Keycode events should be treated separately from character events. + * However, when possible, the frontend should try to synchronize these. + * If only a character is posted, keycode should be RETROK_UNKNOWN. + * + * Similarily if only a keycode event is generated with no corresponding + * character, character should be 0. + */ +typedef void (RETRO_CALLCONV *retro_keyboard_event_t)(bool down, unsigned keycode, + uint32_t character, uint16_t key_modifiers); + +struct retro_keyboard_callback +{ + retro_keyboard_event_t callback; +}; + +/* Callbacks for RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE. + * Should be set for implementations which can swap out multiple disk + * images in runtime. + * + * If the implementation can do this automatically, it should strive to do so. + * However, there are cases where the user must manually do so. + * + * Overview: To swap a disk image, eject the disk image with + * set_eject_state(true). + * Set the disk index with set_image_index(index). Insert the disk again + * with set_eject_state(false). + */ + +/* If ejected is true, "ejects" the virtual disk tray. + * When ejected, the disk image index can be set. + */ +typedef bool (RETRO_CALLCONV *retro_set_eject_state_t)(bool ejected); + +/* Gets current eject state. The initial state is 'not ejected'. */ +typedef bool (RETRO_CALLCONV *retro_get_eject_state_t)(void); + +/* Gets current disk index. First disk is index 0. + * If return value is >= get_num_images(), no disk is currently inserted. + */ +typedef unsigned (RETRO_CALLCONV *retro_get_image_index_t)(void); + +/* Sets image index. Can only be called when disk is ejected. + * The implementation supports setting "no disk" by using an + * index >= get_num_images(). + */ +typedef bool (RETRO_CALLCONV *retro_set_image_index_t)(unsigned index); + +/* Gets total number of images which are available to use. */ +typedef unsigned (RETRO_CALLCONV *retro_get_num_images_t)(void); + +struct retro_game_info; + +/* Replaces the disk image associated with index. + * Arguments to pass in info have same requirements as retro_load_game(). + * Virtual disk tray must be ejected when calling this. + * + * Replacing a disk image with info = NULL will remove the disk image + * from the internal list. + * As a result, calls to get_image_index() can change. + * + * E.g. replace_image_index(1, NULL), and previous get_image_index() + * returned 4 before. + * Index 1 will be removed, and the new index is 3. + */ +typedef bool (RETRO_CALLCONV *retro_replace_image_index_t)(unsigned index, + const struct retro_game_info *info); + +/* Adds a new valid index (get_num_images()) to the internal disk list. + * This will increment subsequent return values from get_num_images() by 1. + * This image index cannot be used until a disk image has been set + * with replace_image_index. */ +typedef bool (RETRO_CALLCONV *retro_add_image_index_t)(void); + +struct retro_disk_control_callback +{ + retro_set_eject_state_t set_eject_state; + retro_get_eject_state_t get_eject_state; + + retro_get_image_index_t get_image_index; + retro_set_image_index_t set_image_index; + retro_get_num_images_t get_num_images; + + retro_replace_image_index_t replace_image_index; + retro_add_image_index_t add_image_index; +}; + +enum retro_pixel_format +{ + /* 0RGB1555, native endian. + * 0 bit must be set to 0. + * This pixel format is default for compatibility concerns only. + * If a 15/16-bit pixel format is desired, consider using RGB565. */ + RETRO_PIXEL_FORMAT_0RGB1555 = 0, + + /* XRGB8888, native endian. + * X bits are ignored. */ + RETRO_PIXEL_FORMAT_XRGB8888 = 1, + + /* RGB565, native endian. + * This pixel format is the recommended format to use if a 15/16-bit + * format is desired as it is the pixel format that is typically + * available on a wide range of low-power devices. + * + * It is also natively supported in APIs like OpenGL ES. */ + RETRO_PIXEL_FORMAT_RGB565 = 2, + + /* Ensure sizeof() == sizeof(int). */ + RETRO_PIXEL_FORMAT_UNKNOWN = INT_MAX +}; + +struct retro_message +{ + const char *msg; /* Message to be displayed. */ + unsigned frames; /* Duration in frames of message. */ +}; + +/* Describes how the libretro implementation maps a libretro input bind + * to its internal input system through a human readable string. + * This string can be used to better let a user configure input. */ +struct retro_input_descriptor +{ + /* Associates given parameters with a description. */ + unsigned port; + unsigned device; + unsigned index; + unsigned id; + + /* Human readable description for parameters. + * The pointer must remain valid until + * retro_unload_game() is called. */ + const char *description; +}; + +struct retro_system_info +{ + /* All pointers are owned by libretro implementation, and pointers must + * remain valid until retro_deinit() is called. */ + + const char *library_name; /* Descriptive name of library. Should not + * contain any version numbers, etc. */ + const char *library_version; /* Descriptive version of core. */ + + const char *valid_extensions; /* A string listing probably content + * extensions the core will be able to + * load, separated with pipe. + * I.e. "bin|rom|iso". + * Typically used for a GUI to filter + * out extensions. */ + + /* If true, retro_load_game() is guaranteed to provide a valid pathname + * in retro_game_info::path. + * ::data and ::size are both invalid. + * + * If false, ::data and ::size are guaranteed to be valid, but ::path + * might not be valid. + * + * This is typically set to true for libretro implementations that must + * load from file. + * Implementations should strive for setting this to false, as it allows + * the frontend to perform patching, etc. */ + bool need_fullpath; + + /* If true, the frontend is not allowed to extract any archives before + * loading the real content. + * Necessary for certain libretro implementations that load games + * from zipped archives. */ + bool block_extract; +}; + +struct retro_game_geometry +{ + unsigned base_width; /* Nominal video width of game. */ + unsigned base_height; /* Nominal video height of game. */ + unsigned max_width; /* Maximum possible width of game. */ + unsigned max_height; /* Maximum possible height of game. */ + + float aspect_ratio; /* Nominal aspect ratio of game. If + * aspect_ratio is <= 0.0, an aspect ratio + * of base_width / base_height is assumed. + * A frontend could override this setting, + * if desired. */ +}; + +struct retro_system_timing +{ + double fps; /* FPS of video content. */ + double sample_rate; /* Sampling rate of audio. */ +}; + +struct retro_system_av_info +{ + struct retro_game_geometry geometry; + struct retro_system_timing timing; +}; + +struct retro_variable +{ + /* Variable to query in RETRO_ENVIRONMENT_GET_VARIABLE. + * If NULL, obtains the complete environment string if more + * complex parsing is necessary. + * The environment string is formatted as key-value pairs + * delimited by semicolons as so: + * "key1=value1;key2=value2;..." + */ + const char *key; + + /* Value to be obtained. If key does not exist, it is set to NULL. */ + const char *value; +}; + +struct retro_game_info +{ + const char *path; /* Path to game, UTF-8 encoded. + * Usually used as a reference. + * May be NULL if rom was loaded from stdin + * or similar. + * retro_system_info::need_fullpath guaranteed + * that this path is valid. */ + const void *data; /* Memory buffer of loaded game. Will be NULL + * if need_fullpath was set. */ + size_t size; /* Size of memory buffer. */ + const char *meta; /* String of implementation specific meta-data. */ +}; + +#define RETRO_MEMORY_ACCESS_WRITE (1 << 0) + /* The core will write to the buffer provided by retro_framebuffer::data. */ +#define RETRO_MEMORY_ACCESS_READ (1 << 1) + /* The core will read from retro_framebuffer::data. */ +#define RETRO_MEMORY_TYPE_CACHED (1 << 0) + /* The memory in data is cached. + * If not cached, random writes and/or reading from the buffer is expected to be very slow. */ +struct retro_framebuffer +{ + void *data; /* The framebuffer which the core can render into. + Set by frontend in GET_CURRENT_SOFTWARE_FRAMEBUFFER. + The initial contents of data are unspecified. */ + unsigned width; /* The framebuffer width used by the core. Set by core. */ + unsigned height; /* The framebuffer height used by the core. Set by core. */ + size_t pitch; /* The number of bytes between the beginning of a scanline, + and beginning of the next scanline. + Set by frontend in GET_CURRENT_SOFTWARE_FRAMEBUFFER. */ + enum retro_pixel_format format; /* The pixel format the core must use to render into data. + This format could differ from the format used in + SET_PIXEL_FORMAT. + Set by frontend in GET_CURRENT_SOFTWARE_FRAMEBUFFER. */ + + unsigned access_flags; /* How the core will access the memory in the framebuffer. + RETRO_MEMORY_ACCESS_* flags. + Set by core. */ + unsigned memory_flags; /* Flags telling core how the memory has been mapped. + RETRO_MEMORY_TYPE_* flags. + Set by frontend in GET_CURRENT_SOFTWARE_FRAMEBUFFER. */ +}; + +/* Callbacks */ + +/* Environment callback. Gives implementations a way of performing + * uncommon tasks. Extensible. */ +typedef bool (RETRO_CALLCONV *retro_environment_t)(unsigned cmd, void *data); + +/* Render a frame. Pixel format is 15-bit 0RGB1555 native endian + * unless changed (see RETRO_ENVIRONMENT_SET_PIXEL_FORMAT). + * + * Width and height specify dimensions of buffer. + * Pitch specifices length in bytes between two lines in buffer. + * + * For performance reasons, it is highly recommended to have a frame + * that is packed in memory, i.e. pitch == width * byte_per_pixel. + * Certain graphic APIs, such as OpenGL ES, do not like textures + * that are not packed in memory. + */ +typedef void (RETRO_CALLCONV *retro_video_refresh_t)(const void *data, unsigned width, + unsigned height, size_t pitch); + +/* Renders a single audio frame. Should only be used if implementation + * generates a single sample at a time. + * Format is signed 16-bit native endian. + */ +typedef void (RETRO_CALLCONV *retro_audio_sample_t)(int16_t left, int16_t right); + +/* Renders multiple audio frames in one go. + * + * One frame is defined as a sample of left and right channels, interleaved. + * I.e. int16_t buf[4] = { l, r, l, r }; would be 2 frames. + * Only one of the audio callbacks must ever be used. + */ +typedef size_t (RETRO_CALLCONV *retro_audio_sample_batch_t)(const int16_t *data, + size_t frames); + +/* Polls input. */ +typedef void (RETRO_CALLCONV *retro_input_poll_t)(void); + +/* Queries for input for player 'port'. device will be masked with + * RETRO_DEVICE_MASK. + * + * Specialization of devices such as RETRO_DEVICE_JOYPAD_MULTITAP that + * have been set with retro_set_controller_port_device() + * will still use the higher level RETRO_DEVICE_JOYPAD to request input. + */ +typedef int16_t (RETRO_CALLCONV *retro_input_state_t)(unsigned port, unsigned device, + unsigned index, unsigned id); + +/* Sets callbacks. retro_set_environment() is guaranteed to be called + * before retro_init(). + * + * The rest of the set_* functions are guaranteed to have been called + * before the first call to retro_run() is made. */ +RETRO_API void retro_set_environment(retro_environment_t); +RETRO_API void retro_set_video_refresh(retro_video_refresh_t); +RETRO_API void retro_set_audio_sample(retro_audio_sample_t); +RETRO_API void retro_set_audio_sample_batch(retro_audio_sample_batch_t); +RETRO_API void retro_set_input_poll(retro_input_poll_t); +RETRO_API void retro_set_input_state(retro_input_state_t); + +/* Library global initialization/deinitialization. */ +RETRO_API void retro_init(void); +RETRO_API void retro_deinit(void); + +/* Must return RETRO_API_VERSION. Used to validate ABI compatibility + * when the API is revised. */ +RETRO_API unsigned retro_api_version(void); + +/* Gets statically known system info. Pointers provided in *info + * must be statically allocated. + * Can be called at any time, even before retro_init(). */ +RETRO_API void retro_get_system_info(struct retro_system_info *info); + +/* Gets information about system audio/video timings and geometry. + * Can be called only after retro_load_game() has successfully completed. + * NOTE: The implementation of this function might not initialize every + * variable if needed. + * E.g. geom.aspect_ratio might not be initialized if core doesn't + * desire a particular aspect ratio. */ +RETRO_API void retro_get_system_av_info(struct retro_system_av_info *info); + +/* Sets device to be used for player 'port'. + * By default, RETRO_DEVICE_JOYPAD is assumed to be plugged into all + * available ports. + * Setting a particular device type is not a guarantee that libretro cores + * will only poll input based on that particular device type. It is only a + * hint to the libretro core when a core cannot automatically detect the + * appropriate input device type on its own. It is also relevant when a + * core can change its behavior depending on device type. */ +RETRO_API void retro_set_controller_port_device(unsigned port, unsigned device); + +/* Resets the current game. */ +RETRO_API void retro_reset(void); + +/* Runs the game for one video frame. + * During retro_run(), input_poll callback must be called at least once. + * + * If a frame is not rendered for reasons where a game "dropped" a frame, + * this still counts as a frame, and retro_run() should explicitly dupe + * a frame if GET_CAN_DUPE returns true. + * In this case, the video callback can take a NULL argument for data. + */ +RETRO_API void retro_run(void); + +/* Returns the amount of data the implementation requires to serialize + * internal state (save states). + * Between calls to retro_load_game() and retro_unload_game(), the + * returned size is never allowed to be larger than a previous returned + * value, to ensure that the frontend can allocate a save state buffer once. + */ +RETRO_API size_t retro_serialize_size(void); + +/* Serializes internal state. If failed, or size is lower than + * retro_serialize_size(), it should return false, true otherwise. */ +RETRO_API bool retro_serialize(void *data, size_t size); +RETRO_API bool retro_unserialize(const void *data, size_t size); + +RETRO_API void retro_cheat_reset(void); +RETRO_API void retro_cheat_set(unsigned index, bool enabled, const char *code); + +/* Loads a game. */ +RETRO_API bool retro_load_game(const struct retro_game_info *game); + +/* Loads a "special" kind of game. Should not be used, + * except in extreme cases. */ +RETRO_API bool retro_load_game_special( + unsigned game_type, + const struct retro_game_info *info, size_t num_info +); + +/* Unloads a currently loaded game. */ +RETRO_API void retro_unload_game(void); + +/* Gets region of game. */ +RETRO_API unsigned retro_get_region(void); + +/* Gets region of memory. */ +RETRO_API void *retro_get_memory_data(unsigned id); +RETRO_API size_t retro_get_memory_size(unsigned id); + +#ifdef __cplusplus +} +#endif + +#endif diff -Nru retro-gtk-0.12.1/retro-gtk/loop/main-loop.c retro-gtk-0.14.0/retro-gtk/loop/main-loop.c --- retro-gtk-0.12.1/retro-gtk/loop/main-loop.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/loop/main-loop.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,424 +0,0 @@ -/* main-loop.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from main-loop.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include -#include -#include -#include - - -#define RETRO_TYPE_MAIN_LOOP (retro_main_loop_get_type ()) -#define RETRO_MAIN_LOOP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_MAIN_LOOP, RetroMainLoop)) -#define RETRO_MAIN_LOOP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_MAIN_LOOP, RetroMainLoopClass)) -#define RETRO_IS_MAIN_LOOP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_MAIN_LOOP)) -#define RETRO_IS_MAIN_LOOP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_MAIN_LOOP)) -#define RETRO_MAIN_LOOP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_MAIN_LOOP, RetroMainLoopClass)) - -typedef struct _RetroMainLoop RetroMainLoop; -typedef struct _RetroMainLoopClass RetroMainLoopClass; -typedef struct _RetroMainLoopPrivate RetroMainLoopPrivate; - -#define RETRO_TYPE_CORE (retro_core_get_type ()) -#define RETRO_CORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CORE, RetroCore)) -#define RETRO_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CORE, RetroCoreClass)) -#define RETRO_IS_CORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CORE)) -#define RETRO_IS_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CORE)) -#define RETRO_CORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CORE, RetroCoreClass)) - -typedef struct _RetroCore RetroCore; -typedef struct _RetroCoreClass RetroCoreClass; -enum { - RETRO_MAIN_LOOP_DUMMY_PROPERTY, - RETRO_MAIN_LOOP_CORE, - RETRO_MAIN_LOOP_SPEED_RATE, - RETRO_MAIN_LOOP_LAST_PROPERTY -}; -static GParamSpec* retro_main_loop_properties[RETRO_MAIN_LOOP_LAST_PROPERTY]; -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) -#define _g_free0(var) ((var == NULL) ? NULL : (var = (g_free (var), NULL))) - -struct _RetroMainLoop { - GObject parent_instance; - RetroMainLoopPrivate * priv; -}; - -struct _RetroMainLoopClass { - GObjectClass parent_class; -}; - -struct _RetroMainLoopPrivate { - RetroCore* _core; - gdouble _speed_rate; - guint* loop; -}; - - -static gpointer retro_main_loop_parent_class = NULL; - -GType retro_main_loop_get_type (void) G_GNUC_CONST; -GType retro_core_get_type (void) G_GNUC_CONST; -#define RETRO_MAIN_LOOP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), RETRO_TYPE_MAIN_LOOP, RetroMainLoopPrivate)) -void retro_main_loop_stop (RetroMainLoop* self); -RetroMainLoop* retro_main_loop_new (RetroCore* core); -RetroMainLoop* retro_main_loop_construct (GType object_type, RetroCore* core); -void retro_main_loop_start (RetroMainLoop* self); -gdouble retro_main_loop_get_speed_rate (RetroMainLoop* self); -RetroCore* retro_main_loop_get_core (RetroMainLoop* self); -gdouble retro_core_get_frames_per_second (RetroCore* self); -static gboolean retro_main_loop_run (RetroMainLoop* self); -static gboolean _retro_main_loop_run_gsource_func (gpointer self); -static guint* _uint_dup (guint* self); -void retro_main_loop_reset (RetroMainLoop* self); -void retro_core_reset (RetroCore* self); -void retro_core_run (RetroCore* self); -static void retro_main_loop_on_frames_per_second_changed (RetroMainLoop* self); -void retro_main_loop_set_core (RetroMainLoop* self, RetroCore* value); -void retro_main_loop_set_speed_rate (RetroMainLoop* self, gdouble value); -static GObject * retro_main_loop_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); -static void _retro_main_loop___lambda6_ (RetroMainLoop* self, GObject* src, GParamSpec* param); -static void __retro_main_loop___lambda6__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self); -static void _retro_main_loop_on_frames_per_second_changed_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self); -static void retro_main_loop_finalize (GObject * obj); -static void _vala_retro_main_loop_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec); -static void _vala_retro_main_loop_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec); - - -/** - * Creates a MainLoop to run a {@link Core}. - * - * @param core the {@link Core} tu run - */ -RetroMainLoop* retro_main_loop_construct (GType object_type, RetroCore* core) { - RetroMainLoop * self = NULL; - RetroCore* _tmp0_; - g_return_val_if_fail (core != NULL, NULL); - _tmp0_ = core; - self = (RetroMainLoop*) g_object_new (object_type, "core", _tmp0_, NULL); - return self; -} - - -RetroMainLoop* retro_main_loop_new (RetroCore* core) { - return retro_main_loop_construct (RETRO_TYPE_MAIN_LOOP, core); -} - - -/** - * Starts running the {@link core}. - */ -static gboolean _retro_main_loop_run_gsource_func (gpointer self) { - gboolean result; - result = retro_main_loop_run ((RetroMainLoop*) self); - return result; -} - - -static guint* _uint_dup (guint* self) { - guint* dup; - dup = g_new0 (guint, 1); - memcpy (dup, self, sizeof (guint)); - return dup; -} - - -static gpointer __uint_dup0 (gpointer self) { - return self ? _uint_dup (self) : NULL; -} - - -void retro_main_loop_start (RetroMainLoop* self) { - gboolean _tmp0_ = FALSE; - guint* _tmp1_; - g_return_if_fail (self != NULL); - _tmp1_ = self->priv->loop; - if (_tmp1_ == NULL) { - gdouble _tmp2_; - _tmp2_ = self->priv->_speed_rate; - _tmp0_ = _tmp2_ > ((gdouble) 0); - } else { - _tmp0_ = FALSE; - } - if (_tmp0_) { - RetroCore* _tmp3_; - gdouble _tmp4_; - gdouble _tmp5_; - gdouble _tmp6_; - guint _tmp7_; - guint* _tmp8_; - _tmp3_ = self->priv->_core; - _tmp4_ = retro_core_get_frames_per_second (_tmp3_); - _tmp5_ = _tmp4_; - _tmp6_ = self->priv->_speed_rate; - _tmp7_ = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) (1000 / (_tmp5_ * _tmp6_)), _retro_main_loop_run_gsource_func, g_object_ref (self), g_object_unref); - _tmp8_ = __uint_dup0 (&_tmp7_); - _g_free0 (self->priv->loop); - self->priv->loop = _tmp8_; - } -} - - -/** - * Resets the {@link core}. - */ -void retro_main_loop_reset (RetroMainLoop* self) { - RetroCore* _tmp0_; - g_return_if_fail (self != NULL); - _tmp0_ = self->priv->_core; - if (_tmp0_ != NULL) { - RetroCore* _tmp1_; - _tmp1_ = self->priv->_core; - retro_core_reset (_tmp1_); - } -} - - -/** - * Stops running the {@link core}. - */ -void retro_main_loop_stop (RetroMainLoop* self) { - guint* _tmp0_; - g_return_if_fail (self != NULL); - _tmp0_ = self->priv->loop; - if (_tmp0_ != NULL) { - guint* _tmp1_; - _tmp1_ = self->priv->loop; - g_source_remove (*_tmp1_); - _g_free0 (self->priv->loop); - self->priv->loop = NULL; - } -} - - -static gboolean retro_main_loop_run (RetroMainLoop* self) { - gboolean result = FALSE; - gboolean _tmp0_ = FALSE; - RetroCore* _tmp1_; - g_return_val_if_fail (self != NULL, FALSE); - _tmp1_ = self->priv->_core; - if (_tmp1_ != NULL) { - guint* _tmp2_; - _tmp2_ = self->priv->loop; - _tmp0_ = _tmp2_ != NULL; - } else { - _tmp0_ = FALSE; - } - if (_tmp0_) { - RetroCore* _tmp3_; - _tmp3_ = self->priv->_core; - retro_core_run (_tmp3_); - result = TRUE; - return result; - } - result = FALSE; - return result; -} - - -static void retro_main_loop_on_frames_per_second_changed (RetroMainLoop* self) { - guint* _tmp0_; - g_return_if_fail (self != NULL); - _tmp0_ = self->priv->loop; - if (_tmp0_ == NULL) { - return; - } - retro_main_loop_stop (self); - retro_main_loop_start (self); -} - - -RetroCore* retro_main_loop_get_core (RetroMainLoop* self) { - RetroCore* result; - RetroCore* _tmp0_; - g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = self->priv->_core; - result = _tmp0_; - return result; -} - - -static gpointer _g_object_ref0 (gpointer self) { - return self ? g_object_ref (self) : NULL; -} - - -void retro_main_loop_set_core (RetroMainLoop* self, RetroCore* value) { - g_return_if_fail (self != NULL); - if (retro_main_loop_get_core (self) != value) { - RetroCore* _tmp0_; - RetroCore* _tmp1_; - _tmp0_ = value; - _tmp1_ = _g_object_ref0 (_tmp0_); - _g_object_unref0 (self->priv->_core); - self->priv->_core = _tmp1_; - g_object_notify_by_pspec ((GObject *) self, retro_main_loop_properties[RETRO_MAIN_LOOP_CORE]); - } -} - - -gdouble retro_main_loop_get_speed_rate (RetroMainLoop* self) { - gdouble result; - gdouble _tmp0_; - g_return_val_if_fail (self != NULL, 0.0); - _tmp0_ = self->priv->_speed_rate; - result = _tmp0_; - return result; -} - - -void retro_main_loop_set_speed_rate (RetroMainLoop* self, gdouble value) { - g_return_if_fail (self != NULL); - if (retro_main_loop_get_speed_rate (self) != value) { - gdouble _tmp0_; - _tmp0_ = value; - self->priv->_speed_rate = _tmp0_; - g_object_notify_by_pspec ((GObject *) self, retro_main_loop_properties[RETRO_MAIN_LOOP_SPEED_RATE]); - } -} - - -static void _retro_main_loop___lambda6_ (RetroMainLoop* self, GObject* src, GParamSpec* param) { - GParamSpec* _tmp0_; - const gchar* _tmp1_; - const gchar* _tmp2_; - GQuark _tmp4_ = 0U; - static GQuark _tmp3_label0 = 0; - g_return_if_fail (src != NULL); - g_return_if_fail (param != NULL); - _tmp0_ = param; - _tmp1_ = g_param_spec_get_name (_tmp0_); - _tmp2_ = _tmp1_; - _tmp4_ = (NULL == _tmp2_) ? 0 : g_quark_from_string (_tmp2_); - if (_tmp4_ == ((0 != _tmp3_label0) ? _tmp3_label0 : (_tmp3_label0 = g_quark_from_static_string ("speed_rate")))) { - switch (0) { - default: - { - guint* _tmp5_; - _tmp5_ = self->priv->loop; - if (_tmp5_ != NULL) { - retro_main_loop_stop (self); - retro_main_loop_start (self); - } - break; - } - } - } -} - - -static void __retro_main_loop___lambda6__g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) { - _retro_main_loop___lambda6_ ((RetroMainLoop*) self, _sender, pspec); -} - - -static void _retro_main_loop_on_frames_per_second_changed_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) { - retro_main_loop_on_frames_per_second_changed ((RetroMainLoop*) self); -} - - -static GObject * retro_main_loop_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { - GObject * obj; - GObjectClass * parent_class; - RetroMainLoop * self; - RetroCore* _tmp0_; - parent_class = G_OBJECT_CLASS (retro_main_loop_parent_class); - obj = parent_class->constructor (type, n_construct_properties, construct_properties); - self = G_TYPE_CHECK_INSTANCE_CAST (obj, RETRO_TYPE_MAIN_LOOP, RetroMainLoop); - _g_free0 (self->priv->loop); - self->priv->loop = NULL; - g_signal_connect_object ((GObject*) self, "notify", (GCallback) __retro_main_loop___lambda6__g_object_notify, self, 0); - _tmp0_ = self->priv->_core; - g_signal_connect_object ((GObject*) _tmp0_, "notify::frames-per-second", (GCallback) _retro_main_loop_on_frames_per_second_changed_g_object_notify, self, 0); - return obj; -} - - -static void retro_main_loop_class_init (RetroMainLoopClass * klass) { - retro_main_loop_parent_class = g_type_class_peek_parent (klass); - g_type_class_add_private (klass, sizeof (RetroMainLoopPrivate)); - G_OBJECT_CLASS (klass)->get_property = _vala_retro_main_loop_get_property; - G_OBJECT_CLASS (klass)->set_property = _vala_retro_main_loop_set_property; - G_OBJECT_CLASS (klass)->constructor = retro_main_loop_constructor; - G_OBJECT_CLASS (klass)->finalize = retro_main_loop_finalize; - /** - * The core to run. - */ - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_MAIN_LOOP_CORE, retro_main_loop_properties[RETRO_MAIN_LOOP_CORE] = g_param_spec_object ("core", "core", "core", RETRO_TYPE_CORE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT)); - /** - * The speed factor at which the {@link core} should run. - */ - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_MAIN_LOOP_SPEED_RATE, retro_main_loop_properties[RETRO_MAIN_LOOP_SPEED_RATE] = g_param_spec_double ("speed-rate", "speed-rate", "speed-rate", -G_MAXDOUBLE, G_MAXDOUBLE, (gdouble) 1, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT)); -} - - -static void retro_main_loop_instance_init (RetroMainLoop * self) { - self->priv = RETRO_MAIN_LOOP_GET_PRIVATE (self); - self->priv->_speed_rate = (gdouble) 1; -} - - -static void retro_main_loop_finalize (GObject * obj) { - RetroMainLoop * self; - self = G_TYPE_CHECK_INSTANCE_CAST (obj, RETRO_TYPE_MAIN_LOOP, RetroMainLoop); - retro_main_loop_stop (self); - _g_object_unref0 (self->priv->_core); - _g_free0 (self->priv->loop); - G_OBJECT_CLASS (retro_main_loop_parent_class)->finalize (obj); -} - - -/** - * Runs a {@link Core} in a GLib or Gtk main loop. - * - * It may cause problems if the core takes more time than expected to run a - * frame. - */ -GType retro_main_loop_get_type (void) { - static volatile gsize retro_main_loop_type_id__volatile = 0; - if (g_once_init_enter (&retro_main_loop_type_id__volatile)) { - static const GTypeInfo g_define_type_info = { sizeof (RetroMainLoopClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) retro_main_loop_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RetroMainLoop), 0, (GInstanceInitFunc) retro_main_loop_instance_init, NULL }; - GType retro_main_loop_type_id; - retro_main_loop_type_id = g_type_register_static (G_TYPE_OBJECT, "RetroMainLoop", &g_define_type_info, 0); - g_once_init_leave (&retro_main_loop_type_id__volatile, retro_main_loop_type_id); - } - return retro_main_loop_type_id__volatile; -} - - -static void _vala_retro_main_loop_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { - RetroMainLoop * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, RETRO_TYPE_MAIN_LOOP, RetroMainLoop); - switch (property_id) { - case RETRO_MAIN_LOOP_CORE: - g_value_set_object (value, retro_main_loop_get_core (self)); - break; - case RETRO_MAIN_LOOP_SPEED_RATE: - g_value_set_double (value, retro_main_loop_get_speed_rate (self)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - - -static void _vala_retro_main_loop_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { - RetroMainLoop * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, RETRO_TYPE_MAIN_LOOP, RetroMainLoop); - switch (property_id) { - case RETRO_MAIN_LOOP_CORE: - retro_main_loop_set_core (self, g_value_get_object (value)); - break; - case RETRO_MAIN_LOOP_SPEED_RATE: - retro_main_loop_set_speed_rate (self, g_value_get_double (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/loop/main-loop.vala retro-gtk-0.14.0/retro-gtk/loop/main-loop.vala --- retro-gtk-0.12.1/retro-gtk/loop/main-loop.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/loop/main-loop.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,104 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -namespace Retro { - -/** - * Runs a {@link Core} in a GLib or Gtk main loop. - * - * It may cause problems if the core takes more time than expected to run a - * frame. - */ -public class MainLoop : Object { - /** - * The core to run. - */ - public Core core { get; construct set; } - - /** - * The speed factor at which the {@link core} should run. - */ - public double speed_rate { get; construct set; default = 1; } - - private uint? loop; - - /** - * Creates a MainLoop to run a {@link Core}. - * - * @param core the {@link Core} tu run - */ - public MainLoop (Core core) { - Object (core: core); - } - - construct { - loop = null; - - notify.connect ((src, param) => { - switch (param.get_name ()) { - case "speed_rate": - if (loop != null) { - stop (); - start (); - } - break; - } - }); - - core.notify["frames-per-second"].connect (on_frames_per_second_changed); - } - - ~MainLoop () { - stop (); - } - - /** - * Starts running the {@link core}. - */ - public void start () { - // TODO What if FPSs <= 0? - - if (loop == null && speed_rate > 0) { - loop = Timeout.add ((uint) (1000 / (core.frames_per_second * speed_rate)), run); - } - } - - /** - * Resets the {@link core}. - */ - public void reset () { - if (core != null) { - core.reset (); - } - } - - /** - * Stops running the {@link core}. - */ - public void stop () { - if (loop != null) { - Source.remove (loop); - loop = null; - } - } - - private bool run () { - if (core != null && loop != null) { - core.run (); - - return true; - } - - return false; - } - - private void on_frames_per_second_changed () { - if (loop == null) - return; - - stop (); - start (); - } -} - -} - diff -Nru retro-gtk-0.12.1/retro-gtk/Makefile.am retro-gtk-0.14.0/retro-gtk/Makefile.am --- retro-gtk-0.12.1/retro-gtk/Makefile.am 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/Makefile.am 1970-01-01 00:00:00.000000000 +0000 @@ -1,169 +0,0 @@ -## Process this file with automake to produce Makefile.in - -NULL = - -AM_CPPFLAGS = \ - -DPACKAGE_LOCALE_DIR=\""$(localedir)"\" \ - -DPACKAGE_SRC_DIR=\""$(srcdir)"\" \ - -DPACKAGE_DATA_DIR=\""$(pkgdatadir)"\" \ - -DPROJECT_NAME=\""retro"\" \ - -DPROJECT_API_VERSION=\""0.12"\" \ - -DPROJECT_DIR_NAME=\""retro-1.0"\" \ - -DPROJECT_PLUGINS_DIR=\""$(libdir)/retro-1.0/plugins"\" \ - -DRETRO_PLUGIN_PATH=\""$(libdir)/retro-1.0/plugins:$(libdir)/libretro:$(libdir)"\" \ - $(RETRO_GTK_CFLAGS) \ - $(NULL) - -AM_CFLAGS =\ - -Wall\ - -g \ - $(NULL) - -lib_LTLIBRARIES = libretro-gtk.la - -vapidir = $(datadir)/vala/vapi -dist_vapi_DATA = retro-gtk-0.12.vapi retro-gtk-0.12.deps - -BUILT_SOURCES = retro-gtk-internal.h - -libretro_gtk_la_SOURCES = \ - audio/pa-player.vala \ - \ - input/controller.vala \ - input/device.vala \ - input/input.vala \ - input/input-device.vala \ - input/input-device-manager.vala \ - input/retro-keyboard-key.c \ - \ - loop/main-loop.vala \ - \ - variable/options.vala \ - variable/variables.vala \ - \ - core.vala \ - core-error.vala \ - memory.vala \ - retro.vala \ - retro-core-descriptor.vala \ - retro-core-descriptor-error.vala \ - retro-core-view.vala \ - retro-core-view-extern.c \ - retro-core-view-input-device.c \ - retro-game-info.c \ - retro-log.c \ - retro-module.c \ - retro-module-query.vala \ - retro-module-iterator.vala \ - rumble.vala \ - video.vala \ - retro-core.c \ - retro-environment.c \ - libretro-environment.h \ - \ - video/cairo-display.vala \ - video/retro-video-converter.c \ - video/video-filter.vala \ - $(NULL) - -video/retro-video-converter.c: retro-gtk-internal.h - -retro-core.c: retro-gtk-internal.h - -retro-core-view-extern.c: retro-gtk-internal.h - -retro-core-view-input-device.c: retro-gtk-internal.h - -retro-environment.c: retro-gtk-internal.h libretro-environment.h - -retro-log.c: retro-gtk-internal.h - -retro-module.c: retro-gtk-internal.h - -libretro_gtk_la_LDFLAGS = - -libretro_gtk_la_VALAFLAGS = \ - --pkg cairo \ - --pkg config \ - --pkg gio-2.0 \ - --pkg glib-2.0 \ - --pkg gmodule-2.0 \ - --pkg gobject-2.0 \ - --pkg gtk+-3.0 \ - --pkg libpulse \ - --pkg libpulse-simple \ - --vapidir=vapi \ - --thread \ - --target-glib 2.32 \ - --library retro-gtk-0.12 \ - --vapi retro-gtk-0.12.vapi \ - -H retro-gtk.h \ - -h retro-gtk-internal.h \ - -X -fPIC -X -shared \ - $(NULL) - -libretro_gtk_la_LIBADD = $(RETRO_GTK_LIBS) - -retro_gtkincludedir = $(includedir)/retro-gtk-0.12 -retro_gtkinclude_HEADERS = \ - retro-gtk.h \ - $(NULL) - -# Add unstable API guard -$(outdir)/retro-gtk.h: - sed -i "s/#define __RETRO_GTK_H__/#define __RETRO_GTK_H__\n\n#ifndef RETRO_GTK_USE_UNSTABLE_API\n#error retro-gtk is unstable API. You must define RETRO_GTK_USE_UNSTABLE_API before including retro-gtk.h\n#endif/" $@ - -# Introspection --include $(INTROSPECTION_MAKEFILE) - -INTROSPECTION_GIRS = -INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) --warn-all -INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir) - -INTROSPECTION_GIRS += Retro-0.12.gir - -girdir = $(datadir)/gir-1.0 -gir_DATA = $(INTROSPECTION_GIRS) - -typelibdir = $(libdir)/girepository-1.0 -typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) - -introspection_sources = $(retro_gtkinclude_HEADERS) - -BUILT_SOURCES += libretro-gtk.la Retro-0.12.gir - -Retro-0.12.gir: $(INTROSPECTION_SCANNER) libretro-gtk.la -Retro_0_12_gir_INCLUDES = GLib-2.0 GObject-2.0 Gio-2.0 Gtk-3.0 cairo-1.0 -Retro_0_12_gir_SCANNERFLAGS = --c-include=retro-gtk.h --pkg-export=retro-gtk-0.12 -Retro_0_12_gir_CFLAGS = -DRETRO_GTK_USE_UNSTABLE_API $(retro_gtk_CFLAGS) -Retro_0_12_gir_LIBS = libretro-gtk.la -Retro_0_12_gir_FILES = $(introspection_sources) -Retro_0_12_gir_EXPORT_PACKAGES = retro-gtk-0.12 - -CLEANFILES = $(gir_DATA) $(typelib_DATA) - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = retro-gtk-0.12.pc - -EXTRA_DIST = \ - input/retro-keyboard-key.h \ - retro-core.h \ - retro-core-view-input-device.h \ - retro-disk-control-callback.h \ - retro-game-info.h \ - retro-module.h \ - retro-rotation.h \ - retro-system-av-info.h \ - retro-system-info.h \ - retro-gtk-0.12.pc.in \ - update-from-retroarch.sh \ - $(NULL) - -INPUTDIR=$(top_srcdir)/../RetroArch/libretro-common/include/ -INPUTFILES = libretro.h -update-from-retroarch: - SRCDIR="$(srcdir)" FILES="$(INPUTFILES)" DIR="$(INPUTDIR)" $(srcdir)/update-from-retroarch.sh && changed=true ; \ - cd $(srcdir) && git commit -m "retro-gtk: Update libretro header" $(INPUTFILES) - - --include $(top_srcdir)/git.mk diff -Nru retro-gtk-0.12.1/retro-gtk/Makefile.in retro-gtk-0.14.0/retro-gtk/Makefile.in --- retro-gtk-0.12.1/retro-gtk/Makefile.in 2017-09-30 10:47:39.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/Makefile.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,1280 +0,0 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2014 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = retro-gtk -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(dist_vapi_DATA) \ - $(retro_gtkinclude_HEADERS) $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = retro-gtk-0.12.pc -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(vapidir)" \ - "$(DESTDIR)$(girdir)" "$(DESTDIR)$(pkgconfigdir)" \ - "$(DESTDIR)$(typelibdir)" "$(DESTDIR)$(retro_gtkincludedir)" -LTLIBRARIES = $(lib_LTLIBRARIES) -am__DEPENDENCIES_1 = -libretro_gtk_la_DEPENDENCIES = $(am__DEPENDENCIES_1) -am__dirstamp = $(am__leading_dot)dirstamp -am__objects_1 = -am_libretro_gtk_la_OBJECTS = audio/pa-player.lo input/controller.lo \ - input/device.lo input/input.lo input/input-device.lo \ - input/input-device-manager.lo input/retro-keyboard-key.lo \ - loop/main-loop.lo variable/options.lo variable/variables.lo \ - core.lo core-error.lo memory.lo retro.lo \ - retro-core-descriptor.lo retro-core-descriptor-error.lo \ - retro-core-view.lo retro-core-view-extern.lo \ - retro-core-view-input-device.lo retro-game-info.lo \ - retro-log.lo retro-module.lo retro-module-query.lo \ - retro-module-iterator.lo rumble.lo video.lo retro-core.lo \ - retro-environment.lo video/cairo-display.lo \ - video/retro-video-converter.lo video/video-filter.lo \ - $(am__objects_1) -libretro_gtk_la_OBJECTS = $(am_libretro_gtk_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -libretro_gtk_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(libretro_gtk_la_LDFLAGS) $(LDFLAGS) \ - -o $@ -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -VALACOMPILE = $(VALAC) $(AM_VALAFLAGS) $(VALAFLAGS) -LTVALACOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(VALAC) $(AM_VALAFLAGS) \ - $(VALAFLAGS) -AM_V_VALAC = $(am__v_VALAC_@AM_V@) -am__v_VALAC_ = $(am__v_VALAC_@AM_DEFAULT_V@) -am__v_VALAC_0 = @echo " VALAC " $@; -am__v_VALAC_1 = -SOURCES = $(libretro_gtk_la_SOURCES) -DIST_SOURCES = $(libretro_gtk_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -DATA = $(dist_vapi_DATA) $(gir_DATA) $(pkgconfig_DATA) $(typelib_DATA) -HEADERS = $(retro_gtkinclude_HEADERS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in \ - $(srcdir)/libretro_gtk_la_vala.stamp \ - $(srcdir)/retro-gtk-0.12.pc.in $(srcdir)/retro-gtk-0.12.vapi \ - $(srcdir)/retro-gtk-internal.h $(srcdir)/retro-gtk.h \ - $(top_srcdir)/depcomp audio/pa-player.c core-error.c core.c \ - input/controller.c input/device.c input/input-device-manager.c \ - input/input-device.c input/input.c loop/main-loop.c memory.c \ - retro-core-descriptor-error.c retro-core-descriptor.c \ - retro-core-view.c retro-module-iterator.c retro-module-query.c \ - retro.c rumble.c variable/options.c variable/variables.c \ - video.c video/cairo-display.c video/video-filter.c -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALL_LINGUAS = @ALL_LINGUAS@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ -GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLLIBS = @INTLLIBS@ -INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ -INTLTOOL_MERGE = @INTLTOOL_MERGE@ -INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ -INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ -INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ -INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ -INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ -INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ -INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ -INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ -INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ -INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ -INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ -INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ -INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ -INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGFMT_OPTS = @MSGFMT_OPTS@ -MSGMERGE = @MSGMERGE@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -POFILES = @POFILES@ -POSUB = @POSUB@ -PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ -PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ -RANLIB = @RANLIB@ -RETRO_GTK_CFLAGS = @RETRO_GTK_CFLAGS@ -RETRO_GTK_LIBS = @RETRO_GTK_LIBS@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VALAC = @VALAC@ -VERSION = @VERSION@ -XGETTEXT = @XGETTEXT@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -intltool__v_merge_options_ = @intltool__v_merge_options_@ -intltool__v_merge_options_0 = @intltool__v_merge_options_0@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -retro_gtk_pkg_modules = @retro_gtk_pkg_modules@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -NULL = -AM_CPPFLAGS = \ - -DPACKAGE_LOCALE_DIR=\""$(localedir)"\" \ - -DPACKAGE_SRC_DIR=\""$(srcdir)"\" \ - -DPACKAGE_DATA_DIR=\""$(pkgdatadir)"\" \ - -DPROJECT_NAME=\""retro"\" \ - -DPROJECT_API_VERSION=\""0.12"\" \ - -DPROJECT_DIR_NAME=\""retro-1.0"\" \ - -DPROJECT_PLUGINS_DIR=\""$(libdir)/retro-1.0/plugins"\" \ - -DRETRO_PLUGIN_PATH=\""$(libdir)/retro-1.0/plugins:$(libdir)/libretro:$(libdir)"\" \ - $(RETRO_GTK_CFLAGS) \ - $(NULL) - -AM_CFLAGS = \ - -Wall\ - -g \ - $(NULL) - -lib_LTLIBRARIES = libretro-gtk.la -vapidir = $(datadir)/vala/vapi -dist_vapi_DATA = retro-gtk-0.12.vapi retro-gtk-0.12.deps -BUILT_SOURCES = retro-gtk-internal.h libretro-gtk.la Retro-0.12.gir -libretro_gtk_la_SOURCES = \ - audio/pa-player.vala \ - \ - input/controller.vala \ - input/device.vala \ - input/input.vala \ - input/input-device.vala \ - input/input-device-manager.vala \ - input/retro-keyboard-key.c \ - \ - loop/main-loop.vala \ - \ - variable/options.vala \ - variable/variables.vala \ - \ - core.vala \ - core-error.vala \ - memory.vala \ - retro.vala \ - retro-core-descriptor.vala \ - retro-core-descriptor-error.vala \ - retro-core-view.vala \ - retro-core-view-extern.c \ - retro-core-view-input-device.c \ - retro-game-info.c \ - retro-log.c \ - retro-module.c \ - retro-module-query.vala \ - retro-module-iterator.vala \ - rumble.vala \ - video.vala \ - retro-core.c \ - retro-environment.c \ - libretro-environment.h \ - \ - video/cairo-display.vala \ - video/retro-video-converter.c \ - video/video-filter.vala \ - $(NULL) - -libretro_gtk_la_LDFLAGS = -libretro_gtk_la_VALAFLAGS = \ - --pkg cairo \ - --pkg config \ - --pkg gio-2.0 \ - --pkg glib-2.0 \ - --pkg gmodule-2.0 \ - --pkg gobject-2.0 \ - --pkg gtk+-3.0 \ - --pkg libpulse \ - --pkg libpulse-simple \ - --vapidir=vapi \ - --thread \ - --target-glib 2.32 \ - --library retro-gtk-0.12 \ - --vapi retro-gtk-0.12.vapi \ - -H retro-gtk.h \ - -h retro-gtk-internal.h \ - -X -fPIC -X -shared \ - $(NULL) - -libretro_gtk_la_LIBADD = $(RETRO_GTK_LIBS) -retro_gtkincludedir = $(includedir)/retro-gtk-0.12 -retro_gtkinclude_HEADERS = \ - retro-gtk.h \ - $(NULL) - -INTROSPECTION_GIRS = Retro-0.12.gir -INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) --warn-all -INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir) -girdir = $(datadir)/gir-1.0 -gir_DATA = $(INTROSPECTION_GIRS) -typelibdir = $(libdir)/girepository-1.0 -typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) -introspection_sources = $(retro_gtkinclude_HEADERS) -Retro_0_12_gir_INCLUDES = GLib-2.0 GObject-2.0 Gio-2.0 Gtk-3.0 cairo-1.0 -Retro_0_12_gir_SCANNERFLAGS = --c-include=retro-gtk.h --pkg-export=retro-gtk-0.12 -Retro_0_12_gir_CFLAGS = -DRETRO_GTK_USE_UNSTABLE_API $(retro_gtk_CFLAGS) -Retro_0_12_gir_LIBS = libretro-gtk.la -Retro_0_12_gir_FILES = $(introspection_sources) -Retro_0_12_gir_EXPORT_PACKAGES = retro-gtk-0.12 -CLEANFILES = $(gir_DATA) $(typelib_DATA) -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = retro-gtk-0.12.pc -EXTRA_DIST = \ - input/retro-keyboard-key.h \ - retro-core.h \ - retro-core-view-input-device.h \ - retro-disk-control-callback.h \ - retro-game-info.h \ - retro-module.h \ - retro-rotation.h \ - retro-system-av-info.h \ - retro-system-info.h \ - retro-gtk-0.12.pc.in \ - update-from-retroarch.sh \ - $(NULL) - -INPUTDIR = $(top_srcdir)/../RetroArch/libretro-common/include/ -INPUTFILES = libretro.h -all: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu retro-gtk/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu retro-gtk/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -retro-gtk-0.12.pc: $(top_builddir)/config.status $(srcdir)/retro-gtk-0.12.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } -audio/$(am__dirstamp): - @$(MKDIR_P) audio - @: > audio/$(am__dirstamp) -audio/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) audio/$(DEPDIR) - @: > audio/$(DEPDIR)/$(am__dirstamp) -audio/pa-player.lo: audio/$(am__dirstamp) \ - audio/$(DEPDIR)/$(am__dirstamp) -input/$(am__dirstamp): - @$(MKDIR_P) input - @: > input/$(am__dirstamp) -input/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) input/$(DEPDIR) - @: > input/$(DEPDIR)/$(am__dirstamp) -input/controller.lo: input/$(am__dirstamp) \ - input/$(DEPDIR)/$(am__dirstamp) -input/device.lo: input/$(am__dirstamp) input/$(DEPDIR)/$(am__dirstamp) -input/input.lo: input/$(am__dirstamp) input/$(DEPDIR)/$(am__dirstamp) -input/input-device.lo: input/$(am__dirstamp) \ - input/$(DEPDIR)/$(am__dirstamp) -input/input-device-manager.lo: input/$(am__dirstamp) \ - input/$(DEPDIR)/$(am__dirstamp) -input/retro-keyboard-key.lo: input/$(am__dirstamp) \ - input/$(DEPDIR)/$(am__dirstamp) -loop/$(am__dirstamp): - @$(MKDIR_P) loop - @: > loop/$(am__dirstamp) -loop/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) loop/$(DEPDIR) - @: > loop/$(DEPDIR)/$(am__dirstamp) -loop/main-loop.lo: loop/$(am__dirstamp) loop/$(DEPDIR)/$(am__dirstamp) -variable/$(am__dirstamp): - @$(MKDIR_P) variable - @: > variable/$(am__dirstamp) -variable/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) variable/$(DEPDIR) - @: > variable/$(DEPDIR)/$(am__dirstamp) -variable/options.lo: variable/$(am__dirstamp) \ - variable/$(DEPDIR)/$(am__dirstamp) -variable/variables.lo: variable/$(am__dirstamp) \ - variable/$(DEPDIR)/$(am__dirstamp) -video/$(am__dirstamp): - @$(MKDIR_P) video - @: > video/$(am__dirstamp) -video/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) video/$(DEPDIR) - @: > video/$(DEPDIR)/$(am__dirstamp) -video/cairo-display.lo: video/$(am__dirstamp) \ - video/$(DEPDIR)/$(am__dirstamp) -video/retro-video-converter.lo: video/$(am__dirstamp) \ - video/$(DEPDIR)/$(am__dirstamp) -video/video-filter.lo: video/$(am__dirstamp) \ - video/$(DEPDIR)/$(am__dirstamp) - -libretro-gtk.la: $(libretro_gtk_la_OBJECTS) $(libretro_gtk_la_DEPENDENCIES) $(EXTRA_libretro_gtk_la_DEPENDENCIES) - $(AM_V_CCLD)$(libretro_gtk_la_LINK) -rpath $(libdir) $(libretro_gtk_la_OBJECTS) $(libretro_gtk_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -rm -f audio/*.$(OBJEXT) - -rm -f audio/*.lo - -rm -f input/*.$(OBJEXT) - -rm -f input/*.lo - -rm -f loop/*.$(OBJEXT) - -rm -f loop/*.lo - -rm -f variable/*.$(OBJEXT) - -rm -f variable/*.lo - -rm -f video/*.$(OBJEXT) - -rm -f video/*.lo - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/core-error.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/core.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/retro-core-descriptor-error.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/retro-core-descriptor.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/retro-core-view-extern.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/retro-core-view-input-device.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/retro-core-view.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/retro-core.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/retro-environment.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/retro-game-info.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/retro-log.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/retro-module-iterator.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/retro-module-query.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/retro-module.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/retro.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rumble.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/video.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@audio/$(DEPDIR)/pa-player.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/controller.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/device.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/input-device-manager.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/input-device.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/input.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/retro-keyboard-key.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@loop/$(DEPDIR)/main-loop.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@variable/$(DEPDIR)/options.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@variable/$(DEPDIR)/variables.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/cairo-display.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/retro-video-converter.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/video-filter.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< -$(srcdir)/audio/pa-player.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/input/controller.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/input/device.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/input/input.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/input/input-device.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/input/input-device-manager.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/loop/main-loop.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/variable/options.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/variable/variables.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/core.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/core-error.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/memory.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/retro.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/retro-core-descriptor.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/retro-core-descriptor-error.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/retro-core-view.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/retro-module-query.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/retro-module-iterator.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/rumble.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/video.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/video/cairo-display.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/video/video-filter.c: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/retro-gtk-0.12.vapi: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/retro-gtk.h: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/retro-gtk-internal.h: $(srcdir)/libretro_gtk_la_vala.stamp - @if test -f $@; then :; else rm -f $(srcdir)/libretro_gtk_la_vala.stamp; fi - @if test -f $@; then :; else \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libretro_gtk_la_vala.stamp; \ - fi -$(srcdir)/libretro_gtk_la_vala.stamp: audio/pa-player.vala input/controller.vala input/device.vala input/input.vala input/input-device.vala input/input-device-manager.vala loop/main-loop.vala variable/options.vala variable/variables.vala core.vala core-error.vala memory.vala retro.vala retro-core-descriptor.vala retro-core-descriptor-error.vala retro-core-view.vala retro-module-query.vala retro-module-iterator.vala rumble.vala video.vala video/cairo-display.vala video/video-filter.vala - $(AM_V_at)rm -f $@ && echo stamp > $@-t - $(AM_V_VALAC)$(am__cd) $(srcdir) && $(VALAC) $(libretro_gtk_la_VALAFLAGS) $(VALAFLAGS) -C audio/pa-player.vala input/controller.vala input/device.vala input/input.vala input/input-device.vala input/input-device-manager.vala loop/main-loop.vala variable/options.vala variable/variables.vala core.vala core-error.vala memory.vala retro.vala retro-core-descriptor.vala retro-core-descriptor-error.vala retro-core-view.vala retro-module-query.vala retro-module-iterator.vala rumble.vala video.vala video/cairo-display.vala video/video-filter.vala - $(AM_V_at)mv -f $@-t $@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -rm -rf audio/.libs audio/_libs - -rm -rf input/.libs input/_libs - -rm -rf loop/.libs loop/_libs - -rm -rf variable/.libs variable/_libs - -rm -rf video/.libs video/_libs -install-dist_vapiDATA: $(dist_vapi_DATA) - @$(NORMAL_INSTALL) - @list='$(dist_vapi_DATA)'; test -n "$(vapidir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(vapidir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(vapidir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(vapidir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(vapidir)" || exit $$?; \ - done - -uninstall-dist_vapiDATA: - @$(NORMAL_UNINSTALL) - @list='$(dist_vapi_DATA)'; test -n "$(vapidir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(vapidir)'; $(am__uninstall_files_from_dir) -install-girDATA: $(gir_DATA) - @$(NORMAL_INSTALL) - @list='$(gir_DATA)'; test -n "$(girdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(girdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(girdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(girdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(girdir)" || exit $$?; \ - done - -uninstall-girDATA: - @$(NORMAL_UNINSTALL) - @list='$(gir_DATA)'; test -n "$(girdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(girdir)'; $(am__uninstall_files_from_dir) -install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ - done - -uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) -install-typelibDATA: $(typelib_DATA) - @$(NORMAL_INSTALL) - @list='$(typelib_DATA)'; test -n "$(typelibdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(typelibdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(typelibdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(typelibdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(typelibdir)" || exit $$?; \ - done - -uninstall-typelibDATA: - @$(NORMAL_UNINSTALL) - @list='$(typelib_DATA)'; test -n "$(typelibdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(typelibdir)'; $(am__uninstall_files_from_dir) -install-retro_gtkincludeHEADERS: $(retro_gtkinclude_HEADERS) - @$(NORMAL_INSTALL) - @list='$(retro_gtkinclude_HEADERS)'; test -n "$(retro_gtkincludedir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(retro_gtkincludedir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(retro_gtkincludedir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(retro_gtkincludedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(retro_gtkincludedir)" || exit $$?; \ - done - -uninstall-retro_gtkincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(retro_gtkinclude_HEADERS)'; test -n "$(retro_gtkincludedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(retro_gtkincludedir)'; $(am__uninstall_files_from_dir) - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-am -all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(vapidir)" "$(DESTDIR)$(girdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(typelibdir)" "$(DESTDIR)$(retro_gtkincludedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -rm -f audio/$(DEPDIR)/$(am__dirstamp) - -rm -f audio/$(am__dirstamp) - -rm -f input/$(DEPDIR)/$(am__dirstamp) - -rm -f input/$(am__dirstamp) - -rm -f loop/$(DEPDIR)/$(am__dirstamp) - -rm -f loop/$(am__dirstamp) - -rm -f variable/$(DEPDIR)/$(am__dirstamp) - -rm -f variable/$(am__dirstamp) - -rm -f video/$(DEPDIR)/$(am__dirstamp) - -rm -f video/$(am__dirstamp) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -rm -f $(srcdir)/audio/pa-player.c - -rm -f $(srcdir)/core-error.c - -rm -f $(srcdir)/core.c - -rm -f $(srcdir)/input/controller.c - -rm -f $(srcdir)/input/device.c - -rm -f $(srcdir)/input/input-device-manager.c - -rm -f $(srcdir)/input/input-device.c - -rm -f $(srcdir)/input/input.c - -rm -f $(srcdir)/libretro_gtk_la_vala.stamp - -rm -f $(srcdir)/loop/main-loop.c - -rm -f $(srcdir)/memory.c - -rm -f $(srcdir)/retro-core-descriptor-error.c - -rm -f $(srcdir)/retro-core-descriptor.c - -rm -f $(srcdir)/retro-core-view.c - -rm -f $(srcdir)/retro-gtk-0.12.vapi - -rm -f $(srcdir)/retro-gtk-internal.h - -rm -f $(srcdir)/retro-gtk.h - -rm -f $(srcdir)/retro-module-iterator.c - -rm -f $(srcdir)/retro-module-query.c - -rm -f $(srcdir)/retro.c - -rm -f $(srcdir)/rumble.c - -rm -f $(srcdir)/variable/options.c - -rm -f $(srcdir)/variable/variables.c - -rm -f $(srcdir)/video.c - -rm -f $(srcdir)/video/cairo-display.c - -rm -f $(srcdir)/video/video-filter.c - -rm -f audio/pa-player.c - -rm -f core-error.c - -rm -f core.c - -rm -f input/controller.c - -rm -f input/device.c - -rm -f input/input-device-manager.c - -rm -f input/input-device.c - -rm -f input/input.c - -rm -f loop/main-loop.c - -rm -f memory.c - -rm -f retro-core-descriptor-error.c - -rm -f retro-core-descriptor.c - -rm -f retro-core-view.c - -rm -f retro-module-iterator.c - -rm -f retro-module-query.c - -rm -f retro.c - -rm -f rumble.c - -rm -f variable/options.c - -rm -f variable/variables.c - -rm -f video.c - -rm -f video/cairo-display.c - -rm -f video/video-filter.c - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -clean: clean-am - -clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) audio/$(DEPDIR) input/$(DEPDIR) loop/$(DEPDIR) variable/$(DEPDIR) video/$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-dist_vapiDATA install-girDATA \ - install-pkgconfigDATA install-retro_gtkincludeHEADERS \ - install-typelibDATA - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-libLTLIBRARIES - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) audio/$(DEPDIR) input/$(DEPDIR) loop/$(DEPDIR) variable/$(DEPDIR) video/$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-dist_vapiDATA uninstall-girDATA \ - uninstall-libLTLIBRARIES uninstall-pkgconfigDATA \ - uninstall-retro_gtkincludeHEADERS uninstall-typelibDATA - -.MAKE: all check install install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ - ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dist_vapiDATA install-dvi \ - install-dvi-am install-exec install-exec-am install-girDATA \ - install-html install-html-am install-info install-info-am \ - install-libLTLIBRARIES install-man install-pdf install-pdf-am \ - install-pkgconfigDATA install-ps install-ps-am \ - install-retro_gtkincludeHEADERS install-strip \ - install-typelibDATA installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ - uninstall-dist_vapiDATA uninstall-girDATA \ - uninstall-libLTLIBRARIES uninstall-pkgconfigDATA \ - uninstall-retro_gtkincludeHEADERS uninstall-typelibDATA - -.PRECIOUS: Makefile - - -video/retro-video-converter.c: retro-gtk-internal.h - -retro-core.c: retro-gtk-internal.h - -retro-core-view-extern.c: retro-gtk-internal.h - -retro-core-view-input-device.c: retro-gtk-internal.h - -retro-environment.c: retro-gtk-internal.h libretro-environment.h - -retro-log.c: retro-gtk-internal.h - -retro-module.c: retro-gtk-internal.h - -# Add unstable API guard -$(outdir)/retro-gtk.h: - sed -i "s/#define __RETRO_GTK_H__/#define __RETRO_GTK_H__\n\n#ifndef RETRO_GTK_USE_UNSTABLE_API\n#error retro-gtk is unstable API. You must define RETRO_GTK_USE_UNSTABLE_API before including retro-gtk.h\n#endif/" $@ - -# Introspection --include $(INTROSPECTION_MAKEFILE) - -Retro-0.12.gir: $(INTROSPECTION_SCANNER) libretro-gtk.la -update-from-retroarch: - SRCDIR="$(srcdir)" FILES="$(INPUTFILES)" DIR="$(INPUTDIR)" $(srcdir)/update-from-retroarch.sh && changed=true ; \ - cd $(srcdir) && git commit -m "retro-gtk: Update libretro header" $(INPUTFILES) - --include $(top_srcdir)/git.mk - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru retro-gtk-0.12.1/retro-gtk/memory.c retro-gtk-0.14.0/retro-gtk/memory.c --- retro-gtk-0.12.1/retro-gtk/memory.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/memory.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -/* memory.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from memory.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include - - -#define RETRO_TYPE_MEMORY_TYPE (retro_memory_type_get_type ()) - -typedef enum { - RETRO_MEMORY_TYPE_SAVE_RAM = 0, - RETRO_MEMORY_TYPE_RTC = 1, - RETRO_MEMORY_TYPE_SYSTEM_RAM = 2, - RETRO_MEMORY_TYPE_VIDEO_RAM = 3 -} RetroMemoryType; - - - -GType retro_memory_type_get_type (void) G_GNUC_CONST; - - -/** - * The memory region types. - */ -GType retro_memory_type_get_type (void) { - static volatile gsize retro_memory_type_type_id__volatile = 0; - if (g_once_init_enter (&retro_memory_type_type_id__volatile)) { - static const GEnumValue values[] = {{RETRO_MEMORY_TYPE_SAVE_RAM, "RETRO_MEMORY_TYPE_SAVE_RAM", "save-ram"}, {RETRO_MEMORY_TYPE_RTC, "RETRO_MEMORY_TYPE_RTC", "rtc"}, {RETRO_MEMORY_TYPE_SYSTEM_RAM, "RETRO_MEMORY_TYPE_SYSTEM_RAM", "system-ram"}, {RETRO_MEMORY_TYPE_VIDEO_RAM, "RETRO_MEMORY_TYPE_VIDEO_RAM", "video-ram"}, {0, NULL, NULL}}; - GType retro_memory_type_type_id; - retro_memory_type_type_id = g_enum_register_static ("RetroMemoryType", values); - g_once_init_leave (&retro_memory_type_type_id__volatile, retro_memory_type_type_id); - } - return retro_memory_type_type_id__volatile; -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/memory.vala retro-gtk-0.14.0/retro-gtk/memory.vala --- retro-gtk-0.12.1/retro-gtk/memory.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/memory.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -namespace Retro { - -/** - * The memory region types. - */ -public enum MemoryType { - SAVE_RAM = 0, - RTC = 1, - SYSTEM_RAM = 2, - VIDEO_RAM = 3, -} - -} - diff -Nru retro-gtk-0.12.1/retro-gtk/meson.build retro-gtk-0.14.0/retro-gtk/meson.build --- retro-gtk-0.12.1/retro-gtk/meson.build 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/meson.build 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,174 @@ +api_version = '0.14' + +retro_gtk_module = 'retro-gtk-' + api_version + +retro_gtk_resources = gnome.compile_resources( + 'retro_gtk_resources', + 'retro-gtk.gresource.xml', + c_name: 'retro_gtk', + source_dir: '.', +) + +retro_gtk_sources = [ + retro_gtk_resources[0], + 'retro-cairo-display.c', + 'retro-controller.c', + 'retro-controller-codes.c', + 'retro-controller-iterator.c', + 'retro-controller-type.c', + 'retro-core.c', + 'retro-core-descriptor.c', + 'retro-core-view.c', + 'retro-core-view-controller.c', + 'retro-environment.c', + 'retro-game-info.c', + 'retro-gl-display.c', + 'retro-glsl-filter.c', + 'retro-input.c', + 'retro-input-descriptor.c', + 'retro-keyboard-key.c', + 'retro-log.c', + 'retro-main-loop.c', + 'retro-memory-type.c', + 'retro-module.c', + 'retro-module-iterator.c', + 'retro-module-query.c', + 'retro-option.c', + 'retro-options.c', + 'retro-pa-player.c', + 'retro-pixdata.c', + 'retro-pixel-format.c', + 'retro-rumble-effect.c', + 'retro-video-filter.c', +] + +retro_gtk_main_header = 'retro-gtk.h' + +retro_gtk_headers = [ + retro_gtk_main_header, + 'retro-controller.h', + 'retro-controller-codes.h', + 'retro-controller-iterator.h', + 'retro-controller-type.h', + 'retro-core-descriptor.h', + 'retro-core.h', + 'retro-core-view.h', + 'retro-input.h', + 'retro-log.h', + 'retro-main-loop.h', + 'retro-memory-type.h', + 'retro-module-iterator.h', + 'retro-module-query.h', + 'retro-pixdata.h', + 'retro-rumble-effect.h', + 'retro-video-filter.h', +] + +version_split = meson.project_version().split('.') +MAJOR_VERSION = version_split[0] +MINOR_VERSION = version_split[1] +MICRO_VERSION = version_split[2] + +version_conf = configuration_data() +version_conf.set('VERSION', meson.project_version()) +version_conf.set('MAJOR_VERSION', MAJOR_VERSION) +version_conf.set('MINOR_VERSION', MINOR_VERSION) +version_conf.set('MICRO_VERSION', MICRO_VERSION) + +configure_file( + input: 'retro-gtk-version.h.in', + output: 'retro-gtk-version.h', + configuration: version_conf, + install: true, + install_dir: join_paths(get_option('includedir'), 'retro-gtk') +) + +retro_gtk_c_args = [ + '-DRETRO_GTK_COMPILATION', + '-DG_LOG_DOMAIN="Retro"', + '-DRETRO_PLUGIN_PATH="@0@:@1@"'.format(libretrodir, libdir), +] + +retro_gtk_deps = [ + epoxy, + gio, + glib, + gmodule, + gobject, + gtk, + libpulse_simple, +] + +retro_gtk_lib = shared_library( + retro_gtk_module, + retro_gtk_sources, + c_args: retro_gtk_c_args, + dependencies: retro_gtk_deps, + include_directories: confinc, + install: true, +) + +retro_gtk_gir_args = [ + '--quiet', + '-DRETRO_GTK_USE_UNSTABLE_API', +] + +retro_gtk_gir_includes = [ + 'Gio-2.0', + 'GLib-2.0', + 'GModule-2.0', + 'GObject-2.0', + 'Gtk-3.0', +] + +retro_gtk_gir = gnome.generate_gir( + retro_gtk_lib, + extra_args: retro_gtk_gir_args, + export_packages: retro_gtk_module, + sources: retro_gtk_headers + retro_gtk_sources, + nsversion: api_version, + namespace: 'Retro', + identifier_prefix: 'Retro', + includes: retro_gtk_gir_includes, + header: retro_gtk_main_header, + install: true, + symbol_prefix: 'retro', +) + +retro_gtk_vapi_packages = [ + 'gio-2.0', + 'glib-2.0', + 'gmodule-2.0', + 'gobject-2.0', + 'gtk+-3.0', + # 'libpulse-simple', +] + +gnome.generate_vapi( + retro_gtk_module, + install: true, + packages: retro_gtk_vapi_packages, + sources: retro_gtk_gir[0], +) + +retro_gtk_dep = declare_dependency( + link_with: retro_gtk_lib, + sources: retro_gtk_gir, + include_directories: confinc, + dependencies: retro_gtk_deps, +) + +install_headers(retro_gtk_headers, subdir: 'retro-gtk') + +pkg = import('pkgconfig') + +pkg.generate( + description: 'A simple GObject game controller library', + libraries: retro_gtk_lib, + name: 'retro-gtk', + filebase: 'retro-gtk-' + api_version, + version: meson.project_version(), + subdirs: 'retro-gtk', + requires: 'glib-2.0', + install_dir: join_paths(get_option('libdir'), 'pkgconfig') +) diff -Nru retro-gtk-0.12.1/retro-gtk/retro.c retro-gtk-0.14.0/retro-gtk/retro.c --- retro-gtk-0.12.1/retro-gtk/retro.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -/* retro.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from retro.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include -#include -#include - - -#define RETRO_TYPE_CORE (retro_core_get_type ()) -#define RETRO_CORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CORE, RetroCore)) -#define RETRO_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CORE, RetroCoreClass)) -#define RETRO_IS_CORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CORE)) -#define RETRO_IS_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CORE)) -#define RETRO_CORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CORE, RetroCoreClass)) - -typedef struct _RetroCore RetroCore; -typedef struct _RetroCoreClass RetroCoreClass; - -/** - * Error type thrown by interfaces when accessing one of their Core's - * callback. - */ -typedef enum { - RETRO_CB_ERROR_NO_CORE, - RETRO_CB_ERROR_NO_CALLBACK -} RetroCbError; -#define RETRO_CB_ERROR retro_cb_error_quark () - - -#define RETRO_API_VERSION ((guint) 1) -#define RETRO_ENV_PLUGIN_PATH "RETRO_PLUGIN_PATH_1_0" -GQuark retro_cb_error_quark (void); -GType retro_core_get_type (void) G_GNUC_CONST; -void retro_g_log (RetroCore* core, const gchar* log_domain, GLogLevelFlags log_level, const gchar* message); - - -GQuark retro_cb_error_quark (void) { - return g_quark_from_static_string ("retro_cb_error-quark"); -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/retro-cairo-display.c retro-gtk-0.14.0/retro-gtk/retro-cairo-display.c --- retro-gtk-0.12.1/retro-gtk/retro-cairo-display.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-cairo-display.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,397 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-cairo-display.h" + +#include "retro-pixdata.h" + +struct _RetroCairoDisplay +{ + GtkDrawingArea parent_instance; + RetroCore *core; + GdkPixbuf *pixbuf; + RetroVideoFilter filter; + gfloat aspect_ratio; + gulong on_video_output_id; +}; + +G_DEFINE_TYPE (RetroCairoDisplay, retro_cairo_display, GTK_TYPE_DRAWING_AREA) + +enum { + PROP_PIXBUF = 1, + N_PROPS, +}; + +static GParamSpec *properties [N_PROPS]; + +/* Private */ + +static void +retro_cairo_display_get_video_box (RetroCairoDisplay *self, + gdouble *width, + gdouble *height, + gdouble *x, + gdouble *y) +{ + gdouble w; + gdouble h; + gdouble display_ratio; + gdouble allocated_ratio; + + g_return_if_fail (self != NULL); + g_return_if_fail (width != NULL); + g_return_if_fail (height != NULL); + g_return_if_fail (x != NULL); + g_return_if_fail (y != NULL); + + w = (gdouble) gtk_widget_get_allocated_width (GTK_WIDGET (self)); + h = (gdouble) gtk_widget_get_allocated_height (GTK_WIDGET (self)); + + // Set the size of the display. + display_ratio = (gdouble) self->aspect_ratio; + allocated_ratio = w / h; + + // If the screen is wider than the video… + if (allocated_ratio > display_ratio) { + *height = h; + *width = (gdouble) (h * display_ratio); + } + else { + *width = w; + *height = (gdouble) (w / display_ratio); + } + + // Set the position of the display. + *x = (w - *width) / 2; + *y = (h - *height) / 2; +} + +static void +retro_cairo_display_draw_background (RetroCairoDisplay *self, + cairo_t *cr) +{ + g_return_if_fail (self != NULL); + g_return_if_fail (cr != NULL); + + cairo_set_source_rgb (cr, (gdouble) 0, (gdouble) 0, (gdouble) 0); + cairo_paint (cr); +} + +static gboolean +retro_cairo_display_real_draw (GtkWidget *base, + cairo_t *cr) +{ + RetroCairoDisplay *self = RETRO_CAIRO_DISPLAY (base); + GdkPixbuf *to_draw; + gboolean has_alpha; + gint width; + gint height; + + cairo_surface_t *surface; + gdouble w = 0.0; + gdouble h = 0.0; + gdouble x = 0.0; + gdouble y = 0.0; + gdouble xs; + gdouble ys; + cairo_pattern_t *source; + + g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (cr != NULL, FALSE); + + retro_cairo_display_draw_background (self, cr); + + if (self->pixbuf == NULL) + return FALSE; + + if (gtk_widget_get_sensitive (GTK_WIDGET (self))) + to_draw = g_object_ref (self->pixbuf); + else { + has_alpha = gdk_pixbuf_get_has_alpha (self->pixbuf); + width = gdk_pixbuf_get_width (self->pixbuf); + height = gdk_pixbuf_get_height (self->pixbuf); + to_draw = gdk_pixbuf_new (GDK_COLORSPACE_RGB, has_alpha, 8, width, height); + gdk_pixbuf_saturate_and_pixelate (self->pixbuf, to_draw, 0.0f, FALSE); + } + + surface = gdk_cairo_surface_create_from_pixbuf (to_draw, 1, NULL); + retro_cairo_display_get_video_box (self, &w, &h, &x, &y); + xs = w / gdk_pixbuf_get_width (to_draw); + ys = h / gdk_pixbuf_get_height (to_draw); + + cairo_scale (cr, xs, ys); + cairo_set_source_surface (cr, surface, x / xs, y / ys); + source = cairo_get_source (cr); + switch (self->filter) { + case RETRO_VIDEO_FILTER_SHARP: + cairo_pattern_set_filter (source, CAIRO_FILTER_NEAREST); + + break; + default: + case RETRO_VIDEO_FILTER_SMOOTH: + cairo_pattern_set_filter (source, CAIRO_FILTER_BILINEAR); + + break; + } + cairo_paint (cr); + + cairo_surface_destroy (surface); + g_object_unref (to_draw); + + return TRUE; +} +static void +retro_cairo_display_finalize (GObject *object) +{ + RetroCairoDisplay *self = (RetroCairoDisplay *) object; + + if (self->core != NULL) + g_object_unref (self->core); + if (self->pixbuf != NULL) + g_object_unref (self->pixbuf); + + G_OBJECT_CLASS (retro_cairo_display_parent_class)->finalize (object); +} + +static void +retro_cairo_display_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + RetroCairoDisplay *self = RETRO_CAIRO_DISPLAY (object); + + switch (prop_id) { + case PROP_PIXBUF: + g_value_set_object (value, retro_cairo_display_get_pixbuf (self)); + + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + + break; + } +} + +static void +retro_cairo_display_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + RetroCairoDisplay *self = RETRO_CAIRO_DISPLAY (object); + + switch (prop_id) { + case PROP_PIXBUF: + retro_cairo_display_set_pixbuf (self, g_value_get_object (value)); + + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + + break; + } +} + +static void +retro_cairo_display_class_init (RetroCairoDisplayClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + ((GtkWidgetClass *) klass)->draw = (gboolean (*) (GtkWidget *, cairo_t *)) retro_cairo_display_real_draw; + + object_class->finalize = retro_cairo_display_finalize; + object_class->get_property = retro_cairo_display_get_property; + object_class->set_property = retro_cairo_display_set_property; + + properties[PROP_PIXBUF] = + g_param_spec_object ("pixbuf", + "Pixbuf", + "The displayed pixbuf", + gdk_pixbuf_get_type (), + G_PARAM_READWRITE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB); + g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PIXBUF, properties[PROP_PIXBUF]); +} + +static void +queue_draw (GObject *sender, + GParamSpec *pspec, + gpointer self) +{ + gtk_widget_queue_draw (GTK_WIDGET (self)); +} + +static void +retro_cairo_display_init (RetroCairoDisplay *self) +{ + self->filter = RETRO_VIDEO_FILTER_SMOOTH; + g_signal_connect_object (G_OBJECT (self), + "notify::sensitive", + (GCallback) queue_draw, + GTK_WIDGET (self), + 0); + g_signal_connect_object (G_OBJECT (self), + "notify::pixbuf", + (GCallback) queue_draw, + GTK_WIDGET (self), + 0); +} + +static void +retro_cairo_display_on_video_output (RetroCore *sender, + RetroPixdata *pixdata, + gpointer user_data) +{ + RetroCairoDisplay *self = RETRO_CAIRO_DISPLAY (user_data); + + GdkPixbuf *pixbuf; + + g_return_if_fail (self != NULL); + + self->aspect_ratio = retro_pixdata_get_aspect_ratio (pixdata); + pixbuf = retro_pixdata_to_pixbuf (pixdata); + retro_cairo_display_set_pixbuf (self, pixbuf); + + if (pixbuf != NULL) + g_object_unref (pixbuf); +} + +/* Public */ + +/** + * retro_cairo_display_set_core: + * @self: a #RetroCairoDisplay + * @core: (nullable): a #RetroCore, or %NULL + * + * Sets @core as the #RetroCore displayed by @self. + */ +void +retro_cairo_display_set_core (RetroCairoDisplay *self, + RetroCore *core) +{ + g_return_if_fail (self != NULL); + + if (self->core == core) + return; + + if (self->core != NULL) { + g_signal_handler_disconnect (G_OBJECT (self->core), self->on_video_output_id); + g_clear_object (&self->core); + } + + if (core != NULL) { + self->core = g_object_ref (core); + self->on_video_output_id = g_signal_connect_object (core, "video-output", (GCallback) retro_cairo_display_on_video_output, self, 0); + } +} + +/** + * retro_cairo_display_get_pixbuf: + * @self: a #RetroCairoDisplay + * + * Gets the currently displayed video frame. + * + * Returns: (transfer none): a #GdkPixbuf + */ +GdkPixbuf * +retro_cairo_display_get_pixbuf (RetroCairoDisplay *self) +{ + g_return_val_if_fail (self != NULL, NULL); + + return self->pixbuf; +} + +/** + * retro_cairo_display_set_pixbuf: + * @self: a #RetroCairoDisplay + * @pixbuf: a #GdkPixbuf + * + * Sets @pixbuf as the currently displayed video frame. + */ +void +retro_cairo_display_set_pixbuf (RetroCairoDisplay *self, + GdkPixbuf *pixbuf) +{ + g_return_if_fail (self != NULL); + + if (self->pixbuf == pixbuf) + return; + + g_clear_object (&self->pixbuf); + + if (pixbuf != NULL) + self->pixbuf = g_object_ref (pixbuf); + + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_PIXBUF]); +} + +/** + * retro_cairo_display_set_filter: + * @self: a #RetroCairoDisplay + * @filter: a #RetroVideoFilter + * + * Sets the video filter to use to render the core's video on @self. + */ +void +retro_cairo_display_set_filter (RetroCairoDisplay *self, + RetroVideoFilter filter) +{ + g_return_if_fail (self != NULL); + + self->filter = filter; + gtk_widget_queue_draw (GTK_WIDGET (self)); +} + +/** + * retro_cairo_display_get_coordinates_on_display: + * @self: a #RetroCairoDisplay + * @widget_x: the abscissa on @self + * @widget_y: the ordinate on @self + * @display_x: return location for a the abscissa on the core's video display + * @display_y: return location for a the ordinate on the core's video display + * + * Gets coordinates on the core's video output from coordinates on @self, and + * whether the point is inside the core's video display. + * + * Returns: whether the coordinates are on the core's video display + */ +gboolean +retro_cairo_display_get_coordinates_on_display (RetroCairoDisplay *self, + gdouble widget_x, + gdouble widget_y, + gdouble *display_x, + gdouble *display_y) +{ + gdouble w = 0.0; + gdouble h = 0.0; + gdouble x = 0.0; + gdouble y = 0.0; + + g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (display_x != NULL, FALSE); + g_return_val_if_fail (display_y != NULL, FALSE); + + retro_cairo_display_get_video_box (self, &w, &h, &x, &y); + + // Return coordinates as a [-1.0, 1.0] scale, (0.0, 0.0) is the center. + *display_x = ((widget_x - x) * 2.0 - w) / w; + *display_y = ((widget_y - y) * 2.0 - h) / h; + + return (-1.0 <= *display_x) && (*display_x <= 1.0) && + (-1.0 <= *display_y) && (*display_y <= 1.0); +} + +/** + * retro_cairo_display_new: + * + * Creates a new #RetroCairoDisplay. + * + * Returns: (transfer full): a new #RetroCairoDisplay + */ +RetroCairoDisplay * +retro_cairo_display_new (void) +{ + return g_object_new (RETRO_TYPE_CAIRO_DISPLAY, NULL); +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-cairo-display.h retro-gtk-0.14.0/retro-gtk/retro-cairo-display.h --- retro-gtk-0.12.1/retro-gtk/retro-cairo-display.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-cairo-display.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,37 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_CAIRO_DISPLAY_H +#define RETRO_CAIRO_DISPLAY_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include +#include "retro-core.h" +#include "retro-video-filter.h" + +G_BEGIN_DECLS + +#define RETRO_TYPE_CAIRO_DISPLAY (retro_cairo_display_get_type()) + +G_DECLARE_FINAL_TYPE (RetroCairoDisplay, retro_cairo_display, RETRO, CAIRO_DISPLAY, GtkDrawingArea) + +RetroCairoDisplay *retro_cairo_display_new (void); +GdkPixbuf *retro_cairo_display_get_pixbuf (RetroCairoDisplay *self); +void retro_cairo_display_set_pixbuf (RetroCairoDisplay *self, + GdkPixbuf *pixbuf); +void retro_cairo_display_set_core (RetroCairoDisplay *self, + RetroCore *core); +void retro_cairo_display_set_filter (RetroCairoDisplay *self, + RetroVideoFilter filter); +gboolean retro_cairo_display_get_coordinates_on_display (RetroCairoDisplay *self, + gdouble widget_x, + gdouble widget_y, + gdouble *display_x, + gdouble *display_y); + +G_END_DECLS + +#endif /* RETRO_CAIRO_DISPLAY_H */ + diff -Nru retro-gtk-0.12.1/retro-gtk/retro-controller.c retro-gtk-0.14.0/retro-gtk/retro-controller.c --- retro-gtk-0.12.1/retro-gtk/retro-controller.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-controller.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,154 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-controller.h" + +G_DEFINE_INTERFACE (RetroController, retro_controller, G_TYPE_OBJECT); + +static void +retro_controller_default_init (RetroControllerInterface *iface) +{ +} + +/** + * retro_controller_poll: + * @self: a #RetroController + * + * Polls the pending input events for @self. + */ +void +retro_controller_poll (RetroController *self) +{ + RetroControllerInterface *iface; + + g_return_if_fail (RETRO_IS_CONTROLLER (self)); + + iface = RETRO_CONTROLLER_GET_IFACE (self); + + g_return_if_fail (iface->poll != NULL); + + iface->poll (self); +} + +/** + * retro_controller_get_input_state: + * @self: a #RetroController + * @input: a #RetroInput to query @self + * + * Gets the state of an input of @self. + * + * Returns: the input's state + */ +gint16 +retro_controller_get_input_state (RetroController *self, + RetroInput *input) +{ + RetroControllerInterface *iface; + + g_return_val_if_fail (RETRO_IS_CONTROLLER (self), 0); + + iface = RETRO_CONTROLLER_GET_IFACE (self); + + g_return_val_if_fail (iface->get_input_state != NULL, 0); + + return iface->get_input_state (self, input); +} + +/** + * retro_controller_get_controller_type: + * @self: a #RetroController + * + * Gets the main type of the controller. + * + * Returns: the controller type of @self + */ +RetroControllerType +retro_controller_get_controller_type (RetroController *self) +{ + + RetroControllerInterface *iface; + + g_return_val_if_fail (RETRO_IS_CONTROLLER (self), RETRO_CONTROLLER_TYPE_NONE); + + iface = RETRO_CONTROLLER_GET_IFACE (self); + + g_return_val_if_fail (iface->get_controller_type != NULL, RETRO_CONTROLLER_TYPE_NONE); + + return iface->get_controller_type (self); +} + +/** + * retro_controller_get_capabilities: + * @self: a #RetroController + * + * Gets a flag representing the capabilities of @self. Each bit index matches + * the #RetroControllerType of same number. + * + * For example, if @self is an analog gamepad, the value would be: (1 << + * RETRO_CONTROLLER_TYPE_JOYPAD) | (1 << RETRO_CONTROLLER_TYPE_ANALOG). + * + * Returns: the capabilities flag of @self + */ +guint64 +retro_controller_get_capabilities (RetroController *self) +{ + + RetroControllerInterface *iface; + + g_return_val_if_fail (RETRO_IS_CONTROLLER (self), 0); + + iface = RETRO_CONTROLLER_GET_IFACE (self); + + g_return_val_if_fail (iface->get_capabilities != NULL, 0); + + return iface->get_capabilities (self); +} + +/** + * retro_controller_has_capability: + * @self: a #RetroController + * @controller_type: a #RetroControllerType + * + * Gets whether @self has the capability to represent the given controller type. + * + * Returns: whether @self has the capability + */ +gboolean +retro_controller_has_capability (RetroController *self, + RetroControllerType controller_type) +{ + guint64 capabilities; + RetroControllerType masked_controller_type; + + g_return_val_if_fail (RETRO_IS_CONTROLLER (self), FALSE); + + capabilities = retro_controller_get_capabilities (self); + masked_controller_type = controller_type & RETRO_CONTROLLER_TYPE_TYPE_MASK; + + return (capabilities & (1 << masked_controller_type)) != 0; +} + +/** + * retro_controller_set_rumble_state: + * @self: a #RetroController + * @effect: the rumble effect + * @strength: the rumble effect strength + * + * Sets the rumble state of @self. + * + * Returns: whether the rumble state has been successfully set. + */ +gboolean +retro_controller_set_rumble_state (RetroController *self, + RetroRumbleEffect effect, + guint16 strength) +{ + RetroControllerInterface *iface; + + g_return_val_if_fail (RETRO_IS_CONTROLLER (self), FALSE); + + iface = RETRO_CONTROLLER_GET_IFACE (self); + + g_return_val_if_fail (iface->set_rumble_state != NULL, FALSE); + + return iface->set_rumble_state (self, effect, strength); +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-controller-codes.c retro-gtk-0.14.0/retro-gtk/retro-controller-codes.c --- retro-gtk-0.12.1/retro-gtk/retro-controller-codes.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-controller-codes.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,162 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-controller-codes.h" + +GType +retro_joypad_id_get_type (void) +{ + static volatile gsize retro_joypad_id_type = 0; + + if (g_once_init_enter (&retro_joypad_id_type)) { + static const GEnumValue values[] = { + { RETRO_JOYPAD_ID_B, "RETRO_JOYPAD_ID_B", "b" }, + { RETRO_JOYPAD_ID_Y, "RETRO_JOYPAD_ID_Y", "y" }, + { RETRO_JOYPAD_ID_SELECT, "RETRO_JOYPAD_ID_SELECT", "select" }, + { RETRO_JOYPAD_ID_START, "RETRO_JOYPAD_ID_START", "start" }, + { RETRO_JOYPAD_ID_UP, "RETRO_JOYPAD_ID_UP", "up" }, + { RETRO_JOYPAD_ID_DOWN, "RETRO_JOYPAD_ID_DOWN", "down" }, + { RETRO_JOYPAD_ID_LEFT, "RETRO_JOYPAD_ID_LEFT", "left" }, + { RETRO_JOYPAD_ID_RIGHT, "RETRO_JOYPAD_ID_RIGHT", "right" }, + { RETRO_JOYPAD_ID_A, "RETRO_JOYPAD_ID_A", "a" }, + { RETRO_JOYPAD_ID_X, "RETRO_JOYPAD_ID_X", "x" }, + { RETRO_JOYPAD_ID_L, "RETRO_JOYPAD_ID_L", "l" }, + { RETRO_JOYPAD_ID_R, "RETRO_JOYPAD_ID_R", "r" }, + { RETRO_JOYPAD_ID_L2, "RETRO_JOYPAD_ID_L2", "l2" }, + { RETRO_JOYPAD_ID_R2, "RETRO_JOYPAD_ID_R2", "r2" }, + { RETRO_JOYPAD_ID_L3, "RETRO_JOYPAD_ID_L3", "l3" }, + { RETRO_JOYPAD_ID_R3, "RETRO_JOYPAD_ID_R3", "r3" }, + { RETRO_JOYPAD_ID_COUNT, "RETRO_JOYPAD_ID_COUNT", "count" }, + { 0, NULL, NULL }, + }; + GType type; + + type = g_enum_register_static ("RetroJoypadId", values); + + g_once_init_leave (&retro_joypad_id_type, type); + } + + return retro_joypad_id_type; +} + +GType +retro_mouse_id_get_type (void) +{ + static volatile gsize retro_mouse_id_type = 0; + + if (g_once_init_enter (&retro_mouse_id_type)) { + static const GEnumValue values[] = { + { RETRO_MOUSE_ID_X, "RETRO_MOUSE_ID_X", "x" }, + { RETRO_MOUSE_ID_Y, "RETRO_MOUSE_ID_Y", "y" }, + { RETRO_MOUSE_ID_LEFT, "RETRO_MOUSE_ID_LEFT", "left" }, + { RETRO_MOUSE_ID_RIGHT, "RETRO_MOUSE_ID_RIGHT", "right" }, + { RETRO_MOUSE_ID_WHEELUP, "RETRO_MOUSE_ID_WHEELUP", "wheelup" }, + { RETRO_MOUSE_ID_WHEELDOWN, "RETRO_MOUSE_ID_WHEELDOWN", "wheeldown" }, + { RETRO_MOUSE_ID_MIDDLE, "RETRO_MOUSE_ID_MIDDLE", "middle" }, + { RETRO_MOUSE_ID_HORIZ_WHEELUP, "RETRO_MOUSE_ID_HORIZ_WHEELUP", "horiz-wheelup" }, + { RETRO_MOUSE_ID_HORIZ_WHEELDOWN, "RETRO_MOUSE_ID_HORIZ_WHEELDOWN", "horiz-wheeldown" }, + { RETRO_MOUSE_ID_COUNT, "RETRO_MOUSE_ID_COUNT", "count" }, + { 0, NULL, NULL }, + }; + GType type; + + type = g_enum_register_static ("RetroMouseId", values); + + g_once_init_leave (&retro_mouse_id_type, type); + } + + return retro_mouse_id_type; +} + +GType +retro_lightgun_id_get_type (void) +{ + static volatile gsize retro_lightgun_id_type = 0; + + if (g_once_init_enter (&retro_lightgun_id_type)) { + static const GEnumValue values[] = { + { RETRO_LIGHTGUN_ID_X, "RETRO_LIGHTGUN_ID_X", "x" }, + { RETRO_LIGHTGUN_ID_Y, "RETRO_LIGHTGUN_ID_Y", "y" }, + { RETRO_LIGHTGUN_ID_TRIGGER, "RETRO_LIGHTGUN_ID_TRIGGER", "trigger" }, + { RETRO_LIGHTGUN_ID_CURSOR, "RETRO_LIGHTGUN_ID_CURSOR", "cursor" }, + { RETRO_LIGHTGUN_ID_TURBO, "RETRO_LIGHTGUN_ID_TURBO", "turbo" }, + { RETRO_LIGHTGUN_ID_PAUSE, "RETRO_LIGHTGUN_ID_PAUSE", "pause" }, + { RETRO_LIGHTGUN_ID_START, "RETRO_LIGHTGUN_ID_START", "start" }, + { RETRO_LIGHTGUN_ID_COUNT, "RETRO_LIGHTGUN_ID_COUNT", "count" }, + { 0, NULL, NULL }, + }; + GType type; + + type = g_enum_register_static ("RetroLightgunId", values); + + g_once_init_leave (&retro_lightgun_id_type, type); + } + + return retro_lightgun_id_type; +} + +GType +retro_analog_id_get_type (void) +{ + static volatile gsize retro_analog_id_type = 0; + + if (g_once_init_enter (&retro_analog_id_type)) { + static const GEnumValue values[] = { + { RETRO_ANALOG_ID_X, "RETRO_ANALOG_ID_X", "x" }, + { RETRO_ANALOG_ID_Y, "RETRO_ANALOG_ID_Y", "y" }, + { RETRO_ANALOG_ID_COUNT, "RETRO_ANALOG_ID_COUNT", "count" }, + { 0, NULL, NULL }, + }; + GType type; + + type = g_enum_register_static ("RetroAnalogId", values); + + g_once_init_leave (&retro_analog_id_type, type); + } + + return retro_analog_id_type; +} + +GType +retro_analog_index_get_type (void) +{ + static volatile gsize retro_analog_index_type = 0; + + if (g_once_init_enter (&retro_analog_index_type)) { + static const GEnumValue values[] = { + { RETRO_ANALOG_INDEX_LEFT, "RETRO_ANALOG_INDEX_LEFT", "left" }, + { RETRO_ANALOG_INDEX_RIGHT, "RETRO_ANALOG_INDEX_RIGHT", "right" }, + { RETRO_ANALOG_INDEX_COUNT, "RETRO_ANALOG_INDEX_COUNT", "count" }, + { 0, NULL, NULL }, + }; + GType type; + + type = g_enum_register_static ("RetroAnalogIndex", values); + + g_once_init_leave (&retro_analog_index_type, type); + } + + return retro_analog_index_type; +} + +GType +retro_pointer_id_get_type (void) +{ + static volatile gsize retro_pointer_id_type = 0; + + if (g_once_init_enter (&retro_pointer_id_type)) { + static const GEnumValue values[] = { + { RETRO_POINTER_ID_X, "RETRO_POINTER_ID_X", "x" }, + { RETRO_POINTER_ID_Y, "RETRO_POINTER_ID_Y", "y" }, + { RETRO_POINTER_ID_PRESSED, "RETRO_POINTER_ID_PRESSED", "pressed" }, + { RETRO_POINTER_ID_COUNT, "RETRO_POINTER_ID_COUNT", "count" }, + { 0, NULL, NULL }, + }; + GType type; + + type = g_enum_register_static ("RetroPointerId", values); + + g_once_init_leave (&retro_pointer_id_type, type); + } + + return retro_pointer_id_type; +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-controller-codes.h retro-gtk-0.14.0/retro-gtk/retro-controller-codes.h --- retro-gtk-0.12.1/retro-gtk/retro-controller-codes.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-controller-codes.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,189 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_CONTROLLER_CODES_H +#define RETRO_CONTROLLER_CODES_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define RETRO_TYPE_JOYPAD_ID (retro_joypad_id_get_type ()) + +GType retro_joypad_id_get_type (void) G_GNUC_CONST; + +/** + * RetroJoypadId: + * @RETRO_JOYPAD_ID_B: the bottom action button + * @RETRO_JOYPAD_ID_Y: the left action button + * @RETRO_JOYPAD_ID_SELECT: the Select button + * @RETRO_JOYPAD_ID_START: the Start button + * @RETRO_JOYPAD_ID_UP: the up directional button + * @RETRO_JOYPAD_ID_DOWN: the down directional button + * @RETRO_JOYPAD_ID_LEFT: the left directional button + * @RETRO_JOYPAD_ID_RIGHT: the right directional button + * @RETRO_JOYPAD_ID_A: the right action button + * @RETRO_JOYPAD_ID_X: the top action button + * @RETRO_JOYPAD_ID_L: the first left shoulder button + * @RETRO_JOYPAD_ID_R: the first right shoulder button + * @RETRO_JOYPAD_ID_L2: the second left shoulder button + * @RETRO_JOYPAD_ID_R2: the second right shoulder button + * @RETRO_JOYPAD_ID_L3: the left thumb button + * @RETRO_JOYPAD_ID_R3: the right thumb button + * @RETRO_JOYPAD_ID_COUNT: the number of ids + * + * Represents the buttons for the Libretro gamepad. The available buttons are + * the same as the W3C Standard Gamepad, the SDL GameController and many other + * modern standard gamepads, but the name of the buttons may differ. See the + * W3C Gamepad Specification + * and the SDL + * GamepadController definition for more information. + */ +typedef enum +{ + RETRO_JOYPAD_ID_B, + RETRO_JOYPAD_ID_Y, + RETRO_JOYPAD_ID_SELECT, + RETRO_JOYPAD_ID_START, + RETRO_JOYPAD_ID_UP, + RETRO_JOYPAD_ID_DOWN, + RETRO_JOYPAD_ID_LEFT, + RETRO_JOYPAD_ID_RIGHT, + RETRO_JOYPAD_ID_A, + RETRO_JOYPAD_ID_X, + RETRO_JOYPAD_ID_L, + RETRO_JOYPAD_ID_R, + RETRO_JOYPAD_ID_L2, + RETRO_JOYPAD_ID_R2, + RETRO_JOYPAD_ID_L3, + RETRO_JOYPAD_ID_R3, + RETRO_JOYPAD_ID_COUNT, +} RetroJoypadId; + +#define RETRO_TYPE_MOUSE_ID (retro_mouse_id_get_type ()) + +GType retro_mouse_id_get_type (void) G_GNUC_CONST; + +/** + * RetroMouseId: + * @RETRO_MOUSE_ID_X: the X axis of a mouse + * @RETRO_MOUSE_ID_Y: the Y axis of a mouse + * @RETRO_MOUSE_ID_LEFT: the left button of a mouse + * @RETRO_MOUSE_ID_RIGHT: the right button of a mouse + * @RETRO_MOUSE_ID_WHEELUP: the up direction of a mouse wheel + * @RETRO_MOUSE_ID_WHEELDOWN: the down direction of a mouse wheel + * @RETRO_MOUSE_ID_MIDDLE: the middle button of a mouse + * @RETRO_MOUSE_ID_HORIZ_WHEELUP: the horizontal up direction of a mouse wheel + * @RETRO_MOUSE_ID_HORIZ_WHEELDOWN: the horizontal down direction of a mouse wheel + * @RETRO_MOUSE_ID_COUNT: the number of ids + * + * Represents the inputs for the Libretro mouse. + */ +typedef enum +{ + RETRO_MOUSE_ID_X, + RETRO_MOUSE_ID_Y, + RETRO_MOUSE_ID_LEFT, + RETRO_MOUSE_ID_RIGHT, + RETRO_MOUSE_ID_WHEELUP, + RETRO_MOUSE_ID_WHEELDOWN, + RETRO_MOUSE_ID_MIDDLE, + RETRO_MOUSE_ID_HORIZ_WHEELUP, + RETRO_MOUSE_ID_HORIZ_WHEELDOWN, + RETRO_MOUSE_ID_COUNT, +} RetroMouseId; + +#define RETRO_TYPE_LIGHTGUN_ID (retro_lightgun_id_get_type ()) + +GType retro_lightgun_id_get_type (void) G_GNUC_CONST; + +/** + * RetroLightgunId: + * @RETRO_LIGHTGUN_ID_X: the X axis of a lightgun + * @RETRO_LIGHTGUN_ID_Y: the Y axis of a lightgun + * @RETRO_LIGHTGUN_ID_TRIGGER: the trigger of a lightgun + * @RETRO_LIGHTGUN_ID_CURSOR: the cursor of a lightgun + * @RETRO_LIGHTGUN_ID_TURBO: the turbo button of a lightgun + * @RETRO_LIGHTGUN_ID_PAUSE: the pause button of a lightgun + * @RETRO_LIGHTGUN_ID_START: the start button of a lightgun + * @RETRO_LIGHTGUN_ID_COUNT: the number of ids + * + * Represents the inputs for the Libretro lightgun. + */ +typedef enum +{ + RETRO_LIGHTGUN_ID_X, + RETRO_LIGHTGUN_ID_Y, + RETRO_LIGHTGUN_ID_TRIGGER, + RETRO_LIGHTGUN_ID_CURSOR, + RETRO_LIGHTGUN_ID_TURBO, + RETRO_LIGHTGUN_ID_PAUSE, + RETRO_LIGHTGUN_ID_START, + RETRO_LIGHTGUN_ID_COUNT, +} RetroLightgunId; + +#define RETRO_TYPE_ANALOG_ID (retro_analog_id_get_type ()) + +GType retro_analog_id_get_type (void) G_GNUC_CONST; + +/** + * RetroAnalogId: + * @RETRO_ANALOG_ID_X: the X axis of an analog stick + * @RETRO_ANALOG_ID_Y: the Y axis of an analog stick + * @RETRO_ANALOG_ID_COUNT: the number of ids + * + * Represents the axes of the analog sticks for the Libretro gamepad. + */ +typedef enum +{ + RETRO_ANALOG_ID_X, + RETRO_ANALOG_ID_Y, + RETRO_ANALOG_ID_COUNT, +} RetroAnalogId; + +#define RETRO_TYPE_ANALOG_INDEX (retro_analog_index_get_type ()) + +GType retro_analog_index_get_type (void) G_GNUC_CONST; + +/** + * RetroAnalogIndex: + * @RETRO_ANALOG_INDEX_LEFT: the left analog stick + * @RETRO_ANALOG_INDEX_RIGHT: the right analog stick + * @RETRO_ANALOG_INDEX_COUNT: the number of indexes + * + * Represents the analog sticks for the Libretro gamepad. + */ +typedef enum +{ + RETRO_ANALOG_INDEX_LEFT, + RETRO_ANALOG_INDEX_RIGHT, + RETRO_ANALOG_INDEX_COUNT, +} RetroAnalogIndex; + +#define RETRO_TYPE_POINTER_ID (retro_pointer_id_get_type ()) + +GType retro_pointer_id_get_type (void) G_GNUC_CONST; + +/** + * RetroPointerId: + * @RETRO_POINTER_ID_X: the X axis of a pointer + * @RETRO_POINTER_ID_Y: the Y axis of a pointer + * @RETRO_POINTER_ID_PRESSED: the pression of a pointer + * @RETRO_POINTER_ID_COUNT: the number of ids + * + * Represents the inputs for the Libretro pointer. + */ +typedef enum +{ + RETRO_POINTER_ID_X, + RETRO_POINTER_ID_Y, + RETRO_POINTER_ID_PRESSED, + RETRO_POINTER_ID_COUNT, +} RetroPointerId; + +G_END_DECLS + +#endif /* RETRO_CONTROLLER_CODES_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-controller.h retro-gtk-0.14.0/retro-gtk/retro-controller.h --- retro-gtk-0.12.1/retro-gtk/retro-controller.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-controller.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,47 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_CONTROLLER_H +#define RETRO_CONTROLLER_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include +#include "retro-input.h" +#include "retro-rumble-effect.h" + +G_BEGIN_DECLS + +#define RETRO_TYPE_CONTROLLER (retro_controller_get_type()) + +G_DECLARE_INTERFACE (RetroController, retro_controller, RETRO, CONTROLLER, GObject) + +struct _RetroControllerInterface +{ + GTypeInterface parent_iface; + + void (*poll) (RetroController *self); + gint16 (*get_input_state) (RetroController *self, + RetroInput *input); + RetroControllerType (*get_controller_type) (RetroController *self); + guint64 (*get_capabilities) (RetroController *self); + gboolean (*set_rumble_state) (RetroController *self, + RetroRumbleEffect effect, + guint16 strength); +}; + +void retro_controller_poll (RetroController *self); +gint16 retro_controller_get_input_state (RetroController *self, + RetroInput *input); +RetroControllerType retro_controller_get_controller_type (RetroController *self); +guint64 retro_controller_get_capabilities (RetroController *self); +gboolean retro_controller_has_capability (RetroController *self, + RetroControllerType controller_type); +gboolean retro_controller_set_rumble_state (RetroController *self, + RetroRumbleEffect effect, + guint16 strength); + +G_END_DECLS + +#endif /* RETRO_CONTROLLER_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-controller-iterator.c retro-gtk-0.14.0/retro-gtk/retro-controller-iterator.c --- retro-gtk-0.12.1/retro-gtk/retro-controller-iterator.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-controller-iterator.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,77 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-controller-iterator.h" + +struct _RetroControllerIterator +{ + GObject parent_instance; + GHashTableIter iterator; +}; + +G_DEFINE_TYPE (RetroControllerIterator, retro_controller_iterator, G_TYPE_OBJECT) + +/* Private */ + +static void +retro_controller_iterator_finalize (GObject *object) +{ + G_OBJECT_CLASS (retro_controller_iterator_parent_class)->finalize (object); +} + +static void +retro_controller_iterator_class_init (RetroControllerIteratorClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = retro_controller_iterator_finalize; +} + +static void +retro_controller_iterator_init (RetroControllerIterator *self) +{ +} + +/* Public */ + +/** + * retro_controller_iterator_next: + * @self: a #RetroControllerIterator + * @port: (out) (optional): return location for the port + * @controller: (out) (optional) (nullable): return location for the controller + * + * Fetch the next #RetroController and the port number it is plugged into. + * + * Returns: %FALSE if it reached the end, %TRUE otherwise + */ +gboolean +retro_controller_iterator_next (RetroControllerIterator *self, + guint **port, + RetroController **controller) +{ + g_return_val_if_fail (RETRO_IS_CONTROLLER_ITERATOR (self), FALSE); + g_return_val_if_fail (port != NULL, FALSE); + g_return_val_if_fail (controller != NULL, FALSE); + + return g_hash_table_iter_next (&self->iterator, (gpointer *) port, (gpointer *) controller); +} + +/** + * retro_controller_iterator_new: + * @controllers: (element-type guint RetroController): A #GHashTable + * + * Creates a new #RetroControllerIterator. + * + * Returns: (transfer full): a new #RetroControllerIterator + */ +RetroControllerIterator * +retro_controller_iterator_new (GHashTable *controllers) +{ + RetroControllerIterator *self; + + g_return_val_if_fail (controllers != NULL, NULL); + + self = g_object_new (RETRO_TYPE_CONTROLLER_ITERATOR, NULL); + g_hash_table_iter_init (&self->iterator, controllers); + + return self; +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-controller-iterator.h retro-gtk-0.14.0/retro-gtk/retro-controller-iterator.h --- retro-gtk-0.12.1/retro-gtk/retro-controller-iterator.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-controller-iterator.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,26 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_CONTROLLER_ITERATOR_H +#define RETRO_CONTROLLER_ITERATOR_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include +#include "retro-controller.h" + +G_BEGIN_DECLS + +#define RETRO_TYPE_CONTROLLER_ITERATOR (retro_controller_iterator_get_type()) + +G_DECLARE_FINAL_TYPE (RetroControllerIterator, retro_controller_iterator, RETRO, CONTROLLER_ITERATOR, GObject) + +gboolean retro_controller_iterator_next (RetroControllerIterator *self, + guint **port, + RetroController **controller); + +G_END_DECLS + +#endif /* RETRO_CONTROLLER_ITERATOR_H */ + diff -Nru retro-gtk-0.12.1/retro-gtk/retro-controller-iterator-private.h retro-gtk-0.14.0/retro-gtk/retro-controller-iterator-private.h --- retro-gtk-0.12.1/retro-gtk/retro-controller-iterator-private.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-controller-iterator-private.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,19 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_CONTROLLER_ITERATOR_PRIVATE_H +#define RETRO_CONTROLLER_ITERATOR_PRIVATE_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include "retro-controller-iterator.h" + +G_BEGIN_DECLS + +RetroControllerIterator *retro_controller_iterator_new (GHashTable *controllers); + +G_END_DECLS + +#endif /* RETRO_CONTROLLER_ITERATOR_PRIVATE_H */ + diff -Nru retro-gtk-0.12.1/retro-gtk/retro-controller-type.c retro-gtk-0.14.0/retro-gtk/retro-controller-type.c --- retro-gtk-0.12.1/retro-gtk/retro-controller-type.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-controller-type.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,31 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-controller-type.h" + +GType +retro_controller_type_get_type (void) +{ + static volatile gsize retro_controller_type_type = 0; + + if (g_once_init_enter (&retro_controller_type_type)) { + static const GEnumValue values[] = { + { RETRO_CONTROLLER_TYPE_NONE, "RETRO_CONTROLLER_TYPE_NONE", "none" }, + { RETRO_CONTROLLER_TYPE_JOYPAD, "RETRO_CONTROLLER_TYPE_JOYPAD", "joypad" }, + { RETRO_CONTROLLER_TYPE_MOUSE, "RETRO_CONTROLLER_TYPE_MOUSE", "mouse" }, + { RETRO_CONTROLLER_TYPE_KEYBOARD, "RETRO_CONTROLLER_TYPE_KEYBOARD", "keyboard" }, + { RETRO_CONTROLLER_TYPE_LIGHTGUN, "RETRO_CONTROLLER_TYPE_LIGHTGUN", "lightgun" }, + { RETRO_CONTROLLER_TYPE_ANALOG, "RETRO_CONTROLLER_TYPE_ANALOG", "analog" }, + { RETRO_CONTROLLER_TYPE_POINTER, "RETRO_CONTROLLER_TYPE_POINTER", "pointer" }, + { RETRO_CONTROLLER_TYPE_COUNT, "RETRO_CONTROLLER_TYPE_COUNT", "count" }, + { RETRO_CONTROLLER_TYPE_TYPE_MASK, "RETRO_CONTROLLER_TYPE_TYPE_MASK", "type-mask" }, + { 0, NULL, NULL }, + }; + GType type; + + type = g_enum_register_static ("RetroControllerType", values); + + g_once_init_leave (&retro_controller_type_type, type); + } + + return retro_controller_type_type; +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-controller-type.h retro-gtk-0.14.0/retro-gtk/retro-controller-type.h --- retro-gtk-0.12.1/retro-gtk/retro-controller-type.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-controller-type.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,47 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_CONTROLLER_TYPE_H +#define RETRO_CONTROLLER_TYPE_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define RETRO_TYPE_CONTROLLER_TYPE (retro_controller_type_get_type ()) + +GType retro_controller_type_get_type (void) G_GNUC_CONST; + +/** + * RetroControllerType: + * @RETRO_CONTROLLER_TYPE_NONE: no controller + * @RETRO_CONTROLLER_TYPE_JOYPAD: a classic gamepad + * @RETRO_CONTROLLER_TYPE_MOUSE: a simple mouse + * @RETRO_CONTROLLER_TYPE_KEYBOARD: a keyboard + * @RETRO_CONTROLLER_TYPE_LIGHTGUN: a lightgun + * @RETRO_CONTROLLER_TYPE_ANALOG: a gamepad with analog sticks + * @RETRO_CONTROLLER_TYPE_POINTER: a screen pointer + * @RETRO_CONTROLLER_TYPE_COUNT: the number of types + * @RETRO_CONTROLLER_TYPE_TYPE_MASK: a mask to get the super type of a derived one + * + * Represents the base types for Libretro controllers. + */ +typedef enum +{ + RETRO_CONTROLLER_TYPE_NONE, + RETRO_CONTROLLER_TYPE_JOYPAD, + RETRO_CONTROLLER_TYPE_MOUSE, + RETRO_CONTROLLER_TYPE_KEYBOARD, + RETRO_CONTROLLER_TYPE_LIGHTGUN, + RETRO_CONTROLLER_TYPE_ANALOG, + RETRO_CONTROLLER_TYPE_POINTER, + RETRO_CONTROLLER_TYPE_COUNT, + RETRO_CONTROLLER_TYPE_TYPE_MASK = 0xff, +} RetroControllerType; + +G_END_DECLS + +#endif /* RETRO_CONTROLLER_TYPE_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-core.c retro-gtk-0.14.0/retro-gtk/retro-core.c --- retro-gtk-0.12.1/retro-gtk/retro-core.c 2017-09-30 07:01:32.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-core.c 2018-03-10 13:02:01.000000000 +0000 @@ -1,11 +1,51 @@ // This file is part of retro-gtk. License: GPL-3.0+. -#include "retro-core.h" +#include "retro-core-private.h" -#include "retro-gtk-internal.h" -#include "input/retro-keyboard-key.h" +#include +#include "retro-controller-iterator-private.h" +#include "retro-keyboard-key.h" +#include "retro-pixdata.h" + +#define RETRO_CORE_ERROR (retro_core_error_quark ()) + +enum { + RETRO_CORE_ERROR_COULDNT_SERIALIZE, + RETRO_CORE_ERROR_COULDNT_DESERIALIZE, + RETRO_CORE_ERROR_SERIALIZATION_NOT_SUPPORTED, + RETRO_CORE_ERROR_NO_CALLBACK, +}; + +G_DEFINE_QUARK (retro-core-error, retro_core_error) + +G_DEFINE_TYPE (RetroCore, retro_core, G_TYPE_OBJECT) + +enum { + PROP_0, + PROP_API_VERSION, + PROP_FILENAME, + PROP_SYSTEM_DIRECTORY, + PROP_CONTENT_DIRECTORY, + PROP_SAVE_DIRECTORY, + PROP_IS_INITIATED, + PROP_GAME_LOADED, + PROP_SUPPORT_NO_GAME, + PROP_FRAMES_PER_SECOND, + N_PROPS, +}; + +static GParamSpec *properties [N_PROPS]; + +enum { + SIG_VIDEO_OUTPUT_SIGNAL, + SIG_AUDIO_OUTPUT_SIGNAL, + SIG_LOG_SIGNAL, + SIG_SHUTDOWN_SIGNAL, + SIG_MESSAGE_SIGNAL, + N_SIGNALS, +}; -/* Private */ +static guint signals[N_SIGNALS]; #define RETRO_CORE_OBJECTS_LENGTH 32 @@ -14,11 +54,19 @@ static RetroCore *retro_core_objects[32]; static gint retro_core_i = 0; -// FIXME Make static as soon as possible. +static void retro_core_set_filename (RetroCore *self, + const gchar *filename); +static void retro_core_set_is_initiated (RetroCore *self, + gboolean is_initiated); +static void retro_core_set_game_loaded (RetroCore *self, + gboolean game_loaded); + +/* Private */ + void retro_core_push_cb_data (RetroCore *self) { - g_return_if_fail (self != NULL); + g_return_if_fail (RETRO_IS_CORE (self)); g_rec_mutex_lock (&retro_core_w_mutex); g_rec_mutex_lock (&retro_core_r_mutex); @@ -36,7 +84,6 @@ g_rec_mutex_unlock (&retro_core_r_mutex); } -// FIXME Make static as soon as possible. void retro_core_pop_cb_data (void) { @@ -57,7 +104,6 @@ g_rec_mutex_unlock (&retro_core_w_mutex); } -// FIXME Make static as soon as possible. RetroCore * retro_core_get_cb_data (void) { @@ -78,6 +124,419 @@ return result; } +static void +retro_core_finalize (GObject *object) +{ + RetroCore *self = RETRO_CORE (object); + RetroUnloadGame unload_game; + RetroDeinit deinit; + gsize i; + + g_return_if_fail (RETRO_IS_CORE (self)); + + retro_core_push_cb_data (self); + if (retro_core_get_game_loaded (self)) { + unload_game = retro_module_get_unload_game (self->module); + unload_game (); + } + deinit = retro_module_get_deinit (self->module); + deinit (); + retro_core_pop_cb_data (); + + if (self->media_uris != NULL) + g_strfreev (self->media_uris); + + g_object_unref (self->module); + for (i = 0; i < RETRO_CONTROLLER_TYPE_COUNT; i++) + if (self->default_controllers[i] != NULL) + g_object_unref (self->default_controllers[i]); + g_hash_table_unref (self->controllers); + g_object_unref (self->options); + + g_free (self->filename); + g_free (self->system_directory); + g_free (self->libretro_path); + g_free (self->content_directory); + g_free (self->save_directory); + g_object_unref (self->keyboard_widget); + + G_OBJECT_CLASS (retro_core_parent_class)->finalize (object); +} + +static void +retro_core_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + RetroCore *self = RETRO_CORE (object); + + switch (prop_id) { + case PROP_API_VERSION: + g_value_set_uint (value, retro_core_get_api_version (self)); + + break; + case PROP_SYSTEM_DIRECTORY: + g_value_set_string (value, retro_core_get_system_directory (self)); + + break; + case PROP_CONTENT_DIRECTORY: + g_value_set_string (value, retro_core_get_content_directory (self)); + + break; + case PROP_SAVE_DIRECTORY: + g_value_set_string (value, retro_core_get_save_directory (self)); + + break; + case PROP_FRAMES_PER_SECOND: + g_value_set_double (value, retro_core_get_frames_per_second (self)); + + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + + break; + } +} + +static void +retro_core_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + RetroCore *self = RETRO_CORE (object); + + switch (prop_id) { + case PROP_FILENAME: + retro_core_set_filename (self, g_value_get_string (value)); + + break; + case PROP_SYSTEM_DIRECTORY: + retro_core_set_system_directory (self, g_value_get_string (value)); + + break; + case PROP_CONTENT_DIRECTORY: + retro_core_set_content_directory (self, g_value_get_string (value)); + + break; + case PROP_SAVE_DIRECTORY: + retro_core_set_save_directory (self, g_value_get_string (value)); + + break; + case PROP_IS_INITIATED: + retro_core_set_is_initiated (self, g_value_get_boolean (value)); + + break; + case PROP_GAME_LOADED: + retro_core_set_game_loaded (self, g_value_get_boolean (value)); + + break; + case PROP_SUPPORT_NO_GAME: + retro_core_set_support_no_game (self, g_value_get_boolean (value)); + + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + + break; + } +} + +static void +retro_core_class_init (RetroCoreClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = retro_core_finalize; + object_class->get_property = retro_core_get_property; + object_class->set_property = retro_core_set_property; + + /** + * RetroCore:api-version: + * + * The Libretro API version implement by the core. + */ + properties[PROP_API_VERSION] = + g_param_spec_uint ("api-version", + "API version", + "The API version", + 0, + G_MAXUINT, + 0U, + G_PARAM_READABLE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB); + + /** + * RetroCore:filename: + * + * The filename of the core. + */ + properties[PROP_FILENAME] = + g_param_spec_string ("filename", + "Filename", + "The module filename", + NULL, + G_PARAM_READABLE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB); + + /** + * RetroCore:system-directory: + * + * The system directory of the core. + * + * The core will look here for additional data, such as firmware ROMs or + * configuration files. + */ + properties[PROP_SYSTEM_DIRECTORY] = + g_param_spec_string ("system-directory", + "System directory", + "The system directory", + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB); + + // FIXME This should be removed as it is deprecated by Libretro. + properties[PROP_CONTENT_DIRECTORY] = + g_param_spec_string ("content-directory", + "Content directory", + "The content directory", + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB); + + /** + * RetroCore:save-directory: + * + * The save directory of the core. + * + * The core will save some data here. + */ + properties[PROP_SAVE_DIRECTORY] = + g_param_spec_string ("save-directory", + "Save directory", + "The save directory", + NULL, + G_PARAM_READWRITE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB); + + /** + * RetroCore:is-initiated: + * + * Whether the core has been initiated. + */ + properties[PROP_IS_INITIATED] = + g_param_spec_boolean ("is-initiated", + "Is initiated", + "Whether the core has been initiated", + FALSE, + G_PARAM_READABLE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB); + + /** + * RetroCore:game-loaded: + * + * Whether a game has been loaded. + */ + properties[PROP_GAME_LOADED] = + g_param_spec_boolean ("game-loaded", + "Game loaded", + "Whether a game has been loaded", + FALSE, + G_PARAM_READABLE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB); + + /** + * RetroCore:support-no-game: + * + * Whether the core supports running with no game. + */ + properties[PROP_SUPPORT_NO_GAME] = + g_param_spec_boolean ("support-no-game", + "Support no game", + "Whether the core supports running with no game", + FALSE, + G_PARAM_READABLE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB); + + /** + * RetroCore:frames-per-second: + * + * The FPS rate for the core's video output. + */ + properties[PROP_FRAMES_PER_SECOND] = + g_param_spec_double ("frames-per-second", + "Frames per second", + "The FPS rate for the core's video output", + -G_MAXDOUBLE, + G_MAXDOUBLE, + 0.0, + G_PARAM_READABLE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB); + + g_object_class_install_properties (G_OBJECT_CLASS (klass), N_PROPS, properties); + + /** + * RetroCore::video-output: + * @self: the #RetroCore + * @pixdata: (type RetroPixdata): the #RetroPixdata + * + * The ::video-output signal is emitted each time a new video frame is emitted + * by the core. + * + * @pixdata will be invalid after the signal emission, copy it in some way if + * you want to keep it. + */ + signals[SIG_VIDEO_OUTPUT_SIGNAL] = + g_signal_new ("video-output", RETRO_TYPE_CORE, G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + NULL, + G_TYPE_NONE, + 1, + // G_TYPE_POINTER instead of RETRO_TYPE_PIXDATA to implicit + // copy when sending the RetroPixdata. + G_TYPE_POINTER); + + /** + * RetroCore::audio-output: + * @self: the #RetroCore + * @data: (array length=length) (element-type guint8): the audio frame data + * @length: the lentgh of @data + * @sample_rate: the sample rate to play the frame + * + * The ::audio-output signal is emitted each time a new audio frame is emitted + * by the core. + */ + signals[SIG_AUDIO_OUTPUT_SIGNAL] = + g_signal_new ("audio-output", RETRO_TYPE_CORE, G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + NULL, + G_TYPE_NONE, + 3, + G_TYPE_POINTER, + G_TYPE_ULONG, + G_TYPE_DOUBLE); + + /** + * RetroCore::log: + * @self: the #RetroCore + * @log_domain: the log domain + * @log_level: (type GLogLevelFlags): the log level + * @message: the message + * + * The ::log signal is emitted each time the core emits a message to log. + */ + signals[SIG_LOG_SIGNAL] = + g_signal_new ("log", RETRO_TYPE_CORE, G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + NULL, + G_TYPE_NONE, + 3, + G_TYPE_STRING, + G_TYPE_UINT, + G_TYPE_STRING); + + /** + * RetroCore::shutdown: + * @self: the #RetroCore + * + * The ::shutdown signal is emitted when the core shut down. + * + * The core must be released or re-started in order to function anew. + * + * Returns: whether the request got fulfilled + */ + signals[SIG_SHUTDOWN_SIGNAL] = + g_signal_new ("shutdown", RETRO_TYPE_CORE, G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + NULL, + G_TYPE_BOOLEAN, + 0); + + /** + * RetroCore::message: + * @self: the #RetroCore + * @message: the message + * @frames: the number of frames the message should be displayed + * + * The ::message signal is emitted each time the core emits a message to + * display during a given amount of frames. + * + * Returns: whether the request got fulfilled + */ + signals[SIG_MESSAGE_SIGNAL] = + g_signal_new ("message", RETRO_TYPE_CORE, G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + NULL, + G_TYPE_BOOLEAN, + 2, + G_TYPE_STRING, + G_TYPE_UINT); +} + +static void +retro_core_init (RetroCore *self) +{ +} + +static void +retro_core_set_filename (RetroCore *self, + const gchar *filename) +{ + g_return_if_fail (RETRO_IS_CORE (self)); + + if (g_strcmp0 (filename, retro_core_get_filename (self)) == 0) + return; + + g_free (self->filename); + self->filename = g_strdup (filename); + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_FILENAME]); +} + +static void +retro_core_set_is_initiated (RetroCore *self, + gboolean is_initiated) +{ + g_return_if_fail (RETRO_IS_CORE (self)); + + if (retro_core_get_is_initiated (self) == is_initiated) + return; + + self->is_initiated = is_initiated; + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_IS_INITIATED]); +} + +static void +retro_core_set_game_loaded (RetroCore *self, + gboolean game_loaded) +{ + g_return_if_fail (RETRO_IS_CORE (self)); + + if (retro_core_get_game_loaded (self) == game_loaded) + return; + + self->game_loaded = game_loaded; + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_GAME_LOADED]); +} + /** * retro_core_get_system_info: * @self: A #RetroCore @@ -89,16 +548,13 @@ retro_core_get_system_info (RetroCore *self, RetroSystemInfo *system_info) { - RetroCoreEnvironmentInternal *internal; RetroGetSystemInfo get_system_info; - g_return_if_fail (self != NULL); + g_return_if_fail (RETRO_IS_CORE (self)); g_return_if_fail (system_info != NULL); - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); - retro_core_push_cb_data (self); - get_system_info = retro_module_get_get_system_info (internal->module); + get_system_info = retro_module_get_get_system_info (self->module); get_system_info (system_info); retro_core_pop_cb_data (); } @@ -113,12 +569,13 @@ return system_info.need_fullpath; } -// FIXME Make static as soon as possible. /** * retro_core_get_name: - * @self: A #RetroCore + * @self: a #RetroCore + * + * Gets the name of @self. * - * Returns: (transfer none): The name of the Libretro core. + * Returns: (transfer none): the name of @self */ gchar * retro_core_get_name (RetroCore *self) @@ -131,98 +588,30 @@ } static void -init_controller_device (guint port, - RetroInputDevice *device, - gpointer data) -{ - RetroCore *self; - RetroDeviceType device_type; - - self = RETRO_CORE (data); - - g_return_if_fail (self != NULL); - g_return_if_fail (device != NULL); - - device_type = retro_input_device_get_device_type (device); - retro_core_set_controller_port_device (self, port, device_type); -} - -// FIXME Make static as soon as possible. -void -retro_core_init_input (RetroCore* self) -{ - RetroInput* input_interface; - - g_return_if_fail (self != NULL); - - input_interface = retro_core_get_input_interface (self); - if (input_interface == NULL) - return; - - retro_input_foreach_controller (input_interface, init_controller_device, self); -} - -// FIXME Make static as soon as possible. -void -retro_core_on_input_controller_connected (RetroCore *self, - guint port, - RetroInputDevice *device) -{ - RetroDeviceType device_type; - - g_return_if_fail (self != NULL); - g_return_if_fail (device != NULL); - - if (!retro_core_get_is_initiated (self)) - return; - - device_type = retro_input_device_get_device_type (device); - retro_core_set_controller_port_device (self, port, device_type); -} - -// FIXME Make static as soon as possible. -void -retro_core_on_input_controller_disconnected (RetroCore *self, - guint port) -{ - g_return_if_fail (self != NULL); - - if (!retro_core_get_is_initiated (self)) - return; - - retro_core_set_controller_port_device (self, port, RETRO_DEVICE_TYPE_NONE); -} - -static void retro_core_send_input_key_event (RetroCore *self, gboolean down, RetroKeyboardKey keycode, guint32 character, RetroKeyboardModifierKey key_modifiers) { - RetroCoreEnvironmentInternal *environment_internal; - - g_return_if_fail (self != NULL); + g_return_if_fail (RETRO_IS_CORE (self)); - environment_internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); - - if (environment_internal->keyboard_callback.callback == NULL) + if (self->keyboard_callback.callback == NULL) return; - environment_internal->keyboard_callback.callback (down, keycode, character, key_modifiers); + self->keyboard_callback.callback (down, keycode, character, key_modifiers); } -// FIXME Make static as soon as possible. -gboolean -retro_core_on_key_event (RetroCore *self, - GdkEventKey *event) +static gboolean +retro_core_key_event (RetroCore *self, + GdkEventKey *event) { gboolean pressed; RetroKeyboardKey retro_key; RetroKeyboardModifierKey retro_modifier_key; guint32 character; - g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (RETRO_IS_CORE (self), FALSE); g_return_val_if_fail (event != NULL, FALSE); if (!retro_core_get_is_initiated (self)) @@ -249,20 +638,17 @@ gboolean ejected, GError **error) { - RetroCoreEnvironmentInternal *internal; RetroDiskControlCallbackSetEjectState set_eject_state; gboolean result; - g_return_val_if_fail (self != NULL, FALSE); - - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); + g_return_val_if_fail (RETRO_IS_CORE (self), FALSE); - set_eject_state = internal->disk_control_callback->set_eject_state; + set_eject_state = self->disk_control_callback->set_eject_state; if (set_eject_state == NULL) { g_set_error_literal (error, - RETRO_CB_ERROR, - RETRO_CB_ERROR_NO_CALLBACK, + RETRO_CORE_ERROR, + RETRO_CORE_ERROR_NO_CALLBACK, "DiskControl has no callback for this operation."); return FALSE; @@ -280,20 +666,17 @@ guint index, GError **error) { - RetroCoreEnvironmentInternal *internal; RetroDiskControlCallbackSetImageIndex set_image_index; gboolean result; - g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (RETRO_IS_CORE (self), FALSE); - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); - - set_image_index = internal->disk_control_callback->set_image_index; + set_image_index = self->disk_control_callback->set_image_index; if (set_image_index == NULL) { g_set_error_literal (error, - RETRO_CB_ERROR, - RETRO_CB_ERROR_NO_CALLBACK, + RETRO_CORE_ERROR, + RETRO_CORE_ERROR_NO_CALLBACK, "DiskControl has no callback for this operation."); return FALSE; @@ -310,20 +693,17 @@ retro_core_get_disk_images_number (RetroCore *self, GError **error) { - RetroCoreEnvironmentInternal *internal; RetroDiskControlCallbackGetNumImages get_num_images; guint result; - g_return_val_if_fail (self != NULL, FALSE); - - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); + g_return_val_if_fail (RETRO_IS_CORE (self), FALSE); - get_num_images = internal->disk_control_callback->get_num_images; + get_num_images = self->disk_control_callback->get_num_images; if (get_num_images == NULL) { g_set_error_literal (error, - RETRO_CB_ERROR, - RETRO_CB_ERROR_NO_CALLBACK, + RETRO_CORE_ERROR, + RETRO_CORE_ERROR_NO_CALLBACK, "DiskControl has no callback for this operation."); return FALSE; @@ -342,20 +722,17 @@ RetroGameInfo *info, GError **error) { - RetroCoreEnvironmentInternal *internal; RetroDiskControlCallbackReplaceImageIndex replace_image_index; gboolean result; - g_return_val_if_fail (self != NULL, FALSE); - - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); + g_return_val_if_fail (RETRO_IS_CORE (self), FALSE); - replace_image_index = internal->disk_control_callback->replace_image_index; + replace_image_index = self->disk_control_callback->replace_image_index; if (replace_image_index == NULL) { g_set_error_literal (error, - RETRO_CB_ERROR, - RETRO_CB_ERROR_NO_CALLBACK, + RETRO_CORE_ERROR, + RETRO_CORE_ERROR_NO_CALLBACK, "DiskControl has no callback for this operation."); return FALSE; @@ -372,20 +749,17 @@ retro_core_add_disk_image_index (RetroCore *self, GError **error) { - RetroCoreEnvironmentInternal *internal; RetroDiskControlCallbackAddImageIndex add_image_index; gboolean result; - g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (RETRO_IS_CORE (self), FALSE); - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); - - add_image_index = internal->disk_control_callback->add_image_index; + add_image_index = self->disk_control_callback->add_image_index; if (add_image_index == NULL) { g_set_error_literal (error, - RETRO_CB_ERROR, - RETRO_CB_ERROR_NO_CALLBACK, + RETRO_CORE_ERROR, + RETRO_CORE_ERROR_NO_CALLBACK, "DiskControl has no callback for this operation."); return FALSE; @@ -402,7 +776,6 @@ retro_core_load_discs (RetroCore *self, GError **error) { - RetroCoreEnvironmentInternal *internal; guint length; gboolean fullpath; GFile *file; @@ -411,9 +784,7 @@ RetroGameInfo *game_info = NULL; GError *tmp_error = NULL; - g_return_if_fail (self != NULL); - - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); + g_return_if_fail (RETRO_IS_CORE (self)); retro_core_set_disk_ejected (self, TRUE, &tmp_error); if (G_UNLIKELY (tmp_error != NULL)) { @@ -422,7 +793,7 @@ return; } - length = g_strv_length (internal->media_uris); + length = g_strv_length (self->media_uris); while (retro_core_get_disk_images_number (self, &tmp_error) < length && (tmp_error != NULL)) { retro_core_add_disk_image_index (self, &tmp_error); @@ -441,7 +812,7 @@ fullpath = retro_core_get_needs_full_path (self); for (index = 0; index < length; index++) { - file = g_file_new_for_uri (internal->media_uris[index]); + file = g_file_new_for_uri (self->media_uris[index]); path = g_file_get_path (file); if (fullpath) { @@ -489,30 +860,27 @@ retro_core_load_game (RetroCore *self, RetroGameInfo *game) { - RetroCoreEnvironmentInternal *internal; RetroUnloadGame unload_game; RetroLoadGame load_game; RetroGetSystemAvInfo get_system_av_info; gboolean game_loaded; RetroSystemAvInfo info = {{ 0 }}; - g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (RETRO_IS_CORE (self), FALSE); g_return_val_if_fail (game != NULL, FALSE); - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); - if (retro_core_get_game_loaded (self)) { retro_core_push_cb_data (self); - unload_game = retro_module_get_unload_game (internal->module); + unload_game = retro_module_get_unload_game (self->module); unload_game (); retro_core_pop_cb_data (); } retro_core_push_cb_data (self); - load_game = retro_module_get_load_game (internal->module); + load_game = retro_module_get_load_game (self->module); game_loaded = load_game (game); retro_core_set_game_loaded (self, game_loaded); - get_system_av_info = retro_module_get_get_system_av_info (internal->module); + get_system_av_info = retro_module_get_get_system_av_info (self->module); get_system_av_info (&info); retro_core_set_system_av_info (self, &info); retro_core_pop_cb_data (); @@ -521,22 +889,19 @@ } static gboolean -retro_core_prepare (RetroCore* self) { - RetroCoreEnvironmentInternal *internal; +retro_core_prepare (RetroCore *self) { RetroLoadGame load_game; RetroGetSystemAvInfo get_system_av_info; gboolean game_loaded; RetroSystemAvInfo info = {{ 0 }}; - g_return_val_if_fail (self != NULL, FALSE); - - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); + g_return_val_if_fail (RETRO_IS_CORE (self), FALSE); retro_core_push_cb_data (self); - load_game = retro_module_get_load_game (internal->module); + load_game = retro_module_get_load_game (self->module); game_loaded = load_game (NULL); retro_core_set_game_loaded (self, game_loaded); - get_system_av_info = retro_module_get_get_system_av_info (internal->module); + get_system_av_info = retro_module_get_get_system_av_info (self->module); get_system_av_info (&info); retro_core_set_system_av_info (self, &info); retro_core_pop_cb_data (); @@ -545,10 +910,9 @@ } static void -retro_core_load_medias (RetroCore* self, +retro_core_load_medias (RetroCore *self, GError** error) { - RetroCoreEnvironmentInternal *internal; guint length; gchar *uri; GFile *file; @@ -557,10 +921,8 @@ RetroGameInfo *game_info = NULL; GError *tmp_error = NULL; - g_return_if_fail (self != NULL); - - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); - length = g_strv_length (internal->media_uris); + g_return_if_fail (RETRO_IS_CORE (self)); + length = g_strv_length (self->media_uris); if (length == 0) { retro_core_prepare (self); @@ -568,7 +930,7 @@ return; } - uri = g_strdup (internal->media_uris[0]); + uri = g_strdup (self->media_uris[0]); file = g_file_new_for_uri (uri); path = g_file_get_path (file); fullpath = retro_core_get_needs_full_path (self); @@ -595,7 +957,7 @@ return; } - if (internal->disk_control_callback != NULL) { + if (self->disk_control_callback != NULL) { retro_core_load_discs (self, &tmp_error); if (G_UNLIKELY (tmp_error != NULL)) { g_propagate_error (error, tmp_error); @@ -613,115 +975,299 @@ g_free (uri); } -// FIXME Make static as soon as possible. +void retro_core_set_environment_interface (RetroCore *self); +void retro_core_set_callbacks (RetroCore *self); + +static gboolean +on_key_event (GtkWidget *widget, + GdkEventKey *event, + gpointer self) +{ + g_return_val_if_fail (RETRO_IS_CORE (self), FALSE); + g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE); + g_return_val_if_fail (event != NULL, FALSE); + + return retro_core_key_event (RETRO_CORE (self), event); +} + +/* Public */ + +/** + * retro_core_get_api_version: + * @self: a #RetroCore + * + * Gets the Libretro API version implement by the core. + * + * Returns: the API version + */ guint -retro_core_get_api_version_real (RetroCore *self) +retro_core_get_api_version (RetroCore *self) { - RetroCoreEnvironmentInternal *internal; guint result; RetroApiVersion api_version; - g_return_val_if_fail (self != NULL, 0U); - - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); + g_return_val_if_fail (RETRO_IS_CORE (self), 0U); retro_core_push_cb_data (self); - api_version = retro_module_get_api_version (internal->module); + api_version = retro_module_get_api_version (self->module); result = api_version (); retro_core_pop_cb_data (); return result; } -void retro_core_set_environment_interface (RetroCore *self); -void retro_core_set_callbacks (RetroCore *self); +/** + * retro_core_get_filename: + * @self: a #RetroCore + * + * Gets the filename of the core. + * + * Returns: (transfer none): the filename of the core + */ +const gchar * +retro_core_get_filename (RetroCore *self) +{ + g_return_val_if_fail (RETRO_IS_CORE (self), NULL); + + return self->filename; +} -// FIXME Make static as soon as possible. +/** + * retro_core_get_system_directory: + * @self: a #RetroCore + * + * Gets the system directory of the core. + * + * The core will look here for additional data, such as firmware ROMs or + * configuration files. + * + * Returns: the system directory of the core + */ +const gchar * +retro_core_get_system_directory (RetroCore *self) +{ + g_return_val_if_fail (RETRO_IS_CORE (self), NULL); + + return self->system_directory; +} + +/** + * retro_core_set_system_directory: + * @self: a #RetroCore + * @system_directory: the system directory + * + * Sets the system directory of the core. + * + * The core will look here for additional data, such as firmware ROMs or + * configuration files. + */ void -retro_core_constructor (RetroCore *self, - const gchar *file_name) +retro_core_set_system_directory (RetroCore *self, + const gchar *system_directory) { - RetroCoreEnvironmentInternal *internal; - GFile *file; - GFile *relative_path_file; - gchar *libretro_path; + g_return_if_fail (RETRO_IS_CORE (self)); - g_return_if_fail (file_name != NULL); + if (g_strcmp0 (system_directory, retro_core_get_system_directory (self)) == 0) + return; - retro_core_set_file_name (self, file_name); + g_free (self->system_directory); + self->system_directory = g_strdup (system_directory); + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SYSTEM_DIRECTORY]); +} - internal = g_new0 (RetroCoreEnvironmentInternal, 1); - self->environment_internal = internal; +const gchar * +retro_core_get_libretro_path (RetroCore *self) +{ + g_return_val_if_fail (RETRO_IS_CORE (self), NULL); - file = g_file_new_for_path (file_name); - relative_path_file = g_file_resolve_relative_path (file, ""); + return self->libretro_path; +} - g_object_unref (file); +// FIXME This should be removed as it is deprecated by Libretro. +const gchar * +retro_core_get_content_directory (RetroCore *self) +{ + g_return_val_if_fail (RETRO_IS_CORE (self), NULL); - libretro_path = g_file_get_path (relative_path_file); + return self->content_directory; +} - g_object_unref (relative_path_file); +// FIXME This should be removed as it is deprecated by Libretro. +void +retro_core_set_content_directory (RetroCore *self, + const gchar *content_directory) +{ + g_return_if_fail (RETRO_IS_CORE (self)); - retro_core_set_libretro_path (self, libretro_path); - internal->module = retro_module_new (libretro_path); + if (g_strcmp0 (content_directory, retro_core_get_content_directory (self)) == 0) + return; - g_free (libretro_path); + g_free (self->content_directory); + self->content_directory = g_strdup (content_directory); + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_CONTENT_DIRECTORY]); +} - retro_core_set_callbacks (self); - self->variables_interface = RETRO_VARIABLES (retro_options_new ()); +/** + * retro_core_get_save_directory: + * @self: a #RetroCore + * + * Gets the save directory of the core. + * + * The core will save some data here. + * + * Returns: the save directory of the core + */ +const gchar * +retro_core_get_save_directory (RetroCore *self) +{ + g_return_val_if_fail (RETRO_IS_CORE (self), NULL); + + return self->save_directory; } -// FIXME Make static as soon as possible. +/** + * retro_core_set_save_directory: + * @self: a #RetroCore + * @save_directory: the save directory + * + * Sets the save directory of the core. + * + * The core will save some data here. + */ void -retro_core_destructor (RetroCore *self) +retro_core_set_save_directory (RetroCore *self, + const gchar *save_directory) { - RetroCoreEnvironmentInternal *internal; - RetroUnloadGame unload_game; - RetroDeinit deinit; + g_return_if_fail (RETRO_IS_CORE (self)); - g_return_if_fail (self != NULL); + if (g_strcmp0 (save_directory, retro_core_get_save_directory (self)) == 0) + return; - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); + g_free (self->save_directory); + self->save_directory = g_strdup (save_directory); + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SAVE_DIRECTORY]); +} - retro_core_push_cb_data (self); - if (retro_core_get_game_loaded (self)) { - unload_game = retro_module_get_unload_game (internal->module); - unload_game (); - } - deinit = retro_module_get_deinit (internal->module); - deinit (); - retro_core_pop_cb_data (); +/** + * retro_core_get_is_initiated: + * @self: a #RetroCore + * + * Gets whether the core has been initiated. + * + * Returns: whether the core has been initiated + */ +gboolean +retro_core_get_is_initiated (RetroCore *self) +{ + g_return_val_if_fail (RETRO_IS_CORE (self), FALSE); + + return self->is_initiated; +} + +/** + * retro_core_get_game_loaded: + * @self: a #RetroCore + * + * Gets whether a game has been loaded. + * + * Returns: whether a game has been loaded + */ +gboolean +retro_core_get_game_loaded (RetroCore *self) +{ + g_return_val_if_fail (RETRO_IS_CORE (self), FALSE); - if (internal->media_uris != NULL) - g_strfreev (internal->media_uris); + return self->game_loaded; +} - g_object_unref (internal->module); +/** + * retro_core_get_support_no_game: + * @self: a #RetroCore + * + * Gets whether the core supports running with no game. + * + * Returns: whether the core supports running with no game + */ +gboolean +retro_core_get_support_no_game (RetroCore *self) +{ + g_return_val_if_fail (RETRO_IS_CORE (self), FALSE); - g_free (self->environment_internal); + return self->support_no_game; } -/* Public */ +/** + * retro_core_set_support_no_game: + * @self: a #RetroCore + * @support_no_game: the save directory + * + * Sets whether the core supports running with no game. + */ +void +retro_core_set_support_no_game (RetroCore *self, + gboolean support_no_game) +{ + g_return_if_fail (RETRO_IS_CORE (self)); + + if (retro_core_get_support_no_game (self) == support_no_game) + return; + self->support_no_game = support_no_game; + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SUPPORT_NO_GAME]); +} + +/** + * retro_core_get_frames_per_second: + * @self: a #RetroCore + * + * Gets the FPS rate for the core's video output. + * + * Returns: the FPS rate for the core's video output + */ +gdouble +retro_core_get_frames_per_second (RetroCore *self) +{ + g_return_val_if_fail (RETRO_IS_CORE (self), 0.0); + + return self->frames_per_second; +} + +/** + * retro_core_boot: + * @self: a #RetroCore + * @error: return location for a #GError, or %NULL + * + * This initializes @self, loads its available options and loads the medias. You + * need to boot @self before using some of its methods. + */ void -retro_core_init (RetroCore *self, +retro_core_boot (RetroCore *self, GError **error) { - RetroCoreEnvironmentInternal *internal; RetroInit init; + RetroControllerIterator *controller_iterator; + guint *port; + RetroController *controller; + RetroControllerType controller_type; GError *tmp_error = NULL; - g_return_if_fail (self != NULL); - - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); + g_return_if_fail (RETRO_IS_CORE (self)); retro_core_set_environment_interface (self); retro_core_push_cb_data (self); - init = retro_module_get_init (internal->module); + init = retro_module_get_init (self->module); init (); retro_core_pop_cb_data (); - retro_core_init_input (self); + controller_iterator = retro_core_iterate_controllers (self); + while (retro_controller_iterator_next (controller_iterator, + &port, + &controller)) { + controller_type = retro_controller_get_controller_type (controller); + retro_core_set_controller_port_device (self, *port, controller_type); + } + g_object_unref (controller_iterator); retro_core_set_is_initiated (self, TRUE); @@ -733,40 +1279,54 @@ } } +/** + * retro_core_set_medias: + * @self: a #RetroCore + * @uris: (array zero-terminated=1) (element-type utf8) + * (transfer none): the URIs + * + * Sets the medias to load into the core. + * + * You can use this before booting the core. + */ void -retro_core_set_medias (RetroCore *self, - gchar **uris) +retro_core_set_medias (RetroCore *self, + const gchar * const *uris) { - RetroCoreEnvironmentInternal *internal; - g_return_if_fail (self != NULL); + g_return_if_fail (RETRO_IS_CORE (self)); g_return_if_fail (!retro_core_get_is_initiated (self)); - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); - - if (internal->media_uris != NULL) - g_strfreev (internal->media_uris); + if (self->media_uris != NULL) + g_strfreev (self->media_uris); - internal->media_uris = g_strdupv (uris); + self->media_uris = g_strdupv ((gchar **) uris); } +/** + * retro_core_set_current_media: + * @self: a #RetroCore + * @media_index: the media index + * @error: return location for a #GError, or %NULL + * + * Sets the current media index. + * + * You can use this after booting the core. + */ void retro_core_set_current_media (RetroCore *self, guint media_index, GError **error) { - RetroCoreEnvironmentInternal *internal; guint length; GError *tmp_error = NULL; - g_return_if_fail (self != NULL); - - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); - length = g_strv_length (internal->media_uris); + g_return_if_fail (RETRO_IS_CORE (self)); + length = g_strv_length (self->media_uris); g_return_if_fail (media_index < length); - if (internal->disk_control_callback == NULL) + if (self->disk_control_callback == NULL) return; retro_core_set_disk_ejected (self, TRUE, &tmp_error); @@ -791,93 +1351,106 @@ } } +// FIXME Merge this into retro_core_set_controller(). void -retro_core_set_controller_port_device (RetroCore *self, - guint port, - RetroDeviceType device) +retro_core_set_controller_port_device (RetroCore *self, + guint port, + RetroControllerType controller_type) { - RetroCoreEnvironmentInternal *internal; RetroSetControllerPortDevice set_controller_port_device; - g_return_if_fail (self != NULL); - - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); + g_return_if_fail (RETRO_IS_CORE (self)); retro_core_push_cb_data (self); - set_controller_port_device = retro_module_get_set_controller_port_device (internal->module); - set_controller_port_device (port, device); + set_controller_port_device = retro_module_get_set_controller_port_device (self->module); + set_controller_port_device (port, controller_type); retro_core_pop_cb_data (); } +/** + * retro_core_reset: + * @self: a #RetroCore + * + * Resets @self. + */ void -retro_core_reset (RetroCore* self) +retro_core_reset (RetroCore *self) { - RetroCoreEnvironmentInternal *internal; RetroReset reset; - g_return_if_fail (self != NULL); - - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); + g_return_if_fail (RETRO_IS_CORE (self)); retro_core_push_cb_data (self); - reset = retro_module_get_reset (internal->module); + reset = retro_module_get_reset (self->module); reset (); retro_core_pop_cb_data (); } +/** + * retro_core_run: + * @self: a #RetroCore + * + * Iterate @self for a frame. + */ void -retro_core_run (RetroCore* self) +retro_core_run (RetroCore *self) { - RetroCoreEnvironmentInternal *internal; RetroRun run; - g_return_if_fail (self != NULL); - - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); + g_return_if_fail (RETRO_IS_CORE (self)); retro_core_push_cb_data (self); - run = retro_module_get_run (internal->module); + run = retro_module_get_run (self->module); run (); retro_core_pop_cb_data (); } +/** + * retro_core_get_can_access_state: + * @self: a #RetroCore + * + * Gets whether the state of @self can be accessed. + * + * Returns: whether the state of @self can be accessed + */ gboolean -retro_core_supports_serialization (RetroCore *self) +retro_core_get_can_access_state (RetroCore *self) { - RetroCoreEnvironmentInternal *internal; RetroSerializeSize serialize_size = NULL; gsize size; - g_return_val_if_fail (self != NULL, FALSE); - - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); + g_return_val_if_fail (RETRO_IS_CORE (self), FALSE); retro_core_push_cb_data (self); - serialize_size = retro_module_get_serialize_size (internal->module); + serialize_size = retro_module_get_serialize_size (self->module); size = serialize_size (); retro_core_pop_cb_data (); return size > 0; } -guint8 * -retro_core_serialize_state (RetroCore *self, - gsize *length, - GError **error) +/** + * retro_core_get_state: + * @self: a #RetroCore + * @error: return location for a #GError, or %NULL + * + * Gets the state of @self. + * + * Returns: (transfer full): a #GBytes, or %NULL + */ +GBytes * +retro_core_get_state (RetroCore *self, + GError **error) { - RetroCoreEnvironmentInternal *internal; RetroSerializeSize serialize_size = NULL; RetroSerialize serialize = NULL; guint8 *data; gsize size; gboolean success; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (length != NULL, NULL); + g_return_val_if_fail (RETRO_IS_CORE (self), NULL); - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); - - serialize_size = retro_module_get_serialize_size (internal->module); + serialize_size = retro_module_get_serialize_size (self->module); retro_core_push_cb_data (self); size = serialize_size (); @@ -892,7 +1465,7 @@ return NULL; } - serialize = retro_module_get_serialize (internal->module); + serialize = retro_module_get_serialize (self->module); data = g_new0 (guint8, size); retro_core_push_cb_data (self); @@ -909,35 +1482,41 @@ return NULL; } - *length = size; - - return data; + return g_bytes_new_take (data, size); } +/** + * retro_core_set_state: + * @self: a #RetroCore + * @bytes: a #GBytes + * @error: return location for a #GError, or %NULL + * + * Sets the state of the @self. + */ void -retro_core_deserialize_state (RetroCore *self, - guint8 *data, - gsize length, - GError **error) +retro_core_set_state (RetroCore *self, + GBytes *bytes, + GError **error) { - RetroCoreEnvironmentInternal *internal; RetroSerializeSize serialize_size = NULL; RetroUnserialize unserialize = NULL; gsize size; + gconstpointer bytes_data; + gsize bytes_size; gboolean success; - g_return_if_fail (self != NULL); - g_return_if_fail (data != NULL); + g_return_if_fail (RETRO_IS_CORE (self)); + g_return_if_fail (bytes != NULL); - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); - - serialize_size = retro_module_get_serialize_size (internal->module); + serialize_size = retro_module_get_serialize_size (self->module); retro_core_push_cb_data (self); size = serialize_size (); retro_core_pop_cb_data (); - if (size <= 0) { + bytes_data = g_bytes_get_data (bytes, &bytes_size); + + if (size == 0) { g_set_error (error, RETRO_CORE_ERROR, RETRO_CORE_ERROR_SERIALIZATION_NOT_SUPPORTED, @@ -946,19 +1525,22 @@ return; } - if (length > size) { + if (bytes_size > size) { g_set_error (error, RETRO_CORE_ERROR, RETRO_CORE_ERROR_COULDNT_DESERIALIZE, - "Couldn't deserialize the internal state: expected at most %"G_GSIZE_FORMAT" bytes, got %"G_GSIZE_FORMAT".", size, length); + "Couldn't deserialize the internal state: expected at most %" + G_GSIZE_FORMAT" bytes, got %"G_GSIZE_FORMAT".", + size, + bytes_size); return; } - unserialize = retro_module_get_unserialize (internal->module); + unserialize = retro_module_get_unserialize (self->module); retro_core_push_cb_data (self); - success = unserialize (data, length); + success = unserialize ((guint8 *) bytes_data, bytes_size); retro_core_pop_cb_data (); if (!success) { @@ -969,93 +1551,367 @@ } } +/** + * retro_core_get_memory_size: + * @self: a #RetroCore + * @memory_type: the type of memory + * + * Gets the size of a memory region of @self. + * + * Returns: the size of a memory region + */ gsize retro_core_get_memory_size (RetroCore *self, - RetroMemoryType id) + RetroMemoryType memory_type) { - RetroCoreEnvironmentInternal *internal; gsize size; RetroGetMemorySize get_memory_size; - g_return_val_if_fail (self != NULL, 0UL); - - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); + g_return_val_if_fail (RETRO_IS_CORE (self), 0UL); retro_core_push_cb_data (self); - get_memory_size = retro_module_get_get_memory_size (internal->module); - size = get_memory_size (id); + get_memory_size = retro_module_get_get_memory_size (self->module); + size = get_memory_size (memory_type); retro_core_pop_cb_data (); return size; } -guint8 * +/** + * retro_core_get_memory: + * @self: a #RetroCore + * @memory_type: the type of memory + * + * Gets a memory region of @self. + * + * Returns: (transfer full): a #GBytes, or %NULL + */ +GBytes * retro_core_get_memory (RetroCore *self, - RetroMemoryType id, - gint *length) + RetroMemoryType memory_type) { - RetroCoreEnvironmentInternal *internal; RetroGetMemoryData get_mem_data; RetroGetMemorySize get_mem_size; guint8 *data; gsize size; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (length != NULL, NULL); + g_return_val_if_fail (RETRO_IS_CORE (self), NULL); - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); - - get_mem_data = retro_module_get_get_memory_data (internal->module); - get_mem_size = retro_module_get_get_memory_size (internal->module); + get_mem_data = retro_module_get_get_memory_data (self->module); + get_mem_size = retro_module_get_get_memory_size (self->module); retro_core_push_cb_data (self); - data = get_mem_data (id); - size = get_mem_size (id); + data = get_mem_data (memory_type); + size = get_mem_size (memory_type); retro_core_pop_cb_data (); - data = g_memdup (data, size); - *length = (gint) (data != NULL ? size : 0); - - return data; + return g_bytes_new (data, size); } +/** + * retro_core_set_memory: + * @self: a #RetroCore + * @memory_type: the type of memory + * @bytes: a #GBytes + * + * Sets a memory region of @self. + */ void retro_core_set_memory (RetroCore *self, - RetroMemoryType id, - guint8 *data, - gint length) + RetroMemoryType memory_type, + GBytes *bytes) { - RetroCoreEnvironmentInternal *internal; RetroGetMemoryData get_mem_region; RetroGetMemorySize get_mem_region_size; guint8 *memory_region; gsize memory_region_size; + gconstpointer data; + gsize size; - g_return_if_fail (self != NULL); - g_return_if_fail (data != NULL); - g_return_if_fail (length > 0); - - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); + g_return_if_fail (RETRO_IS_CORE (self)); + g_return_if_fail (bytes != NULL); - get_mem_region = retro_module_get_get_memory_data (internal->module); - get_mem_region_size = retro_module_get_get_memory_size (internal->module); + get_mem_region = retro_module_get_get_memory_data (self->module); + get_mem_region_size = retro_module_get_get_memory_size (self->module); retro_core_push_cb_data (self); - memory_region = get_mem_region (id); - memory_region_size = get_mem_region_size (id); + memory_region = get_mem_region (memory_type); + memory_region_size = get_mem_region_size (memory_type); retro_core_pop_cb_data (); - g_return_if_fail (memory_region != NULL); - g_return_if_fail (memory_region_size >= length); + data = g_bytes_get_data (bytes, &size); + + if (memory_region == NULL) { + g_debug ("%s doesn't have memory region %d.", + retro_core_get_name (self), + memory_type); + + return; + } + + if (memory_region_size == 0) { + g_debug ("%s has an unexpected 0-sized non-null memory region %d. Aborting " + "setting the memory region.", + retro_core_get_name (self), + memory_type); + + return; + } + + if (memory_region_size < size) { + g_debug ("%s expects %"G_GSIZE_FORMAT" bytes for memory region %d: %" + G_GSIZE_FORMAT" bytes were passed. Aborting setting the memory " + "region.", + retro_core_get_name (self), + memory_region_size, + memory_type, + size); - if (memory_region_size != length) - g_debug ("%s expects %"G_GSIZE_FORMAT" bytes for memory region %d: %d bytes" - " were passed. The excess will be filled with zeros.", + return; + } + + if (memory_region_size != size) + g_debug ("%s expects %"G_GSIZE_FORMAT" bytes for memory region %d: %" + G_GSIZE_FORMAT" bytes were passed. The excess will be filled with" + "zeros.", retro_core_get_name (self), memory_region_size, - id, - length); + memory_type, + size); + + memcpy (memory_region, data, size); + memset (memory_region + size, 0, memory_region_size - size); +} + +/** + * retro_core_poll_controllers: + * @self: a #RetroCore + * + * Polls the pending input events for the controllers plugged into @self. + */ +void +retro_core_poll_controllers (RetroCore *self) +{ + RetroControllerIterator *iterator; + guint *port; + RetroController *controller; + + g_return_if_fail (RETRO_IS_CORE (self)); + + iterator = retro_core_iterate_controllers (self); + while (retro_controller_iterator_next (iterator, &port, &controller)) + if (controller != NULL) + retro_controller_poll (controller); + g_object_unref (iterator); +} + +/** + * retro_core_get_controller_input_state: + * @self: a #RetroCore + * @port: the port number + * @input: a #RetroInput + * + * Gets the state of an input of the controller plugged into the given port of + * @self. + * + * Returns: the input's state + */ +gint16 +retro_core_get_controller_input_state (RetroCore *self, + guint port, + RetroInput *input) +{ + RetroController *controller; + RetroControllerType controller_type; + + g_return_val_if_fail (RETRO_IS_CORE (self), 0); + + controller_type = retro_input_get_controller_type (input) & + RETRO_CONTROLLER_TYPE_TYPE_MASK; + + controller = g_hash_table_lookup (self->controllers, &port); + if (controller != NULL && + retro_controller_has_capability (controller, controller_type)) + return retro_controller_get_input_state (controller, input); + + controller = self->default_controllers[controller_type]; + if (controller != NULL && + retro_controller_has_capability (controller, controller_type)) + return retro_controller_get_input_state (controller, input); + + return 0; +} + +// FIXME documentation +void +retro_core_set_controller_descriptors (RetroCore *self, + RetroInputDescriptor *input_descriptors, + gsize length) +{ + g_return_if_fail (RETRO_IS_CORE (self)); + + // TODO +} + +// FIXME documentation +guint64 +retro_core_get_controller_capabilities (RetroCore *self) +{ + g_return_val_if_fail (RETRO_IS_CORE (self), 0); + + // TODO + + return 0; +} + +/** + * retro_core_set_default_controller: + * @self: a #RetroCore + * @controller_type: a #RetroControllerType + * @controller: (nullable): a #RetroController + * + * Uses @controller as the default controller for the given type. When a port + * has no controller plugged plugged into it, the core will use the default + * controllers instead. + */ +void +retro_core_set_default_controller (RetroCore *self, + RetroControllerType controller_type, + RetroController *controller) +{ + g_return_if_fail (RETRO_IS_CORE (self)); + g_return_if_fail (controller_type < RETRO_CONTROLLER_TYPE_COUNT); + + g_set_object (&self->default_controllers[controller_type], controller); +} + +/** + * retro_core_set_controller: + * @self: a #RetroCore + * @port: the port number + * @controller: (nullable): a #RetroController + * + * Plugs @controller into the specified port number of @self. + */ +void +retro_core_set_controller (RetroCore *self, + guint port, + RetroController *controller) +{ + guint *port_copy; + RetroControllerType controller_type; + + g_return_if_fail (RETRO_IS_CORE (self)); + + if (RETRO_IS_CONTROLLER (controller)) { + port_copy = g_new (guint, 1); + *port_copy = port; + g_hash_table_insert (self->controllers, + port_copy, + g_object_ref (controller)); + controller_type = retro_controller_get_controller_type (controller); + } + else { + g_hash_table_remove (self->controllers, &port); + controller_type = RETRO_CONTROLLER_TYPE_NONE; + } + + if (!retro_core_get_is_initiated (self)) + return; + + retro_core_set_controller_port_device (self, port, controller_type); +} + +/** + * retro_core_set_keyboard: + * @self: a #RetroCore + * @widget: (nullable): a #GtkWidget, or %NULL + * + * Sets the widget whose key events will be forwarded to @self. + */ +void +retro_core_set_keyboard (RetroCore *self, + GtkWidget *widget) +{ + g_return_if_fail (RETRO_IS_CORE (self)); + + if (self->keyboard_widget != NULL) { + g_signal_handler_disconnect (G_OBJECT (self->keyboard_widget), self->key_press_event_id); + g_signal_handler_disconnect (G_OBJECT (self->keyboard_widget), self->key_release_event_id); + g_clear_object (&self->keyboard_widget); + } + + if (widget != NULL) { + self->key_press_event_id = + g_signal_connect_object (widget, + "key-press-event", + G_CALLBACK (on_key_event), + self, + 0); + self->key_release_event_id = + g_signal_connect_object (widget, + "key-release-event", + G_CALLBACK (on_key_event), + self, + 0); + self->keyboard_widget = g_object_ref (widget); + } +} + +/** + * retro_core_iterate_controllers: + * @self: a #RetroCore + * + * Creates a new #RetroControllerIterator which can be used to iterate through + * the controllers plugged into @self. + * + * Returns: (transfer full): a new #RetroControllerIterator + */ +RetroControllerIterator * +retro_core_iterate_controllers (RetroCore *self) +{ + + g_return_val_if_fail (RETRO_IS_CORE (self), NULL); + + return retro_controller_iterator_new (self->controllers); +} + +/** + * retro_core_new: + * @filename: the filename of a Libretro core + * + * Creates a new #RetroCore. + * + * Returns: (transfer full): a new #RetroCore + */ +RetroCore * +retro_core_new (const gchar *filename) +{ + RetroCore *self; + GFile *file; + GFile *relative_path_file; + + g_return_val_if_fail (filename != NULL, NULL); + + self = g_object_new (RETRO_TYPE_CORE, NULL); + + retro_core_set_filename (self, filename); + + file = g_file_new_for_path (filename); + relative_path_file = g_file_resolve_relative_path (file, ""); + + g_object_unref (file); + + self->libretro_path = g_file_get_path (relative_path_file); + + g_object_unref (relative_path_file); + + self->module = retro_module_new (self->libretro_path); + + retro_core_set_callbacks (self); + self->controllers = g_hash_table_new_full (g_int_hash, g_int_equal, + g_free, g_object_unref); + self->options = retro_options_new (); - memcpy (memory_region, data, length); - memset (memory_region + length, 0, memory_region_size - length); + return self; } diff -Nru retro-gtk-0.12.1/retro-gtk/retro-core-descriptor.c retro-gtk-0.14.0/retro-gtk/retro-core-descriptor.c --- retro-gtk-0.12.1/retro-gtk/retro-core-descriptor.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-core-descriptor.c 2018-03-10 13:02:01.000000000 +0000 @@ -1,1371 +1,1006 @@ -/* retro-core-descriptor.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from retro-core-descriptor.vala, do not modify */ +// This file is part of retro-gtk. License: GPL-3.0+. -/* This file is part of retro-gtk. License: GPL-3.0+.*/ +#include "retro-core-descriptor.h" -#include -#include -#include -#include -#include - - -#define RETRO_TYPE_CORE_DESCRIPTOR (retro_core_descriptor_get_type ()) -#define RETRO_CORE_DESCRIPTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CORE_DESCRIPTOR, RetroCoreDescriptor)) -#define RETRO_CORE_DESCRIPTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CORE_DESCRIPTOR, RetroCoreDescriptorClass)) -#define RETRO_IS_CORE_DESCRIPTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CORE_DESCRIPTOR)) -#define RETRO_IS_CORE_DESCRIPTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CORE_DESCRIPTOR)) -#define RETRO_CORE_DESCRIPTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CORE_DESCRIPTOR, RetroCoreDescriptorClass)) - -typedef struct _RetroCoreDescriptor RetroCoreDescriptor; -typedef struct _RetroCoreDescriptorClass RetroCoreDescriptorClass; -typedef struct _RetroCoreDescriptorPrivate RetroCoreDescriptorPrivate; -enum { - RETRO_CORE_DESCRIPTOR_DUMMY_PROPERTY, - RETRO_CORE_DESCRIPTOR_LAST_PROPERTY +struct _RetroCoreDescriptor +{ + GObject parent_instance; + gchar *filename; + GKeyFile *key_file; }; -static GParamSpec* retro_core_descriptor_properties[RETRO_CORE_DESCRIPTOR_LAST_PROPERTY]; -#define _g_free0(var) (var = (g_free (var), NULL)) -#define _g_key_file_unref0(var) ((var == NULL) ? NULL : (var = (g_key_file_unref (var), NULL))) -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) - -#define RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM (retro_core_descriptor_platform_get_type ()) -#define RETRO_CORE_DESCRIPTOR_PLATFORM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM, RetroCoreDescriptorPlatform)) -#define RETRO_CORE_DESCRIPTOR_PLATFORM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM, RetroCoreDescriptorPlatformClass)) -#define RETRO_CORE_DESCRIPTOR_IS_PLATFORM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM)) -#define RETRO_CORE_DESCRIPTOR_IS_PLATFORM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM)) -#define RETRO_CORE_DESCRIPTOR_PLATFORM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM, RetroCoreDescriptorPlatformClass)) - -typedef struct _RetroCoreDescriptorPlatform RetroCoreDescriptorPlatform; -typedef struct _RetroCoreDescriptorPlatformClass RetroCoreDescriptorPlatformClass; -typedef struct _RetroCoreDescriptorPlatformPrivate RetroCoreDescriptorPlatformPrivate; -enum { - RETRO_CORE_DESCRIPTOR_PLATFORM_DUMMY_PROPERTY, - RETRO_CORE_DESCRIPTOR_PLATFORM_LAST_PROPERTY -}; -static GParamSpec* retro_core_descriptor_platform_properties[RETRO_CORE_DESCRIPTOR_PLATFORM_LAST_PROPERTY]; -struct _RetroCoreDescriptor { - GObject parent_instance; - RetroCoreDescriptorPrivate * priv; -}; +G_DEFINE_TYPE (RetroCoreDescriptor, retro_core_descriptor, G_TYPE_OBJECT) -struct _RetroCoreDescriptorClass { - GObjectClass parent_class; -}; - -struct _RetroCoreDescriptorPrivate { - gchar* filename; - GKeyFile* key_file; -}; - -typedef enum { - RETRO_CORE_DESCRIPTOR_ERROR_REQUIRED_GROUP_NOT_FOUND, - RETRO_CORE_DESCRIPTOR_ERROR_REQUIRED_KEY_NOT_FOUND, - RETRO_CORE_DESCRIPTOR_ERROR_FIRMWARE_NOT_FOUND -} RetroCoreDescriptorError; -#define RETRO_CORE_DESCRIPTOR_ERROR retro_core_descriptor_error_quark () -struct _RetroCoreDescriptorPlatform { - GObject parent_instance; - RetroCoreDescriptorPlatformPrivate * priv; -}; - -struct _RetroCoreDescriptorPlatformClass { - GObjectClass parent_class; -}; +#define RETRO_CORE_DESCRIPTOR_ERROR (retro_core_descriptor_error_quark ()) -struct _RetroCoreDescriptorPlatformPrivate { - GKeyFile* key_file; - gchar* group; +enum { + RETRO_CORE_DESCRIPTOR_ERROR_REQUIRED_GROUP_NOT_FOUND, + RETRO_CORE_DESCRIPTOR_ERROR_REQUIRED_KEY_NOT_FOUND, + RETRO_CORE_DESCRIPTOR_ERROR_FIRMWARE_NOT_FOUND }; +G_DEFINE_QUARK (retro-core-descriptor-error, retro_core_descriptor_error) -static gpointer retro_core_descriptor_parent_class = NULL; -static gpointer retro_core_descriptor_platform_parent_class = NULL; - -GType retro_core_descriptor_get_type (void) G_GNUC_CONST; -#define RETRO_CORE_DESCRIPTOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), RETRO_TYPE_CORE_DESCRIPTOR, RetroCoreDescriptorPrivate)) #define RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP "Libretro" #define RETRO_CORE_DESCRIPTOR_PLATFORM_GROUP_PREFIX "Platform:" #define RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX "Firmware:" + #define RETRO_CORE_DESCRIPTOR_TYPE_KEY "Type" #define RETRO_CORE_DESCRIPTOR_NAME_KEY "Name" #define RETRO_CORE_DESCRIPTOR_ICON_KEY "Icon" #define RETRO_CORE_DESCRIPTOR_MODULE_KEY "Module" #define RETRO_CORE_DESCRIPTOR_LIBRETRO_VERSION_KEY "LibretroVersion" + #define RETRO_CORE_DESCRIPTOR_PLATFORM_MIME_TYPE_KEY "MimeType" #define RETRO_CORE_DESCRIPTOR_PLATFORM_FIRMWARES_KEY "Firmwares" + #define RETRO_CORE_DESCRIPTOR_FIRMWARE_PATH_KEY "Path" #define RETRO_CORE_DESCRIPTOR_FIRMWARE_MD5_KEY "MD5" #define RETRO_CORE_DESCRIPTOR_FIRMWARE_SHA512_KEY "SHA-512" #define RETRO_CORE_DESCRIPTOR_FIRMWARE_MANDATORY_KEY "Mandatory" + #define RETRO_CORE_DESCRIPTOR_TYPE_GAME "Game" #define RETRO_CORE_DESCRIPTOR_TYPE_EMULATOR "Emulator" -RetroCoreDescriptor* retro_core_descriptor_new (const gchar* filename, GError** error); -RetroCoreDescriptor* retro_core_descriptor_construct (GType object_type, const gchar* filename, GError** error); -GQuark retro_core_descriptor_error_quark (void); -static void retro_core_descriptor_check_libretro_group (RetroCoreDescriptor* self, GError** error); -static void retro_core_descriptor_check_platform_group (RetroCoreDescriptor* self, const gchar* group, GError** error); -static void retro_core_descriptor_check_firmware_group (RetroCoreDescriptor* self, const gchar* group, GError** error); -gboolean retro_core_descriptor_has_icon (RetroCoreDescriptor* self, GError** error); -gchar* retro_core_descriptor_get_uri (RetroCoreDescriptor* self); -gchar* retro_core_descriptor_get_id (RetroCoreDescriptor* self); -gboolean retro_core_descriptor_get_is_game (RetroCoreDescriptor* self, GError** error); -gboolean retro_core_descriptor_get_is_emulator (RetroCoreDescriptor* self, GError** error); -gchar* retro_core_descriptor_get_name (RetroCoreDescriptor* self, GError** error); -GIcon* retro_core_descriptor_get_icon (RetroCoreDescriptor* self, GError** error); -gchar* retro_core_descriptor_get_module (RetroCoreDescriptor* self, GError** error); -GFile* retro_core_descriptor_get_module_file (RetroCoreDescriptor* self, GError** error); -gboolean retro_core_descriptor_has_platform (RetroCoreDescriptor* self, const gchar* platform); -gboolean retro_core_descriptor_has_firmwares (RetroCoreDescriptor* self, const gchar* platform, GError** error); -gboolean retro_core_descriptor_has_firmware_md5 (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gboolean retro_core_descriptor_has_firmware_sha512 (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gchar** retro_core_descriptor_get_mime_type (RetroCoreDescriptor* self, const gchar* platform, int* result_length1, GError** error); -gchar** retro_core_descriptor_get_firmwares (RetroCoreDescriptor* self, const gchar* platform, int* result_length1, GError** error); -gchar* retro_core_descriptor_get_firmware_path (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gchar* retro_core_descriptor_get_firmware_md5 (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gchar* retro_core_descriptor_get_firmware_sha512 (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gboolean retro_core_descriptor_get_is_firmware_mandatory (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gboolean retro_core_descriptor_get_platform_supports_mime_types (RetroCoreDescriptor* self, const gchar* platform, gchar** mime_types, int mime_types_length1, GError** error); -static gboolean _vala_string_array_contains (gchar* * stack, int stack_length, gchar* needle); -static void retro_core_descriptor_check_has_required_key (RetroCoreDescriptor* self, const gchar* group, const gchar* key, GError** error); -GType retro_core_descriptor_platform_get_type (void) G_GNUC_CONST; -#define RETRO_CORE_DESCRIPTOR_PLATFORM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM, RetroCoreDescriptorPlatformPrivate)) -static RetroCoreDescriptorPlatform* retro_core_descriptor_platform_new (GKeyFile* key_file, const gchar* platform); -static RetroCoreDescriptorPlatform* retro_core_descriptor_platform_construct (GType object_type, GKeyFile* key_file, const gchar* platform); -static void retro_core_descriptor_platform_finalize (GObject * obj); -static void retro_core_descriptor_finalize (GObject * obj); -static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); -static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); - - -RetroCoreDescriptor* retro_core_descriptor_construct (GType object_type, const gchar* filename, GError** error) { - RetroCoreDescriptor * self = NULL; - const gchar* _tmp0_; - gchar* _tmp1_; - GKeyFile* _tmp2_; - GKeyFile* _tmp3_; - const gchar* _tmp4_; - GKeyFile* _tmp5_; - gsize _tmp6_; - gchar** _tmp7_; - GError * _inner_error_ = NULL; - g_return_val_if_fail (filename != NULL, NULL); - self = (RetroCoreDescriptor*) g_object_new (object_type, NULL); - _tmp0_ = filename; - _tmp1_ = g_strdup (_tmp0_); - _g_free0 (self->priv->filename); - self->priv->filename = _tmp1_; - _tmp2_ = g_key_file_new (); - _g_key_file_unref0 (self->priv->key_file); - self->priv->key_file = _tmp2_; - _tmp3_ = self->priv->key_file; - _tmp4_ = filename; - g_key_file_load_from_file (_tmp3_, _tmp4_, G_KEY_FILE_NONE, &_inner_error_); - if (G_UNLIKELY (_inner_error_ != NULL)) { - g_propagate_error (error, _inner_error_); - _g_object_unref0 (self); - return NULL; - } - retro_core_descriptor_check_libretro_group (self, &_inner_error_); - if (G_UNLIKELY (_inner_error_ != NULL)) { - g_propagate_error (error, _inner_error_); - _g_object_unref0 (self); - return NULL; - } - _tmp5_ = self->priv->key_file; - _tmp7_ = g_key_file_get_groups (_tmp5_, &_tmp6_); - { - gchar** group_collection = NULL; - gint group_collection_length1 = 0; - gint _group_collection_size_ = 0; - gint group_it = 0; - group_collection = _tmp7_; - group_collection_length1 = _tmp6_; - for (group_it = 0; group_it < _tmp6_; group_it = group_it + 1) { - gchar* _tmp8_; - gchar* group = NULL; - _tmp8_ = g_strdup (group_collection[group_it]); - group = _tmp8_; - { - const gchar* _tmp9_; - gboolean _tmp10_; - _tmp9_ = group; - _tmp10_ = g_str_has_prefix (_tmp9_, RETRO_CORE_DESCRIPTOR_PLATFORM_GROUP_PREFIX); - if (_tmp10_) { - const gchar* _tmp11_; - _tmp11_ = group; - retro_core_descriptor_check_platform_group (self, _tmp11_, &_inner_error_); - if (G_UNLIKELY (_inner_error_ != NULL)) { - g_propagate_error (error, _inner_error_); - _g_free0 (group); - group_collection = (_vala_array_free (group_collection, group_collection_length1, (GDestroyNotify) g_free), NULL); - _g_object_unref0 (self); - return NULL; - } - } else { - const gchar* _tmp12_; - gboolean _tmp13_; - _tmp12_ = group; - _tmp13_ = g_str_has_prefix (_tmp12_, RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX); - if (_tmp13_) { - const gchar* _tmp14_; - _tmp14_ = group; - retro_core_descriptor_check_firmware_group (self, _tmp14_, &_inner_error_); - if (G_UNLIKELY (_inner_error_ != NULL)) { - g_propagate_error (error, _inner_error_); - _g_free0 (group); - group_collection = (_vala_array_free (group_collection, group_collection_length1, (GDestroyNotify) g_free), NULL); - _g_object_unref0 (self); - return NULL; - } - } - } - _g_free0 (group); - } - } - group_collection = (_vala_array_free (group_collection, group_collection_length1, (GDestroyNotify) g_free), NULL); - } - return self; -} - - -RetroCoreDescriptor* retro_core_descriptor_new (const gchar* filename, GError** error) { - return retro_core_descriptor_construct (RETRO_TYPE_CORE_DESCRIPTOR, filename, error); -} - - -gboolean retro_core_descriptor_has_icon (RetroCoreDescriptor* self, GError** error) { - gboolean result = FALSE; - gboolean _tmp0_ = FALSE; - GKeyFile* _tmp1_; - gboolean _tmp2_; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, FALSE); - _tmp1_ = self->priv->key_file; - _tmp2_ = g_key_file_has_key (_tmp1_, RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, RETRO_CORE_DESCRIPTOR_ICON_KEY, &_inner_error_); - _tmp0_ = _tmp2_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if (_inner_error_->domain == G_KEY_FILE_ERROR) { - gboolean _tmp3_ = FALSE; - g_propagate_error (error, _inner_error_); - return _tmp3_; - } else { - gboolean _tmp4_ = FALSE; - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return _tmp4_; - } - } - result = _tmp0_; - return result; -} - - -gchar* retro_core_descriptor_get_uri (RetroCoreDescriptor* self) { - gchar* result = NULL; - GFile* file = NULL; - const gchar* _tmp0_; - GFile* _tmp1_; - gchar* _tmp2_; - g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = self->priv->filename; - _tmp1_ = g_file_new_for_path (_tmp0_); - file = _tmp1_; - _tmp2_ = g_file_get_uri (file); - result = _tmp2_; - _g_object_unref0 (file); - return result; -} - - -gchar* retro_core_descriptor_get_id (RetroCoreDescriptor* self) { - gchar* result = NULL; - const gchar* _tmp0_; - gchar* _tmp1_; - g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = self->priv->filename; - _tmp1_ = g_path_get_basename (_tmp0_); - result = _tmp1_; - return result; -} - - -gboolean retro_core_descriptor_get_is_game (RetroCoreDescriptor* self, GError** error) { - gboolean result = FALSE; - gchar* _tmp0_ = NULL; - GKeyFile* _tmp1_; - gchar* _tmp2_; - gchar* _tmp5_; - gchar* _tmp6_; - gboolean _tmp7_; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, FALSE); - _tmp1_ = self->priv->key_file; - _tmp2_ = g_key_file_get_string (_tmp1_, RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, RETRO_CORE_DESCRIPTOR_TYPE_KEY, &_inner_error_); - _tmp0_ = _tmp2_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if (_inner_error_->domain == G_KEY_FILE_ERROR) { - gboolean _tmp3_ = FALSE; - g_propagate_error (error, _inner_error_); - return _tmp3_; - } else { - gboolean _tmp4_ = FALSE; - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return _tmp4_; - } - } - _tmp5_ = _tmp0_; - _tmp0_ = NULL; - _tmp6_ = _tmp5_; - _tmp7_ = g_strcmp0 (_tmp6_, RETRO_CORE_DESCRIPTOR_TYPE_GAME) == 0; - _g_free0 (_tmp6_); - result = _tmp7_; - _g_free0 (_tmp0_); - return result; -} - - -gboolean retro_core_descriptor_get_is_emulator (RetroCoreDescriptor* self, GError** error) { - gboolean result = FALSE; - gchar* _tmp0_ = NULL; - GKeyFile* _tmp1_; - gchar* _tmp2_; - gchar* _tmp5_; - gchar* _tmp6_; - gboolean _tmp7_; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, FALSE); - _tmp1_ = self->priv->key_file; - _tmp2_ = g_key_file_get_string (_tmp1_, RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, RETRO_CORE_DESCRIPTOR_TYPE_KEY, &_inner_error_); - _tmp0_ = _tmp2_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if (_inner_error_->domain == G_KEY_FILE_ERROR) { - gboolean _tmp3_ = FALSE; - g_propagate_error (error, _inner_error_); - return _tmp3_; - } else { - gboolean _tmp4_ = FALSE; - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return _tmp4_; - } - } - _tmp5_ = _tmp0_; - _tmp0_ = NULL; - _tmp6_ = _tmp5_; - _tmp7_ = g_strcmp0 (_tmp6_, RETRO_CORE_DESCRIPTOR_TYPE_EMULATOR) == 0; - _g_free0 (_tmp6_); - result = _tmp7_; - _g_free0 (_tmp0_); - return result; -} - - -gchar* retro_core_descriptor_get_name (RetroCoreDescriptor* self, GError** error) { - gchar* result = NULL; - gchar* _tmp0_ = NULL; - GKeyFile* _tmp1_; - gchar* _tmp2_; - gchar* _tmp3_; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, NULL); - _tmp1_ = self->priv->key_file; - _tmp2_ = g_key_file_get_string (_tmp1_, RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, RETRO_CORE_DESCRIPTOR_NAME_KEY, &_inner_error_); - _tmp0_ = _tmp2_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if (_inner_error_->domain == G_KEY_FILE_ERROR) { - g_propagate_error (error, _inner_error_); - return NULL; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return NULL; - } - } - _tmp3_ = _tmp0_; - _tmp0_ = NULL; - result = _tmp3_; - _g_free0 (_tmp0_); - return result; -} - - -GIcon* retro_core_descriptor_get_icon (RetroCoreDescriptor* self, GError** error) { - GIcon* result = NULL; - gchar* icon_name = NULL; - GKeyFile* _tmp0_; - gchar* _tmp1_; - GThemedIcon* _tmp2_; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = self->priv->key_file; - _tmp1_ = g_key_file_get_string (_tmp0_, RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, RETRO_CORE_DESCRIPTOR_ICON_KEY, &_inner_error_); - icon_name = _tmp1_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if (_inner_error_->domain == G_KEY_FILE_ERROR) { - g_propagate_error (error, _inner_error_); - return NULL; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return NULL; - } - } - _tmp2_ = (GThemedIcon*) g_themed_icon_new (icon_name); - result = (GIcon*) _tmp2_; - _g_free0 (icon_name); - return result; -} - - -gchar* retro_core_descriptor_get_module (RetroCoreDescriptor* self, GError** error) { - gchar* result = NULL; - gchar* _tmp0_ = NULL; - GKeyFile* _tmp1_; - gchar* _tmp2_; - gchar* _tmp3_; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, NULL); - _tmp1_ = self->priv->key_file; - _tmp2_ = g_key_file_get_string (_tmp1_, RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, RETRO_CORE_DESCRIPTOR_MODULE_KEY, &_inner_error_); - _tmp0_ = _tmp2_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if (_inner_error_->domain == G_KEY_FILE_ERROR) { - g_propagate_error (error, _inner_error_); - return NULL; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return NULL; - } - } - _tmp3_ = _tmp0_; - _tmp0_ = NULL; - result = _tmp3_; - _g_free0 (_tmp0_); - return result; -} - - -GFile* retro_core_descriptor_get_module_file (RetroCoreDescriptor* self, GError** error) { - GFile* result = NULL; - GFile* file = NULL; - const gchar* _tmp0_; - GFile* _tmp1_; - GFile* dir = NULL; - GFile* _tmp2_; - GFile* _tmp3_; - GFile* _tmp4_; - gchar* module = NULL; - gchar* _tmp5_; - GFile* module_file = NULL; - GFile* _tmp6_; - const gchar* _tmp7_; - GFile* _tmp8_; - GFile* _tmp9_; - gboolean _tmp10_; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = self->priv->filename; - _tmp1_ = g_file_new_for_path (_tmp0_); - file = _tmp1_; - _tmp2_ = file; - _tmp3_ = g_file_get_parent (_tmp2_); - dir = _tmp3_; - _tmp4_ = dir; - if (_tmp4_ == NULL) { - result = NULL; - _g_object_unref0 (dir); - _g_object_unref0 (file); - return result; - } - _tmp5_ = retro_core_descriptor_get_module (self, &_inner_error_); - module = _tmp5_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if (_inner_error_->domain == G_KEY_FILE_ERROR) { - g_propagate_error (error, _inner_error_); - _g_object_unref0 (dir); - _g_object_unref0 (file); - return NULL; - } else { - _g_object_unref0 (dir); - _g_object_unref0 (file); - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return NULL; - } - } - _tmp6_ = dir; - _tmp7_ = module; - _tmp8_ = g_file_get_child (_tmp6_, _tmp7_); - module_file = _tmp8_; - _tmp9_ = module_file; - _tmp10_ = g_file_query_exists (_tmp9_, NULL); - if (!_tmp10_) { - result = NULL; - _g_object_unref0 (module_file); - _g_free0 (module); - _g_object_unref0 (dir); - _g_object_unref0 (file); - return result; - } - result = module_file; - _g_free0 (module); - _g_object_unref0 (dir); - _g_object_unref0 (file); - return result; -} - - -gboolean retro_core_descriptor_has_platform (RetroCoreDescriptor* self, const gchar* platform) { - gboolean result = FALSE; - GKeyFile* _tmp0_; - const gchar* _tmp1_; - gchar* _tmp2_; - gchar* _tmp3_; - gboolean _tmp4_; - gboolean _tmp5_; - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (platform != NULL, FALSE); - _tmp0_ = self->priv->key_file; - _tmp1_ = platform; - _tmp2_ = g_strconcat (RETRO_CORE_DESCRIPTOR_PLATFORM_GROUP_PREFIX, _tmp1_, NULL); - _tmp3_ = _tmp2_; - _tmp4_ = g_key_file_has_group (_tmp0_, _tmp3_); - _tmp5_ = _tmp4_; - _g_free0 (_tmp3_); - result = _tmp5_; - return result; -} - - -gboolean retro_core_descriptor_has_firmwares (RetroCoreDescriptor* self, const gchar* platform, GError** error) { - gboolean result = FALSE; - gboolean _tmp0_ = FALSE; - GKeyFile* _tmp1_; - const gchar* _tmp2_; - gchar* _tmp3_; - gchar* _tmp4_; - gboolean _tmp5_; - gboolean _tmp6_; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (platform != NULL, FALSE); - _tmp1_ = self->priv->key_file; - _tmp2_ = platform; - _tmp3_ = g_strconcat (RETRO_CORE_DESCRIPTOR_PLATFORM_GROUP_PREFIX, _tmp2_, NULL); - _tmp4_ = _tmp3_; - _tmp5_ = g_key_file_has_key (_tmp1_, _tmp4_, RETRO_CORE_DESCRIPTOR_PLATFORM_FIRMWARES_KEY, &_inner_error_); - _tmp6_ = _tmp5_; - _g_free0 (_tmp4_); - _tmp0_ = _tmp6_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if (_inner_error_->domain == G_KEY_FILE_ERROR) { - gboolean _tmp7_ = FALSE; - g_propagate_error (error, _inner_error_); - return _tmp7_; - } else { - gboolean _tmp8_ = FALSE; - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return _tmp8_; - } - } - result = _tmp0_; - return result; -} - - -gboolean retro_core_descriptor_has_firmware_md5 (RetroCoreDescriptor* self, const gchar* firmware, GError** error) { - gboolean result = FALSE; - gboolean _tmp0_ = FALSE; - GKeyFile* _tmp1_; - const gchar* _tmp2_; - gchar* _tmp3_; - gchar* _tmp4_; - gboolean _tmp5_; - gboolean _tmp6_; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (firmware != NULL, FALSE); - _tmp1_ = self->priv->key_file; - _tmp2_ = firmware; - _tmp3_ = g_strconcat (RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX, _tmp2_, NULL); - _tmp4_ = _tmp3_; - _tmp5_ = g_key_file_has_key (_tmp1_, _tmp4_, RETRO_CORE_DESCRIPTOR_FIRMWARE_MD5_KEY, &_inner_error_); - _tmp6_ = _tmp5_; - _g_free0 (_tmp4_); - _tmp0_ = _tmp6_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if (_inner_error_->domain == G_KEY_FILE_ERROR) { - gboolean _tmp7_ = FALSE; - g_propagate_error (error, _inner_error_); - return _tmp7_; - } else { - gboolean _tmp8_ = FALSE; - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return _tmp8_; - } - } - result = _tmp0_; - return result; -} - - -gboolean retro_core_descriptor_has_firmware_sha512 (RetroCoreDescriptor* self, const gchar* firmware, GError** error) { - gboolean result = FALSE; - gboolean _tmp0_ = FALSE; - GKeyFile* _tmp1_; - const gchar* _tmp2_; - gchar* _tmp3_; - gchar* _tmp4_; - gboolean _tmp5_; - gboolean _tmp6_; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (firmware != NULL, FALSE); - _tmp1_ = self->priv->key_file; - _tmp2_ = firmware; - _tmp3_ = g_strconcat (RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX, _tmp2_, NULL); - _tmp4_ = _tmp3_; - _tmp5_ = g_key_file_has_key (_tmp1_, _tmp4_, RETRO_CORE_DESCRIPTOR_FIRMWARE_SHA512_KEY, &_inner_error_); - _tmp6_ = _tmp5_; - _g_free0 (_tmp4_); - _tmp0_ = _tmp6_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if (_inner_error_->domain == G_KEY_FILE_ERROR) { - gboolean _tmp7_ = FALSE; - g_propagate_error (error, _inner_error_); - return _tmp7_; - } else { - gboolean _tmp8_ = FALSE; - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return _tmp8_; - } - } - result = _tmp0_; - return result; -} - - -gchar** retro_core_descriptor_get_mime_type (RetroCoreDescriptor* self, const gchar* platform, int* result_length1, GError** error) { - gchar** result = NULL; - gchar** _tmp0_ = NULL; - GKeyFile* _tmp1_; - const gchar* _tmp2_; - gchar* _tmp3_; - gchar* _tmp4_; - gsize _tmp5_; - gchar** _tmp6_; - gchar** _tmp7_; - gint _tmp7__length1; - gint _tmp0__length1; - gint __tmp0__size_; - gchar** _tmp8_; - gint _tmp8__length1; - gchar** _tmp9_; - gint _tmp9__length1; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (platform != NULL, NULL); - _tmp1_ = self->priv->key_file; - _tmp2_ = platform; - _tmp3_ = g_strconcat (RETRO_CORE_DESCRIPTOR_PLATFORM_GROUP_PREFIX, _tmp2_, NULL); - _tmp4_ = _tmp3_; - _tmp6_ = g_key_file_get_string_list (_tmp1_, _tmp4_, RETRO_CORE_DESCRIPTOR_PLATFORM_MIME_TYPE_KEY, &_tmp5_, &_inner_error_); - _tmp7_ = _tmp6_; - _tmp7__length1 = _tmp5_; - _g_free0 (_tmp4_); - _tmp0_ = _tmp7_; - _tmp0__length1 = _tmp7__length1; - __tmp0__size_ = _tmp0__length1; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if (_inner_error_->domain == G_KEY_FILE_ERROR) { - g_propagate_error (error, _inner_error_); - return NULL; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return NULL; - } - } - _tmp8_ = _tmp0_; - _tmp8__length1 = _tmp0__length1; - _tmp0_ = NULL; - _tmp0__length1 = 0; - _tmp9_ = _tmp8_; - _tmp9__length1 = _tmp8__length1; - if (result_length1) { - *result_length1 = _tmp9__length1; - } - result = _tmp9_; - _tmp0_ = (_vala_array_free (_tmp0_, _tmp0__length1, (GDestroyNotify) g_free), NULL); - return result; -} - - -gchar** retro_core_descriptor_get_firmwares (RetroCoreDescriptor* self, const gchar* platform, int* result_length1, GError** error) { - gchar** result = NULL; - gchar** _tmp0_ = NULL; - GKeyFile* _tmp1_; - const gchar* _tmp2_; - gchar* _tmp3_; - gchar* _tmp4_; - gsize _tmp5_; - gchar** _tmp6_; - gchar** _tmp7_; - gint _tmp7__length1; - gint _tmp0__length1; - gint __tmp0__size_; - gchar** _tmp8_; - gint _tmp8__length1; - gchar** _tmp9_; - gint _tmp9__length1; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (platform != NULL, NULL); - _tmp1_ = self->priv->key_file; - _tmp2_ = platform; - _tmp3_ = g_strconcat (RETRO_CORE_DESCRIPTOR_PLATFORM_GROUP_PREFIX, _tmp2_, NULL); - _tmp4_ = _tmp3_; - _tmp6_ = g_key_file_get_string_list (_tmp1_, _tmp4_, RETRO_CORE_DESCRIPTOR_PLATFORM_FIRMWARES_KEY, &_tmp5_, &_inner_error_); - _tmp7_ = _tmp6_; - _tmp7__length1 = _tmp5_; - _g_free0 (_tmp4_); - _tmp0_ = _tmp7_; - _tmp0__length1 = _tmp7__length1; - __tmp0__size_ = _tmp0__length1; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if (_inner_error_->domain == G_KEY_FILE_ERROR) { - g_propagate_error (error, _inner_error_); - return NULL; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return NULL; - } - } - _tmp8_ = _tmp0_; - _tmp8__length1 = _tmp0__length1; - _tmp0_ = NULL; - _tmp0__length1 = 0; - _tmp9_ = _tmp8_; - _tmp9__length1 = _tmp8__length1; - if (result_length1) { - *result_length1 = _tmp9__length1; - } - result = _tmp9_; - _tmp0_ = (_vala_array_free (_tmp0_, _tmp0__length1, (GDestroyNotify) g_free), NULL); - return result; -} - - -gchar* retro_core_descriptor_get_firmware_path (RetroCoreDescriptor* self, const gchar* firmware, GError** error) { - gchar* result = NULL; - gchar* _tmp0_ = NULL; - GKeyFile* _tmp1_; - const gchar* _tmp2_; - gchar* _tmp3_; - gchar* _tmp4_; - gchar* _tmp5_; - gchar* _tmp6_; - gchar* _tmp7_; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (firmware != NULL, NULL); - _tmp1_ = self->priv->key_file; - _tmp2_ = firmware; - _tmp3_ = g_strconcat (RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX, _tmp2_, NULL); - _tmp4_ = _tmp3_; - _tmp5_ = g_key_file_get_string (_tmp1_, _tmp4_, RETRO_CORE_DESCRIPTOR_FIRMWARE_PATH_KEY, &_inner_error_); - _tmp6_ = _tmp5_; - _g_free0 (_tmp4_); - _tmp0_ = _tmp6_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if (_inner_error_->domain == G_KEY_FILE_ERROR) { - g_propagate_error (error, _inner_error_); - return NULL; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return NULL; - } - } - _tmp7_ = _tmp0_; - _tmp0_ = NULL; - result = _tmp7_; - _g_free0 (_tmp0_); - return result; -} - - -gchar* retro_core_descriptor_get_firmware_md5 (RetroCoreDescriptor* self, const gchar* firmware, GError** error) { - gchar* result = NULL; - gchar* _tmp0_ = NULL; - GKeyFile* _tmp1_; - const gchar* _tmp2_; - gchar* _tmp3_; - gchar* _tmp4_; - gchar* _tmp5_; - gchar* _tmp6_; - gchar* _tmp7_; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (firmware != NULL, NULL); - _tmp1_ = self->priv->key_file; - _tmp2_ = firmware; - _tmp3_ = g_strconcat (RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX, _tmp2_, NULL); - _tmp4_ = _tmp3_; - _tmp5_ = g_key_file_get_string (_tmp1_, _tmp4_, RETRO_CORE_DESCRIPTOR_FIRMWARE_MD5_KEY, &_inner_error_); - _tmp6_ = _tmp5_; - _g_free0 (_tmp4_); - _tmp0_ = _tmp6_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if (_inner_error_->domain == G_KEY_FILE_ERROR) { - g_propagate_error (error, _inner_error_); - return NULL; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return NULL; - } - } - _tmp7_ = _tmp0_; - _tmp0_ = NULL; - result = _tmp7_; - _g_free0 (_tmp0_); - return result; -} - - -gchar* retro_core_descriptor_get_firmware_sha512 (RetroCoreDescriptor* self, const gchar* firmware, GError** error) { - gchar* result = NULL; - gchar* _tmp0_ = NULL; - GKeyFile* _tmp1_; - const gchar* _tmp2_; - gchar* _tmp3_; - gchar* _tmp4_; - gchar* _tmp5_; - gchar* _tmp6_; - gchar* _tmp7_; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (firmware != NULL, NULL); - _tmp1_ = self->priv->key_file; - _tmp2_ = firmware; - _tmp3_ = g_strconcat (RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX, _tmp2_, NULL); - _tmp4_ = _tmp3_; - _tmp5_ = g_key_file_get_string (_tmp1_, _tmp4_, RETRO_CORE_DESCRIPTOR_FIRMWARE_SHA512_KEY, &_inner_error_); - _tmp6_ = _tmp5_; - _g_free0 (_tmp4_); - _tmp0_ = _tmp6_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if (_inner_error_->domain == G_KEY_FILE_ERROR) { - g_propagate_error (error, _inner_error_); - return NULL; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return NULL; - } - } - _tmp7_ = _tmp0_; - _tmp0_ = NULL; - result = _tmp7_; - _g_free0 (_tmp0_); - return result; -} - - -gboolean retro_core_descriptor_get_is_firmware_mandatory (RetroCoreDescriptor* self, const gchar* firmware, GError** error) { - gboolean result = FALSE; - gboolean _tmp0_ = FALSE; - GKeyFile* _tmp1_; - const gchar* _tmp2_; - gchar* _tmp3_; - gchar* _tmp4_; - gboolean _tmp5_; - gboolean _tmp6_; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (firmware != NULL, FALSE); - _tmp1_ = self->priv->key_file; - _tmp2_ = firmware; - _tmp3_ = g_strconcat (RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX, _tmp2_, NULL); - _tmp4_ = _tmp3_; - _tmp5_ = g_key_file_get_boolean (_tmp1_, _tmp4_, RETRO_CORE_DESCRIPTOR_FIRMWARE_MANDATORY_KEY, &_inner_error_); - _tmp6_ = _tmp5_; - _g_free0 (_tmp4_); - _tmp0_ = _tmp6_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if (_inner_error_->domain == G_KEY_FILE_ERROR) { - gboolean _tmp7_ = FALSE; - g_propagate_error (error, _inner_error_); - return _tmp7_; - } else { - gboolean _tmp8_ = FALSE; - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return _tmp8_; - } - } - result = _tmp0_; - return result; -} - - -static gboolean _vala_string_array_contains (gchar* * stack, int stack_length, gchar* needle) { - int i; - for (i = 0; i < stack_length; i++) { - if (g_strcmp0 (stack[i], needle) == 0) { - return TRUE; - } - } - return FALSE; -} - - -gboolean retro_core_descriptor_get_platform_supports_mime_types (RetroCoreDescriptor* self, const gchar* platform, gchar** mime_types, int mime_types_length1, GError** error) { - gboolean result = FALSE; - gchar** supported_mime_types = NULL; - const gchar* _tmp0_; - gint _tmp1_; - gchar** _tmp2_; - gint supported_mime_types_length1; - gint _supported_mime_types_size_; - gchar** _tmp5_; - gint _tmp5__length1; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (platform != NULL, FALSE); - _tmp0_ = platform; - _tmp2_ = retro_core_descriptor_get_mime_type (self, _tmp0_, &_tmp1_, &_inner_error_); - supported_mime_types = _tmp2_; - supported_mime_types_length1 = _tmp1_; - _supported_mime_types_size_ = supported_mime_types_length1; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if (_inner_error_->domain == G_KEY_FILE_ERROR) { - gboolean _tmp3_ = FALSE; - g_propagate_error (error, _inner_error_); - return _tmp3_; - } else { - gboolean _tmp4_ = FALSE; - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return _tmp4_; - } - } - _tmp5_ = mime_types; - _tmp5__length1 = mime_types_length1; - { - gchar** mime_type_collection = NULL; - gint mime_type_collection_length1 = 0; - gint _mime_type_collection_size_ = 0; - gint mime_type_it = 0; - mime_type_collection = _tmp5_; - mime_type_collection_length1 = _tmp5__length1; - for (mime_type_it = 0; mime_type_it < _tmp5__length1; mime_type_it = mime_type_it + 1) { - gchar* _tmp6_; - gchar* mime_type = NULL; - _tmp6_ = g_strdup (mime_type_collection[mime_type_it]); - mime_type = _tmp6_; - { - const gchar* _tmp7_; - _tmp7_ = mime_type; - if (!_vala_string_array_contains (supported_mime_types, supported_mime_types_length1, _tmp7_)) { - result = FALSE; - _g_free0 (mime_type); - supported_mime_types = (_vala_array_free (supported_mime_types, supported_mime_types_length1, (GDestroyNotify) g_free), NULL); - return result; - } - _g_free0 (mime_type); - } - } - } - result = TRUE; - supported_mime_types = (_vala_array_free (supported_mime_types, supported_mime_types_length1, (GDestroyNotify) g_free), NULL); - return result; -} - - -static void retro_core_descriptor_check_libretro_group (RetroCoreDescriptor* self, GError** error) { - GError * _inner_error_ = NULL; - g_return_if_fail (self != NULL); - retro_core_descriptor_check_has_required_key (self, RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, RETRO_CORE_DESCRIPTOR_TYPE_KEY, &_inner_error_); - if (G_UNLIKELY (_inner_error_ != NULL)) { - if ((_inner_error_->domain == RETRO_CORE_DESCRIPTOR_ERROR) || (_inner_error_->domain == G_KEY_FILE_ERROR)) { - g_propagate_error (error, _inner_error_); - return; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return; - } - } - retro_core_descriptor_check_has_required_key (self, RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, RETRO_CORE_DESCRIPTOR_NAME_KEY, &_inner_error_); - if (G_UNLIKELY (_inner_error_ != NULL)) { - if ((_inner_error_->domain == RETRO_CORE_DESCRIPTOR_ERROR) || (_inner_error_->domain == G_KEY_FILE_ERROR)) { - g_propagate_error (error, _inner_error_); - return; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return; - } - } - retro_core_descriptor_check_has_required_key (self, RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, RETRO_CORE_DESCRIPTOR_MODULE_KEY, &_inner_error_); - if (G_UNLIKELY (_inner_error_ != NULL)) { - if ((_inner_error_->domain == RETRO_CORE_DESCRIPTOR_ERROR) || (_inner_error_->domain == G_KEY_FILE_ERROR)) { - g_propagate_error (error, _inner_error_); - return; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return; - } - } - retro_core_descriptor_check_has_required_key (self, RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, RETRO_CORE_DESCRIPTOR_LIBRETRO_VERSION_KEY, &_inner_error_); - if (G_UNLIKELY (_inner_error_ != NULL)) { - if ((_inner_error_->domain == RETRO_CORE_DESCRIPTOR_ERROR) || (_inner_error_->domain == G_KEY_FILE_ERROR)) { - g_propagate_error (error, _inner_error_); - return; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return; - } - } -} - - -static void retro_core_descriptor_check_platform_group (RetroCoreDescriptor* self, const gchar* group, GError** error) { - const gchar* _tmp0_; - gboolean _tmp1_ = FALSE; - GKeyFile* _tmp2_; - const gchar* _tmp3_; - gboolean _tmp4_; - GError * _inner_error_ = NULL; - g_return_if_fail (self != NULL); - g_return_if_fail (group != NULL); - _tmp0_ = group; - retro_core_descriptor_check_has_required_key (self, _tmp0_, RETRO_CORE_DESCRIPTOR_PLATFORM_MIME_TYPE_KEY, &_inner_error_); - if (G_UNLIKELY (_inner_error_ != NULL)) { - if ((_inner_error_->domain == RETRO_CORE_DESCRIPTOR_ERROR) || (_inner_error_->domain == G_KEY_FILE_ERROR)) { - g_propagate_error (error, _inner_error_); - return; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return; - } - } - _tmp2_ = self->priv->key_file; - _tmp3_ = group; - _tmp4_ = g_key_file_has_key (_tmp2_, _tmp3_, RETRO_CORE_DESCRIPTOR_PLATFORM_FIRMWARES_KEY, &_inner_error_); - _tmp1_ = _tmp4_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if ((_inner_error_->domain == RETRO_CORE_DESCRIPTOR_ERROR) || (_inner_error_->domain == G_KEY_FILE_ERROR)) { - g_propagate_error (error, _inner_error_); - return; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return; - } - } - if (_tmp1_) { - gchar** _tmp5_ = NULL; - GKeyFile* _tmp6_; - const gchar* _tmp7_; - gsize _tmp8_; - gchar** _tmp9_; - gint _tmp5__length1; - gint __tmp5__size_; - gchar** _tmp10_; - gint _tmp10__length1; - _tmp6_ = self->priv->key_file; - _tmp7_ = group; - _tmp9_ = g_key_file_get_string_list (_tmp6_, _tmp7_, RETRO_CORE_DESCRIPTOR_PLATFORM_FIRMWARES_KEY, &_tmp8_, &_inner_error_); - _tmp5_ = _tmp9_; - _tmp5__length1 = _tmp8_; - __tmp5__size_ = _tmp5__length1; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if ((_inner_error_->domain == RETRO_CORE_DESCRIPTOR_ERROR) || (_inner_error_->domain == G_KEY_FILE_ERROR)) { - g_propagate_error (error, _inner_error_); - return; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return; - } - } - _tmp10_ = _tmp5_; - _tmp10__length1 = _tmp5__length1; - _tmp5_ = NULL; - _tmp5__length1 = 0; - { - gchar** firmware_collection = NULL; - gint firmware_collection_length1 = 0; - gint _firmware_collection_size_ = 0; - gint firmware_it = 0; - firmware_collection = _tmp10_; - firmware_collection_length1 = _tmp10__length1; - for (firmware_it = 0; firmware_it < _tmp10__length1; firmware_it = firmware_it + 1) { - gchar* _tmp11_; - gchar* firmware = NULL; - _tmp11_ = g_strdup (firmware_collection[firmware_it]); - firmware = _tmp11_; - { - GKeyFile* _tmp12_; - const gchar* _tmp13_; - gchar* _tmp14_; - gchar* _tmp15_; - gboolean _tmp16_; - gboolean _tmp17_; - _tmp12_ = self->priv->key_file; - _tmp13_ = firmware; - _tmp14_ = g_strconcat (RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX, _tmp13_, NULL); - _tmp15_ = _tmp14_; - _tmp16_ = g_key_file_has_group (_tmp12_, _tmp15_); - _tmp17_ = !_tmp16_; - _g_free0 (_tmp15_); - if (_tmp17_) { - const gchar* _tmp18_; - const gchar* _tmp19_; - gchar* _tmp20_; - gchar* _tmp21_; - const gchar* _tmp22_; - GError* _tmp23_; - GError* _tmp24_; - _tmp18_ = self->priv->filename; - _tmp19_ = firmware; - _tmp20_ = g_strconcat (RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX, _tmp19_, NULL); - _tmp21_ = _tmp20_; - _tmp22_ = group; - _tmp23_ = g_error_new (RETRO_CORE_DESCRIPTOR_ERROR, RETRO_CORE_DESCRIPTOR_ERROR_FIRMWARE_NOT_FOUND, "%s isn't a valid Libretro core descriptor: [%s] mentioned in [%s] not " \ -"found.", _tmp18_, _tmp21_, _tmp22_); - _tmp24_ = _tmp23_; - _g_free0 (_tmp21_); - _inner_error_ = _tmp24_; - if ((_inner_error_->domain == RETRO_CORE_DESCRIPTOR_ERROR) || (_inner_error_->domain == G_KEY_FILE_ERROR)) { - g_propagate_error (error, _inner_error_); - _g_free0 (firmware); - firmware_collection = (_vala_array_free (firmware_collection, firmware_collection_length1, (GDestroyNotify) g_free), NULL); - _tmp5_ = (_vala_array_free (_tmp5_, _tmp5__length1, (GDestroyNotify) g_free), NULL); - return; - } else { - _g_free0 (firmware); - firmware_collection = (_vala_array_free (firmware_collection, firmware_collection_length1, (GDestroyNotify) g_free), NULL); - _tmp5_ = (_vala_array_free (_tmp5_, _tmp5__length1, (GDestroyNotify) g_free), NULL); - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return; - } - } - _g_free0 (firmware); - } - } - firmware_collection = (_vala_array_free (firmware_collection, firmware_collection_length1, (GDestroyNotify) g_free), NULL); - } - _tmp5_ = (_vala_array_free (_tmp5_, _tmp5__length1, (GDestroyNotify) g_free), NULL); - } -} - - -static void retro_core_descriptor_check_firmware_group (RetroCoreDescriptor* self, const gchar* group, GError** error) { - const gchar* _tmp0_; - const gchar* _tmp1_; - GError * _inner_error_ = NULL; - g_return_if_fail (self != NULL); - g_return_if_fail (group != NULL); - _tmp0_ = group; - retro_core_descriptor_check_has_required_key (self, _tmp0_, RETRO_CORE_DESCRIPTOR_FIRMWARE_PATH_KEY, &_inner_error_); - if (G_UNLIKELY (_inner_error_ != NULL)) { - if ((_inner_error_->domain == RETRO_CORE_DESCRIPTOR_ERROR) || (_inner_error_->domain == G_KEY_FILE_ERROR)) { - g_propagate_error (error, _inner_error_); - return; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return; - } - } - _tmp1_ = group; - retro_core_descriptor_check_has_required_key (self, _tmp1_, RETRO_CORE_DESCRIPTOR_FIRMWARE_MANDATORY_KEY, &_inner_error_); - if (G_UNLIKELY (_inner_error_ != NULL)) { - if ((_inner_error_->domain == RETRO_CORE_DESCRIPTOR_ERROR) || (_inner_error_->domain == G_KEY_FILE_ERROR)) { - g_propagate_error (error, _inner_error_); - return; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return; - } - } -} - - -static void retro_core_descriptor_check_has_required_key (RetroCoreDescriptor* self, const gchar* group, const gchar* key, GError** error) { - gboolean _tmp0_ = FALSE; - GKeyFile* _tmp1_; - gboolean _tmp2_; - GError * _inner_error_ = NULL; - g_return_if_fail (self != NULL); - g_return_if_fail (group != NULL); - g_return_if_fail (key != NULL); - _tmp1_ = self->priv->key_file; - _tmp2_ = g_key_file_has_key (_tmp1_, RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, RETRO_CORE_DESCRIPTOR_TYPE_KEY, &_inner_error_); - _tmp0_ = _tmp2_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - if ((_inner_error_->domain == RETRO_CORE_DESCRIPTOR_ERROR) || (_inner_error_->domain == G_KEY_FILE_ERROR)) { - g_propagate_error (error, _inner_error_); - return; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return; - } - } - if (!_tmp0_) { - const gchar* _tmp3_; - const gchar* _tmp4_; - const gchar* _tmp5_; - GError* _tmp6_; - _tmp3_ = self->priv->filename; - _tmp4_ = key; - _tmp5_ = group; - _tmp6_ = g_error_new (RETRO_CORE_DESCRIPTOR_ERROR, RETRO_CORE_DESCRIPTOR_ERROR_REQUIRED_KEY_NOT_FOUND, "%s isn't a valid Libretro core descriptor: required key %s not found i" \ -"n group [%s].", _tmp3_, _tmp4_, _tmp5_); - _inner_error_ = _tmp6_; - if ((_inner_error_->domain == RETRO_CORE_DESCRIPTOR_ERROR) || (_inner_error_->domain == G_KEY_FILE_ERROR)) { - g_propagate_error (error, _inner_error_); - return; - } else { - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return; - } - } -} - - -static gpointer _g_key_file_ref0 (gpointer self) { - return self ? g_key_file_ref (self) : NULL; -} - - -static RetroCoreDescriptorPlatform* retro_core_descriptor_platform_construct (GType object_type, GKeyFile* key_file, const gchar* platform) { - RetroCoreDescriptorPlatform * self = NULL; - GKeyFile* _tmp0_; - GKeyFile* _tmp1_; - const gchar* _tmp2_; - gchar* _tmp3_; - g_return_val_if_fail (key_file != NULL, NULL); - g_return_val_if_fail (platform != NULL, NULL); - self = (RetroCoreDescriptorPlatform*) g_object_new (object_type, NULL); - _tmp0_ = key_file; - _tmp1_ = _g_key_file_ref0 (_tmp0_); - _g_key_file_unref0 (self->priv->key_file); - self->priv->key_file = _tmp1_; - _tmp2_ = platform; - _tmp3_ = g_strconcat (RETRO_CORE_DESCRIPTOR_PLATFORM_GROUP_PREFIX, _tmp2_, NULL); - _g_free0 (self->priv->group); - self->priv->group = _tmp3_; - return self; -} - - -static RetroCoreDescriptorPlatform* retro_core_descriptor_platform_new (GKeyFile* key_file, const gchar* platform) { - return retro_core_descriptor_platform_construct (RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM, key_file, platform); -} - - -static void retro_core_descriptor_platform_class_init (RetroCoreDescriptorPlatformClass * klass) { - retro_core_descriptor_platform_parent_class = g_type_class_peek_parent (klass); - g_type_class_add_private (klass, sizeof (RetroCoreDescriptorPlatformPrivate)); - G_OBJECT_CLASS (klass)->finalize = retro_core_descriptor_platform_finalize; -} - - -static void retro_core_descriptor_platform_instance_init (RetroCoreDescriptorPlatform * self) { - self->priv = RETRO_CORE_DESCRIPTOR_PLATFORM_GET_PRIVATE (self); -} - - -static void retro_core_descriptor_platform_finalize (GObject * obj) { - RetroCoreDescriptorPlatform * self; - self = G_TYPE_CHECK_INSTANCE_CAST (obj, RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM, RetroCoreDescriptorPlatform); - _g_key_file_unref0 (self->priv->key_file); - _g_free0 (self->priv->group); - G_OBJECT_CLASS (retro_core_descriptor_platform_parent_class)->finalize (obj); -} - - -GType retro_core_descriptor_platform_get_type (void) { - static volatile gsize retro_core_descriptor_platform_type_id__volatile = 0; - if (g_once_init_enter (&retro_core_descriptor_platform_type_id__volatile)) { - static const GTypeInfo g_define_type_info = { sizeof (RetroCoreDescriptorPlatformClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) retro_core_descriptor_platform_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RetroCoreDescriptorPlatform), 0, (GInstanceInitFunc) retro_core_descriptor_platform_instance_init, NULL }; - GType retro_core_descriptor_platform_type_id; - retro_core_descriptor_platform_type_id = g_type_register_static (G_TYPE_OBJECT, "RetroCoreDescriptorPlatform", &g_define_type_info, 0); - g_once_init_leave (&retro_core_descriptor_platform_type_id__volatile, retro_core_descriptor_platform_type_id); - } - return retro_core_descriptor_platform_type_id__volatile; -} - - -static void retro_core_descriptor_class_init (RetroCoreDescriptorClass * klass) { - retro_core_descriptor_parent_class = g_type_class_peek_parent (klass); - g_type_class_add_private (klass, sizeof (RetroCoreDescriptorPrivate)); - G_OBJECT_CLASS (klass)->finalize = retro_core_descriptor_finalize; -} - - -static void retro_core_descriptor_instance_init (RetroCoreDescriptor * self) { - self->priv = RETRO_CORE_DESCRIPTOR_GET_PRIVATE (self); -} - - -static void retro_core_descriptor_finalize (GObject * obj) { - RetroCoreDescriptor * self; - self = G_TYPE_CHECK_INSTANCE_CAST (obj, RETRO_TYPE_CORE_DESCRIPTOR, RetroCoreDescriptor); - _g_free0 (self->priv->filename); - _g_key_file_unref0 (self->priv->key_file); - G_OBJECT_CLASS (retro_core_descriptor_parent_class)->finalize (obj); -} - - -GType retro_core_descriptor_get_type (void) { - static volatile gsize retro_core_descriptor_type_id__volatile = 0; - if (g_once_init_enter (&retro_core_descriptor_type_id__volatile)) { - static const GTypeInfo g_define_type_info = { sizeof (RetroCoreDescriptorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) retro_core_descriptor_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RetroCoreDescriptor), 0, (GInstanceInitFunc) retro_core_descriptor_instance_init, NULL }; - GType retro_core_descriptor_type_id; - retro_core_descriptor_type_id = g_type_register_static (G_TYPE_OBJECT, "RetroCoreDescriptor", &g_define_type_info, 0); - g_once_init_leave (&retro_core_descriptor_type_id__volatile, retro_core_descriptor_type_id); - } - return retro_core_descriptor_type_id__volatile; -} - - -static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { - if ((array != NULL) && (destroy_func != NULL)) { - int i; - for (i = 0; i < array_length; i = i + 1) { - if (((gpointer*) array)[i] != NULL) { - destroy_func (((gpointer*) array)[i]); - } - } - } -} - - -static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { - _vala_array_destroy (array, array_length, destroy_func); - g_free (array); -} +/* Private */ +static void +retro_core_descriptor_finalize (GObject *object) +{ + RetroCoreDescriptor *self = RETRO_CORE_DESCRIPTOR (object); + + g_free (self->filename); + g_key_file_unref (self->key_file); + + G_OBJECT_CLASS (retro_core_descriptor_parent_class)->finalize (object); +} + +static void +retro_core_descriptor_class_init (RetroCoreDescriptorClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = retro_core_descriptor_finalize; +} + +static void +retro_core_descriptor_init (RetroCoreDescriptor *self) +{ +} + +static gboolean +has_group_prefixed (RetroCoreDescriptor *self, + const gchar *group_prefix, + const gchar *group_suffix) +{ + gchar *group; + gboolean result; + + g_return_val_if_fail (RETRO_IS_CORE_DESCRIPTOR (self), FALSE); + g_return_val_if_fail (group_prefix != NULL, FALSE); + g_return_val_if_fail (group_suffix != NULL, FALSE); + + group = g_strconcat (group_prefix, group_suffix, NULL); + result = g_key_file_has_group (self->key_file, group); + g_free (group); + + return result; +} + +static gboolean +has_key_prefixed (RetroCoreDescriptor *self, + const gchar *group_prefix, + const gchar *group_suffix, + const gchar *key, + GError **error) +{ + gchar *group; + gboolean result; + GError *tmp_error = NULL; + + g_return_val_if_fail (RETRO_IS_CORE_DESCRIPTOR (self), FALSE); + g_return_val_if_fail (group_prefix != NULL, FALSE); + g_return_val_if_fail (group_suffix != NULL, FALSE); + g_return_val_if_fail (key != NULL, FALSE); + + group = g_strconcat (group_prefix, group_suffix, NULL); + result = g_key_file_has_key (self->key_file, + group, + key, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_free (group); + g_propagate_error (error, tmp_error); + + return FALSE; + } + + g_free (group); + + return result; +} + +static gchar * +get_string_prefixed (RetroCoreDescriptor *self, + const gchar *group_prefix, + const gchar *group_suffix, + const gchar *key, + GError **error) +{ + gchar *group; + gchar *result; + GError *tmp_error = NULL; + + g_return_val_if_fail (RETRO_IS_CORE_DESCRIPTOR (self), NULL); + g_return_val_if_fail (group_prefix != NULL, NULL); + g_return_val_if_fail (group_suffix != NULL, NULL); + g_return_val_if_fail (key != NULL, NULL); + + group = g_strconcat (group_prefix, group_suffix, NULL); + + result = g_key_file_get_string (self->key_file, + group, + key, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_free (group); + g_propagate_error (error, tmp_error); + + return NULL; + } + + g_free (group); + + return result; +} + +static gchar ** +get_string_list_prefixed (RetroCoreDescriptor *self, + const gchar *group_prefix, + const gchar *group_suffix, + const gchar *key, + gsize *length, + GError **error) +{ + gchar *group; + gchar **result; + GError *tmp_error = NULL; + + g_return_val_if_fail (RETRO_IS_CORE_DESCRIPTOR (self), NULL); + g_return_val_if_fail (group_prefix != NULL, NULL); + g_return_val_if_fail (group_suffix != NULL, NULL); + g_return_val_if_fail (key != NULL, NULL); + g_return_val_if_fail (length != NULL, NULL); + + group = g_strconcat (group_prefix, group_suffix, NULL); + result = g_key_file_get_string_list (self->key_file, + group, + key, + length, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_free (group); + g_propagate_error (error, tmp_error); + + return NULL; + } + + g_free (group); + + return result; +} + +static void +retro_core_descriptor_check_has_required_key (RetroCoreDescriptor *self, + const gchar *group, + const gchar *key, + GError **error) +{ + gboolean has_key; + GError *tmp_error = NULL; + + g_return_if_fail (RETRO_IS_CORE_DESCRIPTOR (self)); + g_return_if_fail (group != NULL); + g_return_if_fail (key != NULL); + + has_key = g_key_file_has_key (self->key_file, + RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, + RETRO_CORE_DESCRIPTOR_TYPE_KEY, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + + return; + } + + if (!has_key) + g_set_error (error, + RETRO_CORE_DESCRIPTOR_ERROR, + RETRO_CORE_DESCRIPTOR_ERROR_REQUIRED_KEY_NOT_FOUND, + "%s isn't a valid Libretro core descriptor: " + "required key %s not found in group [%s].", + self->filename, + key, + group); +} + +// FIXME static +void +retro_core_descriptor_check_libretro_group (RetroCoreDescriptor *self, + GError **error) +{ + GError *tmp_error = NULL; + + g_return_if_fail (RETRO_IS_CORE_DESCRIPTOR (self)); + + retro_core_descriptor_check_has_required_key (self, + RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, + RETRO_CORE_DESCRIPTOR_TYPE_KEY, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + + return; + } + + retro_core_descriptor_check_has_required_key (self, + RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, + RETRO_CORE_DESCRIPTOR_NAME_KEY, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + + return; + } + + retro_core_descriptor_check_has_required_key (self, + RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, + RETRO_CORE_DESCRIPTOR_MODULE_KEY, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + + return; + } + + retro_core_descriptor_check_has_required_key (self, + RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, + RETRO_CORE_DESCRIPTOR_LIBRETRO_VERSION_KEY, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + + return; + } +} + +// FIXME static +void +retro_core_descriptor_check_platform_group (RetroCoreDescriptor *self, + const gchar *group, + GError **error) +{ + gboolean has_key; + gchar **firmwares; + gchar **firmware_p; + gchar *firmware_group; + GError *tmp_error = NULL; + + g_return_if_fail (RETRO_IS_CORE_DESCRIPTOR (self)); + g_return_if_fail (group != NULL); + + retro_core_descriptor_check_has_required_key (self, + group, + RETRO_CORE_DESCRIPTOR_PLATFORM_MIME_TYPE_KEY, + &tmp_error); + + has_key = g_key_file_has_key (self->key_file, + group, + RETRO_CORE_DESCRIPTOR_PLATFORM_FIRMWARES_KEY, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + + return; + } + + if (!has_key) + return; + + firmwares = g_key_file_get_string_list (self->key_file, + group, + RETRO_CORE_DESCRIPTOR_PLATFORM_FIRMWARES_KEY, + NULL, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + + return; + } + + for (firmware_p = firmwares; *firmware_p != NULL; firmware_p++) { + firmware_group = g_strconcat (RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX, *firmware_p, NULL); + if (!g_key_file_has_group (self->key_file, firmware_group)) { + g_set_error (error, + RETRO_CORE_DESCRIPTOR_ERROR, + RETRO_CORE_DESCRIPTOR_ERROR_FIRMWARE_NOT_FOUND, + "%s isn't a valid Libretro core descriptor:" + "[%s] mentioned in [%s] not found.", + self->filename, + firmware_group, + group); + + g_free (firmware_group); + g_strfreev (firmwares); + + return; + } + + g_free (firmware_group); + } + + g_strfreev (firmwares); +} + +static void +retro_core_descriptor_check_firmware_group (RetroCoreDescriptor *self, + const gchar *group, + GError **error) +{ + GError *tmp_error = NULL; + + g_return_if_fail (RETRO_IS_CORE_DESCRIPTOR (self)); + g_return_if_fail (group != NULL); + + retro_core_descriptor_check_has_required_key (self, + group, + RETRO_CORE_DESCRIPTOR_FIRMWARE_PATH_KEY, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + + return; + } + + retro_core_descriptor_check_has_required_key (self, + group, + RETRO_CORE_DESCRIPTOR_FIRMWARE_MANDATORY_KEY, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + + return; + } +} + +/* Public */ + +/** + * retro_core_descriptor_has_icon: + * @self: a #RetroCoreDescriptor + * @error: return location for a #GError, or %NULL + * + * Gets whether the core has an icon. + * + * Returns: whether the core has an icon + */ +gboolean +retro_core_descriptor_has_icon (RetroCoreDescriptor *self, + GError **error) +{ + gboolean has_icon; + GError *tmp_error = NULL; + + g_return_val_if_fail (RETRO_IS_CORE_DESCRIPTOR (self), FALSE); + + has_icon = g_key_file_has_key (self->key_file, RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, RETRO_CORE_DESCRIPTOR_ICON_KEY, &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + + return FALSE; + } + + return has_icon; +} + +/** + * retro_core_descriptor_get_uri + * @self: a #RetroCoreDescriptor + * + * Gets the URI of the file of @self. + * + * Returns: the URI of the file of @self, free it with g_free() + */ +gchar * +retro_core_descriptor_get_uri (RetroCoreDescriptor *self) +{ + gchar *result; + GFile *file; + + g_return_val_if_fail (RETRO_IS_CORE_DESCRIPTOR (self), NULL); + + file = g_file_new_for_path (self->filename); + result = g_file_get_uri (file); + g_object_unref (file); + + return result; +} + +/** + * retro_core_descriptor_get_id + * @self: a #RetroCoreDescriptor + * + * Gets the ID of @self. + * + * Returns: the ID of @self, free it with g_free() + */ +gchar * +retro_core_descriptor_get_id (RetroCoreDescriptor *self) +{ + g_return_val_if_fail (RETRO_IS_CORE_DESCRIPTOR (self), NULL); + + return g_path_get_basename (self->filename); +} + +/** + * retro_core_descriptor_get_is_game + * @self: a #RetroCoreDescriptor + * @error: return location for a #GError, or %NULL + * + * Gets whether the core is a game, and hence can't load games. + * + * Returns: whether the core is a game + */ +gboolean +retro_core_descriptor_get_is_game (RetroCoreDescriptor *self, + GError **error) +{ + gchar *type; + gboolean is_game; + GError *tmp_error = NULL; + + g_return_val_if_fail (RETRO_IS_CORE_DESCRIPTOR (self), FALSE); + + type = g_key_file_get_string (self->key_file, + RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, + RETRO_CORE_DESCRIPTOR_TYPE_KEY, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + + return FALSE; + } + + is_game = g_strcmp0 (type, RETRO_CORE_DESCRIPTOR_TYPE_GAME) == 0; + g_free (type); + + return is_game; +} + +/** + * retro_core_descriptor_get_is_emulator + * @self: a #RetroCoreDescriptor + * @error: return location for a #GError, or %NULL + * + * Gets whether the core is an emulator, and hence need games to be loaded. + * + * Returns: whether the core is an emulator + */ +gboolean +retro_core_descriptor_get_is_emulator (RetroCoreDescriptor *self, + GError **error) +{ + gchar *type; + gboolean is_game; + GError *tmp_error = NULL; + + g_return_val_if_fail (RETRO_IS_CORE_DESCRIPTOR (self), FALSE); + + type = g_key_file_get_string (self->key_file, + RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, + RETRO_CORE_DESCRIPTOR_TYPE_KEY, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + + return FALSE; + } + + is_game = g_strcmp0 (type, RETRO_CORE_DESCRIPTOR_TYPE_EMULATOR) == 0; + g_free (type); + + return is_game; +} + +/** + * retro_core_descriptor_get_name + * @self: a #RetroCoreDescriptor + * @error: return location for a #GError, or %NULL + * + * Gets the name, or %NULL if it doesn't exist. + * + * Returns: (nullable) (transfer full): a string or %NULL, free it with g_free() + */ +gchar * +retro_core_descriptor_get_name (RetroCoreDescriptor *self, + GError **error) +{ + return g_key_file_get_string (self->key_file, + RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, + RETRO_CORE_DESCRIPTOR_NAME_KEY, + error); +} + +/** + * retro_core_descriptor_get_icon + * @self: a #RetroCoreDescriptor + * @error: return location for a #GError, or %NULL + * + * Gets the icon, or %NULL if it doesn't exist. + * + * Returns: (nullable) (transfer full): a #GIcon or %NULL + */ +GIcon * +retro_core_descriptor_get_icon (RetroCoreDescriptor *self, + GError **error) +{ + gchar *icon_name; + GIcon *icon; + GError *tmp_error = NULL; + + g_return_val_if_fail (RETRO_IS_CORE_DESCRIPTOR (self), NULL); + + icon_name = g_key_file_get_string (self->key_file, + RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, + RETRO_CORE_DESCRIPTOR_ICON_KEY, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + + return NULL; + } + + icon = G_ICON (g_themed_icon_new (icon_name)); + g_free (icon_name); + + return icon; +} + +/** + * retro_core_descriptor_get_module + * @self: a #RetroCoreDescriptor + * @error: return location for a #GError, or %NULL + * + * Gets the module file name, or %NULL if it doesn't exist. + * + * Returns: (nullable) (transfer full): a string or %NULL, free it with g_free() + */ +char * +retro_core_descriptor_get_module (RetroCoreDescriptor *self, + GError **error) +{ + g_return_val_if_fail (RETRO_IS_CORE_DESCRIPTOR (self), FALSE); + + return g_key_file_get_string (self->key_file, + RETRO_CORE_DESCRIPTOR_LIBRETRO_GROUP, + RETRO_CORE_DESCRIPTOR_MODULE_KEY, + error); +} + +/** + * retro_core_descriptor_get_module_file + * @self: a #RetroCoreDescriptor + * @error: return location for a #GError, or %NULL + * + * Gets the module file, or %NULL if it doesn't exist. + * + * Returns: (nullable) (transfer full): a #GFile or %NULL + */ +GFile * +retro_core_descriptor_get_module_file (RetroCoreDescriptor *self, + GError **error) +{ + GFile *file; + GFile *dir; + gchar *module; + GFile *module_file; + GError *tmp_error = NULL; + + g_return_val_if_fail (RETRO_IS_CORE_DESCRIPTOR (self), NULL); + + file = g_file_new_for_path (self->filename); + dir = g_file_get_parent (file); + g_object_unref (file); + if (dir == NULL) + return NULL; + + module = retro_core_descriptor_get_module (self, &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + g_object_unref (dir); + + return NULL; + } + + module_file = g_file_get_child (dir, module); + if (!g_file_query_exists (module_file, NULL)) { + g_object_unref (dir); + g_free (module); + g_object_unref (module_file); + + return NULL; + } + + g_object_unref (dir); + g_free (module); + + return module_file; +} + +/** + * retro_core_descriptor_has_platform: + * @self: a #RetroCoreDescriptor + * @platform: a platform name + * + * Gets whether the core descriptor declares the given platform. + * + * Returns: whether the core descriptor declares the given platform + */ +gboolean +retro_core_descriptor_has_platform (RetroCoreDescriptor *self, + const gchar *platform) +{ + return has_group_prefixed (self, + RETRO_CORE_DESCRIPTOR_PLATFORM_GROUP_PREFIX, + platform); +} + +/** + * retro_core_descriptor_has_firmwares: + * @self: a #RetroCoreDescriptor + * @platform: a platform name + * @error: return location for a #GError, or %NULL + * + * Gets whether the platform has associated firmwares. + * + * Returns: whether the platform has associated firmwares + */ +gboolean +retro_core_descriptor_has_firmwares (RetroCoreDescriptor *self, + const gchar *platform, + GError **error) +{ + return has_key_prefixed (self, + RETRO_CORE_DESCRIPTOR_PLATFORM_GROUP_PREFIX, + platform, + RETRO_CORE_DESCRIPTOR_PLATFORM_FIRMWARES_KEY, + error); +} + +/** + * retro_core_descriptor_has_firmware_md5: + * @self: a #RetroCoreDescriptor + * @firmware: a firmware name + * @error: return location for a #GError, or %NULL + * + * Gets whether the firmware declares its MD5 fingerprint. + * + * Returns: whether the firmware declares its MD5 fingerprint + */ +gboolean +retro_core_descriptor_has_firmware_md5 (RetroCoreDescriptor *self, + const gchar *firmware, + GError **error) +{ + return has_key_prefixed (self, + RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX, + firmware, + RETRO_CORE_DESCRIPTOR_FIRMWARE_MD5_KEY, + error); +} + +/** + * retro_core_descriptor_has_firmware_sha512: + * @self: a #RetroCoreDescriptor + * @firmware: a firmware name + * @error: return location for a #GError, or %NULL + * + * Gets whether the firmware declares its SHA512 fingerprint. + * + * Returns: whether the firmware declares its SHA512 fingerprint + */ +gboolean +retro_core_descriptor_has_firmware_sha512 (RetroCoreDescriptor *self, + const gchar *firmware, + GError **error) +{ + return has_key_prefixed (self, + RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX, + firmware, + RETRO_CORE_DESCRIPTOR_FIRMWARE_SHA512_KEY, + error); +} + +/** + * retro_core_descriptor_get_mime_type + * @self: a #RetroCoreDescriptor + * @platform: a platform name + * @length: (out) (optional): return location for the number of returned + * strings, or %NULL + * @error: return location for a #GError, or %NULL + * + * Gets the list of MIME types accepted used by the core for this platform. + * + * Returns: (array zero-terminated=1 length=length) (element-type utf8) + * (transfer full): a %NULL-terminated string array or %NULL, the array should + * be freed with g_strfreev() + */ +gchar ** +retro_core_descriptor_get_mime_type (RetroCoreDescriptor *self, + const gchar *platform, + gsize *length, + GError **error) +{ + return get_string_list_prefixed (self, + RETRO_CORE_DESCRIPTOR_PLATFORM_GROUP_PREFIX, + platform, + RETRO_CORE_DESCRIPTOR_PLATFORM_MIME_TYPE_KEY, + length, + error); +} + +/** + * retro_core_descriptor_get_firmwares + * @self: a #RetroCoreDescriptor + * @platform: a platform name + * @length: (out) (optional): return location for the number of returned + * strings, or %NULL + * @error: return location for a #GError, or %NULL + * + * Gets the list of firmwares used by the core for this platform. + * + * Returns: (array zero-terminated=1 length=length) (element-type utf8) + * (transfer full): a %NULL-terminated string array or %NULL, the array should + * be freed with g_strfreev() + */ +gchar ** +retro_core_descriptor_get_firmwares (RetroCoreDescriptor *self, + const gchar *platform, + gsize *length, + GError **error) +{ + return get_string_list_prefixed (self, + RETRO_CORE_DESCRIPTOR_PLATFORM_GROUP_PREFIX, + platform, + RETRO_CORE_DESCRIPTOR_PLATFORM_FIRMWARES_KEY, + length, + error); +} + +/** + * retro_core_descriptor_get_firmware_path + * @self: a #RetroCoreDescriptor + * @firmware: a firmware name + * @error: return location for a #GError, or %NULL + * + * Gets the demanded path to the firmware file, or %NULL. + * + * Returns: (nullable) (transfer full): a string or %NULL, free it with g_free() + */ +gchar * +retro_core_descriptor_get_firmware_path (RetroCoreDescriptor *self, + const gchar *firmware, + GError **error) +{ + return get_string_prefixed (self, + RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX, + firmware, + RETRO_CORE_DESCRIPTOR_FIRMWARE_PATH_KEY, + error); +} + +/** + * retro_core_descriptor_get_firmware_md5 + * @self: a #RetroCoreDescriptor + * @firmware: a firmware name + * @error: return location for a #GError, or %NULL + * + * Gets the MD5 fingerprint of the firmware file, or %NULL. + * + * Returns: (nullable) (transfer full): a string or %NULL, free it with g_free() + */ +gchar * +retro_core_descriptor_get_firmware_md5 (RetroCoreDescriptor *self, + const gchar *firmware, + GError **error) +{ + return get_string_prefixed (self, + RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX, + firmware, + RETRO_CORE_DESCRIPTOR_FIRMWARE_MD5_KEY, + error); +} + +/** + * retro_core_descriptor_get_firmware_sha512 + * @self: a #RetroCoreDescriptor + * @firmware: a firmware name + * @error: return location for a #GError, or %NULL + * + * Gets the SHA512 fingerprint of the firmware file, or %NULL. + * + * Returns: (nullable) (transfer full): a string or %NULL, free it with g_free() + */ +gchar * +retro_core_descriptor_get_firmware_sha512 (RetroCoreDescriptor *self, + const gchar *firmware, + GError **error) +{ + return get_string_prefixed (self, + RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX, + firmware, + RETRO_CORE_DESCRIPTOR_FIRMWARE_SHA512_KEY, + error); +} + +/** + * retro_core_descriptor_get_is_firmware_mandatory: + * @self: a #RetroCoreDescriptor + * @firmware: a firmware name + * @error: return location for a #GError, or %NULL + * + * Gets whether the firmware is mandatory for the core to function. + * + * Returns: whether the firmware is mandatory for the core to function + */ +gboolean +retro_core_descriptor_get_is_firmware_mandatory (RetroCoreDescriptor *self, + const gchar *firmware, + GError **error) +{ + gchar *group; + gboolean result; + GError *tmp_error = NULL; + + g_return_val_if_fail (RETRO_IS_CORE_DESCRIPTOR (self), FALSE); + g_return_val_if_fail (firmware != NULL, FALSE); + + group = g_strconcat (RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX, firmware, NULL); + result = g_key_file_get_boolean (self->key_file, + group, + RETRO_CORE_DESCRIPTOR_FIRMWARE_MANDATORY_KEY, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_free (group); + g_propagate_error (error, tmp_error); + + return FALSE; + } + + g_free (group); + + return result; +} + +/** + * retro_core_descriptor_get_platform_supports_mime_types: + * @self: a #RetroCoreDescriptor + * @platform: a platform name + * @mime_types: (array zero-terminated=1) (element-type utf8): the MIME types + * @error: return location for a #GError, or %NULL + * + * Gets whether the platform supports all of the given MIME types. + * + * Returns: whether the platform supports all of the given MIME types + */ +gboolean +retro_core_descriptor_get_platform_supports_mime_types (RetroCoreDescriptor *self, + const gchar *platform, + const gchar * const *mime_types, + GError **error) +{ + gchar **supported_mime_types; + gsize supported_mime_types_length; + GError *tmp_error = NULL; + + g_return_val_if_fail (RETRO_IS_CORE_DESCRIPTOR (self), FALSE); + g_return_val_if_fail (platform != NULL, FALSE); + g_return_val_if_fail (mime_types != NULL, FALSE); + + supported_mime_types = + retro_core_descriptor_get_mime_type (self, + platform, + &supported_mime_types_length, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + + return FALSE; + } + + for (; *mime_types != NULL; mime_types++) + if (!g_strv_contains ((const char * const *) supported_mime_types, + *mime_types)) { + g_strfreev (supported_mime_types); + + return FALSE; + } + + g_strfreev (supported_mime_types); + + return TRUE; +} + +/** + * retro_core_descriptor_new: + * @filename: the file name of the core descriptor + * @error: return location for a #GError, or %NULL + * + * Creates a new #RetroCoreDescriptor. + * + * Returns: (transfer full): a new #RetroCoreDescriptor + */ +RetroCoreDescriptor * +retro_core_descriptor_new (const gchar *filename, + GError **error) +{ + RetroCoreDescriptor *self; + gchar ** groups; + gsize groups_length; + gsize i; + GError *tmp_error = NULL; + + g_return_val_if_fail (filename != NULL, NULL); + + self = g_object_new (RETRO_TYPE_CORE_DESCRIPTOR, NULL); + self->filename = g_strdup (filename); + self->key_file = g_key_file_new (); + g_key_file_load_from_file (self->key_file, + filename, + G_KEY_FILE_NONE, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_object_unref (self); + g_propagate_error (error, tmp_error); + + return NULL; + } + + retro_core_descriptor_check_libretro_group (self, &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_object_unref (self); + g_propagate_error (error, tmp_error); + + return NULL; + } + + groups = g_key_file_get_groups (self->key_file, &groups_length); + for (i = 0; i < groups_length; i++) { + if (g_str_has_prefix (groups[i], + RETRO_CORE_DESCRIPTOR_PLATFORM_GROUP_PREFIX)) { + retro_core_descriptor_check_platform_group (self, groups[i], &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_strfreev (groups); + g_object_unref (self); + g_propagate_error (error, tmp_error); + + return NULL; + } + } + else if (g_str_has_prefix (groups[i], + RETRO_CORE_DESCRIPTOR_FIRMWARE_GROUP_PREFIX)) { + retro_core_descriptor_check_firmware_group (self, groups[i], &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_strfreev (groups); + g_object_unref (self); + g_propagate_error (error, tmp_error); + + return NULL; + } + } + } + g_strfreev (groups); + + return self; +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-core-descriptor-error.c retro-gtk-0.14.0/retro-gtk/retro-core-descriptor-error.c --- retro-gtk-0.12.1/retro-gtk/retro-core-descriptor-error.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-core-descriptor-error.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -/* retro-core-descriptor-error.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from retro-core-descriptor-error.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include - - -typedef enum { - RETRO_CORE_DESCRIPTOR_ERROR_REQUIRED_GROUP_NOT_FOUND, - RETRO_CORE_DESCRIPTOR_ERROR_REQUIRED_KEY_NOT_FOUND, - RETRO_CORE_DESCRIPTOR_ERROR_FIRMWARE_NOT_FOUND -} RetroCoreDescriptorError; -#define RETRO_CORE_DESCRIPTOR_ERROR retro_core_descriptor_error_quark () - - -GQuark retro_core_descriptor_error_quark (void); - - -GQuark retro_core_descriptor_error_quark (void) { - return g_quark_from_static_string ("retro_core_descriptor_error-quark"); -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/retro-core-descriptor-error.vala retro-gtk-0.14.0/retro-gtk/retro-core-descriptor-error.vala --- retro-gtk-0.12.1/retro-gtk/retro-core-descriptor-error.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-core-descriptor-error.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -private errordomain Retro.CoreDescriptorError { - REQUIRED_GROUP_NOT_FOUND, - REQUIRED_KEY_NOT_FOUND, - FIRMWARE_NOT_FOUND, -} - diff -Nru retro-gtk-0.12.1/retro-gtk/retro-core-descriptor.h retro-gtk-0.14.0/retro-gtk/retro-core-descriptor.h --- retro-gtk-0.12.1/retro-gtk/retro-core-descriptor.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-core-descriptor.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,75 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_CORE_DESCRIPTOR_H +#define RETRO_CORE_DESCRIPTOR_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define RETRO_TYPE_CORE_DESCRIPTOR (retro_core_descriptor_get_type()) + +G_DECLARE_FINAL_TYPE (RetroCoreDescriptor, retro_core_descriptor, RETRO, CORE_DESCRIPTOR, GObject) + +RetroCoreDescriptor *retro_core_descriptor_new (const gchar *filename, + GError **error); +gboolean retro_core_descriptor_has_icon (RetroCoreDescriptor *self, + GError **error); +gchar *retro_core_descriptor_get_uri (RetroCoreDescriptor *self); +gchar *retro_core_descriptor_get_id (RetroCoreDescriptor *self); +gboolean retro_core_descriptor_get_is_game (RetroCoreDescriptor *self, + GError **error); +gboolean retro_core_descriptor_get_is_emulator (RetroCoreDescriptor *self, + GError **error); +char *retro_core_descriptor_get_name (RetroCoreDescriptor *self, + GError **error); +GIcon *retro_core_descriptor_get_icon (RetroCoreDescriptor *self, + GError **error); +char *retro_core_descriptor_get_module (RetroCoreDescriptor *self, + GError **error); +GFile *retro_core_descriptor_get_module_file (RetroCoreDescriptor *self, + GError **error); +gboolean retro_core_descriptor_has_platform (RetroCoreDescriptor *self, + const gchar *platform); +gboolean retro_core_descriptor_has_firmwares (RetroCoreDescriptor *self, + const gchar *platform, + GError **error); +gboolean retro_core_descriptor_has_firmware_md5 (RetroCoreDescriptor *self, + const gchar *firmware, + GError **error); +gboolean retro_core_descriptor_has_firmware_sha512 (RetroCoreDescriptor *self, + const gchar *firmware, + GError **error); +gchar **retro_core_descriptor_get_mime_type (RetroCoreDescriptor *self, + const gchar *platform, + gsize *length, + GError **error); +gchar **retro_core_descriptor_get_firmwares (RetroCoreDescriptor *self, + const gchar *platform, + gsize *length, + GError **error); +gchar *retro_core_descriptor_get_firmware_path (RetroCoreDescriptor *self, + const gchar *firmware, + GError **error); +gchar * retro_core_descriptor_get_firmware_md5 (RetroCoreDescriptor *self, + const gchar *firmware, + GError **error); +gchar * retro_core_descriptor_get_firmware_sha512 (RetroCoreDescriptor *self, + const gchar *firmware, + GError **error); +gboolean retro_core_descriptor_get_is_firmware_mandatory (RetroCoreDescriptor *self, + const gchar *firmware, + GError **error); +gboolean retro_core_descriptor_get_platform_supports_mime_types (RetroCoreDescriptor *self, + const gchar *platform, + const gchar * const *mime_types, + GError **error); + +G_END_DECLS + +#endif /* RETRO_CORE_DESCRIPTOR_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-core-descriptor.vala retro-gtk-0.14.0/retro-gtk/retro-core-descriptor.vala --- retro-gtk-0.12.1/retro-gtk/retro-core-descriptor.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-core-descriptor.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,178 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -public class Retro.CoreDescriptor : Object { - public class Platform : Object { - - private KeyFile key_file; - private string group; - - private Platform (KeyFile key_file, string platform) { - this.key_file = key_file; - group = PLATFORM_GROUP_PREFIX + platform; - } - } - - private const string LIBRETRO_GROUP = "Libretro"; - private const string PLATFORM_GROUP_PREFIX = "Platform:"; - private const string FIRMWARE_GROUP_PREFIX = "Firmware:"; - - private const string TYPE_KEY = "Type"; - private const string NAME_KEY = "Name"; - private const string ICON_KEY = "Icon"; - private const string MODULE_KEY = "Module"; - private const string LIBRETRO_VERSION_KEY = "LibretroVersion"; - - private const string PLATFORM_MIME_TYPE_KEY = "MimeType"; - private const string PLATFORM_FIRMWARES_KEY = "Firmwares"; - - private const string FIRMWARE_PATH_KEY = "Path"; - private const string FIRMWARE_MD5_KEY = "MD5"; - private const string FIRMWARE_SHA512_KEY = "SHA-512"; - private const string FIRMWARE_MANDATORY_KEY = "Mandatory"; - - private const string TYPE_GAME = "Game"; - private const string TYPE_EMULATOR = "Emulator"; - - private string filename; - private KeyFile key_file; - - public CoreDescriptor (string filename) throws Error, KeyFileError, FileError { - this.filename = filename; - key_file = new KeyFile (); - key_file.load_from_file (filename, KeyFileFlags.NONE); - - check_libretro_group (); - - foreach (var group in key_file.get_groups ()) { - if (group.has_prefix (PLATFORM_GROUP_PREFIX)) - check_platform_group (group); - else if (group.has_prefix (FIRMWARE_GROUP_PREFIX)) - check_firmware_group (group); - } - } - - public bool has_icon () throws KeyFileError { - return key_file.has_key (LIBRETRO_GROUP, ICON_KEY); - } - - public string get_uri () { - var file = File.new_for_path (filename); - - return file.get_uri (); - } - - public string get_id () { - return Path.get_basename (filename); - } - - public bool get_is_game () throws KeyFileError { - return key_file.get_string (LIBRETRO_GROUP, TYPE_KEY) == TYPE_GAME; - } - - public bool get_is_emulator () throws KeyFileError { - return key_file.get_string (LIBRETRO_GROUP, TYPE_KEY) == TYPE_EMULATOR; - } - - public string get_name () throws KeyFileError { - return key_file.get_string (LIBRETRO_GROUP, NAME_KEY); - } - - public GLib.Icon get_icon () throws KeyFileError { - var icon_name = key_file.get_string (LIBRETRO_GROUP, ICON_KEY); - - return new ThemedIcon (icon_name); - } - - public string get_module () throws KeyFileError { - return key_file.get_string (LIBRETRO_GROUP, MODULE_KEY); - } - - public File? get_module_file () throws KeyFileError { - var file = File.new_for_path (filename); - var dir = file.get_parent (); - if (dir == null) - return null; - - var module = get_module (); - var module_file = dir.get_child (module); - if (!module_file.query_exists ()) - return null; - - return module_file; - } - - public bool has_platform (string platform) { - return key_file.has_group (PLATFORM_GROUP_PREFIX + platform); - } - - public bool has_firmwares (string platform) throws KeyFileError { - return key_file.has_key (PLATFORM_GROUP_PREFIX + platform, PLATFORM_FIRMWARES_KEY); - } - - public bool has_firmware_md5 (string firmware) throws KeyFileError { - return key_file.has_key (FIRMWARE_GROUP_PREFIX + firmware, FIRMWARE_MD5_KEY); - } - - public bool has_firmware_sha512 (string firmware) throws KeyFileError { - return key_file.has_key (FIRMWARE_GROUP_PREFIX + firmware, FIRMWARE_SHA512_KEY); - } - - public string[] get_mime_type (string platform) throws KeyFileError { - return key_file.get_string_list (PLATFORM_GROUP_PREFIX + platform, PLATFORM_MIME_TYPE_KEY); - } - - public string[] get_firmwares (string platform) throws KeyFileError { - return key_file.get_string_list (PLATFORM_GROUP_PREFIX + platform, PLATFORM_FIRMWARES_KEY); - } - - public string get_firmware_path (string firmware) throws KeyFileError { - return key_file.get_string (FIRMWARE_GROUP_PREFIX + firmware, FIRMWARE_PATH_KEY); - } - - public string get_firmware_md5 (string firmware) throws KeyFileError { - return key_file.get_string (FIRMWARE_GROUP_PREFIX + firmware, FIRMWARE_MD5_KEY); - } - - public string get_firmware_sha512 (string firmware) throws KeyFileError { - return key_file.get_string (FIRMWARE_GROUP_PREFIX + firmware, FIRMWARE_SHA512_KEY); - } - - public bool get_is_firmware_mandatory (string firmware) throws KeyFileError { - return key_file.get_boolean (FIRMWARE_GROUP_PREFIX + firmware, FIRMWARE_MANDATORY_KEY); - } - - public bool get_platform_supports_mime_types (string platform, string[] mime_types) throws KeyFileError { - var supported_mime_types = get_mime_type (platform); - foreach (var mime_type in mime_types) - if (!(mime_type in supported_mime_types)) - return false; - - return true; - } - - private void check_libretro_group () throws CoreDescriptorError, KeyFileError { - check_has_required_key (LIBRETRO_GROUP, TYPE_KEY); - check_has_required_key (LIBRETRO_GROUP, NAME_KEY); - check_has_required_key (LIBRETRO_GROUP, MODULE_KEY); - check_has_required_key (LIBRETRO_GROUP, LIBRETRO_VERSION_KEY); - } - - private void check_platform_group (string group) throws CoreDescriptorError, KeyFileError { - check_has_required_key (group, PLATFORM_MIME_TYPE_KEY); - if (key_file.has_key (group, PLATFORM_FIRMWARES_KEY)) - foreach (var firmware in key_file.get_string_list (group, PLATFORM_FIRMWARES_KEY)) - if (!key_file.has_group (FIRMWARE_GROUP_PREFIX + firmware)) - throw new CoreDescriptorError.FIRMWARE_NOT_FOUND ("%s isn't a valid Libretro core descriptor: [%s] mentioned in [%s] not found.", filename, FIRMWARE_GROUP_PREFIX + firmware, group); - } - - private void check_firmware_group (string group) throws CoreDescriptorError, KeyFileError { - check_has_required_key (group, FIRMWARE_PATH_KEY); - check_has_required_key (group, FIRMWARE_MANDATORY_KEY); - } - - private void check_has_required_key (string group, string key) throws CoreDescriptorError, KeyFileError { - if (!key_file.has_key (LIBRETRO_GROUP, TYPE_KEY)) - throw new CoreDescriptorError.REQUIRED_KEY_NOT_FOUND ("%s isn't a valid Libretro core descriptor: required key %s not found in group [%s].", filename, key, group); - } -} - diff -Nru retro-gtk-0.12.1/retro-gtk/retro-core.h retro-gtk-0.14.0/retro-gtk/retro-core.h --- retro-gtk-0.12.1/retro-gtk/retro-core.h 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-core.h 2018-03-10 13:02:01.000000000 +0000 @@ -3,41 +3,67 @@ #ifndef RETRO_CORE_H #define RETRO_CORE_H -#include "retro-disk-control-callback.h" -#include "retro-gtk-internal.h" -#include "retro-module.h" -#include "retro-rotation.h" +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include +#include "retro-controller-iterator.h" +#include "retro-memory-type.h" G_BEGIN_DECLS -typedef struct { - void (*callback) (guchar down, guint keycode, guint32 character, guint16 key_modifiers); -} RetroKeyboardCallback; - -#define RETRO_CORE_ENVIRONMENT_INTERNAL(core) ((RetroCoreEnvironmentInternal *) ((core)->environment_internal)) - -typedef struct _RetroCoreEnvironmentInternal RetroCoreEnvironmentInternal; - -struct _RetroCoreEnvironmentInternal { - RetroModule *module; - RetroDiskControlCallback *disk_control_callback; - gchar **media_uris; - RetroSystemInfo *system_info; - gfloat aspect_ratio; - gboolean overscan; - RetroPixelFormat pixel_format; - RetroRotation rotation; - gdouble sample_rate; - - RetroKeyboardCallback keyboard_callback; -}; - -gchar *retro_core_get_name (RetroCore *self); -void retro_core_set_system_av_info (RetroCore *self, - RetroSystemAvInfo *system_av_info); -void retro_core_set_controller_port_device (RetroCore *self, - guint port, - RetroDeviceType device); +#define RETRO_TYPE_CORE (retro_core_get_type()) + +G_DECLARE_FINAL_TYPE (RetroCore, retro_core, RETRO, CORE, GObject) + +RetroCore *retro_core_new (const gchar *filename); +guint retro_core_get_api_version (RetroCore *self); +const gchar *retro_core_get_filename (RetroCore *self); +const gchar *retro_core_get_system_directory (RetroCore *self); +void retro_core_set_system_directory (RetroCore *self, + const gchar *system_directory); +const gchar *retro_core_get_content_directory (RetroCore *self); +void retro_core_set_content_directory (RetroCore *self, + const gchar *content_directory); +const gchar *retro_core_get_save_directory (RetroCore *self); +void retro_core_set_save_directory (RetroCore *self, + const gchar *save_directory); +gboolean retro_core_get_is_initiated (RetroCore *self); +gboolean retro_core_get_game_loaded (RetroCore *self); +gboolean retro_core_get_support_no_game (RetroCore *self); +gdouble retro_core_get_frames_per_second (RetroCore *self); +void retro_core_boot (RetroCore *self, + GError **error); +void retro_core_set_medias (RetroCore *self, + const gchar * const *uris); +void retro_core_set_current_media (RetroCore *self, + guint media_index, + GError **error); +void retro_core_reset (RetroCore *self); +void retro_core_run (RetroCore *self); +gboolean retro_core_get_can_access_state (RetroCore *self); +GBytes *retro_core_get_state (RetroCore *self, + GError **error); +void retro_core_set_state (RetroCore *self, + GBytes *bytes, + GError **error); +gsize retro_core_get_memory_size (RetroCore *self, + RetroMemoryType memory_type); +GBytes *retro_core_get_memory (RetroCore *self, + RetroMemoryType memory_type); +void retro_core_set_memory (RetroCore *self, + RetroMemoryType memory_type, + GBytes *bytes); +void retro_core_set_default_controller (RetroCore *self, + RetroControllerType controller_type, + RetroController *controller); +void retro_core_set_controller (RetroCore *self, + guint port, + RetroController *controller); +void retro_core_set_keyboard (RetroCore *self, + GtkWidget *widget); +RetroControllerIterator *retro_core_iterate_controllers (RetroCore *self); G_END_DECLS diff -Nru retro-gtk-0.12.1/retro-gtk/retro-core-private.h retro-gtk-0.14.0/retro-gtk/retro-core-private.h --- retro-gtk-0.12.1/retro-gtk/retro-core-private.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-core-private.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,80 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_CORE_PRIVATE_H +#define RETRO_CORE_PRIVATE_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include "retro-core.h" +#include "retro-disk-control-callback.h" +#include "retro-input.h" +#include "retro-input-descriptor.h" +#include "retro-module.h" +#include "retro-options.h" +#include "retro-pixel-format.h" +#include "retro-rotation.h" + +G_BEGIN_DECLS + +typedef struct { + void (*callback) (guchar down, guint keycode, guint32 character, guint16 key_modifiers); +} RetroKeyboardCallback; + +struct _RetroCore +{ + GObject parent_instance; + gchar *filename; + gchar *system_directory; + gchar *libretro_path; + gchar *content_directory; + gchar *save_directory; + gboolean is_initiated; + gboolean game_loaded; + gboolean support_no_game; + gdouble frames_per_second; + + RetroModule *module; + RetroDiskControlCallback *disk_control_callback; + gchar **media_uris; + RetroSystemInfo *system_info; + gfloat aspect_ratio; + gboolean overscan; + RetroPixelFormat pixel_format; + RetroRotation rotation; + gdouble sample_rate; + + RetroKeyboardCallback keyboard_callback; + RetroController *default_controllers[RETRO_CONTROLLER_TYPE_COUNT]; + GHashTable *controllers; + GtkWidget *keyboard_widget; + gulong key_press_event_id; + gulong key_release_event_id; + RetroOptions *options; +}; + +void retro_core_push_cb_data (RetroCore *self); +void retro_core_pop_cb_data (void); +RetroCore *retro_core_get_cb_data (void); +const gchar *retro_core_get_libretro_path (RetroCore *self); +void retro_core_set_support_no_game (RetroCore *self, + gboolean support_no_game); +gchar *retro_core_get_name (RetroCore *self); +void retro_core_set_system_av_info (RetroCore *self, + RetroSystemAvInfo *system_av_info); +void retro_core_poll_controllers (RetroCore *self); +gint16 retro_core_get_controller_input_state (RetroCore *self, + uint port, + RetroInput *input); +guint64 retro_core_get_controller_capabilities (RetroCore *self); +void retro_core_set_controller_port_device (RetroCore *self, + guint port, + RetroControllerType controller_type); +void retro_core_set_controller_descriptors (RetroCore *self, + RetroInputDescriptor *input_descriptors, + gsize length); + +G_END_DECLS + +#endif /* RETRO_CORE_PRIVATE_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-core-view.c retro-gtk-0.14.0/retro-gtk/retro-core-view.c --- retro-gtk-0.12.1/retro-gtk/retro-core-view.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-core-view.c 2018-03-10 13:02:01.000000000 +0000 @@ -1,443 +1,812 @@ -/* retro-core-view.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from retro-core-view.vala, do not modify */ +// This file is part of retro-gtk. License: GPL-3.0+. -/* This file is part of retro-gtk. License: GPL-3.0+.*/ +#include "retro-core-view.h" -#include -#include -#include -#include -#include -#include - - -#define RETRO_TYPE_CORE_VIEW (retro_core_view_get_type ()) -#define RETRO_CORE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CORE_VIEW, RetroCoreView)) -#define RETRO_CORE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CORE_VIEW, RetroCoreViewClass)) -#define RETRO_IS_CORE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CORE_VIEW)) -#define RETRO_IS_CORE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CORE_VIEW)) -#define RETRO_CORE_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CORE_VIEW, RetroCoreViewClass)) - -typedef struct _RetroCoreView RetroCoreView; -typedef struct _RetroCoreViewClass RetroCoreViewClass; -typedef struct _RetroCoreViewPrivate RetroCoreViewPrivate; - -#define RETRO_TYPE_CAIRO_DISPLAY (retro_cairo_display_get_type ()) -#define RETRO_CAIRO_DISPLAY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CAIRO_DISPLAY, RetroCairoDisplay)) -#define RETRO_CAIRO_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CAIRO_DISPLAY, RetroCairoDisplayClass)) -#define RETRO_IS_CAIRO_DISPLAY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CAIRO_DISPLAY)) -#define RETRO_IS_CAIRO_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CAIRO_DISPLAY)) -#define RETRO_CAIRO_DISPLAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CAIRO_DISPLAY, RetroCairoDisplayClass)) - -typedef struct _RetroCairoDisplay RetroCairoDisplay; -typedef struct _RetroCairoDisplayClass RetroCairoDisplayClass; - -#define RETRO_TYPE_CORE (retro_core_get_type ()) -#define RETRO_CORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CORE, RetroCore)) -#define RETRO_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CORE, RetroCoreClass)) -#define RETRO_IS_CORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CORE)) -#define RETRO_IS_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CORE)) -#define RETRO_CORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CORE, RetroCoreClass)) - -typedef struct _RetroCore RetroCore; -typedef struct _RetroCoreClass RetroCoreClass; -enum { - RETRO_CORE_VIEW_DUMMY_PROPERTY, - RETRO_CORE_VIEW_CAN_GRAB_POINTER, - RETRO_CORE_VIEW_SNAP_POINTER_TO_BORDERS, - RETRO_CORE_VIEW_LAST_PROPERTY -}; -static GParamSpec* retro_core_view_properties[RETRO_CORE_VIEW_LAST_PROPERTY]; -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) -#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL))) - -#define RETRO_TYPE_DEVICE_TYPE (retro_device_type_get_type ()) - -#define RETRO_TYPE_INPUT_DEVICE (retro_input_device_get_type ()) -#define RETRO_INPUT_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_INPUT_DEVICE, RetroInputDevice)) -#define RETRO_IS_INPUT_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_INPUT_DEVICE)) -#define RETRO_INPUT_DEVICE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_INPUT_DEVICE, RetroInputDeviceIface)) - -typedef struct _RetroInputDevice RetroInputDevice; -typedef struct _RetroInputDeviceIface RetroInputDeviceIface; - -struct _RetroCoreView { - GtkEventBox parent_instance; - RetroCoreViewPrivate * priv; - RetroCairoDisplay* display; - GHashTable* key_state; - GHashTable* mouse_button_state; - GdkScreen* grabbed_screen; - GdkDevice* grabbed_device; - gdouble mouse_x_delta; - gdouble mouse_y_delta; - gint screen_center_x; - gint screen_center_y; - gint position_on_grab_x; - gint position_on_grab_y; - gboolean pointer_is_on_display; - gdouble pointer_x; - gdouble pointer_y; +#include +#include "retro-cairo-display.h" +#include "retro-gl-display.h" +#include "retro-controller-codes.h" +#include "retro-core-view-controller.h" +#include "retro-pa-player.h" + +static guint16 DEFAULT_KEY_JOYPAD_BUTTON_MAPPING[RETRO_JOYPAD_ID_COUNT] = { + KEY_S, + KEY_A, + KEY_BACKSPACE, + KEY_ENTER, + KEY_UP, + KEY_DOWN, + KEY_LEFT, + KEY_RIGHT, + KEY_D, + KEY_W, + KEY_Q, + KEY_E, + KEY_Z, + KEY_C, + KEY_1, + KEY_3, }; -struct _RetroCoreViewClass { - GtkEventBoxClass parent_class; +struct _RetroCoreView +{ + GtkEventBox parent_instance; + RetroCore *core; + RetroGLDisplay *display; + GBinding *sensitive_binding; + RetroPaPlayer *audio_player; + gboolean can_grab_pointer; + gboolean snap_pointer_to_borders; + GHashTable *key_state; + GHashTable *mouse_button_state; + GdkScreen *grabbed_screen; + GdkDevice *grabbed_device; + gdouble mouse_x_delta; + gdouble mouse_y_delta; + gint screen_center_x; + gint screen_center_y; + gint position_on_grab_x; + gint position_on_grab_y; + gboolean pointer_is_on_display; + gdouble pointer_x; + gdouble pointer_y; }; -struct _RetroCoreViewPrivate { - gboolean _can_grab_pointer; - gboolean _snap_pointer_to_borders; - RetroCore* core; -}; +G_DEFINE_TYPE (RetroCoreView, retro_core_view, GTK_TYPE_EVENT_BOX) -typedef enum { - RETRO_DEVICE_TYPE_TYPE_MASK = 0xff, - RETRO_DEVICE_TYPE_NONE = 0, - RETRO_DEVICE_TYPE_JOYPAD = 1, - RETRO_DEVICE_TYPE_MOUSE = 2, - RETRO_DEVICE_TYPE_KEYBOARD = 3, - RETRO_DEVICE_TYPE_LIGHTGUN = 4, - RETRO_DEVICE_TYPE_ANALOG = 5, - RETRO_DEVICE_TYPE_POINTER = 6 -} RetroDeviceType; - -struct _RetroInputDeviceIface { - GTypeInterface parent_iface; - void (*poll) (RetroInputDevice* self); - gint16 (*get_input_state) (RetroInputDevice* self, RetroDeviceType device, guint index, guint id); - RetroDeviceType (*get_device_type) (RetroInputDevice* self); - guint64 (*get_device_capabilities) (RetroInputDevice* self); +enum { + PROP_CAN_GRAB_POINTER = 1, + PROP_SNAP_POINTER_TO_BORDERS, + N_PROPS, }; +static GParamSpec *properties [N_PROPS]; -static gpointer retro_core_view_parent_class = NULL; +/* Private */ -GType retro_core_view_get_type (void) G_GNUC_CONST; -GType retro_cairo_display_get_type (void) G_GNUC_CONST; -GType retro_core_get_type (void) G_GNUC_CONST; -#define RETRO_CORE_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), RETRO_TYPE_CORE_VIEW, RetroCoreViewPrivate)) -void retro_core_view_set_core (RetroCoreView* self, RetroCore* core); -void retro_cairo_display_set_core (RetroCairoDisplay* self, RetroCore* core); -RetroCairoDisplay* retro_core_view_get_display (RetroCoreView* self); -GType retro_device_type_get_type (void) G_GNUC_CONST; -GType retro_input_device_get_type (void) G_GNUC_CONST; -RetroInputDevice* retro_core_view_as_input_device (RetroCoreView* self, RetroDeviceType device_type); -gint16 retro_core_view_get_input_state (RetroCoreView* self, RetroDeviceType device, guint index, guint id); -guint64 retro_core_view_get_device_capabilities (RetroCoreView* self); -gboolean retro_core_view_get_is_pointer_grabbed (RetroCoreView* self); -void retro_core_view_ungrab (RetroCoreView* self); -gboolean retro_core_view_on_key_press_event (RetroCoreView* self, GtkWidget* source, GdkEventKey* event); -gboolean retro_core_view_on_key_release_event (RetroCoreView* self, GtkWidget* source, GdkEventKey* event); -gboolean retro_core_view_on_button_press_event (RetroCoreView* self, GtkWidget* source, GdkEventButton* event); -gboolean retro_core_view_on_button_release_event (RetroCoreView* self, GtkWidget* source, GdkEventButton* event); -gboolean retro_core_view_on_focus_out_event (RetroCoreView* self, GtkWidget* source, GdkEventFocus* event); -gboolean retro_core_view_on_motion_notify_event (RetroCoreView* self, GtkWidget* source, GdkEventMotion* event); -RetroCoreView* retro_core_view_new (void); -RetroCoreView* retro_core_view_construct (GType object_type); -gboolean retro_core_view_get_can_grab_pointer (RetroCoreView* self); -void retro_core_view_set_can_grab_pointer (RetroCoreView* self, gboolean value); -gboolean retro_core_view_get_snap_pointer_to_borders (RetroCoreView* self); -void retro_core_view_set_snap_pointer_to_borders (RetroCoreView* self, gboolean value); -static GObject * retro_core_view_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); -RetroCairoDisplay* retro_cairo_display_new (void); -RetroCairoDisplay* retro_cairo_display_construct (GType object_type); -static void _g_free0_ (gpointer var); -static gboolean _retro_core_view_on_key_press_event_gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self); -static gboolean _retro_core_view_on_key_release_event_gtk_widget_key_release_event (GtkWidget* _sender, GdkEventKey* event, gpointer self); -static gboolean _retro_core_view_on_button_press_event_gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); -static gboolean _retro_core_view_on_button_release_event_gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); -static gboolean _retro_core_view_on_focus_out_event_gtk_widget_focus_out_event (GtkWidget* _sender, GdkEventFocus* event, gpointer self); -static gboolean _retro_core_view_on_motion_notify_event_gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self); -static void retro_core_view_finalize (GObject * obj); -static void _vala_retro_core_view_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec); -static void _vala_retro_core_view_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec); - - -static gpointer _g_object_ref0 (gpointer self) { - return self ? g_object_ref (self) : NULL; -} - - -void retro_core_view_set_core (RetroCoreView* self, RetroCore* core) { - RetroCore* _tmp0_; - RetroCore* _tmp2_; - RetroCore* _tmp3_; - RetroCore* _tmp4_; - g_return_if_fail (self != NULL); - _tmp0_ = self->priv->core; - if (_tmp0_ != NULL) { - RetroCairoDisplay* _tmp1_; - _tmp1_ = self->display; - retro_cairo_display_set_core (_tmp1_, NULL); - } - _tmp2_ = core; - _tmp3_ = _g_object_ref0 (_tmp2_); - _g_object_unref0 (self->priv->core); - self->priv->core = _tmp3_; - _tmp4_ = core; - if (_tmp4_ != NULL) { - RetroCairoDisplay* _tmp5_; - RetroCore* _tmp6_; - _tmp5_ = self->display; - _tmp6_ = core; - retro_cairo_display_set_core (_tmp5_, _tmp6_); - } -} - - -RetroCairoDisplay* retro_core_view_get_display (RetroCoreView* self) { - RetroCairoDisplay* result = NULL; - RetroCairoDisplay* _tmp0_; - RetroCairoDisplay* _tmp1_; - g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = self->display; - _tmp1_ = _g_object_ref0 (_tmp0_); - result = _tmp1_; - return result; +static void +set_input_pressed (GHashTable *table, + guint input) +{ + static gboolean value = TRUE; + + if (g_hash_table_contains (table, &input)) + g_hash_table_replace (table, + g_memdup (&input, sizeof (guint)), + g_memdup (&value, sizeof (gboolean))); + else + g_hash_table_insert (table, + g_memdup (&input, sizeof (guint)), + g_memdup (&value, sizeof (gboolean))); } +static void +set_input_released (GHashTable *table, + guint input) +{ + g_hash_table_remove (table, &input); +} -RetroCoreView* retro_core_view_construct (GType object_type) { - RetroCoreView * self = NULL; - self = (RetroCoreView*) g_object_new (object_type, NULL); - return self; -} - - -RetroCoreView* retro_core_view_new (void) { - return retro_core_view_construct (RETRO_TYPE_CORE_VIEW); -} - - -gboolean retro_core_view_get_can_grab_pointer (RetroCoreView* self) { - gboolean result; - gboolean _tmp0_; - g_return_val_if_fail (self != NULL, FALSE); - _tmp0_ = self->priv->_can_grab_pointer; - result = _tmp0_; - return result; -} - - -void retro_core_view_set_can_grab_pointer (RetroCoreView* self, gboolean value) { - gboolean _tmp0_; - gboolean _tmp1_; - gboolean _tmp2_; - gboolean _tmp3_ = FALSE; - gboolean _tmp4_; - g_return_if_fail (self != NULL); - _tmp0_ = value; - _tmp1_ = self->priv->_can_grab_pointer; - if (_tmp0_ == _tmp1_) { - return; - } - _tmp2_ = value; - self->priv->_can_grab_pointer = _tmp2_; - _tmp4_ = self->priv->_can_grab_pointer; - if (_tmp4_ == FALSE) { - gboolean _tmp5_; - _tmp5_ = retro_core_view_get_is_pointer_grabbed (self); - _tmp3_ = _tmp5_; - } else { - _tmp3_ = FALSE; - } - if (_tmp3_) { - retro_core_view_ungrab (self); - } - g_object_notify_by_pspec ((GObject *) self, retro_core_view_properties[RETRO_CORE_VIEW_CAN_GRAB_POINTER]); -} - - -gboolean retro_core_view_get_snap_pointer_to_borders (RetroCoreView* self) { - gboolean result; - gboolean _tmp0_; - g_return_val_if_fail (self != NULL, FALSE); - _tmp0_ = self->priv->_snap_pointer_to_borders; - result = _tmp0_; - return result; -} - - -void retro_core_view_set_snap_pointer_to_borders (RetroCoreView* self, gboolean value) { - g_return_if_fail (self != NULL); - if (retro_core_view_get_snap_pointer_to_borders (self) != value) { - gboolean _tmp0_; - _tmp0_ = value; - self->priv->_snap_pointer_to_borders = _tmp0_; - g_object_notify_by_pspec ((GObject *) self, retro_core_view_properties[RETRO_CORE_VIEW_SNAP_POINTER_TO_BORDERS]); - } -} - - -static void _g_free0_ (gpointer var) { - (var == NULL) ? NULL : (var = (g_free (var), NULL)); -} - - -static gboolean _retro_core_view_on_key_press_event_gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self) { - gboolean result; - result = retro_core_view_on_key_press_event ((RetroCoreView*) self, _sender, event); - return result; -} - - -static gboolean _retro_core_view_on_key_release_event_gtk_widget_key_release_event (GtkWidget* _sender, GdkEventKey* event, gpointer self) { - gboolean result; - result = retro_core_view_on_key_release_event ((RetroCoreView*) self, _sender, event); - return result; -} - - -static gboolean _retro_core_view_on_button_press_event_gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { - gboolean result; - result = retro_core_view_on_button_press_event ((RetroCoreView*) self, _sender, event); - return result; -} - - -static gboolean _retro_core_view_on_button_release_event_gtk_widget_button_release_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { - gboolean result; - result = retro_core_view_on_button_release_event ((RetroCoreView*) self, _sender, event); - return result; -} - - -static gboolean _retro_core_view_on_focus_out_event_gtk_widget_focus_out_event (GtkWidget* _sender, GdkEventFocus* event, gpointer self) { - gboolean result; - result = retro_core_view_on_focus_out_event ((RetroCoreView*) self, _sender, event); - return result; -} - - -static gboolean _retro_core_view_on_motion_notify_event_gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self) { - gboolean result; - result = retro_core_view_on_motion_notify_event ((RetroCoreView*) self, _sender, event); - return result; -} - - -static GObject * retro_core_view_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { - GObject * obj; - GObjectClass * parent_class; - RetroCoreView * self; - RetroCairoDisplay* _tmp0_; - RetroCairoDisplay* _tmp1_; - RetroCairoDisplay* _tmp2_; - RetroCairoDisplay* _tmp3_; - GHashFunc _tmp4_; - GEqualFunc _tmp5_; - GHashTable* _tmp6_; - GHashFunc _tmp7_; - GEqualFunc _tmp8_; - GHashTable* _tmp9_; - parent_class = G_OBJECT_CLASS (retro_core_view_parent_class); - obj = parent_class->constructor (type, n_construct_properties, construct_properties); - self = G_TYPE_CHECK_INSTANCE_CAST (obj, RETRO_TYPE_CORE_VIEW, RetroCoreView); - g_object_set ((GtkWidget*) self, "can-focus", TRUE, NULL); - _tmp0_ = retro_cairo_display_new (); - g_object_ref_sink (_tmp0_); - _g_object_unref0 (self->display); - self->display = _tmp0_; - _tmp1_ = self->display; - gtk_widget_set_visible ((GtkWidget*) _tmp1_, TRUE); - _tmp2_ = self->display; - g_object_set ((GtkWidget*) _tmp2_, "can-focus", FALSE, NULL); - _tmp3_ = self->display; - gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp3_); - _tmp4_ = g_int_hash; - _tmp5_ = g_int_equal; - _tmp6_ = g_hash_table_new_full (_tmp4_, _tmp5_, _g_free0_, _g_free0_); - _g_hash_table_unref0 (self->key_state); - self->key_state = _tmp6_; - _tmp7_ = g_int_hash; - _tmp8_ = g_int_equal; - _tmp9_ = g_hash_table_new_full (_tmp7_, _tmp8_, _g_free0_, _g_free0_); - _g_hash_table_unref0 (self->mouse_button_state); - self->mouse_button_state = _tmp9_; - g_signal_connect_object ((GtkWidget*) self, "key-press-event", (GCallback) _retro_core_view_on_key_press_event_gtk_widget_key_press_event, self, 0); - g_signal_connect_object ((GtkWidget*) self, "key-release-event", (GCallback) _retro_core_view_on_key_release_event_gtk_widget_key_release_event, self, 0); - g_signal_connect_object ((GtkWidget*) self, "button-press-event", (GCallback) _retro_core_view_on_button_press_event_gtk_widget_button_press_event, self, 0); - g_signal_connect_object ((GtkWidget*) self, "button-release-event", (GCallback) _retro_core_view_on_button_release_event_gtk_widget_button_release_event, self, 0); - g_signal_connect_object ((GtkWidget*) self, "focus-out-event", (GCallback) _retro_core_view_on_focus_out_event_gtk_widget_focus_out_event, self, 0); - g_signal_connect_object ((GtkWidget*) self, "motion-notify-event", (GCallback) _retro_core_view_on_motion_notify_event_gtk_widget_motion_notify_event, self, 0); - return obj; -} - - -static void retro_core_view_class_init (RetroCoreViewClass * klass) { - retro_core_view_parent_class = g_type_class_peek_parent (klass); - g_type_class_add_private (klass, sizeof (RetroCoreViewPrivate)); - G_OBJECT_CLASS (klass)->get_property = _vala_retro_core_view_get_property; - G_OBJECT_CLASS (klass)->set_property = _vala_retro_core_view_set_property; - G_OBJECT_CLASS (klass)->constructor = retro_core_view_constructor; - G_OBJECT_CLASS (klass)->finalize = retro_core_view_finalize; - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_CORE_VIEW_CAN_GRAB_POINTER, retro_core_view_properties[RETRO_CORE_VIEW_CAN_GRAB_POINTER] = g_param_spec_boolean ("can-grab-pointer", "can-grab-pointer", "can-grab-pointer", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_CORE_VIEW_SNAP_POINTER_TO_BORDERS, retro_core_view_properties[RETRO_CORE_VIEW_SNAP_POINTER_TO_BORDERS] = g_param_spec_boolean ("snap-pointer-to-borders", "snap-pointer-to-borders", "snap-pointer-to-borders", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); -} - - -static void retro_core_view_instance_init (RetroCoreView * self) { - self->priv = RETRO_CORE_VIEW_GET_PRIVATE (self); -} - - -static void retro_core_view_finalize (GObject * obj) { - RetroCoreView * self; - self = G_TYPE_CHECK_INSTANCE_CAST (obj, RETRO_TYPE_CORE_VIEW, RetroCoreView); - _g_object_unref0 (self->priv->core); - _g_object_unref0 (self->display); - _g_hash_table_unref0 (self->key_state); - _g_hash_table_unref0 (self->mouse_button_state); - _g_object_unref0 (self->grabbed_screen); - _g_object_unref0 (self->grabbed_device); - G_OBJECT_CLASS (retro_core_view_parent_class)->finalize (obj); -} - - -GType retro_core_view_get_type (void) { - static volatile gsize retro_core_view_type_id__volatile = 0; - if (g_once_init_enter (&retro_core_view_type_id__volatile)) { - static const GTypeInfo g_define_type_info = { sizeof (RetroCoreViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) retro_core_view_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RetroCoreView), 0, (GInstanceInitFunc) retro_core_view_instance_init, NULL }; - GType retro_core_view_type_id; - retro_core_view_type_id = g_type_register_static (gtk_event_box_get_type (), "RetroCoreView", &g_define_type_info, 0); - g_once_init_leave (&retro_core_view_type_id__volatile, retro_core_view_type_id); - } - return retro_core_view_type_id__volatile; -} - - -static void _vala_retro_core_view_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { - RetroCoreView * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, RETRO_TYPE_CORE_VIEW, RetroCoreView); - switch (property_id) { - case RETRO_CORE_VIEW_CAN_GRAB_POINTER: - g_value_set_boolean (value, retro_core_view_get_can_grab_pointer (self)); - break; - case RETRO_CORE_VIEW_SNAP_POINTER_TO_BORDERS: - g_value_set_boolean (value, retro_core_view_get_snap_pointer_to_borders (self)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - - -static void _vala_retro_core_view_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { - RetroCoreView * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, RETRO_TYPE_CORE_VIEW, RetroCoreView); - switch (property_id) { - case RETRO_CORE_VIEW_CAN_GRAB_POINTER: - retro_core_view_set_can_grab_pointer (self, g_value_get_boolean (value)); - break; - case RETRO_CORE_VIEW_SNAP_POINTER_TO_BORDERS: - retro_core_view_set_snap_pointer_to_borders (self, g_value_get_boolean (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } +static void +reset_input (GHashTable *table) +{ + g_hash_table_remove_all (table); +} + +static gboolean +get_input_state (GHashTable *table, + guint input) +{ + return g_hash_table_contains (table, &input); +} + +static gint16 +axis_to_retro_axis (gdouble value) +{ + if (value <= -1.0) + return -G_MAXINT16; + + if (value >= 1.0) + return G_MAXINT16; + + return (gint16) (value * G_MAXINT16); +} + +static void +recenter_pointer (RetroCoreView *self) +{ + gdk_device_warp (self->grabbed_device, self->grabbed_screen, + self->screen_center_x, self->screen_center_y); +} + +static gboolean +retro_core_view_get_is_pointer_grabbed (RetroCoreView *self) +{ + g_return_val_if_fail (RETRO_IS_CORE_VIEW (self), FALSE); + + return self->grabbed_device != NULL; +} + +static void +retro_core_view_grab (RetroCoreView *self, + GdkDevice *device, + GdkWindow *window, + GdkEvent *event) +{ + GdkSeat *seat; + GdkDisplay *display; + GdkCursor *cursor; + GdkScreen *screen = NULL; + GdkMonitor *monitor; + GdkRectangle monitor_geometry; + + g_return_if_fail (RETRO_IS_CORE_VIEW (self)); + g_return_if_fail (device != NULL); + g_return_if_fail (window != NULL); + g_return_if_fail (event != NULL); + + if (self->grabbed_device != NULL) + g_object_unref (self->grabbed_device); + + if (self->grabbed_screen != NULL) + g_object_unref (self->grabbed_screen); + + self->grabbed_device = g_object_ref (device); + seat = gdk_device_get_seat (device); + display = gdk_device_get_display (device); + cursor = gdk_cursor_new_for_display (display, GDK_BLANK_CURSOR); + gdk_seat_grab (seat, window, GDK_SEAT_CAPABILITY_ALL_POINTING, FALSE, cursor, event, NULL, NULL); + monitor = gdk_display_get_monitor_at_window (display, window); + gdk_monitor_get_geometry (monitor, &monitor_geometry); + + gdk_device_get_position (device, &screen, &self->position_on_grab_x, &self->position_on_grab_y); + self->grabbed_screen = g_object_ref (screen); + self->screen_center_x = monitor_geometry.x + monitor_geometry.width / 2; + self->screen_center_y = monitor_geometry.y + monitor_geometry.height / 2; + self->mouse_x_delta = 0; + self->mouse_y_delta = 0; + + recenter_pointer (self); + + g_object_unref (cursor); } +static void +retro_core_view_ungrab (RetroCoreView *self) +{ + GdkSeat *seat; + g_return_if_fail (RETRO_IS_CORE_VIEW (self)); + g_return_if_fail (self->grabbed_device != NULL); + + seat = gdk_device_get_seat (self->grabbed_device); + gdk_seat_ungrab (seat); + gdk_device_warp (self->grabbed_device, self->grabbed_screen, + self->position_on_grab_x, self->position_on_grab_y); + + g_clear_object (&self->grabbed_device); + g_clear_object (&self->grabbed_screen); +} + +static gboolean +retro_core_view_on_key_press_event (GtkWidget *source, + GdkEventKey *event, + gpointer data) +{ + RetroCoreView *self = RETRO_CORE_VIEW (data); + + g_return_val_if_fail (RETRO_IS_CORE_VIEW (self), FALSE); + g_return_val_if_fail (event != NULL, FALSE); + + if (event->keyval == GDK_KEY_Escape && + (event->state & GDK_CONTROL_MASK) && + retro_core_view_get_is_pointer_grabbed (self)) + retro_core_view_ungrab (self); + + set_input_pressed (self->key_state, event->hardware_keycode); + + return FALSE; +} + +static gboolean +retro_core_view_on_key_release_event (GtkWidget *source, + GdkEventKey *event, + gpointer data) +{ + RetroCoreView *self = RETRO_CORE_VIEW (data); + + g_return_val_if_fail (RETRO_IS_CORE_VIEW (self), FALSE); + g_return_val_if_fail (event != NULL, FALSE); + + set_input_released (self->key_state, event->hardware_keycode); + + return FALSE; +} + +static gboolean +retro_core_view_on_button_press_event (GtkWidget *source, + GdkEventButton *event, + gpointer data) +{ + RetroCoreView *self = RETRO_CORE_VIEW (data); + + g_return_val_if_fail (RETRO_IS_CORE_VIEW (self), FALSE); + g_return_val_if_fail (event != NULL, FALSE); + + gtk_widget_grab_focus (GTK_WIDGET (source)); + + if (retro_core_view_get_can_grab_pointer (self)) { + if (retro_core_view_get_is_pointer_grabbed (self)) + set_input_pressed (self->mouse_button_state, event->button); + else + retro_core_view_grab (self, + event->device, + event->window, + (GdkEvent *) event); + } + else { + set_input_pressed (self->mouse_button_state, event->button); + self->pointer_is_on_display = + retro_gl_display_get_coordinates_on_display (self->display, + event->x, + event->y, + &self->pointer_x, + &self->pointer_y); + } + + return FALSE; +} + +static gboolean +retro_core_view_on_button_release_event (GtkWidget *source, + GdkEventButton *event, + gpointer data) +{ + RetroCoreView *self = RETRO_CORE_VIEW (data); + + g_return_val_if_fail (RETRO_IS_CORE_VIEW (self), FALSE); + g_return_val_if_fail (event != NULL, FALSE); + + set_input_released (self->mouse_button_state, event->button); + + return FALSE; +} +static gboolean +retro_core_view_on_focus_out_event (GtkWidget *source, + GdkEventFocus *event, + gpointer data) +{ + RetroCoreView *self = RETRO_CORE_VIEW (data); + + g_return_val_if_fail (RETRO_IS_CORE_VIEW (self), FALSE); + g_return_val_if_fail (event != NULL, FALSE); + + if (retro_core_view_get_is_pointer_grabbed (self)) + retro_core_view_ungrab (self); + + reset_input (self->key_state); + reset_input (self->mouse_button_state); + + return FALSE; +} + +static gboolean +retro_core_view_on_motion_notify_event (GtkWidget *source, + GdkEventMotion *event, + gpointer data) +{ + RetroCoreView *self = RETRO_CORE_VIEW (data); + + g_return_val_if_fail (RETRO_IS_CORE_VIEW (self), FALSE); + g_return_val_if_fail (event != NULL, FALSE); + + if (retro_core_view_get_can_grab_pointer (self)) { + if (retro_core_view_get_is_pointer_grabbed (self) && + event->device == self->grabbed_device) { + self->mouse_x_delta += event->x_root - (double) self->screen_center_x; + self->mouse_y_delta += event->y_root - (double) self->screen_center_y; + + recenter_pointer (self); + } + } + else { + self->pointer_is_on_display = + retro_gl_display_get_coordinates_on_display (self->display, + event->x, + event->y, + &self->pointer_x, + &self->pointer_y); + + } + + return FALSE; +} + +static gboolean +retro_core_view_get_key_state (RetroCoreView *self, + guint16 hardware_keycode) +{ + g_return_val_if_fail (RETRO_IS_CORE_VIEW (self), FALSE); + + return get_input_state (self->key_state, hardware_keycode); +} + +static gboolean +retro_core_view_get_joypad_button_state (RetroCoreView *self, + RetroJoypadId button) +{ + guint16 hardware_keycode; + + g_return_val_if_fail (RETRO_IS_CORE_VIEW (self), FALSE); + + if (button >= RETRO_JOYPAD_ID_COUNT) + return 0; + + // GDK adds 8 to the Linux input event codes to create the hardware keycode. + hardware_keycode = DEFAULT_KEY_JOYPAD_BUTTON_MAPPING[button] + 8; + + return retro_core_view_get_key_state (self, hardware_keycode); +} + +static gboolean +retro_core_view_get_mouse_button_state (RetroCoreView *self, + guint16 button) +{ + g_return_val_if_fail (RETRO_IS_CORE_VIEW (self), FALSE); + + return get_input_state (self->mouse_button_state, button); +} + +static void +retro_core_view_finalize (GObject *object) +{ + RetroCoreView *self = RETRO_CORE_VIEW (object); + + g_clear_object (&self->core); + g_object_unref (self->display); + g_object_unref (self->sensitive_binding); + g_object_unref (self->audio_player); + g_hash_table_unref (self->key_state); + g_hash_table_unref (self->mouse_button_state); + g_clear_object (&self->grabbed_screen); + g_clear_object (&self->grabbed_device); + + G_OBJECT_CLASS (retro_core_view_parent_class)->finalize (object); +} + +static void +retro_core_view_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + RetroCoreView *self = RETRO_CORE_VIEW (object); + + switch (prop_id) { + case PROP_CAN_GRAB_POINTER: + g_value_set_boolean (value, retro_core_view_get_can_grab_pointer (self)); + + break; + case PROP_SNAP_POINTER_TO_BORDERS: + g_value_set_boolean (value, retro_core_view_get_snap_pointer_to_borders (self)); + + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + + break; + } +} + +static void +retro_core_view_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + RetroCoreView *self = RETRO_CORE_VIEW (object); + + switch (prop_id) { + case PROP_CAN_GRAB_POINTER: + retro_core_view_set_can_grab_pointer (self, g_value_get_boolean (value)); + + break; + case PROP_SNAP_POINTER_TO_BORDERS: + retro_core_view_set_snap_pointer_to_borders (self, g_value_get_boolean (value)); + + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + + break; + } +} + +static void +retro_core_view_class_init (RetroCoreViewClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = retro_core_view_finalize; + object_class->get_property = retro_core_view_get_property; + object_class->set_property = retro_core_view_set_property; + + properties[PROP_CAN_GRAB_POINTER] = + g_param_spec_boolean ("can-grab-pointer", + "Can grab pointer", + "Whether the pointer can be grabbed", + FALSE, + G_PARAM_READWRITE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB); + + properties[PROP_SNAP_POINTER_TO_BORDERS] = + g_param_spec_boolean ("snap-pointer-to-borders", + "Snap pointer to borders", + "Wheter the pointer is considered to be on the border when it is out of the display", + FALSE, + G_PARAM_READWRITE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB); + + g_object_class_install_properties (object_class, + N_PROPS, + properties); +} + +RetroCoreView* retro_core_view_construct (GType object_type) { + RetroCoreView * self = NULL; + self = (RetroCoreView*) g_object_new (object_type, NULL); + return self; +} + +static void +retro_core_view_init (RetroCoreView *self) +{ + g_object_set ((GtkWidget*) self, "can-default", TRUE, NULL); + g_object_set ((GtkWidget*) self, "can-focus", TRUE, NULL); + + self->display = g_object_ref_sink (retro_gl_display_new ()); + gtk_widget_set_visible (GTK_WIDGET (self->display), TRUE); + g_object_set (GTK_WIDGET (self->display), "can-focus", FALSE, NULL); + gtk_container_add (GTK_CONTAINER (self), GTK_WIDGET (self->display)); + + self->sensitive_binding = + g_object_bind_property (G_OBJECT (self), "sensitive", + G_OBJECT (self->display), "sensitive", + G_BINDING_BIDIRECTIONAL | + G_BINDING_SYNC_CREATE); + + self->audio_player = retro_pa_player_new (); + + self->key_state = g_hash_table_new_full (g_int_hash, g_int_equal, g_free, g_free); + self->mouse_button_state = g_hash_table_new_full (g_int_hash, g_int_equal, g_free, g_free); + + g_signal_connect_object (self, "key-press-event", (GCallback) retro_core_view_on_key_press_event, self, 0); + g_signal_connect_object (self, "key-release-event", (GCallback) retro_core_view_on_key_release_event, self, 0); + g_signal_connect_object (self, "button-press-event", (GCallback) retro_core_view_on_button_press_event, self, 0); + g_signal_connect_object (self, "button-release-event", (GCallback) retro_core_view_on_button_release_event, self, 0); + g_signal_connect_object (self, "focus-out-event", (GCallback) retro_core_view_on_focus_out_event, self, 0); + g_signal_connect_object (self, "motion-notify-event", (GCallback) retro_core_view_on_motion_notify_event, self, 0); +} + +/* Public */ + +/** + * retro_core_view_set_core: + * @self: a #RetroCoreView + * @core: (nullable): a #RetroCore, or %NULL + * + * Sets @core as the #RetroCore handled by @self. + */ +void +retro_core_view_set_core (RetroCoreView *self, + RetroCore *core) +{ + g_return_if_fail (RETRO_IS_CORE_VIEW (self)); + + if (self->core == core) + return; + + if (self->core != NULL) { + g_clear_object (&self->core); + retro_gl_display_set_core (self->display, NULL); + retro_pa_player_set_core (self->audio_player, NULL); + } + + if (core != NULL) { + self->core = g_object_ref (core); + retro_gl_display_set_core (self->display, core); + retro_pa_player_set_core (self->audio_player, core); + } +} + +/** + * retro_core_view_set_pixbuf: + * @self: a #RetroCoreView + * @pixbuf: a #GdkPixbuf + * + * Sets @pixbuf as the currently displayed video frame. + */ +void +retro_core_view_set_pixbuf (RetroCoreView *self, + GdkPixbuf *pixbuf) +{ + g_return_if_fail (RETRO_IS_CORE_VIEW (self)); + g_return_if_fail (pixbuf == NULL || GDK_IS_PIXBUF (pixbuf)); + + retro_gl_display_set_pixbuf (self->display, pixbuf); +} + +/** + * retro_core_view_get_pixbuf: + * @self: a #RetroCoreView + * + * Gets the currently displayed video frame. + * + * Returns: (transfer none): a #GdkPixbuf + */ +GdkPixbuf * +retro_core_view_get_pixbuf (RetroCoreView *self) +{ + g_return_val_if_fail (RETRO_IS_CORE_VIEW (self), NULL); + + return retro_gl_display_get_pixbuf (self->display); +} + +/** + * retro_core_view_set_filter: + * @self: a #RetroCoreView + * @filter: a #RetroVideoFilter + * + * Sets the video filter to use to render the core's video on @self. + */ +void +retro_core_view_set_filter (RetroCoreView *self, + RetroVideoFilter filter) +{ + g_return_if_fail (RETRO_IS_CORE_VIEW (self)); + + retro_gl_display_set_filter (self->display, filter); +} + +/** + * retro_core_view_as_controller: + * @self: a #RetroCoreView + * @controller_type: the controller type to expose @self as + * + * Creates a new #RetroController exposing @self as the specified controller + * type. The valid controller types are RETRO_CONTROLLER_TYPE_JOYPAD, + * RETRO_CONTROLLER_TYPE_MOUSE and RETRO_CONTROLLER_TYPE_POINTER. + * + * Returns: (transfer full): a new #RetroController + */ +RetroController * +retro_core_view_as_controller (RetroCoreView *self, + RetroControllerType controller_type) +{ + g_return_val_if_fail (RETRO_IS_CORE_VIEW (self), NULL); + + return RETRO_CONTROLLER (retro_core_view_controller_new (self, controller_type)); +} + +/** + * retro_core_view_set_as_default_controller: + * @self: a #RetroCoreView + * @core: (nullable): a #RetroCore + * + * Sets the @self as the default controllers of @core. + */ +void +retro_core_view_set_as_default_controller (RetroCoreView *self, + RetroCore *core) +{ + RetroControllerType type; + RetroController *controller; + + g_return_if_fail (RETRO_IS_CORE_VIEW (self)); + g_return_if_fail (RETRO_IS_CORE (core)); + + for (type = RETRO_CONTROLLER_TYPE_NONE; + type < RETRO_CONTROLLER_TYPE_COUNT; + type++) { + controller = retro_core_view_as_controller (self, type); + retro_core_set_default_controller (core, type, controller); + g_object_unref (controller); + } +} + +/** + * retro_core_view_get_input_state: + * @self: a #RetroCoreView + * @input: a #RetroInput to query @self + * + * Gets the state of an input of @self. + * + * Returns: the input's state + */ +gint16 +retro_core_view_get_input_state (RetroCoreView *self, + RetroInput *input) +{ + guint id; + gint16 result; + + g_return_val_if_fail (RETRO_IS_CORE_VIEW (self), 0); + + switch (retro_input_get_controller_type (input)) { + case RETRO_CONTROLLER_TYPE_JOYPAD: + if (!retro_input_get_joypad (input, &id)) + return 0; + + return retro_core_view_get_joypad_button_state (self, id) ? G_MAXINT16 : 0; + case RETRO_CONTROLLER_TYPE_MOUSE: + if (!retro_input_get_mouse (input, &id)) + return 0; + + switch (id) { + case RETRO_MOUSE_ID_X: + result = (gint16) self->mouse_x_delta; + self->mouse_x_delta = 0; + + return result; + case RETRO_MOUSE_ID_Y: + result = self->mouse_y_delta; + self->mouse_y_delta = 0; + + return result; + case RETRO_MOUSE_ID_LEFT: + return retro_core_view_get_mouse_button_state (self, 1) ? G_MAXINT16 : 0; + case RETRO_MOUSE_ID_RIGHT: + return retro_core_view_get_mouse_button_state (self, 3) ? G_MAXINT16 : 0; + default: + return 0; + } + case RETRO_CONTROLLER_TYPE_POINTER: + if (!retro_input_get_pointer (input, &id)) + return 0; + + switch (id) { + case RETRO_POINTER_ID_X: + return axis_to_retro_axis (self->pointer_x); + case RETRO_POINTER_ID_Y: + return axis_to_retro_axis (self->pointer_y); + case RETRO_POINTER_ID_PRESSED: + if (!self->pointer_is_on_display || + retro_core_view_get_snap_pointer_to_borders (self)) + return 0; + + return retro_core_view_get_mouse_button_state (self, 1) ? 1 : 0; + default: + return 0; + } + default: + return 0; + } +} + +/** + * retro_core_view_get_controller_capabilities: + * @self: a #RetroCoreView + * + * Gets a flag representing the capabilities of @self when exposed as a + * controller. See retro_controller_get_capabilities() for more information on + * the flag. + * + * See retro_core_view_as_controller() to know the capabilities of + * #RetroCoreView when exposed as a controller. + * + * Returns: the capabilities flag of @self when exposed as a controller + */ +guint64 +retro_core_view_get_controller_capabilities (RetroCoreView *self) +{ + g_return_val_if_fail (RETRO_IS_CORE_VIEW (self), 0); + + return 1 << RETRO_CONTROLLER_TYPE_JOYPAD | + 1 << RETRO_CONTROLLER_TYPE_MOUSE | + 1 << RETRO_CONTROLLER_TYPE_POINTER; +} + +/** + * retro_core_view_get_can_grab_pointer: + * @self: a #RetroCoreView + * + * Gets whether the pointer should be grabbed when clicking on the view. This + * allows @self to work as a RETRO_CONTROLLER_TYPE_MOUSE instead of a + * RETRO_CONTROLLER_TYPE_POINTER. + * + * Returns: whether the pointer should snap to the borders + */ +gboolean +retro_core_view_get_can_grab_pointer (RetroCoreView *self) +{ + g_return_val_if_fail (RETRO_IS_CORE_VIEW (self), FALSE); + + return self->can_grab_pointer; +} + +/** + * retro_core_view_set_can_grab_pointer: + * @self: a #RetroCoreView + * @can_grab_pointer: whether the pointer should be grabbed when clicking on + * the view + * + * Sets whether the pointer should be grabbed when clicking on the view. This + * allows @self to work as a RETRO_CONTROLLER_TYPE_MOUSE instead of a + * RETRO_CONTROLLER_TYPE_POINTER. + */ +void +retro_core_view_set_can_grab_pointer (RetroCoreView *self, + gboolean can_grab_pointer) +{ + g_return_if_fail (RETRO_IS_CORE_VIEW (self)); + + if (self->can_grab_pointer == can_grab_pointer) + return; + + self->can_grab_pointer = can_grab_pointer; + + if (can_grab_pointer == FALSE && + retro_core_view_get_is_pointer_grabbed (self)) + retro_core_view_ungrab (self); + + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_CAN_GRAB_POINTER]); +} + +/** + * retro_core_view_get_snap_pointer_to_borders: + * @self: a #RetroCoreView + * + * Gets whether the pointer should be considered to be at the border of the + * video display when it is outside of it. This is used when @self is exposed as + * a RETRO_CONTROLLER_TYPE_POINTER. + * + * Returns: whether the pointer should snap to the borders + */ +gboolean +retro_core_view_get_snap_pointer_to_borders (RetroCoreView *self) +{ + g_return_val_if_fail (RETRO_IS_CORE_VIEW (self), FALSE); + + return self->snap_pointer_to_borders; +} + +/** + * retro_core_view_set_snap_pointer_to_borders: + * @self: a #RetroCoreView + * @snap_pointer_to_borders: whether the pointer should snap to the borders + * + * Sets whether the pointer should be considered to be at the border of the + * video display when it is outside of it. This is used when @self is exposed as + * a RETRO_CONTROLLER_TYPE_POINTER. + */ +void +retro_core_view_set_snap_pointer_to_borders (RetroCoreView *self, + gboolean snap_pointer_to_borders) +{ + g_return_if_fail (RETRO_IS_CORE_VIEW (self)); + + if (self->snap_pointer_to_borders == snap_pointer_to_borders) + return; + + self->snap_pointer_to_borders = snap_pointer_to_borders; + + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SNAP_POINTER_TO_BORDERS]); +} + +/** + * retro_core_view_new: + * + * Creates a new #RetroCoreView. + * + * Returns: (transfer full): a new #RetroCoreView + */ +RetroCoreView * +retro_core_view_new (void) +{ + return g_object_new (RETRO_TYPE_CORE_VIEW, NULL); +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-core-view-controller.c retro-gtk-0.14.0/retro-gtk/retro-core-view-controller.c --- retro-gtk-0.12.1/retro-gtk/retro-core-view-controller.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-core-view-controller.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,139 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-core-view-controller.h" + +#include "retro-controller.h" + +struct _RetroCoreViewController +{ + GObject parent_instance; + GWeakRef view; + RetroControllerType controller_type; +}; + +static void retro_controller_interface_init (RetroControllerInterface *iface); + +G_DEFINE_TYPE_WITH_CODE (RetroCoreViewController, retro_core_view_controller, G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (RETRO_TYPE_CONTROLLER, + retro_controller_interface_init)) + +/* Private */ + +static void +retro_core_view_controller_poll (RetroController *base) +{ +} + +static gint16 +retro_core_view_controller_get_input_state (RetroController *base, + RetroInput *input) +{ + RetroCoreViewController *self = RETRO_CORE_VIEW_CONTROLLER (base); + gpointer view; + gint16 result; + + g_return_val_if_fail (self != NULL, 0); + + if (retro_input_get_controller_type (input) != self->controller_type) + return 0; + + view = g_weak_ref_get (&self->view); + + if (view == NULL) + return 0; + + result = retro_core_view_get_input_state (RETRO_CORE_VIEW (view), input); + + g_object_unref (G_OBJECT (view)); + + return result; +} + +static RetroControllerType +retro_core_view_controller_get_controller_type (RetroController *base) +{ + RetroCoreViewController *self = RETRO_CORE_VIEW_CONTROLLER (base); + + g_return_val_if_fail (self != NULL, 0); + + return self->controller_type; +} + +static guint64 +retro_core_view_controller_get_capabilities (RetroController *base) +{ + RetroCoreViewController *self = RETRO_CORE_VIEW_CONTROLLER (base); + gpointer view; + guint64 result; + + g_return_val_if_fail (self != NULL, 0); + + view = g_weak_ref_get (&self->view); + + if (view == NULL) + return 0; + + result = retro_core_view_get_controller_capabilities (RETRO_CORE_VIEW (view)); + + g_object_unref (G_OBJECT (view)); + + return result; +} + +static gboolean +retro_core_view_controller_set_rumble_state (RetroController *self, + RetroRumbleEffect effect, + guint16 strength) +{ + return FALSE; +} + +static void +retro_core_view_controller_finalize (GObject *object) +{ + RetroCoreViewController *self = RETRO_CORE_VIEW_CONTROLLER (object); + + g_weak_ref_clear (&self->view); + + G_OBJECT_CLASS (retro_core_view_controller_parent_class)->finalize (object); +} + +static void +retro_core_view_controller_class_init (RetroCoreViewControllerClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = retro_core_view_controller_finalize; +} + +static void +retro_core_view_controller_init (RetroCoreViewController *self) +{ +} + +static void +retro_controller_interface_init (RetroControllerInterface *iface) +{ + iface->poll = retro_core_view_controller_poll; + iface->get_input_state = retro_core_view_controller_get_input_state; + iface->get_controller_type = retro_core_view_controller_get_controller_type; + iface->get_capabilities = retro_core_view_controller_get_capabilities; + iface->set_rumble_state = retro_core_view_controller_set_rumble_state; +} + +/* Public */ + +RetroCoreViewController * +retro_core_view_controller_new (RetroCoreView *view, + RetroControllerType controller_type) +{ + RetroCoreViewController *self = NULL; + + g_return_val_if_fail (view != NULL, NULL); + + self = g_object_new (RETRO_TYPE_CORE_VIEW_CONTROLLER, NULL); + g_weak_ref_init (&self->view, view); + self->controller_type = controller_type; + + return self; +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-core-view-controller.h retro-gtk-0.14.0/retro-gtk/retro-core-view-controller.h --- retro-gtk-0.12.1/retro-gtk/retro-core-view-controller.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-core-view-controller.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,25 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_CORE_VIEW_CONTROLLER_H +#define RETRO_CORE_VIEW_CONTROLLER_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include +#include "retro-core-view.h" + +G_BEGIN_DECLS + +#define RETRO_TYPE_CORE_VIEW_CONTROLLER (retro_core_view_controller_get_type()) + +G_DECLARE_FINAL_TYPE (RetroCoreViewController, retro_core_view_controller, RETRO, CORE_VIEW_CONTROLLER, GObject) + +RetroCoreViewController *retro_core_view_controller_new (RetroCoreView *view, + RetroControllerType controller_type); + +G_END_DECLS + +#endif /* RETRO_CORE_VIEW_CONTROLLER_H */ + diff -Nru retro-gtk-0.12.1/retro-gtk/retro-core-view-extern.c retro-gtk-0.14.0/retro-gtk/retro-core-view-extern.c --- retro-gtk-0.12.1/retro-gtk/retro-core-view-extern.c 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-core-view-extern.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,392 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -#include -#include "retro-gtk-internal.h" -#include "retro-core-view-input-device.h" - -static guint16 DEFAULT_KEY_JOYPAD_BUTTON_MAPPING[RETRO_JOYPAD_ID_COUNT] = { - KEY_S, - KEY_A, - KEY_BACKSPACE, - KEY_ENTER, - KEY_UP, - KEY_DOWN, - KEY_LEFT, - KEY_RIGHT, - KEY_D, - KEY_W, - KEY_Q, - KEY_E, - KEY_Z, - KEY_C, - KEY_1, - KEY_3, -}; - -/* Private */ - -static void -set_input_pressed (GHashTable *table, - guint input) -{ - static gboolean value = TRUE; - - if (g_hash_table_contains (table, &input)) - g_hash_table_replace (table, - g_memdup (&input, sizeof (guint)), - g_memdup (&value, sizeof (gboolean))); - else - g_hash_table_insert (table, - g_memdup (&input, sizeof (guint)), - g_memdup (&value, sizeof (gboolean))); -} - -static void -set_input_released (GHashTable *table, - guint input) -{ - g_hash_table_remove (table, &input); -} - -static void -reset_input (GHashTable *table) -{ - g_hash_table_remove_all (table); -} - -static gboolean -get_input_state (GHashTable *table, - guint input) -{ - return g_hash_table_contains (table, &input); -} - -static gint16 -axis_to_retro_axis (gdouble value) -{ - if (value <= -1.0) - return -G_MAXINT16; - - if (value >= 1.0) - return G_MAXINT16; - - return (gint16) (value * G_MAXINT16); -} - -static void -recenter_pointer (RetroCoreView *self) -{ - gdk_device_warp (self->grabbed_device, self->grabbed_screen, - self->screen_center_x, self->screen_center_y); -} - -// FIXME Make static as soon as possible. -gboolean -retro_core_view_get_is_pointer_grabbed (RetroCoreView *self) -{ - g_return_val_if_fail (self != NULL, FALSE); - - return self->grabbed_device != NULL; -} - -static void -retro_core_view_grab (RetroCoreView *self, - GdkDevice *device, - GdkWindow *window, - GdkEvent *event) -{ - GdkSeat *seat; - GdkDisplay *display; - GdkCursor *cursor; - GdkScreen *screen = NULL; - GdkMonitor *monitor; - GdkRectangle monitor_geometry; - - g_return_if_fail (self != NULL); - g_return_if_fail (device != NULL); - g_return_if_fail (window != NULL); - g_return_if_fail (event != NULL); - - if (self->grabbed_device != NULL) - g_object_unref (self->grabbed_device); - - if (self->grabbed_screen != NULL) - g_object_unref (self->grabbed_screen); - - self->grabbed_device = g_object_ref (device); - seat = gdk_device_get_seat (device); - display = gdk_device_get_display (device); - cursor = gdk_cursor_new_for_display (display, GDK_BLANK_CURSOR); - gdk_seat_grab (seat, window, GDK_SEAT_CAPABILITY_ALL_POINTING, FALSE, cursor, event, NULL, NULL); - monitor = gdk_display_get_monitor_at_window (display, window); - gdk_monitor_get_geometry (monitor, &monitor_geometry); - - gdk_device_get_position (device, &screen, &self->position_on_grab_x, &self->position_on_grab_y); - self->grabbed_screen = g_object_ref (screen); - self->screen_center_x = monitor_geometry.x + monitor_geometry.width / 2; - self->screen_center_y = monitor_geometry.y + monitor_geometry.height / 2; - self->mouse_x_delta = 0; - self->mouse_y_delta = 0; - - recenter_pointer (self); - - g_object_unref (cursor); -} - -// FIXME Make static as soon as possible. -void -retro_core_view_ungrab (RetroCoreView *self) -{ - GdkSeat *seat; - - g_return_if_fail (self != NULL); - g_return_if_fail (self->grabbed_device != NULL); - - seat = gdk_device_get_seat (self->grabbed_device); - gdk_seat_ungrab (seat); - gdk_device_warp (self->grabbed_device, self->grabbed_screen, - self->position_on_grab_x, self->position_on_grab_y); - - g_clear_object (&self->grabbed_device); - g_clear_object (&self->grabbed_screen); -} - -// FIXME Make static as soon as possible. -gboolean -retro_core_view_on_key_press_event (RetroCoreView *self, - GtkWidget *source, - GdkEventKey *event) -{ - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - if (event->keyval == GDK_KEY_Escape && - (event->state & GDK_CONTROL_MASK) && - retro_core_view_get_is_pointer_grabbed (self)) - retro_core_view_ungrab (self); - - set_input_pressed (self->key_state, event->hardware_keycode); - - return FALSE; -} - -// FIXME Make static as soon as possible. -gboolean -retro_core_view_on_key_release_event (RetroCoreView *self, - GtkWidget *source, - GdkEventKey *event) -{ - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - set_input_released (self->key_state, event->hardware_keycode); - - return FALSE; -} - -// FIXME Make static as soon as possible. -gboolean -retro_core_view_on_button_press_event (RetroCoreView *self, - GtkWidget *source, - GdkEventButton *event) -{ - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - if (retro_core_view_get_can_grab_pointer (self)) { - if (retro_core_view_get_is_pointer_grabbed (self)) - set_input_pressed (self->mouse_button_state, event->button); - else - retro_core_view_grab (self, - event->device, - event->window, - (GdkEvent *) event); - } - else { - set_input_pressed (self->mouse_button_state, event->button); - self->pointer_is_on_display = - retro_cairo_display_get_coordinates_on_display (self->display, - event->x, - event->y, - &self->pointer_x, - &self->pointer_y); - } - - return FALSE; -} - -// FIXME Make static as soon as possible. -gboolean -retro_core_view_on_button_release_event (RetroCoreView *self, - GtkWidget *source, - GdkEventButton *event) -{ - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - set_input_released (self->mouse_button_state, event->button); - - return FALSE; -} - -// FIXME Make static as soon as possible. -gboolean -retro_core_view_on_focus_out_event (RetroCoreView *self, - GtkWidget *source, - GdkEventFocus *event) -{ - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - if (retro_core_view_get_is_pointer_grabbed (self)) - retro_core_view_ungrab (self); - - reset_input (self->key_state); - reset_input (self->mouse_button_state); - - return FALSE; -} - -// FIXME Make static as soon as possible. -gboolean -retro_core_view_on_motion_notify_event (RetroCoreView *self, - GtkWidget *source, - GdkEventMotion *event) -{ - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - if (retro_core_view_get_can_grab_pointer (self)) { - if (retro_core_view_get_is_pointer_grabbed (self) && - event->device == self->grabbed_device) { - self->mouse_x_delta += event->x_root - (double) self->screen_center_x; - self->mouse_y_delta += event->y_root - (double) self->screen_center_y; - - recenter_pointer (self); - } - } - else { - self->pointer_is_on_display = - retro_cairo_display_get_coordinates_on_display (self->display, - event->x, - event->y, - &self->pointer_x, - &self->pointer_y); - - } - - return FALSE; -} - -static gboolean -retro_core_view_get_key_state (RetroCoreView *self, - guint16 hardware_keycode) -{ - g_return_val_if_fail (self != NULL, FALSE); - - return get_input_state (self->key_state, hardware_keycode); -} - -static gboolean -retro_core_view_get_joypad_button_state (RetroCoreView *self, - RetroJoypadId button) -{ - guint16 hardware_keycode; - - g_return_val_if_fail (self != NULL, FALSE); - - if (button >= RETRO_JOYPAD_ID_COUNT) - return 0; - - // GDK adds 8 to the Linux input event codes to create the hardware keycode. - hardware_keycode = DEFAULT_KEY_JOYPAD_BUTTON_MAPPING[button] + 8; - - return retro_core_view_get_key_state (self, hardware_keycode); -} - -static gboolean -retro_core_view_get_mouse_button_state (RetroCoreView *self, - guint16 button) -{ - g_return_val_if_fail (self != NULL, FALSE); - - return get_input_state (self->mouse_button_state, button); -} - -// FIXME Make static as soon as possible. -gint16 -retro_core_view_get_input_state (RetroCoreView *self, - RetroDeviceType device, - guint index, - guint id) -{ - gint16 result; - - g_return_val_if_fail (self != NULL, 0); - - switch (device) { - case RETRO_DEVICE_TYPE_JOYPAD: - if (id >= RETRO_JOYPAD_ID_COUNT) - return 0; - - return retro_core_view_get_joypad_button_state (self, id) ? G_MAXINT16 : 0; - case RETRO_DEVICE_TYPE_MOUSE: - switch (id) { - case RETRO_MOUSE_ID_X: - result = (gint16) self->mouse_x_delta; - self->mouse_x_delta = 0; - - return result; - case RETRO_MOUSE_ID_Y: - result = self->mouse_y_delta; - self->mouse_y_delta = 0; - - return result; - case RETRO_MOUSE_ID_LEFT: - return retro_core_view_get_mouse_button_state (self, 1) ? G_MAXINT16 : 0; - case RETRO_MOUSE_ID_RIGHT: - return retro_core_view_get_mouse_button_state (self, 3) ? G_MAXINT16 : 0; - default: - return 0; - } - case RETRO_DEVICE_TYPE_POINTER: - switch (id) { - case RETRO_POINTER_ID_X: - return axis_to_retro_axis (self->pointer_x); - case RETRO_POINTER_ID_Y: - return axis_to_retro_axis (self->pointer_y); - case RETRO_POINTER_ID_PRESSED: - if (!self->pointer_is_on_display || - retro_core_view_get_snap_pointer_to_borders (self)) - return 0; - - return retro_core_view_get_mouse_button_state (self, 1) ? 1 : 0; - default: - return 0; - } - default: - return 0; - } -} - -// FIXME Make static as soon as possible. -guint64 -retro_core_view_get_device_capabilities (RetroCoreView *self) -{ - g_return_val_if_fail (self != NULL, 0); - - return 1 << RETRO_DEVICE_TYPE_JOYPAD | - 1 << RETRO_DEVICE_TYPE_MOUSE | - 1 << RETRO_DEVICE_TYPE_POINTER; -} - -/* Public */ - -RetroInputDevice * -retro_core_view_as_input_device (RetroCoreView *self, - RetroDeviceType device_type) -{ - g_return_val_if_fail (self != NULL, NULL); - - return RETRO_INPUT_DEVICE (retro_core_view_input_device_new (self, device_type)); -} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-core-view.h retro-gtk-0.14.0/retro-gtk/retro-core-view.h --- retro-gtk-0.12.1/retro-gtk/retro-core-view.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-core-view.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,47 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_CORE_VIEW_H +#define RETRO_CORE_VIEW_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include +#include "retro-core.h" +#include "retro-controller.h" +#include "retro-input.h" +#include "retro-video-filter.h" + +G_BEGIN_DECLS + +#define RETRO_TYPE_CORE_VIEW (retro_core_view_get_type()) + +G_DECLARE_FINAL_TYPE (RetroCoreView, retro_core_view, RETRO, CORE_VIEW, GtkEventBox) + +RetroCoreView *retro_core_view_new (void); + +void retro_core_view_set_core (RetroCoreView *self, + RetroCore *core); +void retro_core_view_set_pixbuf (RetroCoreView *self, + GdkPixbuf *pixbuf); +GdkPixbuf *retro_core_view_get_pixbuf (RetroCoreView *self); +void retro_core_view_set_filter (RetroCoreView *self, + RetroVideoFilter filter); +RetroController *retro_core_view_as_controller (RetroCoreView *self, + RetroControllerType controller_type); +void retro_core_view_set_as_default_controller (RetroCoreView *self, + RetroCore *core); +gint16 retro_core_view_get_input_state (RetroCoreView *self, + RetroInput *input); +guint64 retro_core_view_get_controller_capabilities (RetroCoreView *self); +gboolean retro_core_view_get_can_grab_pointer (RetroCoreView *self); +void retro_core_view_set_can_grab_pointer (RetroCoreView *self, + gboolean can_grab_pointer); +gboolean retro_core_view_get_snap_pointer_to_borders (RetroCoreView *self); +void retro_core_view_set_snap_pointer_to_borders (RetroCoreView *self, + gboolean snap_pointer_to_borders); + +G_END_DECLS + +#endif /* RETRO_CORE_VIEW_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-core-view-input-device.c retro-gtk-0.14.0/retro-gtk/retro-core-view-input-device.c --- retro-gtk-0.12.1/retro-gtk/retro-core-view-input-device.c 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-core-view-input-device.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,131 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -#include "retro-core-view-input-device.h" - -struct _RetroCoreViewInputDevice -{ - GObject parent_instance; - GWeakRef view; - RetroDeviceType device_type; -}; - -static void retro_input_device_interface_init (RetroInputDeviceIface *iface); - -G_DEFINE_TYPE_WITH_CODE (RetroCoreViewInputDevice, retro_core_view_input_device, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (RETRO_TYPE_INPUT_DEVICE, - retro_input_device_interface_init)) - -/* Private */ - -static void -retro_core_view_input_device_poll (RetroInputDevice *base) -{ -} - -static gint16 -retro_core_view_input_device_get_input_state (RetroInputDevice *base, - RetroDeviceType device, - guint index, - guint id) -{ - RetroCoreViewInputDevice *self = RETRO_CORE_VIEW_INPUT_DEVICE (base); - gpointer view; - gint16 result; - - g_return_val_if_fail (self != NULL, 0); - - if (device != self->device_type) - return 0; - - view = g_weak_ref_get (&self->view); - - if (view == NULL) - return 0; - - result = retro_core_view_get_input_state (RETRO_CORE_VIEW (view), - self->device_type, - index, id); - - g_object_unref (G_OBJECT (view)); - - return result; -} - -static RetroDeviceType -retro_core_view_input_device_get_device_type (RetroInputDevice *base) -{ - RetroCoreViewInputDevice *self = RETRO_CORE_VIEW_INPUT_DEVICE (base); - - g_return_val_if_fail (self != NULL, 0); - - return self->device_type; -} - -static guint64 -retro_core_view_input_device_get_device_capabilities (RetroInputDevice *base) -{ - RetroCoreViewInputDevice *self = RETRO_CORE_VIEW_INPUT_DEVICE (base); - gpointer view; - guint64 result; - - g_return_val_if_fail (self != NULL, 0); - - view = g_weak_ref_get (&self->view); - - if (view == NULL) - return 0; - - result = retro_core_view_get_device_capabilities (RETRO_CORE_VIEW (view)); - - g_object_unref (G_OBJECT (view)); - - return result; -} - -static void -retro_core_view_input_device_finalize (GObject *object) -{ - RetroCoreViewInputDevice *self = RETRO_CORE_VIEW_INPUT_DEVICE (object); - - g_weak_ref_clear (&self->view); - - G_OBJECT_CLASS (retro_core_view_input_device_parent_class)->finalize (object); -} - -static void -retro_core_view_input_device_class_init (RetroCoreViewInputDeviceClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - object_class->finalize = retro_core_view_input_device_finalize; -} - -static void -retro_core_view_input_device_init (RetroCoreViewInputDevice *self) -{ -} - -static void -retro_input_device_interface_init (RetroInputDeviceIface *iface) -{ - iface->poll = retro_core_view_input_device_poll; - iface->get_input_state = retro_core_view_input_device_get_input_state; - iface->get_device_type = retro_core_view_input_device_get_device_type; - iface->get_device_capabilities = retro_core_view_input_device_get_device_capabilities; -} - -/* Public */ - -RetroCoreViewInputDevice * -retro_core_view_input_device_new (RetroCoreView *view, RetroDeviceType device_type) -{ - RetroCoreViewInputDevice *self = NULL; - - g_return_val_if_fail (view != NULL, NULL); - - self = g_object_new (RETRO_TYPE_CORE_VIEW_INPUT_DEVICE, NULL); - g_weak_ref_init (&self->view, view); - self->device_type = device_type; - - return self; -} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-core-view-input-device.h retro-gtk-0.14.0/retro-gtk/retro-core-view-input-device.h --- retro-gtk-0.12.1/retro-gtk/retro-core-view-input-device.h 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-core-view-input-device.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -#ifndef RETRO_CORE_VIEW_INPUT_DEVICE_H -#define RETRO_CORE_VIEW_INPUT_DEVICE_H - -#include -#include "retro-gtk-internal.h" - -G_BEGIN_DECLS - -#define RETRO_TYPE_CORE_VIEW_INPUT_DEVICE (retro_core_view_input_device_get_type()) - -G_DECLARE_FINAL_TYPE (RetroCoreViewInputDevice, retro_core_view_input_device, RETRO, CORE_VIEW_INPUT_DEVICE, GObject) - -RetroCoreViewInputDevice *retro_core_view_input_device_new (RetroCoreView *view, RetroDeviceType device_type); - -G_END_DECLS - -#endif /* RETRO_CORE_VIEW_INPUT_DEVICE_H */ - diff -Nru retro-gtk-0.12.1/retro-gtk/retro-core-view.vala retro-gtk-0.14.0/retro-gtk/retro-core-view.vala --- retro-gtk-0.12.1/retro-gtk/retro-core-view.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-core-view.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -public class Retro.CoreView : Gtk.EventBox { - private bool _can_grab_pointer; - public bool can_grab_pointer { - set { - if (value == _can_grab_pointer) - return; - - _can_grab_pointer = value; - - if (_can_grab_pointer == false && get_is_pointer_grabbed ()) - ungrab (); - } - get { return _can_grab_pointer; } - default = false; - } - - public bool snap_pointer_to_borders { set; get; } - - private Core core; - internal CairoDisplay display; - - internal HashTable key_state; - internal HashTable mouse_button_state; - internal Gdk.Screen grabbed_screen; - internal Gdk.Device grabbed_device; - internal double mouse_x_delta; - internal double mouse_y_delta; - internal int screen_center_x; - internal int screen_center_y; - internal int position_on_grab_x; - internal int position_on_grab_y; - internal bool pointer_is_on_display; - internal double pointer_x; - internal double pointer_y; - - construct { - can_focus = true; - - display = new CairoDisplay (); - display.visible = true; - display.can_focus = false; - add (display); - - key_state = new HashTable (int_hash, int_equal); - mouse_button_state = new HashTable (int_hash, int_equal); - - key_press_event.connect (on_key_press_event); - key_release_event.connect (on_key_release_event); - button_press_event.connect (on_button_press_event); - button_release_event.connect (on_button_release_event); - focus_out_event.connect (on_focus_out_event); - motion_notify_event.connect (on_motion_notify_event); - } - - public void set_core (Core? core) { - if (this.core != null) - display.set_core (null); - - this.core = core; - - if (core != null) - display.set_core (core); - } - - public CairoDisplay get_display () { - return display; - } - - public extern InputDevice as_input_device (DeviceType device_type); - internal extern int16 get_input_state (DeviceType device, uint index, uint id); - internal extern uint64 get_device_capabilities (); - internal extern bool get_is_pointer_grabbed (); - internal extern void ungrab (); - internal extern bool on_key_press_event (Gtk.Widget source, Gdk.EventKey event); - internal extern bool on_key_release_event (Gtk.Widget source, Gdk.EventKey event); - internal extern bool on_button_press_event (Gtk.Widget source, Gdk.EventButton event); - internal extern bool on_button_release_event (Gtk.Widget source, Gdk.EventButton event); - internal extern bool on_focus_out_event (Gtk.Widget source, Gdk.EventFocus event); - internal extern bool on_motion_notify_event (Gtk.Widget source, Gdk.EventMotion event); -} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-disk-control-callback.h retro-gtk-0.14.0/retro-gtk/retro-disk-control-callback.h --- retro-gtk-0.12.1/retro-gtk/retro-disk-control-callback.h 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-disk-control-callback.h 2018-03-10 13:02:01.000000000 +0000 @@ -3,6 +3,10 @@ #ifndef RETRO_DISK_CONTROL_CALLBACK_H #define RETRO_DISK_CONTROL_CALLBACK_H +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + #include "retro-game-info.h" G_BEGIN_DECLS diff -Nru retro-gtk-0.12.1/retro-gtk/retro-environment.c retro-gtk-0.14.0/retro-gtk/retro-environment.c --- retro-gtk-0.12.1/retro-gtk/retro-environment.c 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-environment.c 2018-03-10 13:02:01.000000000 +0000 @@ -1,8 +1,11 @@ // This file is part of retro-gtk. License: GPL-3.0+. -#include "retro-gtk-internal.h" +#include "retro-core-private.h" + +#include #include "libretro-environment.h" -#include "retro-core.h" +#include "retro-input-private.h" +#include "retro-pixdata-private.h" void retro_core_set_system_av_info (RetroCore *self, RetroSystemAvInfo *system_av_info); @@ -32,34 +35,33 @@ RetroRumbleEffect effect, guint16 strength) { - RetroCore *cb_data; - RetroRumble *interface; + RetroCore *self; + RetroController *controller; + + self = retro_core_get_cb_data (); + + g_return_val_if_fail (RETRO_IS_CORE (self), FALSE); + + if (!g_hash_table_contains (self->controllers, &port)) + return FALSE; + + controller = g_hash_table_lookup (self->controllers, &port); + + if (controller == NULL) + return FALSE; - cb_data = retro_core_get_cb_data (); - if (!cb_data) - g_return_val_if_reached (FALSE); - - interface = retro_core_get_rumble_interface (cb_data); - if (!interface) - g_return_val_if_reached (FALSE); - - return RETRO_RUMBLE_GET_INTERFACE (interface)->set_rumble_state (interface, - port, - effect, - strength); + return retro_controller_set_rumble_state (controller, effect, strength); } static void on_log (guint level, const gchar *format, ...) { RetroCore *self; - RetroSystemInfo info = { 0 }; const gchar *log_domain; GLogLevelFlags log_level; gchar *message; va_list args; - self = retro_core_get_cb_data (); if (!self) g_return_if_reached (); @@ -122,14 +124,7 @@ get_input_device_capabilities (RetroCore *self, guint64 *capabilities) { - RetroInput *input; - - input = retro_core_get_input_interface (self); - - if (input == NULL) - return FALSE; - - *capabilities = retro_input_get_device_capabilities (input); + *capabilities = retro_core_get_controller_capabilities (self); return TRUE; } @@ -156,7 +151,7 @@ get_overscan (RetroCore *self, gboolean *overscan) { - *overscan = RETRO_CORE_ENVIRONMENT_INTERNAL (self)->overscan; + *overscan = self->overscan; return TRUE; } @@ -165,10 +160,6 @@ get_rumble_callback (RetroCore *self, RetroRumbleCallback *cb) { - gpointer interface_exists = retro_core_get_rumble_interface (self); - if (!interface_exists) - return FALSE; - cb->set_rumble_state = rumble_callback_set_rumble_state; return TRUE; @@ -196,20 +187,23 @@ get_variable (RetroCore *self, RetroVariable *variable) { - gchar *result; + const gchar *value; - result = retro_variables_get_variable (self->variables_interface, - variable->key); - variable->value = result ? result : ""; + if (!retro_options_contains (self->options, variable->key)) + return FALSE; - return !!result; + value = retro_options_get_option_value (self->options, variable->key); + variable->value = g_strdup (value); // FIXME Is that a memory leak? + + return TRUE; } +// The data must be bool, not gboolean, the sizes can be different. static gboolean get_variable_update (RetroCore *self, - gboolean *update) + bool *update) { - *update = retro_variables_get_variable_update (self->variables_interface); + *update = retro_options_get_variable_update (self->options); return TRUE; } @@ -218,7 +212,7 @@ set_disk_control_interface (RetroCore *self, RetroDiskControlCallback *callback) { - RETRO_CORE_ENVIRONMENT_INTERNAL (self)->disk_control_callback = callback; + self->disk_control_callback = callback; return TRUE; } @@ -227,16 +221,10 @@ set_input_descriptors (RetroCore *self, RetroInputDescriptor *descriptors) { - RetroInput *input; int length; - input = retro_core_get_input_interface (self); - - if (input == NULL) - return FALSE; - for (length = 0 ; descriptors[length].description ; length++); - retro_input_set_descriptors (input, descriptors, length); + retro_core_set_controller_descriptors (self, descriptors, length); return TRUE; } @@ -245,7 +233,7 @@ set_keyboard_callback (RetroCore *self, RetroKeyboardCallback *callback) { - RETRO_CORE_ENVIRONMENT_INTERNAL (self)->keyboard_callback = *callback; + self->keyboard_callback = *callback; return TRUE; } @@ -264,7 +252,7 @@ set_pixel_format (RetroCore *self, const RetroPixelFormat *pixel_format) { - RETRO_CORE_ENVIRONMENT_INTERNAL (self)->pixel_format = *pixel_format; + self->pixel_format = *pixel_format; return TRUE; } @@ -273,7 +261,7 @@ set_rotation (RetroCore *self, const RetroRotation *rotation) { - RETRO_CORE_ENVIRONMENT_INTERNAL (self)->rotation = *rotation; + self->rotation = *rotation; return TRUE; } @@ -300,13 +288,10 @@ set_variables (RetroCore *self, RetroVariable *variable_array) { - int length; + int i; - for (length = 0 ; - variable_array[length].key && variable_array[length].value ; - length++); - retro_variables_set_variable (self->variables_interface, - variable_array, length); + for (i = 0 ; variable_array[i].key && variable_array[i].value ; i++) + retro_options_insert_variable (self->options, &variable_array[i]); return TRUE; } @@ -360,7 +345,7 @@ return get_variable (self, (RetroVariable *) data); case RETRO_ENVIRONMENT_GET_VARIABLE_UPDATE: - return get_variable_update (self, (gboolean *) data); + return get_variable_update (self, (bool *) data); case RETRO_ENVIRONMENT_SET_DISK_CONTROL_INTERFACE: set_disk_control_interface (self, (RetroDiskControlCallback *) data); @@ -435,7 +420,7 @@ gsize pitch) { RetroCore *self; - RetroCoreEnvironmentInternal *internal; + RetroPixdata pixdata; if (data == NULL) return; @@ -445,11 +430,12 @@ if (self == NULL) g_return_if_reached (); - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); + retro_pixdata_init (&pixdata, + data, self->pixel_format, + pitch, width, height, + self->aspect_ratio); - g_signal_emit_by_name (self, "video_output", data, pitch * height, - width, height, pitch, internal->pixel_format, - internal->aspect_ratio); + g_signal_emit_by_name (self, "video-output", &pixdata); } // TODO This is internal, make it private as soon as possible. @@ -464,7 +450,6 @@ gint16 right) { RetroCore *self; - RetroCoreEnvironmentInternal *internal; gint16 samples[] = { left, right }; self = retro_core_get_cb_data (); @@ -472,12 +457,10 @@ if (self == NULL) g_return_if_reached (); - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); - - if (internal->sample_rate <= 0.0) + if (self->sample_rate <= 0.0) return; - g_signal_emit_by_name (self, "audio_output", samples, 2, internal->sample_rate); + g_signal_emit_by_name (self, "audio_output", samples, 2, self->sample_rate); } static gsize @@ -485,19 +468,16 @@ int frames) { RetroCore *self; - RetroCoreEnvironmentInternal *internal; self = retro_core_get_cb_data (); if (self == NULL) g_return_val_if_reached (0); - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); - - if (internal->sample_rate <= 0.0) + if (self->sample_rate <= 0.0) return 0; - g_signal_emit_by_name (self, "audio_output", data, frames * 2, internal->sample_rate); + g_signal_emit_by_name (self, "audio_output", data, frames * 2, self->sample_rate); // FIXME What should be returned? return 0; @@ -507,19 +487,13 @@ on_input_poll () { RetroCore *self; - RetroInput *input; self = retro_core_get_cb_data (); if (self == NULL) g_return_if_reached (); - input = retro_core_get_input_interface (self); - - if (input == NULL) - return; - - retro_input_poll (input); + retro_core_poll_controllers (self); } static gint16 @@ -529,32 +503,26 @@ guint id) { RetroCore *self; - RetroInput *input; + RetroInput input; self = retro_core_get_cb_data (); if (self == NULL) g_return_val_if_reached (0); - input = retro_core_get_input_interface (self); - - if (input == NULL) - return 0; + retro_input_init (&input, device, id, index); - return retro_input_get_state (input, port, device, index, id); + return retro_core_get_controller_input_state (self, port, &input); } // TODO This is internal, make it private as soon as possible. void retro_core_set_environment_interface (RetroCore *self) { - RetroCoreEnvironmentInternal *internal; RetroModule *module; RetroCallbackSetter set_environment; - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); - - module = internal->module; + module = self->module; set_environment = retro_module_get_set_environment (module); retro_core_push_cb_data (self); @@ -566,7 +534,6 @@ void retro_core_set_callbacks (RetroCore *self) { - RetroCoreEnvironmentInternal *internal; RetroModule *module; RetroCallbackSetter set_video_refresh; RetroCallbackSetter set_audio_sample; @@ -574,9 +541,7 @@ RetroCallbackSetter set_input_poll; RetroCallbackSetter set_input_state; - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); - - module = internal->module; + module = self->module; set_video_refresh = retro_module_get_set_video_refresh (module); set_audio_sample = retro_module_get_set_audio_sample (module); set_audio_sample_batch = retro_module_get_set_audio_sample_batch (module); @@ -597,18 +562,14 @@ retro_core_set_system_av_info (RetroCore *self, RetroSystemAvInfo *system_av_info) { - RetroCoreEnvironmentInternal *internal; - - internal = RETRO_CORE_ENVIRONMENT_INTERNAL (self); - - if (self->_frames_per_second != system_av_info->timing.fps) { - self->_frames_per_second = system_av_info->timing.fps; + if (self->frames_per_second != system_av_info->timing.fps) { + self->frames_per_second = system_av_info->timing.fps; g_object_notify (G_OBJECT (self), "frames-per-second"); } if (system_av_info->geometry.aspect_ratio > 0.f) - internal->aspect_ratio = system_av_info->geometry.aspect_ratio; + self->aspect_ratio = system_av_info->geometry.aspect_ratio; else - internal->aspect_ratio = (float) system_av_info->geometry.base_width / + self->aspect_ratio = (float) system_av_info->geometry.base_width / (float) system_av_info->geometry.base_height; - internal->sample_rate = system_av_info->timing.sample_rate; + self->sample_rate = system_av_info->timing.sample_rate; } diff -Nru retro-gtk-0.12.1/retro-gtk/retro-game-info.h retro-gtk-0.14.0/retro-gtk/retro-game-info.h --- retro-gtk-0.12.1/retro-gtk/retro-game-info.h 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-game-info.h 2018-03-10 13:02:01.000000000 +0000 @@ -3,6 +3,10 @@ #ifndef RETRO_GAME_INFO_H #define RETRO_GAME_INFO_H +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + #include G_BEGIN_DECLS diff -Nru retro-gtk-0.12.1/retro-gtk/retro-gl-display.c retro-gtk-0.14.0/retro-gtk/retro-gl-display.c --- retro-gtk-0.12.1/retro-gtk/retro-gl-display.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-gl-display.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,569 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-gl-display.h" + +#include +#include "retro-glsl-filter.h" +#include "retro-pixdata.h" + +struct _RetroGLDisplay +{ + GtkGLArea parent_instance; + RetroCore *core; + RetroPixdata *pixdata; + GdkPixbuf *pixbuf; + RetroVideoFilter filter; + gfloat aspect_ratio; + gulong on_video_output_id; + + RetroGLSLFilter *glsl_filter[RETRO_VIDEO_FILTER_COUNT]; + GLuint framebuffer; + GLuint texture; +}; + +G_DEFINE_TYPE (RetroGLDisplay, retro_gl_display, GTK_TYPE_GL_AREA) + +typedef struct { + struct { + float x, y; + } position; + struct { + float x, y; + } texture_coordinates; +} RetroVertex; + +static float vertices[] = { + -1.0f, 1.0f, 0.0f, 0.0f, // Top-left + 1.0f, 1.0f, 1.0f, 0.0f, // Top-right + 1.0f, -1.0f, 1.0f, 1.0f, // Bottom-right + -1.0f, -1.0f, 0.0f, 1.0f, // Bottom-left +}; + +static GLuint elements[] = { + 0, 1, 2, + 2, 3, 0, +}; + +static const gchar *filter_uris[] = { + NULL, + NULL, + "resource:///org/gnome/Retro/glsl-filters/crt-simple.filter", +}; + +/* Private */ + +static void +retro_gl_display_clear_video (RetroGLDisplay *self) +{ + g_clear_object (&self->pixbuf); + if (self->pixdata != NULL) { + retro_pixdata_free (self->pixdata); + self->pixdata = NULL; + } +} + +static void +retro_gl_display_set_pixdata (RetroGLDisplay *self, + RetroPixdata *pixdata) +{ + if (self->pixdata == pixdata) + return; + + retro_gl_display_clear_video (self); + + if (pixdata != NULL) + self->pixdata = retro_pixdata_copy (pixdata); + + gtk_widget_queue_draw (GTK_WIDGET (self)); +} + +static void +retro_gl_display_get_video_box (RetroGLDisplay *self, + gdouble *width, + gdouble *height, + gdouble *x, + gdouble *y) +{ + gdouble w; + gdouble h; + gdouble display_ratio; + gdouble allocated_ratio; + + g_return_if_fail (RETRO_IS_GL_DISPLAY (self)); + g_return_if_fail (width != NULL); + g_return_if_fail (height != NULL); + g_return_if_fail (x != NULL); + g_return_if_fail (y != NULL); + + w = (gdouble) gtk_widget_get_allocated_width (GTK_WIDGET (self)); + h = (gdouble) gtk_widget_get_allocated_height (GTK_WIDGET (self)); + + // Set the size of the display. + display_ratio = (gdouble) self->aspect_ratio; + allocated_ratio = w / h; + + // If the screen is wider than the video… + if (allocated_ratio > display_ratio) { + *height = h; + *width = (gdouble) (h * display_ratio); + } + else { + *width = w; + *height = (gdouble) (w / display_ratio); + } + + // Set the position of the display. + *x = (w - *width) / 2; + *y = (h - *height) / 2; +} + +static gboolean +retro_gl_display_load_texture (RetroGLDisplay *self, + gint *texture_width, + gint *texture_height) +{ + if (self->pixdata != NULL) { + *texture_width = retro_pixdata_get_width (self->pixdata); + *texture_height = retro_pixdata_get_height (self->pixdata); + + return retro_pixdata_load_gl_texture (self->pixdata); + } + + if (retro_gl_display_get_pixbuf (self) == NULL) + return FALSE; + + *texture_width = gdk_pixbuf_get_width (self->pixbuf), + *texture_height = gdk_pixbuf_get_height (self->pixbuf), + + glTexImage2D (GL_TEXTURE_2D, + 0, + GL_RGB, + *texture_width, + *texture_height, + 0, + GL_RGBA, GL_UNSIGNED_BYTE, + gdk_pixbuf_get_pixels (self->pixbuf)); + + return TRUE; +} + +static void +retro_gl_display_blit_texture (RetroGLDisplay *self, + GLenum filter, + gint texture_width, + gint texture_height) +{ + gdouble w = 0.0; + gdouble h = 0.0; + gdouble x = 0.0; + gdouble y = 0.0; + + retro_gl_display_get_video_box (self, &w, &h, &x, &y); + + glBindFramebuffer(GL_READ_FRAMEBUFFER, self->framebuffer); + glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_TEXTURE_2D, self->texture, 0); + glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); + + glBindFramebuffer (GL_READ_FRAMEBUFFER, self->framebuffer); + glBlitFramebuffer (0, 0, + texture_width, + texture_height, + (GLint) x, (GLint) (y + h), (GLint) (x + w), (GLint) y, + GL_COLOR_BUFFER_BIT, + filter); + glBindFramebuffer (GL_READ_FRAMEBUFFER, 0); +} + +static void +retro_gl_display_draw_texture (RetroGLDisplay *self, + RetroGLSLFilter *filter, + gint texture_width, + gint texture_height) +{ + GLfloat source_width, source_height; + GLfloat target_width, target_height; + GLfloat output_width, output_height; + + retro_glsl_filter_use_program (filter); + + retro_glsl_filter_apply_texture_params (filter); + + retro_glsl_filter_set_uniform_1f (filter, "relative_aspect_ratio", + (gfloat) gtk_widget_get_allocated_width (GTK_WIDGET (self)) / + (gfloat) gtk_widget_get_allocated_height (GTK_WIDGET (self)) / + self->aspect_ratio); + + source_width = (GLfloat) texture_width; + source_height = (GLfloat) texture_height; + target_width = (GLfloat) gtk_widget_get_allocated_width (GTK_WIDGET (self)); + target_height = (GLfloat) gtk_widget_get_allocated_height (GTK_WIDGET (self)); + output_width = (GLfloat) gtk_widget_get_allocated_width (GTK_WIDGET (self)); + output_height = (GLfloat) gtk_widget_get_allocated_height (GTK_WIDGET (self)); + + retro_glsl_filter_set_uniform_4f (filter, "sourceSize[0]", + source_width, source_height, + 1.0f / source_width, 1.0f / source_height); + + retro_glsl_filter_set_uniform_4f (filter, "targetSize", + target_width, target_height, + 1.0f / target_width, 1.0f / target_height); + + retro_glsl_filter_set_uniform_4f (filter, "outputSize", + output_width, output_height, + 1.0f / output_width, 1.0f / output_height); + + glDrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); + +} + +static void +retro_gl_display_realize (RetroGLDisplay *self) +{ + GLuint vertex_buffer_object; + GLuint vertex_array_object; + GLuint element_buffer_object; + RetroVideoFilter filter; + GError *inner_error = NULL; + + gtk_gl_area_make_current (GTK_GL_AREA (self)); + + glGenBuffers (1, &vertex_buffer_object); + glBindBuffer (GL_ARRAY_BUFFER, vertex_buffer_object); + glBufferData (GL_ARRAY_BUFFER, sizeof (vertices), vertices, GL_STATIC_DRAW); + + glGenVertexArrays (1, &vertex_array_object); + glBindVertexArray (vertex_array_object); + + glGenBuffers (1, &element_buffer_object); + glBindBuffer (GL_ELEMENT_ARRAY_BUFFER, element_buffer_object); + glBufferData (GL_ELEMENT_ARRAY_BUFFER, sizeof (elements), elements, GL_STATIC_DRAW); + + for (filter = 0; filter < RETRO_VIDEO_FILTER_COUNT; filter++) { + if (filter_uris[filter] == NULL) + continue; + + self->glsl_filter[filter] = retro_glsl_filter_new (filter_uris[filter], NULL); + retro_glsl_filter_prepare_program (self->glsl_filter[filter], &inner_error); + if (G_UNLIKELY (inner_error != NULL)) { + g_critical ("Shader program %s creation failed: %s", + filter_uris[filter], + inner_error->message); + g_clear_object (&self->glsl_filter[filter]); + g_clear_error (&inner_error); + + continue; + } + + retro_glsl_filter_set_attribute_pointer (self->glsl_filter[filter], + "position", + sizeof (((RetroVertex *) NULL)->position) / sizeof (float), + GL_FLOAT, + GL_FALSE, + sizeof (RetroVertex), + (const GLvoid *) offsetof (RetroVertex, position)); + + retro_glsl_filter_set_attribute_pointer (self->glsl_filter[filter], + "texCoord", + sizeof (((RetroVertex *) NULL)->texture_coordinates) / sizeof (float), + GL_FLOAT, + GL_FALSE, + sizeof (RetroVertex), + (const GLvoid *) offsetof (RetroVertex, texture_coordinates)); + } + + glDeleteFramebuffers (1, &self->framebuffer); + self->framebuffer = 0; + glGenFramebuffers(1, &self->framebuffer); + + glDeleteTextures (1, &self->texture); + self->texture = 0; + glGenTextures (1, &self->texture); + glBindTexture (GL_TEXTURE_2D, self->texture); + + filter = self->filter >= RETRO_VIDEO_FILTER_COUNT ? + RETRO_VIDEO_FILTER_SMOOTH : + self->filter; + + retro_glsl_filter_use_program (self->glsl_filter[filter]); +} + +static void +retro_gl_display_unrealize (RetroGLDisplay *self) +{ + RetroVideoFilter filter; + + gtk_gl_area_make_current (GTK_GL_AREA (self)); + + glDeleteFramebuffers (1, &self->framebuffer); + self->framebuffer = 0; + glDeleteTextures (1, &self->texture); + self->texture = 0; + for (filter = 0; filter < RETRO_VIDEO_FILTER_COUNT; filter++) + g_clear_object (&self->glsl_filter[filter]); +} + +static gboolean +retro_gl_display_render (RetroGLDisplay *self) +{ + RetroVideoFilter filter; + gint texture_width; + gint texture_height; + + g_return_val_if_fail (RETRO_IS_GL_DISPLAY (self), FALSE); + + glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + filter = self->filter >= RETRO_VIDEO_FILTER_COUNT ? + RETRO_VIDEO_FILTER_SMOOTH : + self->filter; + + if (!retro_gl_display_load_texture (self, &texture_width, &texture_height)) + return FALSE; + + if (filter == RETRO_VIDEO_FILTER_SMOOTH) { + retro_gl_display_blit_texture (self, GL_LINEAR, texture_width, texture_height); + + return FALSE; + } + + if (filter == RETRO_VIDEO_FILTER_SHARP) { + retro_gl_display_blit_texture (self, GL_NEAREST, texture_width, texture_height); + + return FALSE; + } + + if (self->glsl_filter[filter] == NULL) { + retro_gl_display_blit_texture (self, GL_LINEAR, texture_width, texture_height); + + return FALSE; + } + + retro_gl_display_draw_texture (self, self->glsl_filter[filter], texture_width, texture_height); + + return FALSE; +} + +static void +retro_gl_display_finalize (GObject *object) +{ + RetroGLDisplay *self = (RetroGLDisplay *) object; + RetroVideoFilter filter; + + glDeleteTextures (1, &self->texture); + self->texture = 0; + for (filter = 0; filter < RETRO_VIDEO_FILTER_COUNT; filter++) + g_clear_object (&self->glsl_filter[filter]); + if (self->core != NULL) + g_object_unref (self->core); + if (self->pixbuf != NULL) + g_object_unref (self->pixbuf); + + G_OBJECT_CLASS (retro_gl_display_parent_class)->finalize (object); +} + +static void +retro_gl_display_class_init (RetroGLDisplayClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = retro_gl_display_finalize; +} + +static void +queue_draw (GObject *sender, + GParamSpec *pspec, + gpointer self) +{ + gtk_widget_queue_draw (GTK_WIDGET (self)); +} + +static void +retro_gl_display_init (RetroGLDisplay *self) +{ + g_signal_connect_object (G_OBJECT (self), + "realize", + (GCallback) retro_gl_display_realize, + GTK_WIDGET (self), + 0); + + g_signal_connect_object (G_OBJECT (self), + "unrealize", + (GCallback) retro_gl_display_unrealize, + GTK_WIDGET (self), + 0); + + g_signal_connect_object (G_OBJECT (self), + "render", + (GCallback) retro_gl_display_render, + GTK_WIDGET (self), + 0); + + self->filter = RETRO_VIDEO_FILTER_SMOOTH; + + g_signal_connect_object (G_OBJECT (self), + "notify::sensitive", + (GCallback) queue_draw, + GTK_WIDGET (self), + 0); +} + +static void +retro_gl_display_on_video_output (RetroCore *sender, + RetroPixdata *pixdata, + gpointer user_data) +{ + RetroGLDisplay *self = RETRO_GL_DISPLAY (user_data); + + g_return_if_fail (RETRO_IS_GL_DISPLAY (self)); + + if (pixdata == NULL) + return; + + self->aspect_ratio = retro_pixdata_get_aspect_ratio (pixdata); + retro_gl_display_set_pixdata (self, pixdata); +} + +/* Public */ + +/** + * retro_gl_display_set_core: + * @self: a #RetroGLDisplay + * @core: (nullable): a #RetroCore, or %NULL + * + * Sets @core as the #RetroCore displayed by @self. + */ +void +retro_gl_display_set_core (RetroGLDisplay *self, + RetroCore *core) +{ + g_return_if_fail (RETRO_IS_GL_DISPLAY (self)); + + if (self->core == core) + return; + + if (self->core != NULL) { + g_signal_handler_disconnect (G_OBJECT (self->core), self->on_video_output_id); + g_clear_object (&self->core); + } + + if (core != NULL) { + self->core = g_object_ref (core); + self->on_video_output_id = g_signal_connect_object (core, "video-output", (GCallback) retro_gl_display_on_video_output, self, 0); + } +} + +/** + * retro_gl_display_get_pixbuf: + * @self: a #RetroGLDisplay + * + * Gets the currently displayed video frame. + * + * Returns: (transfer none): a #GdkPixbuf + */ +GdkPixbuf * +retro_gl_display_get_pixbuf (RetroGLDisplay *self) +{ + g_return_val_if_fail (RETRO_IS_GL_DISPLAY (self), NULL); + + if (self->pixbuf != NULL) + return self->pixbuf; + + if (self->pixdata != NULL) + self->pixbuf = retro_pixdata_to_pixbuf (self->pixdata); + + return self->pixbuf; +} + +/** + * retro_gl_display_set_pixbuf: + * @self: a #RetroGLDisplay + * @pixbuf: a #GdkPixbuf + * + * Sets @pixbuf as the currently displayed video frame. + */ +void +retro_gl_display_set_pixbuf (RetroGLDisplay *self, + GdkPixbuf *pixbuf) +{ + g_return_if_fail (RETRO_IS_GL_DISPLAY (self)); + + if (self->pixbuf == pixbuf) + return; + + retro_gl_display_clear_video (self); + + if (pixbuf != NULL) + self->pixbuf = g_object_ref (pixbuf); + + gtk_widget_queue_draw (GTK_WIDGET (self)); +} + +/** + * retro_gl_display_set_filter: + * @self: a #RetroGLDisplay + * @filter: a #RetroVideoFilter + * + * Sets the video filter to use to render the core's video on @self. + */ +void +retro_gl_display_set_filter (RetroGLDisplay *self, + RetroVideoFilter filter) +{ + g_return_if_fail (RETRO_IS_GL_DISPLAY (self)); + + self->filter = filter; + gtk_widget_queue_draw (GTK_WIDGET (self)); +} + +/** + * retro_gl_display_get_coordinates_on_display: + * @self: a #RetroGLDisplay + * @widget_x: the abscissa on @self + * @widget_y: the ordinate on @self + * @display_x: return location for a the abscissa on the core's video display + * @display_y: return location for a the ordinate on the core's video display + * + * Gets coordinates on the core's video output from coordinates on @self, and + * whether the point is inside the core's video display. + * + * Returns: whether the coordinates are on the core's video display + */ +gboolean +retro_gl_display_get_coordinates_on_display (RetroGLDisplay *self, + gdouble widget_x, + gdouble widget_y, + gdouble *display_x, + gdouble *display_y) +{ + gdouble w = 0.0; + gdouble h = 0.0; + gdouble x = 0.0; + gdouble y = 0.0; + + g_return_val_if_fail (RETRO_IS_GL_DISPLAY (self), FALSE); + g_return_val_if_fail (display_x != NULL, FALSE); + g_return_val_if_fail (display_y != NULL, FALSE); + + retro_gl_display_get_video_box (self, &w, &h, &x, &y); + + // Return coordinates as a [-1.0, 1.0] scale, (0.0, 0.0) is the center. + *display_x = ((widget_x - x) * 2.0 - w) / w; + *display_y = ((widget_y - y) * 2.0 - h) / h; + + return (-1.0 <= *display_x) && (*display_x <= 1.0) && + (-1.0 <= *display_y) && (*display_y <= 1.0); +} + +/** + * retro_gl_display_new: + * + * Creates a new #RetroGLDisplay. + * + * Returns: (transfer full): a new #RetroGLDisplay + */ +RetroGLDisplay * +retro_gl_display_new (void) +{ + return g_object_new (RETRO_TYPE_GL_DISPLAY, NULL); +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-gl-display.h retro-gtk-0.14.0/retro-gtk/retro-gl-display.h --- retro-gtk-0.12.1/retro-gtk/retro-gl-display.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-gl-display.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,36 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_GL_DISPLAY_H +#define RETRO_GL_DISPLAY_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include +#include "retro-core.h" +#include "retro-video-filter.h" + +G_BEGIN_DECLS + +#define RETRO_TYPE_GL_DISPLAY (retro_gl_display_get_type()) + +G_DECLARE_FINAL_TYPE (RetroGLDisplay, retro_gl_display, RETRO, GL_DISPLAY, GtkGLArea) + +RetroGLDisplay *retro_gl_display_new (void); +GdkPixbuf *retro_gl_display_get_pixbuf (RetroGLDisplay *self); +void retro_gl_display_set_pixbuf (RetroGLDisplay *self, + GdkPixbuf *pixbuf); +void retro_gl_display_set_core (RetroGLDisplay *self, + RetroCore *core); +void retro_gl_display_set_filter (RetroGLDisplay *self, + RetroVideoFilter filter); +gboolean retro_gl_display_get_coordinates_on_display (RetroGLDisplay *self, + gdouble widget_x, + gdouble widget_y, + gdouble *display_x, + gdouble *display_y); + +G_END_DECLS + +#endif /* RETRO_GL_DISPLAY_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-glsl-filter.c retro-gtk-0.14.0/retro-gtk/retro-glsl-filter.c --- retro-gtk-0.12.1/retro-gtk/retro-glsl-filter.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-glsl-filter.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,400 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-glsl-filter.h" + +struct _RetroGLSLFilter +{ + GObject parent_instance; + GBytes *vertex; + GBytes *fragment; + GLenum wrap; + GLenum filter; + GLuint program; +}; + +G_DEFINE_TYPE (RetroGLSLFilter, retro_glsl_filter, G_TYPE_OBJECT) + +#define GLSL_FILTER_GROUP "GLSL Filter" + +#define RETRO_GLSL_FILTER_ERROR (retro_glsl_filter_error_quark ()) + +typedef enum { + RETRO_GLSL_FILTER_ERROR_SHADER_COMPILATION, + RETRO_GLSL_FILTER_ERROR_SHADER_LINK +} RetroGLSLFilterError; + +G_DEFINE_QUARK (retro-glsl-filter-error, retro_glsl_filter_error) + +static const gchar * +g_key_file_try_get_string (GKeyFile *key_file, + const gchar *group, + const gchar *key) +{ + const gchar *value; + GError *inner_error = NULL; + + value = g_key_file_get_string (key_file, group, key, &inner_error); + if (G_UNLIKELY (inner_error != NULL)) { + g_debug ("%s", inner_error->message); + g_clear_error (&inner_error); + + return NULL; + } + + return value; +} + +static GBytes * +g_file_try_read_bytes (GFile *file) +{ + GFileInputStream *stream; + goffset size; + GBytes *bytes; + GError *inner_error = NULL; + + stream = g_file_read (file, NULL, &inner_error); + if (G_UNLIKELY (inner_error != NULL)) { + g_debug ("%s", inner_error->message); + g_clear_error (&inner_error); + + return NULL; + } + + g_seekable_seek (G_SEEKABLE (stream), 0, G_SEEK_END, NULL, &inner_error); + if (G_UNLIKELY (inner_error != NULL)) { + g_debug ("%s", inner_error->message); + g_clear_error (&inner_error); + g_object_unref (stream); + + return NULL; + } + + size = g_seekable_tell (G_SEEKABLE (stream)); + + g_seekable_seek (G_SEEKABLE (stream), 0, G_SEEK_SET, NULL, &inner_error); + if (G_UNLIKELY (inner_error != NULL)) { + g_debug ("%s", inner_error->message); + g_clear_error (&inner_error); + g_object_unref (stream); + + return NULL; + } + + bytes = g_input_stream_read_bytes (G_INPUT_STREAM (stream), size, NULL, &inner_error); + if (G_UNLIKELY (inner_error != NULL)) { + g_debug ("%s", inner_error->message); + g_clear_error (&inner_error); + g_object_unref (stream); + + return NULL; + } + + g_object_unref (stream); + + return bytes; +} + +static GBytes * +g_file_try_read_child_bytes (GFile *parent, + const gchar *child_filename) +{ + GFile *file; + GBytes *bytes; + + file = g_file_get_child (parent, child_filename); + bytes = g_file_try_read_bytes (file); + g_object_unref (file); + + return bytes; +} + +static GBytes * +g_key_file_try_read_child_bytes (GKeyFile *key_file, + const gchar *group, + const gchar *key, + GFile *parent) +{ + const gchar *value; + + value = g_key_file_try_get_string (key_file, group, key); + if (value == NULL) + return NULL; + + return g_file_try_read_child_bytes (parent, value); +} + +RetroGLSLFilter * +retro_glsl_filter_new (const char *uri, + GError **error) +{ + RetroGLSLFilter *self; + GKeyFile *key_file; + GFile *file; + GFile *parent; + GBytes *bytes; + const gchar *value; + GError *inner_error = NULL; + + g_return_val_if_fail (uri != NULL, NULL); + + file = g_file_new_for_uri (uri); + bytes = g_file_try_read_bytes (file); + if (G_UNLIKELY (bytes == NULL)) { + g_object_unref (file); + + return NULL; + } + + key_file = g_key_file_new (); + g_key_file_load_from_bytes (key_file, bytes, G_KEY_FILE_NONE, &inner_error); + if (G_UNLIKELY (inner_error != NULL)) { + g_propagate_error (error, inner_error); + g_object_unref (file); + g_bytes_unref (bytes); + g_key_file_unref (key_file); + + return NULL; + } + + g_bytes_unref (bytes); + + self = g_object_new (RETRO_TYPE_GLSL_FILTER, NULL); + + value = g_key_file_try_get_string (key_file, GLSL_FILTER_GROUP, "Filter"); + if (g_strcmp0 (value, "Linear") == 0) + self->filter = GL_LINEAR; + else if (g_strcmp0 (value, "Nearest") == 0) + self->filter = GL_NEAREST; + else + self->filter = GL_LINEAR; + + value = g_key_file_try_get_string (key_file, GLSL_FILTER_GROUP, "Wrap"); + if (g_strcmp0 (value, "Border") == 0) + self->wrap = GL_CLAMP_TO_BORDER; + else if (g_strcmp0 (value, "Edge") == 0) + self->wrap = GL_CLAMP_TO_EDGE; + else + self->wrap = GL_CLAMP_TO_BORDER; + + parent = g_file_get_parent (file); + g_object_unref (file); + + self->vertex = g_key_file_try_read_child_bytes (key_file, + GLSL_FILTER_GROUP, + "Vertex", + parent); + + if (self->vertex == NULL) + self->vertex = g_file_try_read_child_bytes (parent, "sharp.vs"); + + self->fragment = g_key_file_try_read_child_bytes (key_file, + GLSL_FILTER_GROUP, + "Fragment", + parent); + + if (self->fragment == NULL) + self->fragment = g_file_try_read_child_bytes (parent, "sharp.fs"); + + g_object_unref (parent); + g_key_file_unref (key_file); + + return self; +} + +static void +retro_glsl_filter_finalize (GObject *object) +{ + RetroGLSLFilter *self = (RetroGLSLFilter *) object; + + if (self->vertex != NULL) + g_bytes_unref (self->vertex); + if (self->fragment != NULL) + g_bytes_unref (self->fragment); + glDeleteProgram (self->program); + self->program = 0; + + G_OBJECT_CLASS (retro_glsl_filter_parent_class)->finalize (object); +} + +static void +retro_glsl_filter_class_init (RetroGLSLFilterClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = retro_glsl_filter_finalize; +} + +static void +retro_glsl_filter_init (RetroGLSLFilter *self) +{ +} + +void +retro_glsl_filter_apply_texture_params (RetroGLSLFilter *self) +{ + g_return_if_fail (RETRO_IS_GLSL_FILTER (self)); + + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, self->wrap); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, self->wrap); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, self->filter); + glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, self->filter); +} + +static GLuint +create_shader (GBytes *source_bytes, + GLenum shader_type, + GError **error) +{ + const gchar *source; + gint size; + GLuint shader; + gint status; + gint log_length; + gchar *buffer; + + source = g_bytes_get_data (source_bytes, NULL); + size = g_bytes_get_size (source_bytes); + shader = glCreateShader (shader_type); + glShaderSource (shader, 1, &source, &size); + glCompileShader (shader); + + status = 0; + glGetShaderiv (shader, GL_COMPILE_STATUS, &status); + if (status == GL_FALSE) { + glGetShaderiv (shader, GL_INFO_LOG_LENGTH, &log_length); + buffer = g_malloc (log_length + 1); + glGetShaderInfoLog (shader, log_length, NULL, buffer); + + g_set_error (error, RETRO_GLSL_FILTER_ERROR, RETRO_GLSL_FILTER_ERROR_SHADER_COMPILATION, + "Compilation failure in %s shader: %s", + shader_type == GL_VERTEX_SHADER ? "vertex" : "fragment", + buffer); + + g_free (buffer); + glDeleteShader (shader); + + return 0; + } + + return shader; +} + +void +retro_glsl_filter_prepare_program (RetroGLSLFilter *self, + GError **error) +{ + gint status; + gint log_length; + gchar *buffer; + GLuint vertex_shader; + GLuint fragment_shader; + GError *inner_error = NULL; + + g_return_if_fail (RETRO_IS_GLSL_FILTER (self)); + g_return_if_fail (self->program == 0); + + vertex_shader = create_shader (self->vertex, GL_VERTEX_SHADER, &inner_error); + if (G_UNLIKELY (inner_error != NULL)) { + g_propagate_error (error, inner_error); + self->program = 0; + + return; + } + + fragment_shader = create_shader (self->fragment, GL_FRAGMENT_SHADER, &inner_error); + if (G_UNLIKELY (inner_error != NULL)) { + g_propagate_error (error, inner_error); + glDeleteShader (vertex_shader); + self->program = 0; + + return; + } + + self->program = glCreateProgram(); + glAttachShader (self->program, vertex_shader); + glAttachShader (self->program, fragment_shader); + glLinkProgram (self->program); + + status = 0; + glGetProgramiv (self->program, GL_LINK_STATUS, &status); + if (status == GL_FALSE) { + log_length = 0; + glGetProgramiv (self->program, GL_INFO_LOG_LENGTH, &log_length); + buffer = g_malloc (log_length + 1); + glGetProgramInfoLog (self->program, log_length, NULL, buffer); + + g_set_error (error, RETRO_GLSL_FILTER_ERROR, RETRO_GLSL_FILTER_ERROR_SHADER_LINK, + "Linking failure in program: %s", buffer); + g_free (buffer); + + glDeleteShader (vertex_shader); + glDeleteShader (fragment_shader); + glDeleteProgram (self->program); + self->program = 0; + + return; + } + + glDetachShader (self->program, vertex_shader); + glDetachShader (self->program, fragment_shader); +} + +void +retro_glsl_filter_use_program (RetroGLSLFilter *self) +{ + g_return_if_fail (RETRO_IS_GLSL_FILTER (self)); + g_return_if_fail (self->program != 0); + + glUseProgram (self->program); +} + +void +retro_glsl_filter_set_attribute_pointer (RetroGLSLFilter *self, + const gchar *name, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + const GLvoid *pointer) +{ + GLint location; + + g_return_if_fail (RETRO_IS_GLSL_FILTER (self)); + g_return_if_fail (self->program != 0); + + location = glGetAttribLocation (self->program, name); + glVertexAttribPointer (location, size, type, normalized, stride, pointer); + glEnableVertexAttribArray (location); +} + + +void +retro_glsl_filter_set_uniform_1f (RetroGLSLFilter *self, + const gchar *name, + gfloat v0) +{ + GLint location; + + g_return_if_fail (RETRO_IS_GLSL_FILTER (self)); + g_return_if_fail (self->program != 0); + + location = glGetUniformLocation (self->program, name); + glUniform1f (location, v0); +} + +void +retro_glsl_filter_set_uniform_4f (RetroGLSLFilter *self, + const gchar *name, + gfloat v0, + gfloat v1, + gfloat v2, + gfloat v3) +{ + GLint location; + + g_return_if_fail (RETRO_IS_GLSL_FILTER (self)); + g_return_if_fail (self->program != 0); + + location = glGetUniformLocation (self->program, name); + glUniform4f (location, v0, v1, v2, v3); +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-glsl-filter.h retro-gtk-0.14.0/retro-gtk/retro-glsl-filter.h --- retro-gtk-0.12.1/retro-gtk/retro-glsl-filter.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-glsl-filter.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,40 @@ +#ifndef RETRO_GLSL_FILTER_H +#define RETRO_GLSL_FILTER_H + +#include +#include +#include + +G_BEGIN_DECLS + +#define RETRO_TYPE_GLSL_FILTER (retro_glsl_filter_get_type()) + +G_DECLARE_FINAL_TYPE (RetroGLSLFilter, retro_glsl_filter, RETRO, GLSL_FILTER, GObject) + +RetroGLSLFilter *retro_glsl_filter_new (const char *uri, + GError **error); +void retro_glsl_filter_apply_texture_params (RetroGLSLFilter *self); +void retro_glsl_filter_prepare_program (RetroGLSLFilter *self, + GError **error); +void retro_glsl_filter_use_program (RetroGLSLFilter *self); +void retro_glsl_filter_set_attribute_pointer (RetroGLSLFilter *self, + const gchar *name, + GLint size, + GLenum type, + GLboolean normalized, + GLsizei stride, + const GLvoid *pointer); +void retro_glsl_filter_set_uniform_1f (RetroGLSLFilter *self, + const gchar *name, + gfloat v0); +void retro_glsl_filter_set_uniform_4f (RetroGLSLFilter *self, + const gchar *name, + gfloat v0, + gfloat v1, + gfloat v2, + gfloat v3); + +G_END_DECLS + +#endif /* RETRO_GLSL_FILTER_H */ + diff -Nru retro-gtk-0.12.1/retro-gtk/retro-gtk-0.12.deps retro-gtk-0.14.0/retro-gtk/retro-gtk-0.12.deps --- retro-gtk-0.12.1/retro-gtk/retro-gtk-0.12.deps 2017-09-11 17:49:40.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-gtk-0.12.deps 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ - -cairo -gio-2.0 -glib-2.0 -gmodule-2.0 -gobject-2.0 -gtk+-3.0 -libpulse -libpulse-simple - diff -Nru retro-gtk-0.12.1/retro-gtk/retro-gtk-0.12.pc.in retro-gtk-0.14.0/retro-gtk/retro-gtk-0.12.pc.in --- retro-gtk-0.12.1/retro-gtk/retro-gtk-0.12.pc.in 2017-09-11 17:49:40.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-gtk-0.12.pc.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -datarootdir=@datarootdir@ -datadir=@datadir@ -includedir=@includedir@/retro-gtk-0.12 - -Name: Retro -Description: GTK+ based libretro wrapper -Version: @VERSION@ -Requires: @retro_gtk_pkg_modules@ -Libs: -L${libdir} -lretro-gtk -Cflags: -I${includedir} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-gtk-0.12.vapi retro-gtk-0.14.0/retro-gtk/retro-gtk-0.12.vapi --- retro-gtk-0.12.1/retro-gtk/retro-gtk-0.12.vapi 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-gtk-0.12.vapi 1970-01-01 00:00:00.000000000 +0000 @@ -1,218 +0,0 @@ -/* retro-gtk-0.12.vapi generated by valac 0.36.1.39-72bb2, do not modify. */ - -[CCode (gir_namespace = "Retro", gir_version = "0.12")] -namespace Retro { - [CCode (cheader_filename = "retro-gtk.h")] - public class CairoDisplay : Gtk.DrawingArea { - public CairoDisplay (); - public override bool draw (Cairo.Context cr); - public bool get_coordinates_on_display (double widget_x, double widget_y, out double display_x, out double display_y); - public void hide_video (); - public void set_core (Retro.Core? core); - public void set_filter (Retro.VideoFilter filter); - public void show_video (); - public Gdk.Pixbuf pixbuf { get; set; } - } - [CCode (cheader_filename = "retro-gtk.h")] - public class Core : GLib.Object { - public Core (string file_name); - public void deserialize_state ([CCode (array_length_type = "gsize")] uint8[] data) throws GLib.Error; - public uint8[] get_memory (Retro.MemoryType id); - public size_t get_memory_size (Retro.MemoryType id); - public void init () throws GLib.Error; - public void reset (); - public void run (); - [CCode (array_length_type = "gsize")] - public uint8[] serialize_state () throws GLib.Error; - public void set_controller_port_device (uint port, Retro.DeviceType device); - public void set_current_media (uint media_index) throws GLib.Error; - public void set_medias ([CCode (array_length = false, array_null_terminated = true)] string[] uris); - public void set_memory (Retro.MemoryType id, uint8[] data); - public bool supports_serialization (); - public uint api_version { get; } - public string content_directory { get; set; } - public string file_name { get; internal set; } - public double frames_per_second { get; } - public bool game_loaded { get; internal set; } - public Retro.Input input_interface { get; set construct; } - public bool is_initiated { get; internal set; } - public string libretro_path { get; set; } - public Retro.Rumble rumble_interface { get; set; } - public string save_directory { get; set; } - public bool support_no_game { get; internal set; } - public string system_directory { get; set; } - public signal void audio_output (int16[] frames, double sample_rate); - public signal void log (string log_domain, GLib.LogLevelFlags log_level, string message); - public signal bool message (string message, uint frames); - public signal bool shutdown (); - public signal void video_output (uint8[] data, uint width, uint height, size_t pitch, Retro.PixelFormat pixel_format, float aspect_ratio); - } - [CCode (cheader_filename = "retro-gtk.h")] - public class CoreDescriptor : GLib.Object { - public class Platform : GLib.Object { - } - public CoreDescriptor (string filename) throws GLib.Error, GLib.KeyFileError, GLib.FileError; - public string get_firmware_md5 (string firmware) throws GLib.KeyFileError; - public string get_firmware_path (string firmware) throws GLib.KeyFileError; - public string get_firmware_sha512 (string firmware) throws GLib.KeyFileError; - public string[] get_firmwares (string platform) throws GLib.KeyFileError; - public GLib.Icon get_icon () throws GLib.KeyFileError; - public string get_id (); - public bool get_is_emulator () throws GLib.KeyFileError; - public bool get_is_firmware_mandatory (string firmware) throws GLib.KeyFileError; - public bool get_is_game () throws GLib.KeyFileError; - public string[] get_mime_type (string platform) throws GLib.KeyFileError; - public string get_module () throws GLib.KeyFileError; - public GLib.File? get_module_file () throws GLib.KeyFileError; - public string get_name () throws GLib.KeyFileError; - public bool get_platform_supports_mime_types (string platform, string[] mime_types) throws GLib.KeyFileError; - public string get_uri (); - public bool has_firmware_md5 (string firmware) throws GLib.KeyFileError; - public bool has_firmware_sha512 (string firmware) throws GLib.KeyFileError; - public bool has_firmwares (string platform) throws GLib.KeyFileError; - public bool has_icon () throws GLib.KeyFileError; - public bool has_platform (string platform); - } - [CCode (cheader_filename = "retro-gtk.h")] - public class CoreView : Gtk.EventBox { - public CoreView (); - public Retro.InputDevice as_input_device (Retro.DeviceType device_type); - public Retro.CairoDisplay get_display (); - public void set_core (Retro.Core? core); - public bool can_grab_pointer { get; set; } - public bool snap_pointer_to_borders { get; set; } - } - [CCode (cheader_filename = "retro-gtk.h")] - public class InputDeviceManager : GLib.Object, Retro.Input { - public InputDeviceManager (); - public void remove_controller_device (uint port); - public void set_controller_device (uint port, Retro.InputDevice device); - public void set_keyboard (Gtk.Widget widget); - } - [CCode (cheader_filename = "retro-gtk.h")] - public class MainLoop : GLib.Object { - public MainLoop (Retro.Core core); - public void reset (); - public void start (); - public void stop (); - public Retro.Core core { get; set construct; } - public double speed_rate { get; set construct; } - } - [CCode (cheader_filename = "retro-gtk.h")] - public class ModuleIterator { - public new Retro.CoreDescriptor? @get (); - public bool next (); - } - [CCode (cheader_filename = "retro-gtk.h")] - public class ModuleQuery { - public ModuleQuery (bool recursive); - public Retro.ModuleIterator iterator (); - } - [CCode (cheader_filename = "retro-gtk.h")] - public class PaPlayer : GLib.Object { - public PaPlayer (); - public void set_core (Retro.Core? core); - } - [CCode (cheader_filename = "retro-gtk.h")] - public interface Input : GLib.Object { - public delegate void ControllerCallback (uint port, Retro.InputDevice device); - public abstract void foreach_controller (Retro.Input.ControllerCallback callback); - public abstract uint64 get_device_capabilities (); - public abstract int16 get_state (uint port, Retro.DeviceType device, uint index, uint id); - public abstract void poll (); - public abstract void set_descriptors (Retro.InputDescriptor[] input_descriptors); - public signal void controller_connected (uint port, Retro.InputDevice device); - public signal void controller_disconnected (uint port); - public signal bool key_event (Gdk.EventKey event); - } - [CCode (cheader_filename = "retro-gtk.h")] - public interface InputDevice : GLib.Object { - public abstract uint64 get_device_capabilities (); - public abstract Retro.DeviceType get_device_type (); - public abstract int16 get_input_state (Retro.DeviceType device, uint index, uint id); - public abstract void poll (); - } - [CCode (cheader_filename = "retro-gtk.h")] - public interface Rumble : GLib.Object { - public abstract bool set_rumble_state (uint port, Retro.RumbleEffect effect, uint16 strength); - } - [CCode (cheader_filename = "retro-gtk.h")] - public struct InputDescriptor { - public uint port; - public Retro.DeviceType device; - public uint index; - public uint id; - public string description; - } - [CCode (cheader_filename = "retro-gtk.h")] - public enum AnalogId { - X, - Y - } - [CCode (cheader_filename = "retro-gtk.h")] - public enum AnalogIndex { - LEFT, - RIGHT - } - [CCode (cheader_filename = "retro-gtk.h")] - public enum DeviceType { - TYPE_MASK, - NONE, - JOYPAD, - MOUSE, - KEYBOARD, - LIGHTGUN, - ANALOG, - POINTER; - public Retro.DeviceType get_basic_type (); - } - [CCode (cheader_filename = "retro-gtk.h")] - public enum JoypadId { - B, - Y, - SELECT, - START, - UP, - DOWN, - LEFT, - RIGHT, - A, - X, - L, - R, - L2, - R2, - L3, - R3, - COUNT - } - [CCode (cheader_filename = "retro-gtk.h")] - public enum MemoryType { - SAVE_RAM, - RTC, - SYSTEM_RAM, - VIDEO_RAM - } - [CCode (cheader_filename = "retro-gtk.h")] - public enum PixelFormat { - XRGB1555, - XRGB8888, - RGB565, - UNKNOWN - } - [CCode (cheader_filename = "retro-gtk.h")] - public enum RumbleEffect { - STRONG, - WEAK - } - [CCode (cheader_filename = "retro-gtk.h")] - public enum VideoFilter { - SMOOTH, - SHARP; - public static Retro.VideoFilter from_string (string filter); - } - [CCode (cheader_filename = "retro-gtk.h")] - public const uint API_VERSION; - [CCode (cheader_filename = "retro-gtk.h")] - public static void g_log (Retro.Core core, string log_domain, GLib.LogLevelFlags log_level, string message); -} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-gtk-0.14.deps retro-gtk-0.14.0/retro-gtk/retro-gtk-0.14.deps --- retro-gtk-0.12.1/retro-gtk/retro-gtk-0.14.deps 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-gtk-0.14.deps 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,11 @@ + +cairo +epoxy +gio-2.0 +glib-2.0 +gmodule-2.0 +gobject-2.0 +gtk+-3.0 +libpulse +libpulse-simple + diff -Nru retro-gtk-0.12.1/retro-gtk/retro-gtk-0.14.pc.in retro-gtk-0.14.0/retro-gtk/retro-gtk-0.14.pc.in --- retro-gtk-0.12.1/retro-gtk/retro-gtk-0.14.pc.in 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-gtk-0.14.pc.in 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,13 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +datarootdir=@datarootdir@ +datadir=@datadir@ +includedir=@includedir@/retro-gtk-0.14 + +Name: Retro +Description: GTK+ based libretro wrapper +Version: @VERSION@ +Requires: @retro_gtk_pkg_modules@ +Libs: -L${libdir} -lretro-gtk +Cflags: -I${includedir} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-gtk.gresource.xml retro-gtk-0.14.0/retro-gtk/retro-gtk.gresource.xml --- retro-gtk-0.12.1/retro-gtk/retro-gtk.gresource.xml 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-gtk.gresource.xml 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,8 @@ + + + + glsl-filters/crt-simple.filter + glsl-filters/crt-simple.fs + glsl-filters/crt-simple.vs + + diff -Nru retro-gtk-0.12.1/retro-gtk/retro-gtk.h retro-gtk-0.14.0/retro-gtk/retro-gtk.h --- retro-gtk-0.12.1/retro-gtk/retro-gtk.h 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-gtk.h 2018-03-10 13:02:01.000000000 +0000 @@ -1,563 +1,30 @@ -/* retro-gtk.h generated by valac 0.36.1.39-72bb2, the Vala compiler, do not modify */ - +// This file is part of retro-gtk. License: GPL-3.0+. #ifndef __RETRO_GTK_H__ #define __RETRO_GTK_H__ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -G_BEGIN_DECLS - - -#define RETRO_TYPE_PA_PLAYER (retro_pa_player_get_type ()) -#define RETRO_PA_PLAYER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_PA_PLAYER, RetroPaPlayer)) -#define RETRO_PA_PLAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_PA_PLAYER, RetroPaPlayerClass)) -#define RETRO_IS_PA_PLAYER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_PA_PLAYER)) -#define RETRO_IS_PA_PLAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_PA_PLAYER)) -#define RETRO_PA_PLAYER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_PA_PLAYER, RetroPaPlayerClass)) - -typedef struct _RetroPaPlayer RetroPaPlayer; -typedef struct _RetroPaPlayerClass RetroPaPlayerClass; -typedef struct _RetroPaPlayerPrivate RetroPaPlayerPrivate; - -#define RETRO_TYPE_CORE (retro_core_get_type ()) -#define RETRO_CORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CORE, RetroCore)) -#define RETRO_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CORE, RetroCoreClass)) -#define RETRO_IS_CORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CORE)) -#define RETRO_IS_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CORE)) -#define RETRO_CORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CORE, RetroCoreClass)) - -typedef struct _RetroCore RetroCore; -typedef struct _RetroCoreClass RetroCoreClass; - -#define RETRO_TYPE_DEVICE_TYPE (retro_device_type_get_type ()) - -#define RETRO_TYPE_JOYPAD_ID (retro_joypad_id_get_type ()) - -#define RETRO_TYPE_ANALOG_INDEX (retro_analog_index_get_type ()) - -#define RETRO_TYPE_ANALOG_ID (retro_analog_id_get_type ()) - -#define RETRO_TYPE_INPUT_DESCRIPTOR (retro_input_descriptor_get_type ()) -typedef struct _RetroInputDescriptor RetroInputDescriptor; - -#define RETRO_TYPE_INPUT (retro_input_get_type ()) -#define RETRO_INPUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_INPUT, RetroInput)) -#define RETRO_IS_INPUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_INPUT)) -#define RETRO_INPUT_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_INPUT, RetroInputIface)) - -typedef struct _RetroInput RetroInput; -typedef struct _RetroInputIface RetroInputIface; - -#define RETRO_TYPE_INPUT_DEVICE (retro_input_device_get_type ()) -#define RETRO_INPUT_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_INPUT_DEVICE, RetroInputDevice)) -#define RETRO_IS_INPUT_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_INPUT_DEVICE)) -#define RETRO_INPUT_DEVICE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_INPUT_DEVICE, RetroInputDeviceIface)) - -typedef struct _RetroInputDevice RetroInputDevice; -typedef struct _RetroInputDeviceIface RetroInputDeviceIface; - -#define RETRO_TYPE_INPUT_DEVICE_MANAGER (retro_input_device_manager_get_type ()) -#define RETRO_INPUT_DEVICE_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_INPUT_DEVICE_MANAGER, RetroInputDeviceManager)) -#define RETRO_INPUT_DEVICE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_INPUT_DEVICE_MANAGER, RetroInputDeviceManagerClass)) -#define RETRO_IS_INPUT_DEVICE_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_INPUT_DEVICE_MANAGER)) -#define RETRO_IS_INPUT_DEVICE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_INPUT_DEVICE_MANAGER)) -#define RETRO_INPUT_DEVICE_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_INPUT_DEVICE_MANAGER, RetroInputDeviceManagerClass)) - -typedef struct _RetroInputDeviceManager RetroInputDeviceManager; -typedef struct _RetroInputDeviceManagerClass RetroInputDeviceManagerClass; -typedef struct _RetroInputDeviceManagerPrivate RetroInputDeviceManagerPrivate; - -#define RETRO_TYPE_MAIN_LOOP (retro_main_loop_get_type ()) -#define RETRO_MAIN_LOOP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_MAIN_LOOP, RetroMainLoop)) -#define RETRO_MAIN_LOOP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_MAIN_LOOP, RetroMainLoopClass)) -#define RETRO_IS_MAIN_LOOP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_MAIN_LOOP)) -#define RETRO_IS_MAIN_LOOP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_MAIN_LOOP)) -#define RETRO_MAIN_LOOP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_MAIN_LOOP, RetroMainLoopClass)) - -typedef struct _RetroMainLoop RetroMainLoop; -typedef struct _RetroMainLoopClass RetroMainLoopClass; -typedef struct _RetroMainLoopPrivate RetroMainLoopPrivate; -typedef struct _RetroCorePrivate RetroCorePrivate; - -#define RETRO_TYPE_VARIABLES (retro_variables_get_type ()) -#define RETRO_VARIABLES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_VARIABLES, RetroVariables)) -#define RETRO_IS_VARIABLES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_VARIABLES)) -#define RETRO_VARIABLES_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_VARIABLES, RetroVariablesIface)) - -typedef struct _RetroVariables RetroVariables; -typedef struct _RetroVariablesIface RetroVariablesIface; - -#define RETRO_TYPE_VARIABLE (retro_variable_get_type ()) -typedef struct _RetroVariable RetroVariable; - -#define RETRO_TYPE_MEMORY_TYPE (retro_memory_type_get_type ()) - -#define RETRO_TYPE_RUMBLE (retro_rumble_get_type ()) -#define RETRO_RUMBLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_RUMBLE, RetroRumble)) -#define RETRO_IS_RUMBLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_RUMBLE)) -#define RETRO_RUMBLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_RUMBLE, RetroRumbleIface)) - -typedef struct _RetroRumble RetroRumble; -typedef struct _RetroRumbleIface RetroRumbleIface; - -#define RETRO_TYPE_RUMBLE_EFFECT (retro_rumble_effect_get_type ()) - -#define RETRO_TYPE_CORE_DESCRIPTOR (retro_core_descriptor_get_type ()) -#define RETRO_CORE_DESCRIPTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CORE_DESCRIPTOR, RetroCoreDescriptor)) -#define RETRO_CORE_DESCRIPTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CORE_DESCRIPTOR, RetroCoreDescriptorClass)) -#define RETRO_IS_CORE_DESCRIPTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CORE_DESCRIPTOR)) -#define RETRO_IS_CORE_DESCRIPTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CORE_DESCRIPTOR)) -#define RETRO_CORE_DESCRIPTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CORE_DESCRIPTOR, RetroCoreDescriptorClass)) - -typedef struct _RetroCoreDescriptor RetroCoreDescriptor; -typedef struct _RetroCoreDescriptorClass RetroCoreDescriptorClass; -typedef struct _RetroCoreDescriptorPrivate RetroCoreDescriptorPrivate; - -#define RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM (retro_core_descriptor_platform_get_type ()) -#define RETRO_CORE_DESCRIPTOR_PLATFORM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM, RetroCoreDescriptorPlatform)) -#define RETRO_CORE_DESCRIPTOR_PLATFORM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM, RetroCoreDescriptorPlatformClass)) -#define RETRO_CORE_DESCRIPTOR_IS_PLATFORM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM)) -#define RETRO_CORE_DESCRIPTOR_IS_PLATFORM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM)) -#define RETRO_CORE_DESCRIPTOR_PLATFORM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM, RetroCoreDescriptorPlatformClass)) - -typedef struct _RetroCoreDescriptorPlatform RetroCoreDescriptorPlatform; -typedef struct _RetroCoreDescriptorPlatformClass RetroCoreDescriptorPlatformClass; -typedef struct _RetroCoreDescriptorPlatformPrivate RetroCoreDescriptorPlatformPrivate; - -#define RETRO_TYPE_CORE_VIEW (retro_core_view_get_type ()) -#define RETRO_CORE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CORE_VIEW, RetroCoreView)) -#define RETRO_CORE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CORE_VIEW, RetroCoreViewClass)) -#define RETRO_IS_CORE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CORE_VIEW)) -#define RETRO_IS_CORE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CORE_VIEW)) -#define RETRO_CORE_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CORE_VIEW, RetroCoreViewClass)) - -typedef struct _RetroCoreView RetroCoreView; -typedef struct _RetroCoreViewClass RetroCoreViewClass; -typedef struct _RetroCoreViewPrivate RetroCoreViewPrivate; - -#define RETRO_TYPE_CAIRO_DISPLAY (retro_cairo_display_get_type ()) -#define RETRO_CAIRO_DISPLAY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CAIRO_DISPLAY, RetroCairoDisplay)) -#define RETRO_CAIRO_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CAIRO_DISPLAY, RetroCairoDisplayClass)) -#define RETRO_IS_CAIRO_DISPLAY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CAIRO_DISPLAY)) -#define RETRO_IS_CAIRO_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CAIRO_DISPLAY)) -#define RETRO_CAIRO_DISPLAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CAIRO_DISPLAY, RetroCairoDisplayClass)) - -typedef struct _RetroCairoDisplay RetroCairoDisplay; -typedef struct _RetroCairoDisplayClass RetroCairoDisplayClass; - -#define RETRO_TYPE_MODULE_QUERY (retro_module_query_get_type ()) -#define RETRO_MODULE_QUERY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_MODULE_QUERY, RetroModuleQuery)) -#define RETRO_MODULE_QUERY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_MODULE_QUERY, RetroModuleQueryClass)) -#define RETRO_IS_MODULE_QUERY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_MODULE_QUERY)) -#define RETRO_IS_MODULE_QUERY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_MODULE_QUERY)) -#define RETRO_MODULE_QUERY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_MODULE_QUERY, RetroModuleQueryClass)) - -typedef struct _RetroModuleQuery RetroModuleQuery; -typedef struct _RetroModuleQueryClass RetroModuleQueryClass; -typedef struct _RetroModuleQueryPrivate RetroModuleQueryPrivate; - -#define RETRO_TYPE_MODULE_ITERATOR (retro_module_iterator_get_type ()) -#define RETRO_MODULE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_MODULE_ITERATOR, RetroModuleIterator)) -#define RETRO_MODULE_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_MODULE_ITERATOR, RetroModuleIteratorClass)) -#define RETRO_IS_MODULE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_MODULE_ITERATOR)) -#define RETRO_IS_MODULE_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_MODULE_ITERATOR)) -#define RETRO_MODULE_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_MODULE_ITERATOR, RetroModuleIteratorClass)) - -typedef struct _RetroModuleIterator RetroModuleIterator; -typedef struct _RetroModuleIteratorClass RetroModuleIteratorClass; -typedef struct _RetroModuleIteratorPrivate RetroModuleIteratorPrivate; +#define __RETRO_GTK_INSIDE__ -#define RETRO_TYPE_PIXEL_FORMAT (retro_pixel_format_get_type ()) -typedef struct _RetroCairoDisplayPrivate RetroCairoDisplayPrivate; - -#define RETRO_TYPE_VIDEO_FILTER (retro_video_filter_get_type ()) - -struct _RetroPaPlayer { - GObject parent_instance; - RetroPaPlayerPrivate * priv; -}; - -struct _RetroPaPlayerClass { - GObjectClass parent_class; -}; - -typedef enum { - RETRO_DEVICE_TYPE_TYPE_MASK = 0xff, - RETRO_DEVICE_TYPE_NONE = 0, - RETRO_DEVICE_TYPE_JOYPAD = 1, - RETRO_DEVICE_TYPE_MOUSE = 2, - RETRO_DEVICE_TYPE_KEYBOARD = 3, - RETRO_DEVICE_TYPE_LIGHTGUN = 4, - RETRO_DEVICE_TYPE_ANALOG = 5, - RETRO_DEVICE_TYPE_POINTER = 6 -} RetroDeviceType; - -typedef enum { - RETRO_JOYPAD_ID_B, - RETRO_JOYPAD_ID_Y, - RETRO_JOYPAD_ID_SELECT, - RETRO_JOYPAD_ID_START, - RETRO_JOYPAD_ID_UP, - RETRO_JOYPAD_ID_DOWN, - RETRO_JOYPAD_ID_LEFT, - RETRO_JOYPAD_ID_RIGHT, - RETRO_JOYPAD_ID_A, - RETRO_JOYPAD_ID_X, - RETRO_JOYPAD_ID_L, - RETRO_JOYPAD_ID_R, - RETRO_JOYPAD_ID_L2, - RETRO_JOYPAD_ID_R2, - RETRO_JOYPAD_ID_L3, - RETRO_JOYPAD_ID_R3, - RETRO_JOYPAD_ID_COUNT -} RetroJoypadId; - -typedef enum { - RETRO_ANALOG_INDEX_LEFT, - RETRO_ANALOG_INDEX_RIGHT -} RetroAnalogIndex; - -typedef enum { - RETRO_ANALOG_ID_X, - RETRO_ANALOG_ID_Y -} RetroAnalogId; - -struct _RetroInputDescriptor { - guint port; - RetroDeviceType device; - guint index; - guint id; - gchar* description; -}; - -struct _RetroInputDeviceIface { - GTypeInterface parent_iface; - void (*poll) (RetroInputDevice* self); - gint16 (*get_input_state) (RetroInputDevice* self, RetroDeviceType device, guint index, guint id); - RetroDeviceType (*get_device_type) (RetroInputDevice* self); - guint64 (*get_device_capabilities) (RetroInputDevice* self); -}; - -typedef void (*RetroInputControllerCallback) (guint port, RetroInputDevice* device, void* user_data); -struct _RetroInputIface { - GTypeInterface parent_iface; - void (*poll) (RetroInput* self); - gint16 (*get_state) (RetroInput* self, guint port, RetroDeviceType device, guint index, guint id); - void (*set_descriptors) (RetroInput* self, RetroInputDescriptor* input_descriptors, int input_descriptors_length1); - guint64 (*get_device_capabilities) (RetroInput* self); - void (*foreach_controller) (RetroInput* self, RetroInputControllerCallback callback, void* callback_target); -}; - -struct _RetroInputDeviceManager { - GObject parent_instance; - RetroInputDeviceManagerPrivate * priv; -}; - -struct _RetroInputDeviceManagerClass { - GObjectClass parent_class; -}; - -struct _RetroMainLoop { - GObject parent_instance; - RetroMainLoopPrivate * priv; -}; - -struct _RetroMainLoopClass { - GObjectClass parent_class; -}; - -struct _RetroVariable { - gchar* key; - gchar* value; -}; - -struct _RetroVariablesIface { - GTypeInterface parent_iface; - gchar* (*get_variable) (RetroVariables* self, const gchar* key); - void (*set_variable) (RetroVariables* self, RetroVariable* variables, int variables_length1); - gboolean (*get_variable_update) (RetroVariables* self); - RetroCore* (*get_core) (RetroVariables* self); - void (*set_core) (RetroVariables* self, RetroCore* value); -}; - -struct _RetroCore { - GObject parent_instance; - RetroCorePrivate * priv; - gdouble _frames_per_second; - RetroVariables* variables_interface; - void* environment_internal; -}; - -struct _RetroCoreClass { - GObjectClass parent_class; -}; - -typedef enum { - RETRO_MEMORY_TYPE_SAVE_RAM = 0, - RETRO_MEMORY_TYPE_RTC = 1, - RETRO_MEMORY_TYPE_SYSTEM_RAM = 2, - RETRO_MEMORY_TYPE_VIDEO_RAM = 3 -} RetroMemoryType; - -typedef enum { - RETRO_RUMBLE_EFFECT_STRONG, - RETRO_RUMBLE_EFFECT_WEAK -} RetroRumbleEffect; - -struct _RetroRumbleIface { - GTypeInterface parent_iface; - gboolean (*set_rumble_state) (RetroRumble* self, guint port, RetroRumbleEffect effect, guint16 strength); -}; - -struct _RetroCoreDescriptor { - GObject parent_instance; - RetroCoreDescriptorPrivate * priv; -}; - -struct _RetroCoreDescriptorClass { - GObjectClass parent_class; -}; - -struct _RetroCoreDescriptorPlatform { - GObject parent_instance; - RetroCoreDescriptorPlatformPrivate * priv; -}; - -struct _RetroCoreDescriptorPlatformClass { - GObjectClass parent_class; -}; - -struct _RetroCoreView { - GtkEventBox parent_instance; - RetroCoreViewPrivate * priv; - RetroCairoDisplay* display; - GHashTable* key_state; - GHashTable* mouse_button_state; - GdkScreen* grabbed_screen; - GdkDevice* grabbed_device; - gdouble mouse_x_delta; - gdouble mouse_y_delta; - gint screen_center_x; - gint screen_center_y; - gint position_on_grab_x; - gint position_on_grab_y; - gboolean pointer_is_on_display; - gdouble pointer_x; - gdouble pointer_y; -}; - -struct _RetroCoreViewClass { - GtkEventBoxClass parent_class; -}; - -struct _RetroModuleQuery { - GTypeInstance parent_instance; - volatile int ref_count; - RetroModuleQueryPrivate * priv; -}; - -struct _RetroModuleQueryClass { - GTypeClass parent_class; - void (*finalize) (RetroModuleQuery *self); -}; - -struct _RetroModuleIterator { - GTypeInstance parent_instance; - volatile int ref_count; - RetroModuleIteratorPrivate * priv; -}; - -struct _RetroModuleIteratorClass { - GTypeClass parent_class; - void (*finalize) (RetroModuleIterator *self); -}; - -typedef enum { - RETRO_PIXEL_FORMAT_XRGB1555, - RETRO_PIXEL_FORMAT_XRGB8888, - RETRO_PIXEL_FORMAT_RGB565, - RETRO_PIXEL_FORMAT_UNKNOWN = -1 -} RetroPixelFormat; - -struct _RetroCairoDisplay { - GtkDrawingArea parent_instance; - RetroCairoDisplayPrivate * priv; -}; - -struct _RetroCairoDisplayClass { - GtkDrawingAreaClass parent_class; -}; - -typedef enum { - RETRO_VIDEO_FILTER_SMOOTH, - RETRO_VIDEO_FILTER_SHARP -} RetroVideoFilter; - - -GType retro_pa_player_get_type (void) G_GNUC_CONST; -GType retro_core_get_type (void) G_GNUC_CONST; -void retro_pa_player_set_core (RetroPaPlayer* self, RetroCore* core); -RetroPaPlayer* retro_pa_player_new (void); -RetroPaPlayer* retro_pa_player_construct (GType object_type); -GType retro_device_type_get_type (void) G_GNUC_CONST; -RetroDeviceType retro_device_type_get_basic_type (RetroDeviceType self); -GType retro_joypad_id_get_type (void) G_GNUC_CONST; -GType retro_analog_index_get_type (void) G_GNUC_CONST; -GType retro_analog_id_get_type (void) G_GNUC_CONST; -GType retro_input_descriptor_get_type (void) G_GNUC_CONST; -RetroInputDescriptor* retro_input_descriptor_dup (const RetroInputDescriptor* self); -void retro_input_descriptor_free (RetroInputDescriptor* self); -void retro_input_descriptor_copy (const RetroInputDescriptor* self, RetroInputDescriptor* dest); -void retro_input_descriptor_destroy (RetroInputDescriptor* self); -GType retro_input_device_get_type (void) G_GNUC_CONST; -GType retro_input_get_type (void) G_GNUC_CONST; -void retro_input_poll (RetroInput* self); -gint16 retro_input_get_state (RetroInput* self, guint port, RetroDeviceType device, guint index, guint id); -void retro_input_set_descriptors (RetroInput* self, RetroInputDescriptor* input_descriptors, int input_descriptors_length1); -guint64 retro_input_get_device_capabilities (RetroInput* self); -void retro_input_foreach_controller (RetroInput* self, RetroInputControllerCallback callback, void* callback_target); -void retro_input_device_poll (RetroInputDevice* self); -gint16 retro_input_device_get_input_state (RetroInputDevice* self, RetroDeviceType device, guint index, guint id); -RetroDeviceType retro_input_device_get_device_type (RetroInputDevice* self); -guint64 retro_input_device_get_device_capabilities (RetroInputDevice* self); -GType retro_input_device_manager_get_type (void) G_GNUC_CONST; -void retro_input_device_manager_set_controller_device (RetroInputDeviceManager* self, guint port, RetroInputDevice* device); -void retro_input_device_manager_set_keyboard (RetroInputDeviceManager* self, GtkWidget* widget); -void retro_input_device_manager_remove_controller_device (RetroInputDeviceManager* self, guint port); -RetroInputDeviceManager* retro_input_device_manager_new (void); -RetroInputDeviceManager* retro_input_device_manager_construct (GType object_type); -GType retro_main_loop_get_type (void) G_GNUC_CONST; -RetroMainLoop* retro_main_loop_new (RetroCore* core); -RetroMainLoop* retro_main_loop_construct (GType object_type, RetroCore* core); -void retro_main_loop_start (RetroMainLoop* self); -void retro_main_loop_reset (RetroMainLoop* self); -void retro_main_loop_stop (RetroMainLoop* self); -RetroCore* retro_main_loop_get_core (RetroMainLoop* self); -void retro_main_loop_set_core (RetroMainLoop* self, RetroCore* value); -gdouble retro_main_loop_get_speed_rate (RetroMainLoop* self); -void retro_main_loop_set_speed_rate (RetroMainLoop* self, gdouble value); -GType retro_variable_get_type (void) G_GNUC_CONST; -RetroVariable* retro_variable_dup (const RetroVariable* self); -void retro_variable_free (RetroVariable* self); -void retro_variable_copy (const RetroVariable* self, RetroVariable* dest); -void retro_variable_destroy (RetroVariable* self); -GType retro_variables_get_type (void) G_GNUC_CONST; -RetroCore* retro_core_new (const gchar* file_name); -RetroCore* retro_core_construct (GType object_type, const gchar* file_name); -void retro_core_init (RetroCore* self, GError** error); -void retro_core_set_medias (RetroCore* self, gchar** uris); -void retro_core_set_current_media (RetroCore* self, guint media_index, GError** error); -void retro_core_set_controller_port_device (RetroCore* self, guint port, RetroDeviceType device); -void retro_core_reset (RetroCore* self); -void retro_core_run (RetroCore* self); -gboolean retro_core_supports_serialization (RetroCore* self); -guint8* retro_core_serialize_state (RetroCore* self, gsize* result_length1, GError** error); -void retro_core_deserialize_state (RetroCore* self, guint8* data, gsize data_length1, GError** error); -GType retro_memory_type_get_type (void) G_GNUC_CONST; -gsize retro_core_get_memory_size (RetroCore* self, RetroMemoryType id); -guint8* retro_core_get_memory (RetroCore* self, RetroMemoryType id, int* result_length1); -void retro_core_set_memory (RetroCore* self, RetroMemoryType id, guint8* data, int data_length1); -guint retro_core_get_api_version (RetroCore* self); -const gchar* retro_core_get_file_name (RetroCore* self); -const gchar* retro_core_get_system_directory (RetroCore* self); -void retro_core_set_system_directory (RetroCore* self, const gchar* value); -const gchar* retro_core_get_libretro_path (RetroCore* self); -void retro_core_set_libretro_path (RetroCore* self, const gchar* value); -const gchar* retro_core_get_content_directory (RetroCore* self); -void retro_core_set_content_directory (RetroCore* self, const gchar* value); -const gchar* retro_core_get_save_directory (RetroCore* self); -void retro_core_set_save_directory (RetroCore* self, const gchar* value); -gboolean retro_core_get_is_initiated (RetroCore* self); -gboolean retro_core_get_game_loaded (RetroCore* self); -gboolean retro_core_get_support_no_game (RetroCore* self); -gdouble retro_core_get_frames_per_second (RetroCore* self); -RetroInput* retro_core_get_input_interface (RetroCore* self); -void retro_core_set_input_interface (RetroCore* self, RetroInput* value); -GType retro_rumble_effect_get_type (void) G_GNUC_CONST; -GType retro_rumble_get_type (void) G_GNUC_CONST; -RetroRumble* retro_core_get_rumble_interface (RetroCore* self); -void retro_core_set_rumble_interface (RetroCore* self, RetroRumble* value); -#define RETRO_API_VERSION ((guint) 1) -void retro_g_log (RetroCore* core, const gchar* log_domain, GLogLevelFlags log_level, const gchar* message); -GType retro_core_descriptor_get_type (void) G_GNUC_CONST; -RetroCoreDescriptor* retro_core_descriptor_new (const gchar* filename, GError** error); -RetroCoreDescriptor* retro_core_descriptor_construct (GType object_type, const gchar* filename, GError** error); -gboolean retro_core_descriptor_has_icon (RetroCoreDescriptor* self, GError** error); -gchar* retro_core_descriptor_get_uri (RetroCoreDescriptor* self); -gchar* retro_core_descriptor_get_id (RetroCoreDescriptor* self); -gboolean retro_core_descriptor_get_is_game (RetroCoreDescriptor* self, GError** error); -gboolean retro_core_descriptor_get_is_emulator (RetroCoreDescriptor* self, GError** error); -gchar* retro_core_descriptor_get_name (RetroCoreDescriptor* self, GError** error); -GIcon* retro_core_descriptor_get_icon (RetroCoreDescriptor* self, GError** error); -gchar* retro_core_descriptor_get_module (RetroCoreDescriptor* self, GError** error); -GFile* retro_core_descriptor_get_module_file (RetroCoreDescriptor* self, GError** error); -gboolean retro_core_descriptor_has_platform (RetroCoreDescriptor* self, const gchar* platform); -gboolean retro_core_descriptor_has_firmwares (RetroCoreDescriptor* self, const gchar* platform, GError** error); -gboolean retro_core_descriptor_has_firmware_md5 (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gboolean retro_core_descriptor_has_firmware_sha512 (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gchar** retro_core_descriptor_get_mime_type (RetroCoreDescriptor* self, const gchar* platform, int* result_length1, GError** error); -gchar** retro_core_descriptor_get_firmwares (RetroCoreDescriptor* self, const gchar* platform, int* result_length1, GError** error); -gchar* retro_core_descriptor_get_firmware_path (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gchar* retro_core_descriptor_get_firmware_md5 (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gchar* retro_core_descriptor_get_firmware_sha512 (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gboolean retro_core_descriptor_get_is_firmware_mandatory (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gboolean retro_core_descriptor_get_platform_supports_mime_types (RetroCoreDescriptor* self, const gchar* platform, gchar** mime_types, int mime_types_length1, GError** error); -GType retro_core_descriptor_platform_get_type (void) G_GNUC_CONST; -GType retro_core_view_get_type (void) G_GNUC_CONST; -GType retro_cairo_display_get_type (void) G_GNUC_CONST; -void retro_core_view_set_core (RetroCoreView* self, RetroCore* core); -RetroCairoDisplay* retro_core_view_get_display (RetroCoreView* self); -RetroInputDevice* retro_core_view_as_input_device (RetroCoreView* self, RetroDeviceType device_type); -RetroCoreView* retro_core_view_new (void); -RetroCoreView* retro_core_view_construct (GType object_type); -gboolean retro_core_view_get_can_grab_pointer (RetroCoreView* self); -void retro_core_view_set_can_grab_pointer (RetroCoreView* self, gboolean value); -gboolean retro_core_view_get_snap_pointer_to_borders (RetroCoreView* self); -void retro_core_view_set_snap_pointer_to_borders (RetroCoreView* self, gboolean value); -gpointer retro_module_query_ref (gpointer instance); -void retro_module_query_unref (gpointer instance); -GParamSpec* retro_param_spec_module_query (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); -void retro_value_set_module_query (GValue* value, gpointer v_object); -void retro_value_take_module_query (GValue* value, gpointer v_object); -gpointer retro_value_get_module_query (const GValue* value); -GType retro_module_query_get_type (void) G_GNUC_CONST; -RetroModuleQuery* retro_module_query_new (gboolean recursive); -RetroModuleQuery* retro_module_query_construct (GType object_type, gboolean recursive); -gpointer retro_module_iterator_ref (gpointer instance); -void retro_module_iterator_unref (gpointer instance); -GParamSpec* retro_param_spec_module_iterator (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); -void retro_value_set_module_iterator (GValue* value, gpointer v_object); -void retro_value_take_module_iterator (GValue* value, gpointer v_object); -gpointer retro_value_get_module_iterator (const GValue* value); -GType retro_module_iterator_get_type (void) G_GNUC_CONST; -RetroModuleIterator* retro_module_query_iterator (RetroModuleQuery* self); -RetroCoreDescriptor* retro_module_iterator_get (RetroModuleIterator* self); -gboolean retro_module_iterator_next (RetroModuleIterator* self); -gboolean retro_rumble_set_rumble_state (RetroRumble* self, guint port, RetroRumbleEffect effect, guint16 strength); -GType retro_pixel_format_get_type (void) G_GNUC_CONST; -void retro_cairo_display_set_core (RetroCairoDisplay* self, RetroCore* core); -GType retro_video_filter_get_type (void) G_GNUC_CONST; -void retro_cairo_display_set_filter (RetroCairoDisplay* self, RetroVideoFilter filter); -gboolean retro_cairo_display_get_coordinates_on_display (RetroCairoDisplay* self, gdouble widget_x, gdouble widget_y, gdouble* display_x, gdouble* display_y); -void retro_cairo_display_show_video (RetroCairoDisplay* self); -void retro_cairo_display_hide_video (RetroCairoDisplay* self); -RetroCairoDisplay* retro_cairo_display_new (void); -RetroCairoDisplay* retro_cairo_display_construct (GType object_type); -GdkPixbuf* retro_cairo_display_get_pixbuf (RetroCairoDisplay* self); -void retro_cairo_display_set_pixbuf (RetroCairoDisplay* self, GdkPixbuf* value); -RetroVideoFilter retro_video_filter_from_string (const gchar* filter); +#ifndef RETRO_GTK_USE_UNSTABLE_API +#error retro-gtk is unstable API. You must define RETRO_GTK_USE_UNSTABLE_API before including retro-gtk.h +#endif +#include "retro-controller.h" +#include "retro-controller-codes.h" +#include "retro-controller-type.h" +#include "retro-core.h" +#include "retro-core-descriptor.h" +#include "retro-core-view.h" +#include "retro-gtk-version.h" +#include "retro-input.h" +#include "retro-log.h" +#include "retro-main-loop.h" +#include "retro-memory-type.h" +#include "retro-module-iterator.h" +#include "retro-module-query.h" +#include "retro-pixdata.h" +#include "retro-video-filter.h" -G_END_DECLS +#undef __RETRO_GTK_INSIDE__ #endif diff -Nru retro-gtk-0.12.1/retro-gtk/retro-gtk-internal.h retro-gtk-0.14.0/retro-gtk/retro-gtk-internal.h --- retro-gtk-0.12.1/retro-gtk/retro-gtk-internal.h 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-gtk-internal.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,736 +0,0 @@ -/* retro-gtk-internal.h generated by valac 0.36.1.39-72bb2, the Vala compiler, do not modify */ - - -#ifndef __RETRO_GTK_INTERNAL_H__ -#define __RETRO_GTK_INTERNAL_H__ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -G_BEGIN_DECLS - - -#define RETRO_TYPE_PA_PLAYER (retro_pa_player_get_type ()) -#define RETRO_PA_PLAYER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_PA_PLAYER, RetroPaPlayer)) -#define RETRO_PA_PLAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_PA_PLAYER, RetroPaPlayerClass)) -#define RETRO_IS_PA_PLAYER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_PA_PLAYER)) -#define RETRO_IS_PA_PLAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_PA_PLAYER)) -#define RETRO_PA_PLAYER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_PA_PLAYER, RetroPaPlayerClass)) - -typedef struct _RetroPaPlayer RetroPaPlayer; -typedef struct _RetroPaPlayerClass RetroPaPlayerClass; -typedef struct _RetroPaPlayerPrivate RetroPaPlayerPrivate; - -#define RETRO_TYPE_CORE (retro_core_get_type ()) -#define RETRO_CORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CORE, RetroCore)) -#define RETRO_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CORE, RetroCoreClass)) -#define RETRO_IS_CORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CORE)) -#define RETRO_IS_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CORE)) -#define RETRO_CORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CORE, RetroCoreClass)) - -typedef struct _RetroCore RetroCore; -typedef struct _RetroCoreClass RetroCoreClass; - -#define RETRO_TYPE_CONTROLLER_DESCRIPTION (retro_controller_description_get_type ()) -typedef struct _RetroControllerDescription RetroControllerDescription; - -#define RETRO_TYPE_CONTROLLER_INFO (retro_controller_info_get_type ()) -typedef struct _RetroControllerInfo RetroControllerInfo; - -#define RETRO_TYPE_DEVICE_TYPE (retro_device_type_get_type ()) - -#define RETRO_TYPE_JOYPAD_ID (retro_joypad_id_get_type ()) - -#define RETRO_TYPE_ANALOG_INDEX (retro_analog_index_get_type ()) - -#define RETRO_TYPE_ANALOG_ID (retro_analog_id_get_type ()) - -#define RETRO_TYPE_MOUSE_ID (retro_mouse_id_get_type ()) - -#define RETRO_TYPE_LIGHTGUN_ID (retro_lightgun_id_get_type ()) - -#define RETRO_TYPE_POINTER_ID (retro_pointer_id_get_type ()) - -#define RETRO_TYPE_INPUT_DESCRIPTOR (retro_input_descriptor_get_type ()) -typedef struct _RetroInputDescriptor RetroInputDescriptor; - -#define RETRO_TYPE_INPUT (retro_input_get_type ()) -#define RETRO_INPUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_INPUT, RetroInput)) -#define RETRO_IS_INPUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_INPUT)) -#define RETRO_INPUT_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_INPUT, RetroInputIface)) - -typedef struct _RetroInput RetroInput; -typedef struct _RetroInputIface RetroInputIface; - -#define RETRO_TYPE_INPUT_DEVICE (retro_input_device_get_type ()) -#define RETRO_INPUT_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_INPUT_DEVICE, RetroInputDevice)) -#define RETRO_IS_INPUT_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_INPUT_DEVICE)) -#define RETRO_INPUT_DEVICE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_INPUT_DEVICE, RetroInputDeviceIface)) - -typedef struct _RetroInputDevice RetroInputDevice; -typedef struct _RetroInputDeviceIface RetroInputDeviceIface; - -#define RETRO_TYPE_INPUT_DEVICE_MANAGER (retro_input_device_manager_get_type ()) -#define RETRO_INPUT_DEVICE_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_INPUT_DEVICE_MANAGER, RetroInputDeviceManager)) -#define RETRO_INPUT_DEVICE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_INPUT_DEVICE_MANAGER, RetroInputDeviceManagerClass)) -#define RETRO_IS_INPUT_DEVICE_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_INPUT_DEVICE_MANAGER)) -#define RETRO_IS_INPUT_DEVICE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_INPUT_DEVICE_MANAGER)) -#define RETRO_INPUT_DEVICE_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_INPUT_DEVICE_MANAGER, RetroInputDeviceManagerClass)) - -typedef struct _RetroInputDeviceManager RetroInputDeviceManager; -typedef struct _RetroInputDeviceManagerClass RetroInputDeviceManagerClass; -typedef struct _RetroInputDeviceManagerPrivate RetroInputDeviceManagerPrivate; - -#define RETRO_TYPE_MAIN_LOOP (retro_main_loop_get_type ()) -#define RETRO_MAIN_LOOP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_MAIN_LOOP, RetroMainLoop)) -#define RETRO_MAIN_LOOP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_MAIN_LOOP, RetroMainLoopClass)) -#define RETRO_IS_MAIN_LOOP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_MAIN_LOOP)) -#define RETRO_IS_MAIN_LOOP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_MAIN_LOOP)) -#define RETRO_MAIN_LOOP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_MAIN_LOOP, RetroMainLoopClass)) - -typedef struct _RetroMainLoop RetroMainLoop; -typedef struct _RetroMainLoopClass RetroMainLoopClass; -typedef struct _RetroMainLoopPrivate RetroMainLoopPrivate; - -#define RETRO_TYPE_OPTION (retro_option_get_type ()) -#define RETRO_OPTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_OPTION, RetroOption)) -#define RETRO_OPTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_OPTION, RetroOptionClass)) -#define RETRO_IS_OPTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_OPTION)) -#define RETRO_IS_OPTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_OPTION)) -#define RETRO_OPTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_OPTION, RetroOptionClass)) - -typedef struct _RetroOption RetroOption; -typedef struct _RetroOptionClass RetroOptionClass; -typedef struct _RetroOptionPrivate RetroOptionPrivate; - -#define RETRO_TYPE_VARIABLE (retro_variable_get_type ()) -typedef struct _RetroVariable RetroVariable; - -#define RETRO_TYPE_VARIABLES (retro_variables_get_type ()) -#define RETRO_VARIABLES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_VARIABLES, RetroVariables)) -#define RETRO_IS_VARIABLES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_VARIABLES)) -#define RETRO_VARIABLES_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_VARIABLES, RetroVariablesIface)) - -typedef struct _RetroVariables RetroVariables; -typedef struct _RetroVariablesIface RetroVariablesIface; - -#define RETRO_TYPE_OPTIONS (retro_options_get_type ()) -#define RETRO_OPTIONS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_OPTIONS, RetroOptions)) -#define RETRO_OPTIONS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_OPTIONS, RetroOptionsClass)) -#define RETRO_IS_OPTIONS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_OPTIONS)) -#define RETRO_IS_OPTIONS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_OPTIONS)) -#define RETRO_OPTIONS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_OPTIONS, RetroOptionsClass)) - -typedef struct _RetroOptions RetroOptions; -typedef struct _RetroOptionsClass RetroOptionsClass; -typedef struct _RetroOptionsPrivate RetroOptionsPrivate; -typedef struct _RetroCorePrivate RetroCorePrivate; - -#define RETRO_TYPE_MEMORY_TYPE (retro_memory_type_get_type ()) - -#define RETRO_TYPE_RUMBLE (retro_rumble_get_type ()) -#define RETRO_RUMBLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_RUMBLE, RetroRumble)) -#define RETRO_IS_RUMBLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_RUMBLE)) -#define RETRO_RUMBLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_RUMBLE, RetroRumbleIface)) - -typedef struct _RetroRumble RetroRumble; -typedef struct _RetroRumbleIface RetroRumbleIface; - -#define RETRO_TYPE_RUMBLE_EFFECT (retro_rumble_effect_get_type ()) - -#define RETRO_TYPE_CORE_DESCRIPTOR (retro_core_descriptor_get_type ()) -#define RETRO_CORE_DESCRIPTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CORE_DESCRIPTOR, RetroCoreDescriptor)) -#define RETRO_CORE_DESCRIPTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CORE_DESCRIPTOR, RetroCoreDescriptorClass)) -#define RETRO_IS_CORE_DESCRIPTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CORE_DESCRIPTOR)) -#define RETRO_IS_CORE_DESCRIPTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CORE_DESCRIPTOR)) -#define RETRO_CORE_DESCRIPTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CORE_DESCRIPTOR, RetroCoreDescriptorClass)) - -typedef struct _RetroCoreDescriptor RetroCoreDescriptor; -typedef struct _RetroCoreDescriptorClass RetroCoreDescriptorClass; -typedef struct _RetroCoreDescriptorPrivate RetroCoreDescriptorPrivate; - -#define RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM (retro_core_descriptor_platform_get_type ()) -#define RETRO_CORE_DESCRIPTOR_PLATFORM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM, RetroCoreDescriptorPlatform)) -#define RETRO_CORE_DESCRIPTOR_PLATFORM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM, RetroCoreDescriptorPlatformClass)) -#define RETRO_CORE_DESCRIPTOR_IS_PLATFORM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM)) -#define RETRO_CORE_DESCRIPTOR_IS_PLATFORM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM)) -#define RETRO_CORE_DESCRIPTOR_PLATFORM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_CORE_DESCRIPTOR_TYPE_PLATFORM, RetroCoreDescriptorPlatformClass)) - -typedef struct _RetroCoreDescriptorPlatform RetroCoreDescriptorPlatform; -typedef struct _RetroCoreDescriptorPlatformClass RetroCoreDescriptorPlatformClass; -typedef struct _RetroCoreDescriptorPlatformPrivate RetroCoreDescriptorPlatformPrivate; - -#define RETRO_TYPE_CORE_VIEW (retro_core_view_get_type ()) -#define RETRO_CORE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CORE_VIEW, RetroCoreView)) -#define RETRO_CORE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CORE_VIEW, RetroCoreViewClass)) -#define RETRO_IS_CORE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CORE_VIEW)) -#define RETRO_IS_CORE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CORE_VIEW)) -#define RETRO_CORE_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CORE_VIEW, RetroCoreViewClass)) - -typedef struct _RetroCoreView RetroCoreView; -typedef struct _RetroCoreViewClass RetroCoreViewClass; -typedef struct _RetroCoreViewPrivate RetroCoreViewPrivate; - -#define RETRO_TYPE_CAIRO_DISPLAY (retro_cairo_display_get_type ()) -#define RETRO_CAIRO_DISPLAY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CAIRO_DISPLAY, RetroCairoDisplay)) -#define RETRO_CAIRO_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CAIRO_DISPLAY, RetroCairoDisplayClass)) -#define RETRO_IS_CAIRO_DISPLAY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CAIRO_DISPLAY)) -#define RETRO_IS_CAIRO_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CAIRO_DISPLAY)) -#define RETRO_CAIRO_DISPLAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CAIRO_DISPLAY, RetroCairoDisplayClass)) - -typedef struct _RetroCairoDisplay RetroCairoDisplay; -typedef struct _RetroCairoDisplayClass RetroCairoDisplayClass; - -#define RETRO_TYPE_MODULE_QUERY (retro_module_query_get_type ()) -#define RETRO_MODULE_QUERY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_MODULE_QUERY, RetroModuleQuery)) -#define RETRO_MODULE_QUERY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_MODULE_QUERY, RetroModuleQueryClass)) -#define RETRO_IS_MODULE_QUERY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_MODULE_QUERY)) -#define RETRO_IS_MODULE_QUERY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_MODULE_QUERY)) -#define RETRO_MODULE_QUERY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_MODULE_QUERY, RetroModuleQueryClass)) - -typedef struct _RetroModuleQuery RetroModuleQuery; -typedef struct _RetroModuleQueryClass RetroModuleQueryClass; -typedef struct _RetroModuleQueryPrivate RetroModuleQueryPrivate; - -#define RETRO_TYPE_MODULE_ITERATOR (retro_module_iterator_get_type ()) -#define RETRO_MODULE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_MODULE_ITERATOR, RetroModuleIterator)) -#define RETRO_MODULE_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_MODULE_ITERATOR, RetroModuleIteratorClass)) -#define RETRO_IS_MODULE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_MODULE_ITERATOR)) -#define RETRO_IS_MODULE_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_MODULE_ITERATOR)) -#define RETRO_MODULE_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_MODULE_ITERATOR, RetroModuleIteratorClass)) - -typedef struct _RetroModuleIterator RetroModuleIterator; -typedef struct _RetroModuleIteratorClass RetroModuleIteratorClass; -typedef struct _RetroModuleIteratorPrivate RetroModuleIteratorPrivate; - -#define RETRO_TYPE_PIXEL_FORMAT (retro_pixel_format_get_type ()) -typedef struct _RetroCairoDisplayPrivate RetroCairoDisplayPrivate; - -#define RETRO_TYPE_VIDEO_FILTER (retro_video_filter_get_type ()) - -struct _RetroPaPlayer { - GObject parent_instance; - RetroPaPlayerPrivate * priv; -}; - -struct _RetroPaPlayerClass { - GObjectClass parent_class; -}; - -struct _RetroControllerDescription { - gchar* desc; - guint id; -}; - -struct _RetroControllerInfo { - RetroControllerDescription* types; - guint num_types; -}; - -typedef enum { - RETRO_DEVICE_TYPE_TYPE_MASK = 0xff, - RETRO_DEVICE_TYPE_NONE = 0, - RETRO_DEVICE_TYPE_JOYPAD = 1, - RETRO_DEVICE_TYPE_MOUSE = 2, - RETRO_DEVICE_TYPE_KEYBOARD = 3, - RETRO_DEVICE_TYPE_LIGHTGUN = 4, - RETRO_DEVICE_TYPE_ANALOG = 5, - RETRO_DEVICE_TYPE_POINTER = 6 -} RetroDeviceType; - -typedef enum { - RETRO_JOYPAD_ID_B, - RETRO_JOYPAD_ID_Y, - RETRO_JOYPAD_ID_SELECT, - RETRO_JOYPAD_ID_START, - RETRO_JOYPAD_ID_UP, - RETRO_JOYPAD_ID_DOWN, - RETRO_JOYPAD_ID_LEFT, - RETRO_JOYPAD_ID_RIGHT, - RETRO_JOYPAD_ID_A, - RETRO_JOYPAD_ID_X, - RETRO_JOYPAD_ID_L, - RETRO_JOYPAD_ID_R, - RETRO_JOYPAD_ID_L2, - RETRO_JOYPAD_ID_R2, - RETRO_JOYPAD_ID_L3, - RETRO_JOYPAD_ID_R3, - RETRO_JOYPAD_ID_COUNT -} RetroJoypadId; - -typedef enum { - RETRO_ANALOG_INDEX_LEFT, - RETRO_ANALOG_INDEX_RIGHT -} RetroAnalogIndex; - -typedef enum { - RETRO_ANALOG_ID_X, - RETRO_ANALOG_ID_Y -} RetroAnalogId; - -typedef enum { - RETRO_MOUSE_ID_X, - RETRO_MOUSE_ID_Y, - RETRO_MOUSE_ID_LEFT, - RETRO_MOUSE_ID_RIGHT, - RETRO_MOUSE_ID_WHEELUP, - RETRO_MOUSE_ID_WHEELDOWN, - RETRO_MOUSE_ID_MIDDLE, - RETRO_MOUSE_ID_HORIZ_WHEELUP, - RETRO_MOUSE_ID_HORIZ_WHEELDOWN -} RetroMouseId; - -typedef enum { - RETRO_LIGHTGUN_ID_X, - RETRO_LIGHTGUN_ID_Y, - RETRO_LIGHTGUN_ID_TRIGGER, - RETRO_LIGHTGUN_ID_CURSOR, - RETRO_LIGHTGUN_ID_TURBO, - RETRO_LIGHTGUN_ID_PAUSE, - RETRO_LIGHTGUN_ID_START -} RetroLightgunId; - -typedef enum { - RETRO_POINTER_ID_X, - RETRO_POINTER_ID_Y, - RETRO_POINTER_ID_PRESSED -} RetroPointerId; - -struct _RetroInputDescriptor { - guint port; - RetroDeviceType device; - guint index; - guint id; - gchar* description; -}; - -struct _RetroInputDeviceIface { - GTypeInterface parent_iface; - void (*poll) (RetroInputDevice* self); - gint16 (*get_input_state) (RetroInputDevice* self, RetroDeviceType device, guint index, guint id); - RetroDeviceType (*get_device_type) (RetroInputDevice* self); - guint64 (*get_device_capabilities) (RetroInputDevice* self); -}; - -typedef void (*RetroInputControllerCallback) (guint port, RetroInputDevice* device, void* user_data); -struct _RetroInputIface { - GTypeInterface parent_iface; - void (*poll) (RetroInput* self); - gint16 (*get_state) (RetroInput* self, guint port, RetroDeviceType device, guint index, guint id); - void (*set_descriptors) (RetroInput* self, RetroInputDescriptor* input_descriptors, int input_descriptors_length1); - guint64 (*get_device_capabilities) (RetroInput* self); - void (*foreach_controller) (RetroInput* self, RetroInputControllerCallback callback, void* callback_target); -}; - -struct _RetroInputDeviceManager { - GObject parent_instance; - RetroInputDeviceManagerPrivate * priv; -}; - -struct _RetroInputDeviceManagerClass { - GObjectClass parent_class; -}; - -struct _RetroMainLoop { - GObject parent_instance; - RetroMainLoopPrivate * priv; -}; - -struct _RetroMainLoopClass { - GObjectClass parent_class; -}; - -struct _RetroOption { - GObject parent_instance; - RetroOptionPrivate * priv; - gchar* key; - gchar* description; - gchar** values; - gint values_length1; - gint _values_size_; -}; - -struct _RetroOptionClass { - GObjectClass parent_class; -}; - -struct _RetroVariable { - gchar* key; - gchar* value; -}; - -struct _RetroVariablesIface { - GTypeInterface parent_iface; - gchar* (*get_variable) (RetroVariables* self, const gchar* key); - void (*set_variable) (RetroVariables* self, RetroVariable* variables, int variables_length1); - gboolean (*get_variable_update) (RetroVariables* self); - RetroCore* (*get_core) (RetroVariables* self); - void (*set_core) (RetroVariables* self, RetroCore* value); -}; - -struct _RetroOptions { - GObject parent_instance; - RetroOptionsPrivate * priv; - RetroCore* _core; -}; - -struct _RetroOptionsClass { - GObjectClass parent_class; -}; - -struct _RetroCore { - GObject parent_instance; - RetroCorePrivate * priv; - gdouble _frames_per_second; - RetroVariables* variables_interface; - void* environment_internal; -}; - -struct _RetroCoreClass { - GObjectClass parent_class; -}; - -typedef enum { - RETRO_MEMORY_TYPE_SAVE_RAM = 0, - RETRO_MEMORY_TYPE_RTC = 1, - RETRO_MEMORY_TYPE_SYSTEM_RAM = 2, - RETRO_MEMORY_TYPE_VIDEO_RAM = 3 -} RetroMemoryType; - -typedef enum { - RETRO_RUMBLE_EFFECT_STRONG, - RETRO_RUMBLE_EFFECT_WEAK -} RetroRumbleEffect; - -struct _RetroRumbleIface { - GTypeInterface parent_iface; - gboolean (*set_rumble_state) (RetroRumble* self, guint port, RetroRumbleEffect effect, guint16 strength); -}; - -typedef enum { - RETRO_CORE_ERROR_COULDNT_SERIALIZE, - RETRO_CORE_ERROR_COULDNT_DESERIALIZE, - RETRO_CORE_ERROR_SERIALIZATION_NOT_SUPPORTED -} RetroCoreError; -#define RETRO_CORE_ERROR retro_core_error_quark () -typedef enum { - RETRO_CB_ERROR_NO_CORE, - RETRO_CB_ERROR_NO_CALLBACK -} RetroCbError; -#define RETRO_CB_ERROR retro_cb_error_quark () -struct _RetroCoreDescriptor { - GObject parent_instance; - RetroCoreDescriptorPrivate * priv; -}; - -struct _RetroCoreDescriptorClass { - GObjectClass parent_class; -}; - -struct _RetroCoreDescriptorPlatform { - GObject parent_instance; - RetroCoreDescriptorPlatformPrivate * priv; -}; - -struct _RetroCoreDescriptorPlatformClass { - GObjectClass parent_class; -}; - -typedef enum { - RETRO_CORE_DESCRIPTOR_ERROR_REQUIRED_GROUP_NOT_FOUND, - RETRO_CORE_DESCRIPTOR_ERROR_REQUIRED_KEY_NOT_FOUND, - RETRO_CORE_DESCRIPTOR_ERROR_FIRMWARE_NOT_FOUND -} RetroCoreDescriptorError; -#define RETRO_CORE_DESCRIPTOR_ERROR retro_core_descriptor_error_quark () -struct _RetroCoreView { - GtkEventBox parent_instance; - RetroCoreViewPrivate * priv; - RetroCairoDisplay* display; - GHashTable* key_state; - GHashTable* mouse_button_state; - GdkScreen* grabbed_screen; - GdkDevice* grabbed_device; - gdouble mouse_x_delta; - gdouble mouse_y_delta; - gint screen_center_x; - gint screen_center_y; - gint position_on_grab_x; - gint position_on_grab_y; - gboolean pointer_is_on_display; - gdouble pointer_x; - gdouble pointer_y; -}; - -struct _RetroCoreViewClass { - GtkEventBoxClass parent_class; -}; - -struct _RetroModuleQuery { - GTypeInstance parent_instance; - volatile int ref_count; - RetroModuleQueryPrivate * priv; -}; - -struct _RetroModuleQueryClass { - GTypeClass parent_class; - void (*finalize) (RetroModuleQuery *self); -}; - -struct _RetroModuleIterator { - GTypeInstance parent_instance; - volatile int ref_count; - RetroModuleIteratorPrivate * priv; -}; - -struct _RetroModuleIteratorClass { - GTypeClass parent_class; - void (*finalize) (RetroModuleIterator *self); -}; - -typedef enum { - RETRO_PIXEL_FORMAT_XRGB1555, - RETRO_PIXEL_FORMAT_XRGB8888, - RETRO_PIXEL_FORMAT_RGB565, - RETRO_PIXEL_FORMAT_UNKNOWN = -1 -} RetroPixelFormat; - -struct _RetroCairoDisplay { - GtkDrawingArea parent_instance; - RetroCairoDisplayPrivate * priv; -}; - -struct _RetroCairoDisplayClass { - GtkDrawingAreaClass parent_class; -}; - -typedef enum { - RETRO_VIDEO_FILTER_SMOOTH, - RETRO_VIDEO_FILTER_SHARP -} RetroVideoFilter; - - -GType retro_pa_player_get_type (void) G_GNUC_CONST; -GType retro_core_get_type (void) G_GNUC_CONST; -void retro_pa_player_set_core (RetroPaPlayer* self, RetroCore* core); -RetroPaPlayer* retro_pa_player_new (void); -RetroPaPlayer* retro_pa_player_construct (GType object_type); -GType retro_controller_description_get_type (void) G_GNUC_CONST; -RetroControllerDescription* retro_controller_description_dup (const RetroControllerDescription* self); -void retro_controller_description_free (RetroControllerDescription* self); -void retro_controller_description_copy (const RetroControllerDescription* self, RetroControllerDescription* dest); -void retro_controller_description_destroy (RetroControllerDescription* self); -GType retro_controller_info_get_type (void) G_GNUC_CONST; -RetroControllerInfo* retro_controller_info_dup (const RetroControllerInfo* self); -void retro_controller_info_free (RetroControllerInfo* self); -void retro_controller_info_copy (const RetroControllerInfo* self, RetroControllerInfo* dest); -void retro_controller_info_destroy (RetroControllerInfo* self); -GType retro_device_type_get_type (void) G_GNUC_CONST; -RetroDeviceType retro_device_type_get_basic_type (RetroDeviceType self); -GType retro_joypad_id_get_type (void) G_GNUC_CONST; -GType retro_analog_index_get_type (void) G_GNUC_CONST; -GType retro_analog_id_get_type (void) G_GNUC_CONST; -GType retro_mouse_id_get_type (void) G_GNUC_CONST; -GType retro_lightgun_id_get_type (void) G_GNUC_CONST; -GType retro_pointer_id_get_type (void) G_GNUC_CONST; -GType retro_input_descriptor_get_type (void) G_GNUC_CONST; -RetroInputDescriptor* retro_input_descriptor_dup (const RetroInputDescriptor* self); -void retro_input_descriptor_free (RetroInputDescriptor* self); -void retro_input_descriptor_copy (const RetroInputDescriptor* self, RetroInputDescriptor* dest); -void retro_input_descriptor_destroy (RetroInputDescriptor* self); -GType retro_input_device_get_type (void) G_GNUC_CONST; -GType retro_input_get_type (void) G_GNUC_CONST; -void retro_input_poll (RetroInput* self); -gint16 retro_input_get_state (RetroInput* self, guint port, RetroDeviceType device, guint index, guint id); -void retro_input_set_descriptors (RetroInput* self, RetroInputDescriptor* input_descriptors, int input_descriptors_length1); -guint64 retro_input_get_device_capabilities (RetroInput* self); -void retro_input_foreach_controller (RetroInput* self, RetroInputControllerCallback callback, void* callback_target); -void retro_input_device_poll (RetroInputDevice* self); -gint16 retro_input_device_get_input_state (RetroInputDevice* self, RetroDeviceType device, guint index, guint id); -RetroDeviceType retro_input_device_get_device_type (RetroInputDevice* self); -guint64 retro_input_device_get_device_capabilities (RetroInputDevice* self); -GType retro_input_device_manager_get_type (void) G_GNUC_CONST; -void retro_input_device_manager_set_controller_device (RetroInputDeviceManager* self, guint port, RetroInputDevice* device); -void retro_input_device_manager_set_keyboard (RetroInputDeviceManager* self, GtkWidget* widget); -void retro_input_device_manager_remove_controller_device (RetroInputDeviceManager* self, guint port); -RetroInputDeviceManager* retro_input_device_manager_new (void); -RetroInputDeviceManager* retro_input_device_manager_construct (GType object_type); -GType retro_main_loop_get_type (void) G_GNUC_CONST; -RetroMainLoop* retro_main_loop_new (RetroCore* core); -RetroMainLoop* retro_main_loop_construct (GType object_type, RetroCore* core); -void retro_main_loop_start (RetroMainLoop* self); -void retro_main_loop_reset (RetroMainLoop* self); -void retro_main_loop_stop (RetroMainLoop* self); -RetroCore* retro_main_loop_get_core (RetroMainLoop* self); -void retro_main_loop_set_core (RetroMainLoop* self, RetroCore* value); -gdouble retro_main_loop_get_speed_rate (RetroMainLoop* self); -void retro_main_loop_set_speed_rate (RetroMainLoop* self, gdouble value); -GType retro_option_get_type (void) G_GNUC_CONST; -GType retro_variable_get_type (void) G_GNUC_CONST; -RetroVariable* retro_variable_dup (const RetroVariable* self); -void retro_variable_free (RetroVariable* self); -void retro_variable_copy (const RetroVariable* self, RetroVariable* dest); -void retro_variable_destroy (RetroVariable* self); -RetroOption* retro_option_new (RetroVariable* variable); -RetroOption* retro_option_construct (GType object_type, RetroVariable* variable); -const gchar* retro_option_get_current (RetroOption* self); -void retro_option_set_current (RetroOption* self, const gchar* value); -GType retro_variables_get_type (void) G_GNUC_CONST; -GType retro_options_get_type (void) G_GNUC_CONST; -void retro_options_set_option (RetroOptions* self, gchar* key, gchar* value); -void retro_options_set (RetroOptions* self, gchar* key, gchar* value); -gboolean retro_options_contains (RetroOptions* self, const gchar* key); -const gchar* retro_options_lookup (RetroOptions* self, const gchar* key); -const gchar* retro_options_lookup_description (RetroOptions* self, const gchar* key); -gchar** retro_options_lookup_values (RetroOptions* self, const gchar* key, int* result_length1); -const gchar* retro_options_get (RetroOptions* self, const gchar* key); -GList* retro_options_get_keys (RetroOptions* self); -void retro_options_for_each (RetroOptions* self, GHFunc func, void* func_target); -void retro_options_foreach (RetroOptions* self, GHFunc func, void* func_target); -guint retro_options_size (RetroOptions* self); -RetroOptions* retro_options_new (void); -RetroOptions* retro_options_construct (GType object_type); -gchar* retro_variables_get_variable (RetroVariables* self, const gchar* key); -void retro_variables_set_variable (RetroVariables* self, RetroVariable* variables, int variables_length1); -gboolean retro_variables_get_variable_update (RetroVariables* self); -RetroCore* retro_variables_get_core (RetroVariables* self); -void retro_variables_set_core (RetroVariables* self, RetroCore* value); -void retro_core_push_cb_data (RetroCore* self); -void retro_core_pop_cb_data (void); -RetroCore* retro_core_get_cb_data (void); -RetroCore* retro_core_new (const gchar* file_name); -RetroCore* retro_core_construct (GType object_type, const gchar* file_name); -void retro_core_init (RetroCore* self, GError** error); -void retro_core_set_medias (RetroCore* self, gchar** uris); -void retro_core_set_current_media (RetroCore* self, guint media_index, GError** error); -void retro_core_set_controller_port_device (RetroCore* self, guint port, RetroDeviceType device); -void retro_core_reset (RetroCore* self); -void retro_core_run (RetroCore* self); -gboolean retro_core_supports_serialization (RetroCore* self); -guint8* retro_core_serialize_state (RetroCore* self, gsize* result_length1, GError** error); -void retro_core_deserialize_state (RetroCore* self, guint8* data, gsize data_length1, GError** error); -GType retro_memory_type_get_type (void) G_GNUC_CONST; -gsize retro_core_get_memory_size (RetroCore* self, RetroMemoryType id); -guint8* retro_core_get_memory (RetroCore* self, RetroMemoryType id, int* result_length1); -void retro_core_set_memory (RetroCore* self, RetroMemoryType id, guint8* data, int data_length1); -guint retro_core_get_api_version (RetroCore* self); -const gchar* retro_core_get_file_name (RetroCore* self); -void retro_core_set_file_name (RetroCore* self, const gchar* value); -const gchar* retro_core_get_system_directory (RetroCore* self); -void retro_core_set_system_directory (RetroCore* self, const gchar* value); -const gchar* retro_core_get_libretro_path (RetroCore* self); -void retro_core_set_libretro_path (RetroCore* self, const gchar* value); -const gchar* retro_core_get_content_directory (RetroCore* self); -void retro_core_set_content_directory (RetroCore* self, const gchar* value); -const gchar* retro_core_get_save_directory (RetroCore* self); -void retro_core_set_save_directory (RetroCore* self, const gchar* value); -gboolean retro_core_get_is_initiated (RetroCore* self); -void retro_core_set_is_initiated (RetroCore* self, gboolean value); -gboolean retro_core_get_game_loaded (RetroCore* self); -void retro_core_set_game_loaded (RetroCore* self, gboolean value); -gboolean retro_core_get_support_no_game (RetroCore* self); -void retro_core_set_support_no_game (RetroCore* self, gboolean value); -gdouble retro_core_get_frames_per_second (RetroCore* self); -RetroInput* retro_core_get_input_interface (RetroCore* self); -void retro_core_set_input_interface (RetroCore* self, RetroInput* value); -GType retro_rumble_effect_get_type (void) G_GNUC_CONST; -GType retro_rumble_get_type (void) G_GNUC_CONST; -RetroRumble* retro_core_get_rumble_interface (RetroCore* self); -void retro_core_set_rumble_interface (RetroCore* self, RetroRumble* value); -GQuark retro_core_error_quark (void); -#define RETRO_API_VERSION ((guint) 1) -#define RETRO_ENV_PLUGIN_PATH "RETRO_PLUGIN_PATH_1_0" -GQuark retro_cb_error_quark (void); -void retro_g_log (RetroCore* core, const gchar* log_domain, GLogLevelFlags log_level, const gchar* message); -GType retro_core_descriptor_get_type (void) G_GNUC_CONST; -RetroCoreDescriptor* retro_core_descriptor_new (const gchar* filename, GError** error); -RetroCoreDescriptor* retro_core_descriptor_construct (GType object_type, const gchar* filename, GError** error); -gboolean retro_core_descriptor_has_icon (RetroCoreDescriptor* self, GError** error); -gchar* retro_core_descriptor_get_uri (RetroCoreDescriptor* self); -gchar* retro_core_descriptor_get_id (RetroCoreDescriptor* self); -gboolean retro_core_descriptor_get_is_game (RetroCoreDescriptor* self, GError** error); -gboolean retro_core_descriptor_get_is_emulator (RetroCoreDescriptor* self, GError** error); -gchar* retro_core_descriptor_get_name (RetroCoreDescriptor* self, GError** error); -GIcon* retro_core_descriptor_get_icon (RetroCoreDescriptor* self, GError** error); -gchar* retro_core_descriptor_get_module (RetroCoreDescriptor* self, GError** error); -GFile* retro_core_descriptor_get_module_file (RetroCoreDescriptor* self, GError** error); -gboolean retro_core_descriptor_has_platform (RetroCoreDescriptor* self, const gchar* platform); -gboolean retro_core_descriptor_has_firmwares (RetroCoreDescriptor* self, const gchar* platform, GError** error); -gboolean retro_core_descriptor_has_firmware_md5 (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gboolean retro_core_descriptor_has_firmware_sha512 (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gchar** retro_core_descriptor_get_mime_type (RetroCoreDescriptor* self, const gchar* platform, int* result_length1, GError** error); -gchar** retro_core_descriptor_get_firmwares (RetroCoreDescriptor* self, const gchar* platform, int* result_length1, GError** error); -gchar* retro_core_descriptor_get_firmware_path (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gchar* retro_core_descriptor_get_firmware_md5 (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gchar* retro_core_descriptor_get_firmware_sha512 (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gboolean retro_core_descriptor_get_is_firmware_mandatory (RetroCoreDescriptor* self, const gchar* firmware, GError** error); -gboolean retro_core_descriptor_get_platform_supports_mime_types (RetroCoreDescriptor* self, const gchar* platform, gchar** mime_types, int mime_types_length1, GError** error); -GType retro_core_descriptor_platform_get_type (void) G_GNUC_CONST; -GQuark retro_core_descriptor_error_quark (void); -GType retro_core_view_get_type (void) G_GNUC_CONST; -GType retro_cairo_display_get_type (void) G_GNUC_CONST; -void retro_core_view_set_core (RetroCoreView* self, RetroCore* core); -RetroCairoDisplay* retro_core_view_get_display (RetroCoreView* self); -RetroInputDevice* retro_core_view_as_input_device (RetroCoreView* self, RetroDeviceType device_type); -gint16 retro_core_view_get_input_state (RetroCoreView* self, RetroDeviceType device, guint index, guint id); -guint64 retro_core_view_get_device_capabilities (RetroCoreView* self); -gboolean retro_core_view_get_is_pointer_grabbed (RetroCoreView* self); -void retro_core_view_ungrab (RetroCoreView* self); -gboolean retro_core_view_on_key_press_event (RetroCoreView* self, GtkWidget* source, GdkEventKey* event); -gboolean retro_core_view_on_key_release_event (RetroCoreView* self, GtkWidget* source, GdkEventKey* event); -gboolean retro_core_view_on_button_press_event (RetroCoreView* self, GtkWidget* source, GdkEventButton* event); -gboolean retro_core_view_on_button_release_event (RetroCoreView* self, GtkWidget* source, GdkEventButton* event); -gboolean retro_core_view_on_focus_out_event (RetroCoreView* self, GtkWidget* source, GdkEventFocus* event); -gboolean retro_core_view_on_motion_notify_event (RetroCoreView* self, GtkWidget* source, GdkEventMotion* event); -RetroCoreView* retro_core_view_new (void); -RetroCoreView* retro_core_view_construct (GType object_type); -gboolean retro_core_view_get_can_grab_pointer (RetroCoreView* self); -void retro_core_view_set_can_grab_pointer (RetroCoreView* self, gboolean value); -gboolean retro_core_view_get_snap_pointer_to_borders (RetroCoreView* self); -void retro_core_view_set_snap_pointer_to_borders (RetroCoreView* self, gboolean value); -gpointer retro_module_query_ref (gpointer instance); -void retro_module_query_unref (gpointer instance); -GParamSpec* retro_param_spec_module_query (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); -void retro_value_set_module_query (GValue* value, gpointer v_object); -void retro_value_take_module_query (GValue* value, gpointer v_object); -gpointer retro_value_get_module_query (const GValue* value); -GType retro_module_query_get_type (void) G_GNUC_CONST; -RetroModuleQuery* retro_module_query_new (gboolean recursive); -RetroModuleQuery* retro_module_query_construct (GType object_type, gboolean recursive); -gpointer retro_module_iterator_ref (gpointer instance); -void retro_module_iterator_unref (gpointer instance); -GParamSpec* retro_param_spec_module_iterator (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); -void retro_value_set_module_iterator (GValue* value, gpointer v_object); -void retro_value_take_module_iterator (GValue* value, gpointer v_object); -gpointer retro_value_get_module_iterator (const GValue* value); -GType retro_module_iterator_get_type (void) G_GNUC_CONST; -RetroModuleIterator* retro_module_query_iterator (RetroModuleQuery* self); -RetroModuleIterator* retro_module_iterator_new (gchar** lookup_paths, int lookup_paths_length1, gboolean recursive); -RetroModuleIterator* retro_module_iterator_construct (GType object_type, gchar** lookup_paths, int lookup_paths_length1, gboolean recursive); -RetroCoreDescriptor* retro_module_iterator_get (RetroModuleIterator* self); -gboolean retro_module_iterator_next (RetroModuleIterator* self); -gboolean retro_rumble_set_rumble_state (RetroRumble* self, guint port, RetroRumbleEffect effect, guint16 strength); -GType retro_pixel_format_get_type (void) G_GNUC_CONST; -void retro_cairo_display_set_core (RetroCairoDisplay* self, RetroCore* core); -GType retro_video_filter_get_type (void) G_GNUC_CONST; -void retro_cairo_display_set_filter (RetroCairoDisplay* self, RetroVideoFilter filter); -gboolean retro_cairo_display_get_coordinates_on_display (RetroCairoDisplay* self, gdouble widget_x, gdouble widget_y, gdouble* display_x, gdouble* display_y); -void retro_cairo_display_show_video (RetroCairoDisplay* self); -void retro_cairo_display_hide_video (RetroCairoDisplay* self); -RetroCairoDisplay* retro_cairo_display_new (void); -RetroCairoDisplay* retro_cairo_display_construct (GType object_type); -GdkPixbuf* retro_cairo_display_get_pixbuf (RetroCairoDisplay* self); -void retro_cairo_display_set_pixbuf (RetroCairoDisplay* self, GdkPixbuf* value); -RetroVideoFilter retro_video_filter_from_string (const gchar* filter); - - -G_END_DECLS - -#endif diff -Nru retro-gtk-0.12.1/retro-gtk/retro-gtk-version.h.in retro-gtk-0.14.0/retro-gtk/retro-gtk-version.h.in --- retro-gtk-0.12.1/retro-gtk/retro-gtk-version.h.in 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-gtk-version.h.in 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,81 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_GTK_VERSION_H +#define RETRO_GTK_VERSION_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +/** + * SECTION:retro-gtkversion + * @short_description: retro-gtk version checking + * + * retro-gtk provides macros to check the version of the library + * at compile-time + */ + +/** + * RETRO_GTK_MAJOR_VERSION: + * + * retro-gtk major version component (e.g. 1 if %RETRO_GTK_VERSION is 1.2.3) + */ +#define RETRO_GTK_MAJOR_VERSION (@MAJOR_VERSION@) + +/** + * RETRO_GTK_MINOR_VERSION: + * + * retro-gtk minor version component (e.g. 2 if %RETRO_GTK_VERSION is 1.2.3) + */ +#define RETRO_GTK_MINOR_VERSION (@MINOR_VERSION@) + +/** + * RETRO_GTK_MICRO_VERSION: + * + * retro-gtk micro version component (e.g. 3 if %RETRO_GTK_VERSION is 1.2.3) + */ +#define RETRO_GTK_MICRO_VERSION (@MICRO_VERSION@) + +/** + * RETRO_GTK_VERSION + * + * retro-gtk version. + */ +#define RETRO_GTK_VERSION (@VERSION@) + +/** + * RETRO_GTK_VERSION_S: + * + * retro-gtk version, encoded as a string, useful for printing and + * concatenation. + */ +#define RETRO_GTK_VERSION_S "@VERSION@" + +#define RETRO_GTK_ENCODE_VERSION(major,minor,micro) \ + ((major) << 24 | (minor) << 16 | (micro) << 8) + +/** + * RETRO_GTK_VERSION_HEX: + * + * retro-gtk version, encoded as an hexadecimal number, useful for + * integer comparisons. + */ +#define RETRO_GTK_VERSION_HEX \ + (RETRO_GTK_ENCODE_VERSION (RETRO_GTK_MAJOR_VERSION, RETRO_GTK_MINOR_VERSION, RETRO_GTK_MICRO_VERSION)) + +/** + * RETRO_GTK_CHECK_VERSION: + * @major: required major version + * @minor: required minor version + * @micro: required micro version + * + * Compile-time version checking. Evaluates to %TRUE if the version + * of retro-gtk is greater than the required one. + */ +#define RETRO_GTK_CHECK_VERSION(major,minor,micro) \ + (RETRO_GTK_MAJOR_VERSION > (major) || \ + (RETRO_GTK_MAJOR_VERSION == (major) && RETRO_GTK_MINOR_VERSION > (minor)) || \ + (RETRO_GTK_MAJOR_VERSION == (major) && RETRO_GTK_MINOR_VERSION == (minor) && \ + RETRO_GTK_MICRO_VERSION >= (micro))) + +#endif /* RETRO_GTK_VERSION_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-input.c retro-gtk-0.14.0/retro-gtk/retro-input.c --- retro-gtk-0.12.1/retro-gtk/retro-input.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-input.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,245 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-input-private.h" + +G_DEFINE_BOXED_TYPE (RetroInput, retro_input, retro_input_copy, retro_input_free) + +/* Private */ + +/** + * retro_input_init: + * @self: a #RetroInput + * @controller_type: the controller type + * @id: the id + * @index: the index + * + * Initializes @self with the given parameters. + */ +void +retro_input_init (RetroInput *self, + RetroControllerType controller_type, + guint id, + guint index) +{ + g_return_if_fail (self != NULL); + + self->any.type = controller_type; + self->any.id = id; + self->any.index = index; +} + +/* Public */ + +/** + * retro_input_new: + * + * Creates a new #RetroInput. + * + * Returns: (transfer full): a new #RetroInput, use retro_input_free() to free + * it + */ +RetroInput * +retro_input_new (void) +{ + RetroInput *self; + + self = g_slice_new0 (RetroInput); + + return self; +} + +/** + * retro_input_copy: + * @self: a #RetroInput + * + * Copies @self into a new #RetroInput. + * + * Returns: (transfer full): a new #RetroInput, use retro_input_free() to free + * it + */ +RetroInput * +retro_input_copy (RetroInput *self) +{ + RetroInput *copy; + + g_return_val_if_fail (self != NULL, NULL); + + copy = retro_input_new (); + copy->any.type = self->any.type; + copy->any.id = self->any.id; + copy->any.index = self->any.index; + + return copy; +} + +/** + * retro_input_free: + * @self: a #RetroInput + * + * Frees the given #RetroInput. + */ +void +retro_input_free (RetroInput *self) +{ + g_return_if_fail (self != NULL); + + g_slice_free (RetroInput, self); +} + +/** + * retro_input_get_controller_type: + * @self: a #RetroInput + * + * Gets the controller type of @self. + * + * Returns: the controller type of @self + */ +RetroControllerType +retro_input_get_controller_type (RetroInput *self) +{ + g_return_val_if_fail (self != NULL, RETRO_CONTROLLER_TYPE_NONE); + + return self->any.type; +} + +/** + * retro_input_get_joypad: + * @self: a #RetroInput + * @id: (out): return location for the id + * + * Gets the joypad id of %self, if any. + * + * Returns: whether the id was retrieved + */ +gboolean +retro_input_get_joypad (RetroInput *self, + RetroJoypadId *id) +{ + g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (id != NULL, FALSE); + + if (self->any.type != RETRO_CONTROLLER_TYPE_JOYPAD) + return FALSE; + + if (self->joypad.id >= RETRO_JOYPAD_ID_COUNT) + return FALSE; + + *id = self->joypad.id; + + return TRUE; +} + +/** + * retro_input_get_mouse: + * @self: a #RetroInput + * @id: (out): return location for the id + * + * Gets the mouse id of %self, if any. + * + * Returns: whether the id was retrieved + */ +gboolean +retro_input_get_mouse (RetroInput *self, + RetroMouseId *id) +{ + g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (id != NULL, FALSE); + + if (self->any.type != RETRO_CONTROLLER_TYPE_MOUSE) + return FALSE; + + if (self->mouse.id >= RETRO_MOUSE_ID_COUNT) + return FALSE; + + *id = self->mouse.id; + + return TRUE; +} + +/** + * retro_input_get_lightgun: + * @self: a #RetroInput + * @id: (out): return location for the id + * + * Gets the lightgun id of %self, if any. + * + * Returns: whether the id was retrieved + */ +gboolean +retro_input_get_lightgun (RetroInput *self, + RetroLightgunId *id) +{ + g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (id != NULL, FALSE); + + if (self->any.type != RETRO_CONTROLLER_TYPE_LIGHTGUN) + return FALSE; + + if (self->lightgun.id >= RETRO_LIGHTGUN_ID_COUNT) + return FALSE; + + *id = self->lightgun.id; + + return TRUE; +} + +/** + * retro_input_get_analog: + * @self: a #RetroInput + * @id: (out): return location for the id + * @index: (out): return location for the index + * + * Gets the analog id and index of %self, if any. + * + * Returns: whether the id and the index were retrieved + */ +gboolean +retro_input_get_analog (RetroInput *self, + RetroAnalogId *id, + RetroAnalogIndex *index) +{ + g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (id != NULL, FALSE); + g_return_val_if_fail (index != NULL, FALSE); + + if (self->any.type != RETRO_CONTROLLER_TYPE_ANALOG) + return FALSE; + + if (self->analog.id >= RETRO_ANALOG_ID_COUNT) + return FALSE; + + if (self->analog.index >= RETRO_ANALOG_INDEX_COUNT) + return FALSE; + + *id = self->analog.id; + *index = self->analog.index; + + return TRUE; +} + +/** + * retro_input_get_pointer: + * @self: a #RetroInput + * @id: (out): return location for the id + * + * Gets the pointer id of %self, if any. + * + * Returns: whether the id was retrieved + */ +gboolean +retro_input_get_pointer (RetroInput *self, + RetroPointerId *id) +{ + g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (id != NULL, FALSE); + + if (self->any.type != RETRO_CONTROLLER_TYPE_POINTER) + return FALSE; + + if (self->pointer.id >= RETRO_POINTER_ID_COUNT) + return FALSE; + + *id = self->pointer.id; + + return TRUE; +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-input-descriptor.c retro-gtk-0.14.0/retro-gtk/retro-input-descriptor.c --- retro-gtk-0.12.1/retro-gtk/retro-input-descriptor.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-input-descriptor.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,65 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-input-descriptor.h" + +G_DEFINE_BOXED_TYPE (RetroInputDescriptor, retro_input_descriptor, retro_input_descriptor_copy, retro_input_descriptor_free) + +/** + * retro_input_descriptor_new: + * + * Creates a new #RetroInputDescriptor. + * + * Returns: (transfer full): a new #RetroInputDescriptor, use + * retro_input_descriptor_free() to free it + */ +RetroInputDescriptor * +retro_input_descriptor_new (void) +{ + RetroInputDescriptor *self; + + self = g_slice_new0 (RetroInputDescriptor); + + return self; +} + +/** + * retro_input_descriptor_copy: + * @self: a #RetroInputDescriptor + * + * Copies @self into a new #RetroInputDescriptor. + * + * Returns: (transfer full): a new #RetroInputDescriptor, use + * retro_input_descriptor_free() to free it + */ +RetroInputDescriptor * +retro_input_descriptor_copy (RetroInputDescriptor *self) +{ + RetroInputDescriptor *copy; + + g_return_val_if_fail (self, NULL); + + copy = retro_input_descriptor_new (); + copy->port = self->port; + copy->controller_type = self->controller_type; + copy->index = self->index; + copy->id = self->id; + copy->description = g_strdup (self->description); + + return copy; +} + +/** + * retro_input_descriptor_free: + * @self: a #RetroInputDescriptor + * + * Frees the given #RetroInputDescriptor object. + */ +void +retro_input_descriptor_free (RetroInputDescriptor *self) +{ + g_return_if_fail (self); + + g_free (self->description); + + g_slice_free (RetroInputDescriptor, self); +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-input-descriptor.h retro-gtk-0.14.0/retro-gtk/retro-input-descriptor.h --- retro-gtk-0.12.1/retro-gtk/retro-input-descriptor.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-input-descriptor.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,36 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_INPUT_DESCRIPTOR_H +#define RETRO_INPUT_DESCRIPTOR_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include +#include "retro-controller-type.h" + +G_BEGIN_DECLS + +#define RETRO_TYPE_INPUT_DESCRIPTOR (retro_input_descriptor_get_type()) + +typedef struct _RetroInputDescriptor RetroInputDescriptor; + +struct _RetroInputDescriptor +{ + guint port; + RetroControllerType controller_type; + guint index; + guint id; + gchar *description; +}; + +RetroInputDescriptor *retro_input_descriptor_new (void); +RetroInputDescriptor *retro_input_descriptor_copy (RetroInputDescriptor *self); +void retro_input_descriptor_free (RetroInputDescriptor *self); + +G_DEFINE_AUTOPTR_CLEANUP_FUNC (RetroInputDescriptor, retro_input_descriptor_free) + +G_END_DECLS + +#endif /* RETRO_INPUT_DESCRIPTOR_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-input.h retro-gtk-0.14.0/retro-gtk/retro-input.h --- retro-gtk-0.12.1/retro-gtk/retro-input.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-input.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,42 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_INPUT_H +#define RETRO_INPUT_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include +#include "retro-controller-codes.h" +#include "retro-controller-type.h" + +G_BEGIN_DECLS + +#define RETRO_TYPE_INPUT (retro_input_get_type()) + +GType retro_input_get_type (void) G_GNUC_CONST; + +typedef union _RetroInput RetroInput; + +RetroInput *retro_input_new (void); +RetroInput *retro_input_copy (RetroInput *self); +void retro_input_free (RetroInput *self); +RetroControllerType retro_input_get_controller_type (RetroInput *self); +gboolean retro_input_get_joypad (RetroInput *self, + RetroJoypadId *id); +gboolean retro_input_get_mouse (RetroInput *self, + RetroMouseId *id); +gboolean retro_input_get_lightgun (RetroInput *self, + RetroLightgunId *id); +gboolean retro_input_get_analog (RetroInput *self, + RetroAnalogId *id, + RetroAnalogIndex *index); +gboolean retro_input_get_pointer (RetroInput *self, + RetroPointerId *id); + +G_DEFINE_AUTOPTR_CLEANUP_FUNC (RetroInput, retro_input_free) + +G_END_DECLS + +#endif /* RETRO_INPUT_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-input-private.h retro-gtk-0.14.0/retro-gtk/retro-input-private.h --- retro-gtk-0.12.1/retro-gtk/retro-input-private.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-input-private.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,69 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_INPUT_PRIVATE_H +#define RETRO_INPUT_PRIVATE_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include "retro-input.h" + +G_BEGIN_DECLS + +typedef struct _RetroInputAny RetroInputAny; +typedef struct _RetroInputJoypad RetroInputJoypad; +typedef struct _RetroInputMouse RetroInputMouse; +typedef struct _RetroInputLightgun RetroInputLightgun; +typedef struct _RetroInputAnalog RetroInputAnalog; +typedef struct _RetroInputPointer RetroInputPointer; + +struct _RetroInputAny { + RetroControllerType type; + gint id; + gint index; +}; + +struct _RetroInputJoypad { + RetroControllerType type; + RetroJoypadId id; +}; + +struct _RetroInputMouse { + RetroControllerType type; + RetroMouseId id; +}; + +struct _RetroInputLightgun { + RetroControllerType type; + RetroLightgunId id; +}; + +struct _RetroInputAnalog { + RetroControllerType type; + RetroAnalogId id; + RetroAnalogIndex index; +}; + +struct _RetroInputPointer { + RetroControllerType type; + RetroPointerId id; +}; + +union _RetroInput { + RetroInputAny any; + RetroInputJoypad joypad; + RetroInputMouse mouse; + RetroInputLightgun lightgun; + RetroInputAnalog analog; + RetroInputPointer pointer; +}; + +void retro_input_init (RetroInput *self, + RetroControllerType controller_type, + guint id, + guint index); + +G_END_DECLS + +#endif /* RETRO_INPUT_PRIVATE_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-keyboard-key.c retro-gtk-0.14.0/retro-gtk/retro-keyboard-key.c --- retro-gtk-0.12.1/retro-gtk/retro-keyboard-key.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-keyboard-key.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,152 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-keyboard-key.h" + +RetroKeyboardModifierKey +retro_keyboard_modifier_key_converter (guint keyval, + GdkModifierType modifiers) +{ + RetroKeyboardModifierKey retro_modifiers = RETRO_KEYBOARD_MODIFIER_KEY_NONE; + + if (modifiers & GDK_SHIFT_MASK) + retro_modifiers |= RETRO_KEYBOARD_MODIFIER_KEY_SHIFT; + if (modifiers & GDK_CONTROL_MASK) + retro_modifiers |= RETRO_KEYBOARD_MODIFIER_KEY_CTRL; + if (modifiers & GDK_MOD1_MASK) + retro_modifiers |= RETRO_KEYBOARD_MODIFIER_KEY_ALT; + if (modifiers & GDK_META_MASK) + retro_modifiers |= RETRO_KEYBOARD_MODIFIER_KEY_META; + if (keyval == GDK_KEY_Num_Lock) + retro_modifiers |= RETRO_KEYBOARD_MODIFIER_KEY_NUMLOCK; + if (modifiers & GDK_LOCK_MASK) + retro_modifiers |= RETRO_KEYBOARD_MODIFIER_KEY_CAPSLOCK; + if (keyval == GDK_KEY_Scroll_Lock) + retro_modifiers |= RETRO_KEYBOARD_MODIFIER_KEY_SCROLLOCK; + + return retro_modifiers; +} + +RetroKeyboardKey +retro_keyboard_key_converter (guint keyval) +{ + guint key; + + // Common keys (0x0020 to 0x00fe) + if (keyval < 0x80) { + key = (0x7f & keyval); + + // If the key is uppercase, turn it lower case + if (key >= 'A' && key <= 'Z') + return key + 0x20; + + return key; + } + + // Function keys + key = keyval - GDK_KEY_F1; + if (key < 15) + return RETRO_KEYBOARD_KEY_F1 + key; + + // Keypad digits + key = keyval - GDK_KEY_KP_0; + if (key < 10) + return RETRO_KEYBOARD_KEY_KP0 + key; + + // Various keys + // Missing keys: MODE, COMPOSE, POWER + switch (keyval) { + case GDK_KEY_BackSpace: + return RETRO_KEYBOARD_KEY_BACKSPACE; + case GDK_KEY_Tab: + return RETRO_KEYBOARD_KEY_TAB; + case GDK_KEY_Clear: + return RETRO_KEYBOARD_KEY_CLEAR; + case GDK_KEY_Return: + return RETRO_KEYBOARD_KEY_RETURN; + case GDK_KEY_Pause: + return RETRO_KEYBOARD_KEY_PAUSE; + case GDK_KEY_Escape: + return RETRO_KEYBOARD_KEY_ESCAPE; + case GDK_KEY_Delete: + return RETRO_KEYBOARD_KEY_DELETE; + + case GDK_KEY_Up: + return RETRO_KEYBOARD_KEY_UP; + case GDK_KEY_Down: + return RETRO_KEYBOARD_KEY_DOWN; + case GDK_KEY_Left: + return RETRO_KEYBOARD_KEY_LEFT; + case GDK_KEY_Right: + return RETRO_KEYBOARD_KEY_RIGHT; + case GDK_KEY_Insert: + return RETRO_KEYBOARD_KEY_INSERT; + case GDK_KEY_Home: + return RETRO_KEYBOARD_KEY_HOME; + case GDK_KEY_End: + return RETRO_KEYBOARD_KEY_END; + case GDK_KEY_Page_Up: + return RETRO_KEYBOARD_KEY_PAGEUP; + case GDK_KEY_Page_Down: + return RETRO_KEYBOARD_KEY_PAGEDOWN; + + case GDK_KEY_KP_Decimal: + return RETRO_KEYBOARD_KEY_KP_PERIOD; + case GDK_KEY_KP_Divide: + return RETRO_KEYBOARD_KEY_KP_DIVIDE; + case GDK_KEY_KP_Multiply: + return RETRO_KEYBOARD_KEY_KP_MULTIPLY; + case GDK_KEY_KP_Subtract: + return RETRO_KEYBOARD_KEY_KP_MINUS; + case GDK_KEY_KP_Add: + return RETRO_KEYBOARD_KEY_KP_PLUS; + case GDK_KEY_KP_Enter: + return RETRO_KEYBOARD_KEY_KP_ENTER; + case GDK_KEY_KP_Equal: + return RETRO_KEYBOARD_KEY_KP_EQUALS; + + case GDK_KEY_Num_Lock: + return RETRO_KEYBOARD_KEY_NUMLOCK; + case GDK_KEY_Caps_Lock: + return RETRO_KEYBOARD_KEY_CAPSLOCK; + case GDK_KEY_Scroll_Lock: + return RETRO_KEYBOARD_KEY_SCROLLOCK; + case GDK_KEY_Shift_R: + return RETRO_KEYBOARD_KEY_RSHIFT; + case GDK_KEY_Shift_L: + return RETRO_KEYBOARD_KEY_LSHIFT; + case GDK_KEY_Control_R: + return RETRO_KEYBOARD_KEY_RCTRL; + case GDK_KEY_Control_L: + return RETRO_KEYBOARD_KEY_LCTRL; + case GDK_KEY_Alt_R: + return RETRO_KEYBOARD_KEY_RALT; + case GDK_KEY_Alt_L: + return RETRO_KEYBOARD_KEY_LALT; + case GDK_KEY_Meta_R: + return RETRO_KEYBOARD_KEY_RMETA; + case GDK_KEY_Meta_L: + return RETRO_KEYBOARD_KEY_LMETA; + case GDK_KEY_Super_R: + return RETRO_KEYBOARD_KEY_RSUPER; + case GDK_KEY_Super_L: + return RETRO_KEYBOARD_KEY_LSUPER; + + case GDK_KEY_Help: + return RETRO_KEYBOARD_KEY_HELP; + case GDK_KEY_Print: + return RETRO_KEYBOARD_KEY_PRINT; + case GDK_KEY_Sys_Req: + return RETRO_KEYBOARD_KEY_SYSREQ; + case GDK_KEY_Break: + return RETRO_KEYBOARD_KEY_BREAK; + case GDK_KEY_Menu: + return RETRO_KEYBOARD_KEY_MENU; + case GDK_KEY_EuroSign: + return RETRO_KEYBOARD_KEY_EURO; + case GDK_KEY_Undo: + return RETRO_KEYBOARD_KEY_UNDO; + + default: + return RETRO_KEYBOARD_KEY_UNKNOWN; + } +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-keyboard-key.h retro-gtk-0.14.0/retro-gtk/retro-keyboard-key.h --- retro-gtk-0.12.1/retro-gtk/retro-keyboard-key.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-keyboard-key.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,172 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_KEYBOARD_KEY_H +#define RETRO_KEYBOARD_KEY_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +typedef enum { + RETRO_KEYBOARD_KEY_UNKNOWN = 0, + RETRO_KEYBOARD_KEY_FIRST = 0, + RETRO_KEYBOARD_KEY_BACKSPACE = 8, + RETRO_KEYBOARD_KEY_TAB = 9, + RETRO_KEYBOARD_KEY_CLEAR = 12, + RETRO_KEYBOARD_KEY_RETURN = 13, + RETRO_KEYBOARD_KEY_PAUSE = 19, + RETRO_KEYBOARD_KEY_ESCAPE = 27, + RETRO_KEYBOARD_KEY_SPACE = 32, + RETRO_KEYBOARD_KEY_EXCLAIM = 33, + RETRO_KEYBOARD_KEY_QUOTEDBL = 34, + RETRO_KEYBOARD_KEY_HASH = 35, + RETRO_KEYBOARD_KEY_DOLLAR = 36, + RETRO_KEYBOARD_KEY_AMPERSAND = 38, + RETRO_KEYBOARD_KEY_QUOTE = 39, + RETRO_KEYBOARD_KEY_LEFTPAREN = 40, + RETRO_KEYBOARD_KEY_RIGHTPAREN = 41, + RETRO_KEYBOARD_KEY_ASTERISK = 42, + RETRO_KEYBOARD_KEY_PLUS = 43, + RETRO_KEYBOARD_KEY_COMMA = 44, + RETRO_KEYBOARD_KEY_MINUS = 45, + RETRO_KEYBOARD_KEY_PERIOD = 46, + RETRO_KEYBOARD_KEY_SLASH = 47, + RETRO_KEYBOARD_KEY_ZERO = 48, + RETRO_KEYBOARD_KEY_ONE = 49, + RETRO_KEYBOARD_KEY_TWO = 50, + RETRO_KEYBOARD_KEY_THREE = 51, + RETRO_KEYBOARD_KEY_FOUR = 52, + RETRO_KEYBOARD_KEY_FINE = 53, + RETRO_KEYBOARD_KEY_SIX = 54, + RETRO_KEYBOARD_KEY_SEVEN = 55, + RETRO_KEYBOARD_KEY_HEIGHT = 56, + RETRO_KEYBOARD_KEY_NINE = 57, + RETRO_KEYBOARD_KEY_COLON = 58, + RETRO_KEYBOARD_KEY_SEMICOLON = 59, + RETRO_KEYBOARD_KEY_LESS = 60, + RETRO_KEYBOARD_KEY_EQUALS = 61, + RETRO_KEYBOARD_KEY_GREATER = 62, + RETRO_KEYBOARD_KEY_QUESTION = 63, + RETRO_KEYBOARD_KEY_AT = 64, + RETRO_KEYBOARD_KEY_LEFTBRACKET = 91, + RETRO_KEYBOARD_KEY_BACKSLASH = 92, + RETRO_KEYBOARD_KEY_RIGHTBRACKET = 93, + RETRO_KEYBOARD_KEY_CARET = 94, + RETRO_KEYBOARD_KEY_UNDERSCORE = 95, + RETRO_KEYBOARD_KEY_BACKQUOTE = 96, + RETRO_KEYBOARD_KEY_a = 97, + RETRO_KEYBOARD_KEY_b = 98, + RETRO_KEYBOARD_KEY_c = 99, + RETRO_KEYBOARD_KEY_d = 100, + RETRO_KEYBOARD_KEY_e = 101, + RETRO_KEYBOARD_KEY_f = 102, + RETRO_KEYBOARD_KEY_g = 103, + RETRO_KEYBOARD_KEY_h = 104, + RETRO_KEYBOARD_KEY_i = 105, + RETRO_KEYBOARD_KEY_j = 106, + RETRO_KEYBOARD_KEY_k = 107, + RETRO_KEYBOARD_KEY_l = 108, + RETRO_KEYBOARD_KEY_m = 109, + RETRO_KEYBOARD_KEY_n = 110, + RETRO_KEYBOARD_KEY_o = 111, + RETRO_KEYBOARD_KEY_p = 112, + RETRO_KEYBOARD_KEY_q = 113, + RETRO_KEYBOARD_KEY_r = 114, + RETRO_KEYBOARD_KEY_s = 115, + RETRO_KEYBOARD_KEY_t = 116, + RETRO_KEYBOARD_KEY_u = 117, + RETRO_KEYBOARD_KEY_v = 118, + RETRO_KEYBOARD_KEY_w = 119, + RETRO_KEYBOARD_KEY_x = 120, + RETRO_KEYBOARD_KEY_y = 121, + RETRO_KEYBOARD_KEY_z = 122, + RETRO_KEYBOARD_KEY_DELETE = 127, + RETRO_KEYBOARD_KEY_KP0 = 256, + RETRO_KEYBOARD_KEY_KP1 = 257, + RETRO_KEYBOARD_KEY_KP2 = 258, + RETRO_KEYBOARD_KEY_KP3 = 259, + RETRO_KEYBOARD_KEY_KP4 = 260, + RETRO_KEYBOARD_KEY_KP5 = 261, + RETRO_KEYBOARD_KEY_KP6 = 262, + RETRO_KEYBOARD_KEY_KP7 = 263, + RETRO_KEYBOARD_KEY_KP8 = 264, + RETRO_KEYBOARD_KEY_KP9 = 265, + RETRO_KEYBOARD_KEY_KP_PERIOD = 266, + RETRO_KEYBOARD_KEY_KP_DIVIDE = 267, + RETRO_KEYBOARD_KEY_KP_MULTIPLY = 268, + RETRO_KEYBOARD_KEY_KP_MINUS = 269, + RETRO_KEYBOARD_KEY_KP_PLUS = 270, + RETRO_KEYBOARD_KEY_KP_ENTER = 271, + RETRO_KEYBOARD_KEY_KP_EQUALS = 272, + RETRO_KEYBOARD_KEY_UP = 273, + RETRO_KEYBOARD_KEY_DOWN = 274, + RETRO_KEYBOARD_KEY_RIGHT = 275, + RETRO_KEYBOARD_KEY_LEFT = 276, + RETRO_KEYBOARD_KEY_INSERT = 277, + RETRO_KEYBOARD_KEY_HOME = 278, + RETRO_KEYBOARD_KEY_END = 279, + RETRO_KEYBOARD_KEY_PAGEUP = 280, + RETRO_KEYBOARD_KEY_PAGEDOWN = 281, + RETRO_KEYBOARD_KEY_F1 = 282, + RETRO_KEYBOARD_KEY_F2 = 283, + RETRO_KEYBOARD_KEY_F3 = 284, + RETRO_KEYBOARD_KEY_F4 = 285, + RETRO_KEYBOARD_KEY_F5 = 286, + RETRO_KEYBOARD_KEY_F6 = 287, + RETRO_KEYBOARD_KEY_F7 = 288, + RETRO_KEYBOARD_KEY_F8 = 289, + RETRO_KEYBOARD_KEY_F9 = 290, + RETRO_KEYBOARD_KEY_F10 = 291, + RETRO_KEYBOARD_KEY_F11 = 292, + RETRO_KEYBOARD_KEY_F12 = 293, + RETRO_KEYBOARD_KEY_F13 = 294, + RETRO_KEYBOARD_KEY_F14 = 295, + RETRO_KEYBOARD_KEY_F15 = 296, + RETRO_KEYBOARD_KEY_NUMLOCK = 300, + RETRO_KEYBOARD_KEY_CAPSLOCK = 301, + RETRO_KEYBOARD_KEY_SCROLLOCK = 302, + RETRO_KEYBOARD_KEY_RSHIFT = 303, + RETRO_KEYBOARD_KEY_LSHIFT = 304, + RETRO_KEYBOARD_KEY_RCTRL = 305, + RETRO_KEYBOARD_KEY_LCTRL = 306, + RETRO_KEYBOARD_KEY_RALT = 307, + RETRO_KEYBOARD_KEY_LALT = 308, + RETRO_KEYBOARD_KEY_RMETA = 309, + RETRO_KEYBOARD_KEY_LMETA = 310, + RETRO_KEYBOARD_KEY_LSUPER = 311, + RETRO_KEYBOARD_KEY_RSUPER = 312, + RETRO_KEYBOARD_KEY_MODE = 313, + RETRO_KEYBOARD_KEY_COMPOSE = 314, + RETRO_KEYBOARD_KEY_HELP = 315, + RETRO_KEYBOARD_KEY_PRINT = 316, + RETRO_KEYBOARD_KEY_SYSREQ = 317, + RETRO_KEYBOARD_KEY_BREAK = 318, + RETRO_KEYBOARD_KEY_MENU = 319, + RETRO_KEYBOARD_KEY_POWER = 320, + RETRO_KEYBOARD_KEY_EURO = 321, + RETRO_KEYBOARD_KEY_UNDO = 322, + RETRO_KEYBOARD_KEY_LAST +} RetroKeyboardKey; + +typedef enum { + RETRO_KEYBOARD_MODIFIER_KEY_NONE = 0x0000, + RETRO_KEYBOARD_MODIFIER_KEY_SHIFT = 0x01, + RETRO_KEYBOARD_MODIFIER_KEY_CTRL = 0x02, + RETRO_KEYBOARD_MODIFIER_KEY_ALT = 0x04, + RETRO_KEYBOARD_MODIFIER_KEY_META = 0x08, + RETRO_KEYBOARD_MODIFIER_KEY_NUMLOCK = 0x10, + RETRO_KEYBOARD_MODIFIER_KEY_CAPSLOCK = 0x20, + RETRO_KEYBOARD_MODIFIER_KEY_SCROLLOCK = 0x40 +} RetroKeyboardModifierKey; + +RetroKeyboardModifierKey retro_keyboard_modifier_key_converter (guint keyval, + GdkModifierType modifiers); +RetroKeyboardKey retro_keyboard_key_converter (guint keyval); + +G_END_DECLS + +#endif /* RETRO_KEYBOARD_KEY_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-log.c retro-gtk-0.14.0/retro-gtk/retro-log.c --- retro-gtk-0.12.1/retro-gtk/retro-log.c 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-log.c 2018-03-10 13:02:01.000000000 +0000 @@ -1,9 +1,22 @@ // This file is part of retro-gtk. License: GPL-3.0+. -#include "retro-gtk-internal.h" +#include "retro-core.h" +/** + * retro_g_log: + * @sender: a #RetroCore + * @log_domain: (nullable): the log domain, usually #G_LOG_DOMAIN, or %NULL + * @log_level: the log level, either from #GLogLevelFlags or a user-defined + * level + * @message: the message to log + * + * Logs an error or debugging message. + * + * This is a convenience function to forward the log signal of #RetroCore to + * g_log(), see it for more information. + */ void -retro_g_log (RetroCore *self, +retro_g_log (RetroCore *sender, const gchar *log_domain, GLogLevelFlags log_level, const gchar *message) diff -Nru retro-gtk-0.12.1/retro-gtk/retro-log.h retro-gtk-0.14.0/retro-gtk/retro-log.h --- retro-gtk-0.12.1/retro-gtk/retro-log.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-log.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,22 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_LOG_H +#define RETRO_LOG_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include +#include "retro-core.h" + +G_BEGIN_DECLS + +void retro_g_log (RetroCore *sender, + const gchar *log_domain, + GLogLevelFlags log_level, + const gchar *message); + +G_END_DECLS + +#endif /* RETRO_LOG_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-main-loop.c retro-gtk-0.14.0/retro-gtk/retro-main-loop.c --- retro-gtk-0.12.1/retro-gtk/retro-main-loop.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-main-loop.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,347 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-main-loop.h" + +struct _RetroMainLoop +{ + GObject parent_instance; + RetroCore *core; + gdouble speed_rate; + glong loop; + gulong core_fps_id; +}; + +G_DEFINE_TYPE (RetroMainLoop, retro_main_loop, G_TYPE_OBJECT) + +enum { + PROP_CORE = 1, + PROP_SPEED_RATE, + N_PROPS, +}; + +static GParamSpec *properties [N_PROPS]; + +/* Private */ + +static void +retro_main_loop_finalize (GObject *object) +{ + RetroMainLoop *self = RETRO_MAIN_LOOP (object); + + retro_main_loop_stop (self); + g_clear_object (&self->core); + + G_OBJECT_CLASS (retro_main_loop_parent_class)->finalize (object); +} + +static void +retro_main_loop_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + RetroMainLoop *self = RETRO_MAIN_LOOP (object); + + switch (prop_id) { + case PROP_CORE: + g_value_set_object (value, retro_main_loop_get_core (self)); + + break; + case PROP_SPEED_RATE: + g_value_set_double (value, retro_main_loop_get_speed_rate (self)); + + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + + break; + } +} + +static void +retro_main_loop_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + RetroMainLoop *self = RETRO_MAIN_LOOP (object); + + switch (prop_id) { + case PROP_CORE: + retro_main_loop_set_core (self, g_value_get_object (value)); + + break; + case PROP_SPEED_RATE: + retro_main_loop_set_speed_rate (self, g_value_get_double (value)); + + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + + break; + } +} + +static void +retro_main_loop_class_init (RetroMainLoopClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = retro_main_loop_finalize; + object_class->get_property = retro_main_loop_get_property; + object_class->set_property = retro_main_loop_set_property; + + properties[PROP_CORE] = + g_param_spec_object ("core", + "Core", + "The core", + RETRO_TYPE_CORE, + G_PARAM_READWRITE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB | + G_PARAM_CONSTRUCT); + g_object_class_install_property (G_OBJECT_CLASS (klass), + PROP_CORE, + properties[PROP_CORE]); + + properties[PROP_SPEED_RATE] = + g_param_spec_double ("speed-rate", + "Speed rate", + "The speed ratio at wich the core will run", + -G_MAXDOUBLE, G_MAXDOUBLE, 1.0, + G_PARAM_READWRITE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB | + G_PARAM_CONSTRUCT); + g_object_class_install_property (G_OBJECT_CLASS (klass), + PROP_SPEED_RATE, + properties[PROP_SPEED_RATE]); +} + +static void +retro_main_loop_on_notification (GObject *src, + GParamSpec *param, + gpointer user_data) +{ + RetroMainLoop *self = RETRO_MAIN_LOOP (user_data); + const gchar *param_name; + + g_return_if_fail (self != NULL); + g_return_if_fail (src != NULL); + g_return_if_fail (param != NULL); + + if (self->loop < 0) + return; + + param_name = g_param_spec_get_name (param); + if (g_strcmp0 (param_name, "speed-rate") != 0) + return; + + retro_main_loop_stop (self); + retro_main_loop_start (self); +} + +static void +retro_main_loop_on_frames_per_second_changed (GObject *sender, + GParamSpec *pspec, + gpointer user_data) +{ + RetroMainLoop *self = RETRO_MAIN_LOOP (user_data); + + g_return_if_fail (self != NULL); + + if (self->loop < 0) + return; + + retro_main_loop_stop (self); + retro_main_loop_start (self); +} + +static void +retro_main_loop_init (RetroMainLoop *self) +{ + self->loop = -1; + + g_signal_connect_object (G_OBJECT (self), + "notify", + (GCallback) retro_main_loop_on_notification, + self, + 0); +} + +static gboolean +retro_main_loop_run (RetroMainLoop *self) +{ + g_return_val_if_fail (self != NULL, FALSE); + + if (self->core == NULL || self->loop < 0) + return FALSE; + + retro_core_run (self->core); + + return TRUE; +} + +/* Public */ + +/** + * retro_main_loop_get_speed_rate: + * @self: a #RetroMainLoop + * + * Gets the speed rate at which to run the core. + * + * Returns: the speed rate + */ +gdouble +retro_main_loop_get_speed_rate (RetroMainLoop *self) +{ + g_return_val_if_fail (self != NULL, 1.0); + + return self->speed_rate; +} + +/** + * retro_main_loop_get_core: + * @self: a #RetroMainLoop + * + * Gets the core handled by @self. + * + * Returns: (transfer none): a #RetroCore + */ +RetroCore * +retro_main_loop_get_core (RetroMainLoop *self) +{ + g_return_val_if_fail (self != NULL, NULL); + + return self->core; +} + +/** + * retro_main_loop_set_core: + * @self: a #RetroMainLoop + * @core: (nullable): a #RetroCore, or %NULL + * + * Sets @core as the #RetroCore handled by @self. + */ +void +retro_main_loop_set_core (RetroMainLoop *self, + RetroCore *core) +{ + g_return_if_fail (self != NULL); + + if (self->core == core) + return; + + retro_main_loop_stop (self); + + if (self->core != NULL) { + g_signal_handler_disconnect (G_OBJECT (self->core), self->core_fps_id); + g_clear_object (&self->core); + } + + if (core != NULL) { + self->core = g_object_ref (core); + self->core_fps_id = + g_signal_connect_object (G_OBJECT (self->core), + "notify::frames-per-second", + (GCallback) retro_main_loop_on_frames_per_second_changed, + self, + 0); + } + + g_object_notify_by_pspec ((GObject *) self, properties[PROP_CORE]); +} + +/** + * retro_main_loop_set_speed_rate: + * @self: a #RetroMainLoop + * @speed_rate: a speed rate + * + * Sets the speed rate at which to run the core. + */ +void +retro_main_loop_set_speed_rate (RetroMainLoop *self, + gdouble speed_rate) +{ + g_return_if_fail (self != NULL); + + if (self->speed_rate == speed_rate) + return; + + self->speed_rate = speed_rate; + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SPEED_RATE]); +} + +/** + * retro_main_loop_start: + * @self: a #RetroMainLoop + * + * Starts runing the core. If the core was stopped, it will restart from this moment. + */ +void +retro_main_loop_start (RetroMainLoop *self) +{ + gdouble fps; + + g_return_if_fail (self != NULL); + g_return_if_fail (self->core != NULL); + + if (self->loop >= 0 || self->speed_rate <= 0) + return; + + // TODO What if fps <= 0? + fps = retro_core_get_frames_per_second (self->core); + self->loop = g_timeout_add_full (G_PRIORITY_DEFAULT, + (guint) (1000 / (fps * self->speed_rate)), + (GSourceFunc) retro_main_loop_run, + g_object_ref (self), + g_object_unref); +} + +/** + * retro_main_loop_reset: + * @self: a #RetroMainLoop + * + * Resets the core. Results depend on the core's implementation. + */ +void +retro_main_loop_reset (RetroMainLoop *self) +{ + g_return_if_fail (self != NULL); + g_return_if_fail (self->core != NULL); + + retro_core_reset (self->core); +} + +/** + * retro_main_loop_stop: + * @self: a #RetroMainLoop + * + * Stops runing the core. + */ +void +retro_main_loop_stop (RetroMainLoop *self) +{ + g_return_if_fail (self != NULL); + + if (self->loop < 0) + return; + + g_source_remove (self->loop); + self->loop = -1; +} + +/** + * retro_main_loop_new: + * + * Creates a new #RetroMainLoop. + * + * Returns: (transfer full): a new #RetroMainLoop + */ +RetroMainLoop * +retro_main_loop_new (RetroCore *core) +{ + return g_object_new (RETRO_TYPE_MAIN_LOOP, "core", core, NULL); +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-main-loop.h retro-gtk-0.14.0/retro-gtk/retro-main-loop.h --- retro-gtk-0.12.1/retro-gtk/retro-main-loop.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-main-loop.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,31 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_MAIN_LOOP_H +#define RETRO_MAIN_LOOP_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include "retro-core.h" + +G_BEGIN_DECLS + +#define RETRO_TYPE_MAIN_LOOP (retro_main_loop_get_type()) + +G_DECLARE_FINAL_TYPE (RetroMainLoop, retro_main_loop, RETRO, MAIN_LOOP, GObject) + +RetroMainLoop *retro_main_loop_new (RetroCore *core); +RetroCore *retro_main_loop_get_core (RetroMainLoop *self); +void retro_main_loop_set_core (RetroMainLoop *self, + RetroCore *core); +void retro_main_loop_start (RetroMainLoop *self); +void retro_main_loop_reset (RetroMainLoop *self); +void retro_main_loop_stop (RetroMainLoop *self); +gdouble retro_main_loop_get_speed_rate (RetroMainLoop *self); +void retro_main_loop_set_speed_rate (RetroMainLoop *self, + gdouble speed_rate); + +G_END_DECLS + +#endif /* RETRO_MAIN_LOOP_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-memory-type.c retro-gtk-0.14.0/retro-gtk/retro-memory-type.c --- retro-gtk-0.12.1/retro-gtk/retro-memory-type.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-memory-type.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,26 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-memory-type.h" + +GType +retro_memory_type_get_type (void) +{ + static volatile gsize retro_memory_type_type = 0; + + if (g_once_init_enter (&retro_memory_type_type)) { + static const GEnumValue values[] = { + { RETRO_MEMORY_TYPE_SAVE_RAM, "RETRO_MEMORY_TYPE_SAVE_RAM", "save-ram" }, + { RETRO_MEMORY_TYPE_RTC, "RETRO_MEMORY_TYPE_RTC", "rtc" }, + { RETRO_MEMORY_TYPE_SYSTEM_RAM, "RETRO_MEMORY_TYPE_SYSTEM_RAM", "system-ram" }, + { RETRO_MEMORY_TYPE_VIDEO_RAM, "RETRO_MEMORY_TYPE_VIDEO_RAM", "video-ram" }, + { 0, NULL, NULL }, + }; + GType type; + + type = g_enum_register_static ("RetroMemoryType", values); + + g_once_init_leave (&retro_memory_type_type, type); + } + + return retro_memory_type_type; +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-memory-type.h retro-gtk-0.14.0/retro-gtk/retro-memory-type.h --- retro-gtk-0.12.1/retro-gtk/retro-memory-type.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-memory-type.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,33 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_MEMORY_TYPE_H +#define RETRO_MEMORY_TYPE_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * RetroMemoryType: + * @RETRO_MEMORY_TYPE_SAVE_RAM: the save RAM + * @RETRO_MEMORY_TYPE_RTC: the real time clock + * @RETRO_MEMORY_TYPE_SYSTEM_RAM: the system RAM + * @RETRO_MEMORY_TYPE_VIDEO_RAM: the video RAM + * + * Represents the memory types for the Libretro core. + */ +typedef enum +{ + RETRO_MEMORY_TYPE_SAVE_RAM, + RETRO_MEMORY_TYPE_RTC, + RETRO_MEMORY_TYPE_SYSTEM_RAM, + RETRO_MEMORY_TYPE_VIDEO_RAM, +} RetroMemoryType; + +G_END_DECLS + +#endif /* RETRO_MEMORY_TYPE_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-module.h retro-gtk-0.14.0/retro-gtk/retro-module.h --- retro-gtk-0.12.1/retro-gtk/retro-module.h 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-module.h 2018-03-10 13:02:01.000000000 +0000 @@ -3,17 +3,22 @@ #ifndef RETRO_MODULE_H #define RETRO_MODULE_H +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + #include -#include "retro-gtk-internal.h" +#include "retro-controller-type.h" #include "retro-game-info.h" +#include "retro-memory-type.h" #include "retro-system-av-info.h" #include "retro-system-info.h" G_BEGIN_DECLS typedef gboolean (*RetroLoadGame) (RetroGameInfo *game); -typedef gboolean (*RetroSerialize) (guint8 *data, gint length); -typedef gboolean (*RetroUnserialize) (guint8 *data, gint length); +typedef gboolean (*RetroSerialize) (guint8 *data, gsize size); +typedef gboolean (*RetroUnserialize) (guint8 *data, gsize size); typedef gsize (*RetroGetMemorySize) (RetroMemoryType id); typedef gsize (*RetroSerializeSize) (); typedef guint (*RetroApiVersion) (); @@ -25,7 +30,7 @@ typedef void (*RetroInit) (); typedef void (*RetroReset) (); typedef void (*RetroRun) (); -typedef void (*RetroSetControllerPortDevice) (guint port, RetroDeviceType device); +typedef void (*RetroSetControllerPortDevice) (guint port, RetroControllerType controller_type); typedef void (*RetroUnloadGame) (); #define RETRO_TYPE_MODULE (retro_module_get_type()) diff -Nru retro-gtk-0.12.1/retro-gtk/retro-module-iterator.c retro-gtk-0.14.0/retro-gtk/retro-module-iterator.c --- retro-gtk-0.12.1/retro-gtk/retro-module-iterator.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-module-iterator.c 2018-03-10 13:02:01.000000000 +0000 @@ -1,858 +1,351 @@ -/* retro-module-iterator.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from retro-module-iterator.vala, do not modify */ +// This file is part of retro-gtk. License: GPL-3.0+. -/* This file is part of retro-gtk. License: GPL-3.0+.*/ +#include "retro-module-iterator.h" -#include -#include -#include -#include -#include -#include - - -#define RETRO_TYPE_MODULE_ITERATOR (retro_module_iterator_get_type ()) -#define RETRO_MODULE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_MODULE_ITERATOR, RetroModuleIterator)) -#define RETRO_MODULE_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_MODULE_ITERATOR, RetroModuleIteratorClass)) -#define RETRO_IS_MODULE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_MODULE_ITERATOR)) -#define RETRO_IS_MODULE_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_MODULE_ITERATOR)) -#define RETRO_MODULE_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_MODULE_ITERATOR, RetroModuleIteratorClass)) - -typedef struct _RetroModuleIterator RetroModuleIterator; -typedef struct _RetroModuleIteratorClass RetroModuleIteratorClass; -typedef struct _RetroModuleIteratorPrivate RetroModuleIteratorPrivate; - -#define RETRO_TYPE_CORE_DESCRIPTOR (retro_core_descriptor_get_type ()) -#define RETRO_CORE_DESCRIPTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CORE_DESCRIPTOR, RetroCoreDescriptor)) -#define RETRO_CORE_DESCRIPTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CORE_DESCRIPTOR, RetroCoreDescriptorClass)) -#define RETRO_IS_CORE_DESCRIPTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CORE_DESCRIPTOR)) -#define RETRO_IS_CORE_DESCRIPTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CORE_DESCRIPTOR)) -#define RETRO_CORE_DESCRIPTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CORE_DESCRIPTOR, RetroCoreDescriptorClass)) - -typedef struct _RetroCoreDescriptor RetroCoreDescriptor; -typedef struct _RetroCoreDescriptorClass RetroCoreDescriptorClass; -enum { - RETRO_MODULE_ITERATOR_DUMMY_PROPERTY, - RETRO_MODULE_ITERATOR_LAST_PROPERTY -}; -static GParamSpec* retro_module_iterator_properties[RETRO_MODULE_ITERATOR_LAST_PROPERTY]; -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) -#define _retro_module_iterator_unref0(var) ((var == NULL) ? NULL : (var = (retro_module_iterator_unref (var), NULL))) -#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL))) -#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) -#define _g_free0(var) (var = (g_free (var), NULL)) -typedef struct _RetroParamSpecModuleIterator RetroParamSpecModuleIterator; - -struct _RetroModuleIterator { - GTypeInstance parent_instance; - volatile int ref_count; - RetroModuleIteratorPrivate * priv; +struct _RetroModuleIterator +{ + GObject parent_instance; + gchar **directories; + gboolean recursive; + gint current_directory; + GFileEnumerator *file_enumerator; + RetroCoreDescriptor *core_descriptor; + RetroModuleIterator *sub_directory; + GHashTable *visited; }; -struct _RetroModuleIteratorClass { - GTypeClass parent_class; - void (*finalize) (RetroModuleIterator *self); -}; +G_DEFINE_TYPE (RetroModuleIterator, retro_module_iterator, G_TYPE_OBJECT) -struct _RetroModuleIteratorPrivate { - gchar** directories; - gint directories_length1; - gint _directories_size_; - gboolean recursive; - gint current_directory; - GFileEnumerator* file_enumerator; - RetroCoreDescriptor* core_descriptor; - RetroModuleIterator* sub_directory; - GHashTable* visited; -}; - -struct _RetroParamSpecModuleIterator { - GParamSpec parent_instance; -}; +/* Private */ +static void +retro_module_iterator_finalize (GObject *object) +{ + RetroModuleIterator *self = RETRO_MODULE_ITERATOR (object); + + g_strfreev (self->directories); + g_clear_object (&self->file_enumerator); + g_clear_object (&self->core_descriptor); + g_clear_object (&self->sub_directory); + g_hash_table_unref (self->visited); + + G_OBJECT_CLASS (retro_module_iterator_parent_class)->finalize (object); +} + +static void +retro_module_iterator_class_init (RetroModuleIteratorClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = retro_module_iterator_finalize; +} + +static void +retro_module_iterator_init (RetroModuleIterator *self) +{ +} + +static RetroModuleIterator * +retro_module_iterator_new_for_subdirectory (const gchar *lookup_path, + GHashTable *visited_paths) +{ + RetroModuleIterator *self; + + g_return_val_if_fail (lookup_path != NULL, NULL); + g_return_val_if_fail (visited_paths != NULL, NULL); + + self = g_object_new (RETRO_TYPE_MODULE_ITERATOR, NULL); + self->directories = g_new0 (gchar *, 2); + self->directories[0] = g_strdup (lookup_path); + self->recursive = TRUE; + self->visited = g_hash_table_ref (visited_paths); + + return self; +} + +static gboolean +retro_module_iterator_was_current_directory_visited (RetroModuleIterator *self) +{ + GFile *current_directory_file; + gchar *current_directory_path; + gboolean result; + + g_return_val_if_fail (RETRO_IS_MODULE_ITERATOR (self), FALSE); + + current_directory_file = g_file_new_for_path (self->directories[self->current_directory]); + current_directory_path = g_file_get_path (current_directory_file); + g_object_unref (current_directory_file); + result = g_hash_table_contains (self->visited, current_directory_path); + g_free (current_directory_path); + + return result; +} + +static void +retro_module_iterator_set_current_directory_as_visited (RetroModuleIterator *self) +{ + GFile *current_directory_file; + gchar *current_directory_path; + + g_return_if_fail (RETRO_IS_MODULE_ITERATOR (self)); + + current_directory_file = g_file_new_for_path (self->directories[self->current_directory]); + current_directory_path = g_file_get_path (current_directory_file); + g_object_unref (current_directory_file); + g_hash_table_add (self->visited, current_directory_path); +} + +static gboolean +retro_module_iterator_next_in_sub_directory (RetroModuleIterator *self) +{ + g_return_val_if_fail (RETRO_IS_MODULE_ITERATOR (self), FALSE); + + if (retro_module_iterator_next (self->sub_directory)) { + if (self->core_descriptor != NULL) + g_object_unref (self->core_descriptor); + + self->core_descriptor = retro_module_iterator_get (self->sub_directory); + + return TRUE; + } + + if (self->sub_directory != NULL) { + g_object_unref (self->sub_directory); + self->sub_directory = NULL; + } + + return FALSE; +} + +static gboolean +retro_module_iterator_iterate_next_in_current_path (RetroModuleIterator *self, + GFile *directory, + GFileInfo *info, + GError **error) +{ + const gchar *sub_directory_basename; + GFile *sub_directory_file; + gchar *sub_directory_path; + const gchar *core_descriptor_basename; + GFile *core_descriptor_file; + gchar *core_descriptor_path; + RetroCoreDescriptor *core_descriptor; + GError *tmp_error = NULL; + + g_return_val_if_fail (RETRO_IS_MODULE_ITERATOR (self), FALSE); + g_return_val_if_fail (G_IS_FILE (directory), FALSE); + g_return_val_if_fail (G_IS_FILE_INFO (info), FALSE); + + if (self->recursive && + g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY && + self->sub_directory == NULL) { + sub_directory_basename = g_file_info_get_name (info); + sub_directory_file = g_file_get_child (directory, sub_directory_basename); + sub_directory_path = g_file_get_path (sub_directory_file); + g_object_unref (sub_directory_file); + + if (g_hash_table_contains (self->visited, sub_directory_path)) { + g_free (sub_directory_path); + + return FALSE; + } + + self->sub_directory = retro_module_iterator_new_for_subdirectory (sub_directory_path, self->visited); + g_free (sub_directory_path); + + return retro_module_iterator_next_in_sub_directory (self); + } + + core_descriptor_basename = g_file_info_get_name (info); + if (!g_str_has_suffix (core_descriptor_basename, ".libretro")) + return FALSE; + + core_descriptor_file = g_file_get_child (directory, core_descriptor_basename); + core_descriptor_path = g_file_get_path (core_descriptor_file); + g_object_unref (core_descriptor_file); + core_descriptor = retro_core_descriptor_new (core_descriptor_path, &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_debug ("%s", tmp_error->message); + + g_error_free (tmp_error); + g_free (core_descriptor_path); + + return FALSE; + } + + g_free (core_descriptor_path); + g_clear_object (&self->core_descriptor); + self->core_descriptor = core_descriptor; + + return TRUE; +} + +static gboolean +retro_module_iterator_next_in_current_path (RetroModuleIterator *self, + GError **error) +{ + GFile *directory = NULL; + GFileInfo *info = NULL; + gboolean found = FALSE; + + GError *tmp_error = NULL; + + g_return_val_if_fail (RETRO_IS_MODULE_ITERATOR (self), FALSE); + + if (self->sub_directory != NULL && + retro_module_iterator_next_in_sub_directory (self)) + return TRUE; + + directory = g_file_new_for_path (self->directories[self->current_directory]); + + if (self->file_enumerator == NULL) { + self->file_enumerator = + g_file_enumerate_children (directory, + "", + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, + NULL, + &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + g_object_unref (directory); + g_clear_object (&self->file_enumerator); + + return FALSE; + } + } + + if (self->file_enumerator == NULL) { + g_object_unref (directory); + + return FALSE; + } + + while (TRUE) { + if (info != NULL) + g_object_unref (info); + + info = g_file_enumerator_next_file (self->file_enumerator, NULL, &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + g_clear_object (&info); + g_object_unref (directory); + + return FALSE; + } + + if (info == NULL) + break; + + found = retro_module_iterator_iterate_next_in_current_path (self, directory, info, &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_propagate_error (error, tmp_error); + g_object_unref (info); + g_object_unref (directory); + + return FALSE; + } + + if (found) { + g_object_unref (info); + g_object_unref (directory); + + return TRUE; + } + } + + g_clear_object (&self->file_enumerator); + g_object_unref (directory); + + return FALSE; +} + +/* Public */ + +/** + * retro_module_iterator_get: + * @self: a #RetroModuleIterator + * + * Gets the last #RetroCoreDescriptor fetched by retro_module_iterator_next(), + * or %NULL if the end was reached. + * + * Returns: (nullable) (transfer full): a #RetroCoreDescriptor, or %NULL + */ +RetroCoreDescriptor * +retro_module_iterator_get (RetroModuleIterator *self) +{ + g_return_val_if_fail (RETRO_IS_MODULE_ITERATOR (self), NULL); + + return self->core_descriptor != NULL ? + g_object_ref (self->core_descriptor) : + NULL; +} + +/** + * retro_module_iterator_next: + * @self: a #RetroModuleIterator + * + * Fetch the next #RetroModuleIterator. + * + * Returns: %FALSE if it reached the end, %TRUE otherwise + */ +gboolean +retro_module_iterator_next (RetroModuleIterator *self) +{ + gboolean next_in_current_path; + GError *tmp_error = NULL; + + g_return_val_if_fail (RETRO_IS_MODULE_ITERATOR (self), FALSE); + + while (self->directories[self->current_directory] != NULL) { + retro_module_iterator_set_current_directory_as_visited (self); + + next_in_current_path = retro_module_iterator_next_in_current_path (self, &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_debug ("%s", tmp_error->message); + g_clear_error (&tmp_error); + next_in_current_path = FALSE; + } + + if (next_in_current_path) + return TRUE; + + while (self->directories[self->current_directory] != NULL && + retro_module_iterator_was_current_directory_visited (self)) + self->current_directory++; + } + + g_clear_object (&self->file_enumerator); + g_clear_object (&self->core_descriptor); + if (self->sub_directory != NULL) { + g_object_unref (self->sub_directory); + self->sub_directory = NULL; + } + + return FALSE; +} + +/** + * retro_module_iterator_new: + * @lookup_paths: (array zero-terminated=1): paths where to look for Libretro + * cores + * @recursive: whether to run the query in sub-directories + * + * Creates a new #RetroModuleIterator. + * + * Returns: (transfer full): a new #RetroModuleIterator + */ +RetroModuleIterator * +retro_module_iterator_new (const gchar * const *lookup_paths, + gboolean recursive) +{ + RetroModuleIterator *self; + + g_return_val_if_fail (lookup_paths != NULL, NULL); + + self = g_object_new (RETRO_TYPE_MODULE_ITERATOR, NULL); + self->directories = g_strdupv ((gchar **) lookup_paths); + self->recursive = recursive; + self->visited = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_free); -static gpointer retro_module_iterator_parent_class = NULL; - -gpointer retro_module_iterator_ref (gpointer instance); -void retro_module_iterator_unref (gpointer instance); -GParamSpec* retro_param_spec_module_iterator (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); -void retro_value_set_module_iterator (GValue* value, gpointer v_object); -void retro_value_take_module_iterator (GValue* value, gpointer v_object); -gpointer retro_value_get_module_iterator (const GValue* value); -GType retro_module_iterator_get_type (void) G_GNUC_CONST; -GType retro_core_descriptor_get_type (void) G_GNUC_CONST; -#define RETRO_MODULE_ITERATOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), RETRO_TYPE_MODULE_ITERATOR, RetroModuleIteratorPrivate)) -RetroModuleIterator* retro_module_iterator_new (gchar** lookup_paths, int lookup_paths_length1, gboolean recursive); -RetroModuleIterator* retro_module_iterator_construct (GType object_type, gchar** lookup_paths, int lookup_paths_length1, gboolean recursive); -static gchar** _vala_array_dup1 (gchar** self, int length); -static void _g_free0_ (gpointer var); -static RetroModuleIterator* retro_module_iterator_new_for_subdirectory (const gchar* lookup_path, GHashTable* visited_paths); -static RetroModuleIterator* retro_module_iterator_construct_for_subdirectory (GType object_type, const gchar* lookup_path, GHashTable* visited_paths); -RetroCoreDescriptor* retro_module_iterator_get (RetroModuleIterator* self); -gboolean retro_module_iterator_next (RetroModuleIterator* self); -static void retro_module_iterator_set_current_directory_as_visited (RetroModuleIterator* self); -static gboolean retro_module_iterator_next_in_current_path (RetroModuleIterator* self, GError** error); -static gboolean retro_module_iterator_was_current_directory_visited (RetroModuleIterator* self); -static gboolean retro_module_iterator_next_in_sub_directory (RetroModuleIterator* self, GError** error); -RetroCoreDescriptor* retro_core_descriptor_new (const gchar* filename, GError** error); -RetroCoreDescriptor* retro_core_descriptor_construct (GType object_type, const gchar* filename, GError** error); -static void retro_module_iterator_finalize (RetroModuleIterator * obj); -static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); -static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); - - -static gchar** _vala_array_dup1 (gchar** self, int length) { - gchar** result; - int i; - result = g_new0 (gchar*, length + 1); - for (i = 0; i < length; i++) { - gchar* _tmp0_; - _tmp0_ = g_strdup (self[i]); - result[i] = _tmp0_; - } - return result; -} - - -static void _g_free0_ (gpointer var) { - var = (g_free (var), NULL); -} - - -RetroModuleIterator* retro_module_iterator_construct (GType object_type, gchar** lookup_paths, int lookup_paths_length1, gboolean recursive) { - RetroModuleIterator* self = NULL; - gchar** _tmp0_; - gint _tmp0__length1; - gchar** _tmp1_; - gint _tmp1__length1; - gboolean _tmp2_; - GHashFunc _tmp3_; - GEqualFunc _tmp4_; - GHashTable* _tmp5_; - self = (RetroModuleIterator*) g_type_create_instance (object_type); - _tmp0_ = lookup_paths; - _tmp0__length1 = lookup_paths_length1; - _tmp1_ = (_tmp0_ != NULL) ? _vala_array_dup1 (_tmp0_, _tmp0__length1) : ((gpointer) _tmp0_); - _tmp1__length1 = _tmp0__length1; - self->priv->directories = (_vala_array_free (self->priv->directories, self->priv->directories_length1, (GDestroyNotify) g_free), NULL); - self->priv->directories = _tmp1_; - self->priv->directories_length1 = _tmp1__length1; - self->priv->_directories_size_ = self->priv->directories_length1; - _tmp2_ = recursive; - self->priv->recursive = _tmp2_; - _tmp3_ = g_str_hash; - _tmp4_ = g_str_equal; - _tmp5_ = g_hash_table_new_full (_tmp3_, _tmp4_, NULL, _g_free0_); - _g_hash_table_unref0 (self->priv->visited); - self->priv->visited = _tmp5_; - return self; -} - - -RetroModuleIterator* retro_module_iterator_new (gchar** lookup_paths, int lookup_paths_length1, gboolean recursive) { - return retro_module_iterator_construct (RETRO_TYPE_MODULE_ITERATOR, lookup_paths, lookup_paths_length1, recursive); -} - - -static gpointer _g_hash_table_ref0 (gpointer self) { - return self ? g_hash_table_ref (self) : NULL; -} - - -static RetroModuleIterator* retro_module_iterator_construct_for_subdirectory (GType object_type, const gchar* lookup_path, GHashTable* visited_paths) { - RetroModuleIterator* self = NULL; - const gchar* _tmp0_; - gchar* _tmp1_; - gchar** _tmp2_; - GHashTable* _tmp3_; - GHashTable* _tmp4_; - g_return_val_if_fail (lookup_path != NULL, NULL); - g_return_val_if_fail (visited_paths != NULL, NULL); - self = (RetroModuleIterator*) g_type_create_instance (object_type); - _tmp0_ = lookup_path; - _tmp1_ = g_strdup (_tmp0_); - _tmp2_ = g_new0 (gchar*, 1 + 1); - _tmp2_[0] = _tmp1_; - self->priv->directories = (_vala_array_free (self->priv->directories, self->priv->directories_length1, (GDestroyNotify) g_free), NULL); - self->priv->directories = _tmp2_; - self->priv->directories_length1 = 1; - self->priv->_directories_size_ = self->priv->directories_length1; - self->priv->recursive = TRUE; - _tmp3_ = visited_paths; - _tmp4_ = _g_hash_table_ref0 (_tmp3_); - _g_hash_table_unref0 (self->priv->visited); - self->priv->visited = _tmp4_; - return self; -} - - -static RetroModuleIterator* retro_module_iterator_new_for_subdirectory (const gchar* lookup_path, GHashTable* visited_paths) { - return retro_module_iterator_construct_for_subdirectory (RETRO_TYPE_MODULE_ITERATOR, lookup_path, visited_paths); -} - - -static gpointer _g_object_ref0 (gpointer self) { - return self ? g_object_ref (self) : NULL; -} - - -RetroCoreDescriptor* retro_module_iterator_get (RetroModuleIterator* self) { - RetroCoreDescriptor* result = NULL; - RetroCoreDescriptor* _tmp0_; - RetroCoreDescriptor* _tmp1_; - g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = self->priv->core_descriptor; - _tmp1_ = _g_object_ref0 (_tmp0_); - result = _tmp1_; - return result; -} - - -gboolean retro_module_iterator_next (RetroModuleIterator* self) { - gboolean result = FALSE; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, FALSE); - while (TRUE) { - gint _tmp0_; - gchar** _tmp1_; - gint _tmp1__length1; - _tmp0_ = self->priv->current_directory; - _tmp1_ = self->priv->directories; - _tmp1__length1 = self->priv->directories_length1; - if (!(_tmp0_ < _tmp1__length1)) { - break; - } - retro_module_iterator_set_current_directory_as_visited (self); - { - gboolean _tmp2_ = FALSE; - gboolean _tmp3_; - _tmp3_ = retro_module_iterator_next_in_current_path (self, &_inner_error_); - _tmp2_ = _tmp3_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - goto __catch0_g_error; - } - if (_tmp2_) { - result = TRUE; - return result; - } - } - goto __finally0; - __catch0_g_error: - { - GError* e = NULL; - GError* _tmp4_; - const gchar* _tmp5_; - e = _inner_error_; - _inner_error_ = NULL; - _tmp4_ = e; - _tmp5_ = _tmp4_->message; - g_debug ("retro-module-iterator.vala:37: %s", _tmp5_); - _g_error_free0 (e); - } - __finally0: - if (G_UNLIKELY (_inner_error_ != NULL)) { - gboolean _tmp6_ = FALSE; - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return _tmp6_; - } - while (TRUE) { - gboolean _tmp7_ = FALSE; - gint _tmp8_; - gchar** _tmp9_; - gint _tmp9__length1; - gint _tmp11_; - _tmp8_ = self->priv->current_directory; - _tmp9_ = self->priv->directories; - _tmp9__length1 = self->priv->directories_length1; - if (_tmp8_ < _tmp9__length1) { - gboolean _tmp10_; - _tmp10_ = retro_module_iterator_was_current_directory_visited (self); - _tmp7_ = _tmp10_; - } else { - _tmp7_ = FALSE; - } - if (!_tmp7_) { - break; - } - _tmp11_ = self->priv->current_directory; - self->priv->current_directory = _tmp11_ + 1; - } - } - _g_object_unref0 (self->priv->file_enumerator); - self->priv->file_enumerator = NULL; - _g_object_unref0 (self->priv->core_descriptor); - self->priv->core_descriptor = NULL; - _retro_module_iterator_unref0 (self->priv->sub_directory); - self->priv->sub_directory = NULL; - result = FALSE; - return result; -} - - -static gboolean retro_module_iterator_next_in_current_path (RetroModuleIterator* self, GError** error) { - gboolean result = FALSE; - gboolean _tmp0_ = FALSE; - RetroModuleIterator* _tmp1_; - GFile* directory = NULL; - gchar** _tmp5_; - gint _tmp5__length1; - gint _tmp6_; - const gchar* _tmp7_; - GFile* _tmp8_; - GFileEnumerator* _tmp9_; - GFileEnumerator* _tmp15_; - GError * _inner_error_ = NULL; - g_return_val_if_fail (self != NULL, FALSE); - _tmp1_ = self->priv->sub_directory; - if (_tmp1_ != NULL) { - gboolean _tmp2_ = FALSE; - gboolean _tmp3_; - _tmp3_ = retro_module_iterator_next_in_sub_directory (self, &_inner_error_); - _tmp2_ = _tmp3_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - gboolean _tmp4_ = FALSE; - g_propagate_error (error, _inner_error_); - return _tmp4_; - } - _tmp0_ = _tmp2_; - } else { - _tmp0_ = FALSE; - } - if (_tmp0_) { - result = TRUE; - return result; - } - _tmp5_ = self->priv->directories; - _tmp5__length1 = self->priv->directories_length1; - _tmp6_ = self->priv->current_directory; - _tmp7_ = _tmp5_[_tmp6_]; - _tmp8_ = g_file_new_for_path (_tmp7_); - directory = _tmp8_; - _tmp9_ = self->priv->file_enumerator; - if (_tmp9_ == NULL) { - GFileEnumerator* _tmp10_ = NULL; - GFile* _tmp11_; - GFileEnumerator* _tmp12_; - GFileEnumerator* _tmp14_; - _tmp11_ = directory; - _tmp12_ = g_file_enumerate_children (_tmp11_, "", G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL, &_inner_error_); - _tmp10_ = _tmp12_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - gboolean _tmp13_ = FALSE; - g_propagate_error (error, _inner_error_); - _g_object_unref0 (directory); - return _tmp13_; - } - _tmp14_ = _tmp10_; - _tmp10_ = NULL; - _g_object_unref0 (self->priv->file_enumerator); - self->priv->file_enumerator = _tmp14_; - _g_object_unref0 (_tmp10_); - } - _tmp15_ = self->priv->file_enumerator; - if (_tmp15_ == NULL) { - result = FALSE; - _g_object_unref0 (directory); - return result; - } - { - GFileInfo* info = NULL; - GFileEnumerator* _tmp16_; - GFileInfo* _tmp17_; - _tmp16_ = self->priv->file_enumerator; - _tmp17_ = g_file_enumerator_next_file (_tmp16_, NULL, &_inner_error_); - info = _tmp17_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - gboolean _tmp18_ = FALSE; - g_propagate_error (error, _inner_error_); - _g_object_unref0 (directory); - return _tmp18_; - } - { - gboolean _tmp19_ = FALSE; - _tmp19_ = TRUE; - while (TRUE) { - GFileInfo* _tmp25_; - gboolean _tmp26_ = FALSE; - gboolean _tmp27_ = FALSE; - gboolean _tmp28_; - gchar* core_descriptor_basename = NULL; - GFileInfo* _tmp49_; - const gchar* _tmp50_; - gchar* _tmp51_; - const gchar* _tmp52_; - gboolean _tmp53_; - GFile* core_descriptor_file = NULL; - GFile* _tmp54_; - const gchar* _tmp55_; - GFile* _tmp56_; - gchar* core_descriptor_path = NULL; - GFile* _tmp57_; - gchar* _tmp58_; - if (!_tmp19_) { - GFileInfo* _tmp20_ = NULL; - GFileEnumerator* _tmp21_; - GFileInfo* _tmp22_; - GFileInfo* _tmp24_; - _tmp21_ = self->priv->file_enumerator; - _tmp22_ = g_file_enumerator_next_file (_tmp21_, NULL, &_inner_error_); - _tmp20_ = _tmp22_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - gboolean _tmp23_ = FALSE; - g_propagate_error (error, _inner_error_); - _g_object_unref0 (info); - _g_object_unref0 (directory); - return _tmp23_; - } - _tmp24_ = _tmp20_; - _tmp20_ = NULL; - _g_object_unref0 (info); - info = _tmp24_; - _g_object_unref0 (_tmp20_); - } - _tmp19_ = FALSE; - _tmp25_ = info; - if (!(_tmp25_ != NULL)) { - break; - } - _tmp28_ = self->priv->recursive; - if (_tmp28_) { - GFileInfo* _tmp29_; - GFileType _tmp30_; - _tmp29_ = info; - _tmp30_ = g_file_info_get_file_type (_tmp29_); - _tmp27_ = _tmp30_ == G_FILE_TYPE_DIRECTORY; - } else { - _tmp27_ = FALSE; - } - if (_tmp27_) { - RetroModuleIterator* _tmp31_; - _tmp31_ = self->priv->sub_directory; - _tmp26_ = _tmp31_ == NULL; - } else { - _tmp26_ = FALSE; - } - if (_tmp26_) { - gchar* sub_directory_basename = NULL; - GFileInfo* _tmp32_; - const gchar* _tmp33_; - gchar* _tmp34_; - GFile* sub_directory_file = NULL; - GFile* _tmp35_; - const gchar* _tmp36_; - GFile* _tmp37_; - gchar* sub_directory_path = NULL; - GFile* _tmp38_; - gchar* _tmp39_; - GHashTable* _tmp40_; - const gchar* _tmp41_; - gboolean _tmp42_; - const gchar* _tmp43_; - GHashTable* _tmp44_; - RetroModuleIterator* _tmp45_; - gboolean _tmp46_ = FALSE; - gboolean _tmp47_; - _tmp32_ = info; - _tmp33_ = g_file_info_get_name (_tmp32_); - _tmp34_ = g_strdup (_tmp33_); - sub_directory_basename = _tmp34_; - _tmp35_ = directory; - _tmp36_ = sub_directory_basename; - _tmp37_ = g_file_get_child (_tmp35_, _tmp36_); - sub_directory_file = _tmp37_; - _tmp38_ = sub_directory_file; - _tmp39_ = g_file_get_path (_tmp38_); - sub_directory_path = _tmp39_; - _tmp40_ = self->priv->visited; - _tmp41_ = sub_directory_path; - _tmp42_ = g_hash_table_contains (_tmp40_, _tmp41_); - if (_tmp42_) { - _g_free0 (sub_directory_path); - _g_object_unref0 (sub_directory_file); - _g_free0 (sub_directory_basename); - continue; - } - _tmp43_ = sub_directory_path; - _tmp44_ = self->priv->visited; - _tmp45_ = retro_module_iterator_new_for_subdirectory (_tmp43_, _tmp44_); - _retro_module_iterator_unref0 (self->priv->sub_directory); - self->priv->sub_directory = _tmp45_; - _tmp47_ = retro_module_iterator_next_in_sub_directory (self, &_inner_error_); - _tmp46_ = _tmp47_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - gboolean _tmp48_ = FALSE; - g_propagate_error (error, _inner_error_); - _g_free0 (sub_directory_path); - _g_object_unref0 (sub_directory_file); - _g_free0 (sub_directory_basename); - _g_object_unref0 (info); - _g_object_unref0 (directory); - return _tmp48_; - } - if (_tmp46_) { - result = TRUE; - _g_free0 (sub_directory_path); - _g_object_unref0 (sub_directory_file); - _g_free0 (sub_directory_basename); - _g_object_unref0 (info); - _g_object_unref0 (directory); - return result; - } else { - _g_free0 (sub_directory_path); - _g_object_unref0 (sub_directory_file); - _g_free0 (sub_directory_basename); - continue; - } - _g_free0 (sub_directory_path); - _g_object_unref0 (sub_directory_file); - _g_free0 (sub_directory_basename); - } - _tmp49_ = info; - _tmp50_ = g_file_info_get_name (_tmp49_); - _tmp51_ = g_strdup (_tmp50_); - core_descriptor_basename = _tmp51_; - _tmp52_ = core_descriptor_basename; - _tmp53_ = g_str_has_suffix (_tmp52_, ".libretro"); - if (!_tmp53_) { - _g_free0 (core_descriptor_basename); - continue; - } - _tmp54_ = directory; - _tmp55_ = core_descriptor_basename; - _tmp56_ = g_file_get_child (_tmp54_, _tmp55_); - core_descriptor_file = _tmp56_; - _tmp57_ = core_descriptor_file; - _tmp58_ = g_file_get_path (_tmp57_); - core_descriptor_path = _tmp58_; - { - RetroCoreDescriptor* _tmp59_ = NULL; - const gchar* _tmp60_; - RetroCoreDescriptor* _tmp61_; - RetroCoreDescriptor* _tmp62_; - _tmp60_ = core_descriptor_path; - _tmp61_ = retro_core_descriptor_new (_tmp60_, &_inner_error_); - _tmp59_ = _tmp61_; - if (G_UNLIKELY (_inner_error_ != NULL)) { - goto __catch1_g_error; - } - _tmp62_ = _tmp59_; - _tmp59_ = NULL; - _g_object_unref0 (self->priv->core_descriptor); - self->priv->core_descriptor = _tmp62_; - result = TRUE; - _g_object_unref0 (_tmp59_); - _g_free0 (core_descriptor_path); - _g_object_unref0 (core_descriptor_file); - _g_free0 (core_descriptor_basename); - _g_object_unref0 (info); - _g_object_unref0 (directory); - return result; - } - goto __finally1; - __catch1_g_error: - { - GError* e = NULL; - GError* _tmp63_; - const gchar* _tmp64_; - e = _inner_error_; - _inner_error_ = NULL; - _tmp63_ = e; - _tmp64_ = _tmp63_->message; - g_debug ("retro-module-iterator.vala:91: %s", _tmp64_); - _g_error_free0 (e); - } - __finally1: - if (G_UNLIKELY (_inner_error_ != NULL)) { - gboolean _tmp65_ = FALSE; - g_propagate_error (error, _inner_error_); - _g_free0 (core_descriptor_path); - _g_object_unref0 (core_descriptor_file); - _g_free0 (core_descriptor_basename); - _g_object_unref0 (info); - _g_object_unref0 (directory); - return _tmp65_; - } - _g_free0 (core_descriptor_path); - _g_object_unref0 (core_descriptor_file); - _g_free0 (core_descriptor_basename); - } - } - _g_object_unref0 (info); - } - _g_object_unref0 (self->priv->file_enumerator); - self->priv->file_enumerator = NULL; - result = FALSE; - _g_object_unref0 (directory); - return result; -} - - -static gboolean retro_module_iterator_next_in_sub_directory (RetroModuleIterator* self, GError** error) { - gboolean result = FALSE; - RetroModuleIterator* _tmp0_; - gboolean _tmp1_; - g_return_val_if_fail (self != NULL, FALSE); - _tmp0_ = self->priv->sub_directory; - _tmp1_ = retro_module_iterator_next (_tmp0_); - if (_tmp1_) { - RetroModuleIterator* _tmp2_; - RetroCoreDescriptor* _tmp3_; - _tmp2_ = self->priv->sub_directory; - _tmp3_ = retro_module_iterator_get (_tmp2_); - _g_object_unref0 (self->priv->core_descriptor); - self->priv->core_descriptor = _tmp3_; - result = TRUE; - return result; - } - _retro_module_iterator_unref0 (self->priv->sub_directory); - self->priv->sub_directory = NULL; - result = FALSE; - return result; -} - - -static void retro_module_iterator_set_current_directory_as_visited (RetroModuleIterator* self) { - GFile* current_directory_file = NULL; - gchar** _tmp0_; - gint _tmp0__length1; - gint _tmp1_; - const gchar* _tmp2_; - GFile* _tmp3_; - gchar* current_directory_path = NULL; - gchar* _tmp4_; - GHashTable* _tmp5_; - gchar* _tmp6_; - g_return_if_fail (self != NULL); - _tmp0_ = self->priv->directories; - _tmp0__length1 = self->priv->directories_length1; - _tmp1_ = self->priv->current_directory; - _tmp2_ = _tmp0_[_tmp1_]; - _tmp3_ = g_file_new_for_path (_tmp2_); - current_directory_file = _tmp3_; - _tmp4_ = g_file_get_path (current_directory_file); - current_directory_path = _tmp4_; - _tmp5_ = self->priv->visited; - _tmp6_ = g_strdup (current_directory_path); - g_hash_table_add (_tmp5_, _tmp6_); - _g_free0 (current_directory_path); - _g_object_unref0 (current_directory_file); -} - - -static gboolean retro_module_iterator_was_current_directory_visited (RetroModuleIterator* self) { - gboolean result = FALSE; - GFile* current_directory_file = NULL; - gchar** _tmp0_; - gint _tmp0__length1; - gint _tmp1_; - const gchar* _tmp2_; - GFile* _tmp3_; - gchar* current_directory_path = NULL; - gchar* _tmp4_; - GHashTable* _tmp5_; - gboolean _tmp6_; - g_return_val_if_fail (self != NULL, FALSE); - _tmp0_ = self->priv->directories; - _tmp0__length1 = self->priv->directories_length1; - _tmp1_ = self->priv->current_directory; - _tmp2_ = _tmp0_[_tmp1_]; - _tmp3_ = g_file_new_for_path (_tmp2_); - current_directory_file = _tmp3_; - _tmp4_ = g_file_get_path (current_directory_file); - current_directory_path = _tmp4_; - _tmp5_ = self->priv->visited; - _tmp6_ = g_hash_table_contains (_tmp5_, current_directory_path); - result = _tmp6_; - _g_free0 (current_directory_path); - _g_object_unref0 (current_directory_file); - return result; -} - - -static void retro_value_module_iterator_init (GValue* value) { - value->data[0].v_pointer = NULL; -} - - -static void retro_value_module_iterator_free_value (GValue* value) { - if (value->data[0].v_pointer) { - retro_module_iterator_unref (value->data[0].v_pointer); - } -} - - -static void retro_value_module_iterator_copy_value (const GValue* src_value, GValue* dest_value) { - if (src_value->data[0].v_pointer) { - dest_value->data[0].v_pointer = retro_module_iterator_ref (src_value->data[0].v_pointer); - } else { - dest_value->data[0].v_pointer = NULL; - } -} - - -static gpointer retro_value_module_iterator_peek_pointer (const GValue* value) { - return value->data[0].v_pointer; -} - - -static gchar* retro_value_module_iterator_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { - if (collect_values[0].v_pointer) { - RetroModuleIterator * object; - object = collect_values[0].v_pointer; - if (object->parent_instance.g_class == NULL) { - return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); - } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { - return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); - } - value->data[0].v_pointer = retro_module_iterator_ref (object); - } else { - value->data[0].v_pointer = NULL; - } - return NULL; -} - - -static gchar* retro_value_module_iterator_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { - RetroModuleIterator ** object_p; - object_p = collect_values[0].v_pointer; - if (!object_p) { - return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); - } - if (!value->data[0].v_pointer) { - *object_p = NULL; - } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) { - *object_p = value->data[0].v_pointer; - } else { - *object_p = retro_module_iterator_ref (value->data[0].v_pointer); - } - return NULL; -} - - -GParamSpec* retro_param_spec_module_iterator (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { - RetroParamSpecModuleIterator* spec; - g_return_val_if_fail (g_type_is_a (object_type, RETRO_TYPE_MODULE_ITERATOR), NULL); - spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); - G_PARAM_SPEC (spec)->value_type = object_type; - return G_PARAM_SPEC (spec); -} - - -gpointer retro_value_get_module_iterator (const GValue* value) { - g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, RETRO_TYPE_MODULE_ITERATOR), NULL); - return value->data[0].v_pointer; -} - - -void retro_value_set_module_iterator (GValue* value, gpointer v_object) { - RetroModuleIterator * old; - g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, RETRO_TYPE_MODULE_ITERATOR)); - old = value->data[0].v_pointer; - if (v_object) { - g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, RETRO_TYPE_MODULE_ITERATOR)); - g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); - value->data[0].v_pointer = v_object; - retro_module_iterator_ref (value->data[0].v_pointer); - } else { - value->data[0].v_pointer = NULL; - } - if (old) { - retro_module_iterator_unref (old); - } -} - - -void retro_value_take_module_iterator (GValue* value, gpointer v_object) { - RetroModuleIterator * old; - g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, RETRO_TYPE_MODULE_ITERATOR)); - old = value->data[0].v_pointer; - if (v_object) { - g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, RETRO_TYPE_MODULE_ITERATOR)); - g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); - value->data[0].v_pointer = v_object; - } else { - value->data[0].v_pointer = NULL; - } - if (old) { - retro_module_iterator_unref (old); - } -} - - -static void retro_module_iterator_class_init (RetroModuleIteratorClass * klass) { - retro_module_iterator_parent_class = g_type_class_peek_parent (klass); - ((RetroModuleIteratorClass *) klass)->finalize = retro_module_iterator_finalize; - g_type_class_add_private (klass, sizeof (RetroModuleIteratorPrivate)); -} - - -static void retro_module_iterator_instance_init (RetroModuleIterator * self) { - self->priv = RETRO_MODULE_ITERATOR_GET_PRIVATE (self); - self->ref_count = 1; -} - - -static void retro_module_iterator_finalize (RetroModuleIterator * obj) { - RetroModuleIterator * self; - self = G_TYPE_CHECK_INSTANCE_CAST (obj, RETRO_TYPE_MODULE_ITERATOR, RetroModuleIterator); - g_signal_handlers_destroy (self); - self->priv->directories = (_vala_array_free (self->priv->directories, self->priv->directories_length1, (GDestroyNotify) g_free), NULL); - _g_object_unref0 (self->priv->file_enumerator); - _g_object_unref0 (self->priv->core_descriptor); - _retro_module_iterator_unref0 (self->priv->sub_directory); - _g_hash_table_unref0 (self->priv->visited); -} - - -GType retro_module_iterator_get_type (void) { - static volatile gsize retro_module_iterator_type_id__volatile = 0; - if (g_once_init_enter (&retro_module_iterator_type_id__volatile)) { - static const GTypeValueTable g_define_type_value_table = { retro_value_module_iterator_init, retro_value_module_iterator_free_value, retro_value_module_iterator_copy_value, retro_value_module_iterator_peek_pointer, "p", retro_value_module_iterator_collect_value, "p", retro_value_module_iterator_lcopy_value }; - static const GTypeInfo g_define_type_info = { sizeof (RetroModuleIteratorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) retro_module_iterator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RetroModuleIterator), 0, (GInstanceInitFunc) retro_module_iterator_instance_init, &g_define_type_value_table }; - static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; - GType retro_module_iterator_type_id; - retro_module_iterator_type_id = g_type_register_fundamental (g_type_fundamental_next (), "RetroModuleIterator", &g_define_type_info, &g_define_type_fundamental_info, 0); - g_once_init_leave (&retro_module_iterator_type_id__volatile, retro_module_iterator_type_id); - } - return retro_module_iterator_type_id__volatile; -} - - -gpointer retro_module_iterator_ref (gpointer instance) { - RetroModuleIterator * self; - self = instance; - g_atomic_int_inc (&self->ref_count); - return instance; -} - - -void retro_module_iterator_unref (gpointer instance) { - RetroModuleIterator * self; - self = instance; - if (g_atomic_int_dec_and_test (&self->ref_count)) { - RETRO_MODULE_ITERATOR_GET_CLASS (self)->finalize (self); - g_type_free_instance ((GTypeInstance *) self); - } -} - - -static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { - if ((array != NULL) && (destroy_func != NULL)) { - int i; - for (i = 0; i < array_length; i = i + 1) { - if (((gpointer*) array)[i] != NULL) { - destroy_func (((gpointer*) array)[i]); - } - } - } -} - - -static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { - _vala_array_destroy (array, array_length, destroy_func); - g_free (array); + return self; } - - - diff -Nru retro-gtk-0.12.1/retro-gtk/retro-module-iterator.h retro-gtk-0.14.0/retro-gtk/retro-module-iterator.h --- retro-gtk-0.12.1/retro-gtk/retro-module-iterator.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-module-iterator.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,27 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_MODULE_ITERATOR_H +#define RETRO_MODULE_ITERATOR_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include +#include "retro-core-descriptor.h" + +G_BEGIN_DECLS + +#define RETRO_TYPE_MODULE_ITERATOR (retro_module_iterator_get_type()) + +G_DECLARE_FINAL_TYPE (RetroModuleIterator, retro_module_iterator, RETRO, MODULE_ITERATOR, GObject) + +RetroModuleIterator *retro_module_iterator_new (const gchar * const *lookup_paths, + gboolean recursive); +RetroCoreDescriptor *retro_module_iterator_get (RetroModuleIterator *self); +gboolean retro_module_iterator_next (RetroModuleIterator *self); + +G_END_DECLS + +#endif /* RETRO_MODULE_ITERATOR_H */ + diff -Nru retro-gtk-0.12.1/retro-gtk/retro-module-iterator.vala retro-gtk-0.14.0/retro-gtk/retro-module-iterator.vala --- retro-gtk-0.12.1/retro-gtk/retro-module-iterator.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-module-iterator.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,125 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -public class Retro.ModuleIterator { - private string[] directories; - private bool recursive; - private int current_directory; - private FileEnumerator file_enumerator; - private CoreDescriptor? core_descriptor; - private ModuleIterator? sub_directory; - private GenericSet visited; - - internal ModuleIterator (string[] lookup_paths, bool recursive) { - directories = lookup_paths; - this.recursive = recursive; - visited = new GenericSet (str_hash, str_equal); - } - - private ModuleIterator.for_subdirectory (string lookup_path, GenericSet visited_paths) { - directories = { lookup_path }; - recursive = true; - visited = visited_paths; - } - - public new CoreDescriptor? get () { - return core_descriptor; - } - - public bool next () { - while (current_directory < directories.length) { - set_current_directory_as_visited (); - - try { - if (next_in_current_path ()) - return true; - } - catch (Error e) { - debug (e.message); - } - - while (current_directory < directories.length && was_current_directory_visited ()) - current_directory++; - } - - file_enumerator = null; - core_descriptor = null; - sub_directory = null; - - return false; - } - - private bool next_in_current_path () throws Error { - if (sub_directory != null && next_in_sub_directory ()) - return true; - - var directory = File.new_for_path (directories[current_directory]); - - if (file_enumerator == null) - file_enumerator = directory.enumerate_children ("", FileQueryInfoFlags.NOFOLLOW_SYMLINKS); - - if (file_enumerator == null) - return false; - - for (var info = file_enumerator.next_file () ; info != null ; info = file_enumerator.next_file ()) { - if (recursive && info.get_file_type () == FileType.DIRECTORY && sub_directory == null) { - var sub_directory_basename = info.get_name (); - var sub_directory_file = directory.get_child (sub_directory_basename); - var sub_directory_path = sub_directory_file.get_path (); - - if (visited.contains (sub_directory_path)) - continue; - - sub_directory = new ModuleIterator.for_subdirectory (sub_directory_path, visited); - if (next_in_sub_directory ()) - return true; - else - continue; - } - - var core_descriptor_basename = info.get_name (); - if (!core_descriptor_basename.has_suffix (".libretro")) - continue; - - var core_descriptor_file = directory.get_child (core_descriptor_basename); - var core_descriptor_path = core_descriptor_file.get_path (); - try { - core_descriptor = new CoreDescriptor (core_descriptor_path); - - return true; - } - catch (Error e) { - debug (e.message); - } - } - - file_enumerator = null; - - return false; - } - - private bool next_in_sub_directory () throws Error { - if (sub_directory.next ()) { - core_descriptor = sub_directory.get (); - - return true; - } - - sub_directory = null; - - return false; - } - - private void set_current_directory_as_visited () { - var current_directory_file = File.new_for_path (directories[current_directory]); - var current_directory_path = current_directory_file.get_path (); - visited.add (current_directory_path); - } - - private bool was_current_directory_visited () { - var current_directory_file = File.new_for_path (directories[current_directory]); - var current_directory_path = current_directory_file.get_path (); - - return visited.contains (current_directory_path); - } -} - diff -Nru retro-gtk-0.12.1/retro-gtk/retro-module-query.c retro-gtk-0.14.0/retro-gtk/retro-module-query.c --- retro-gtk-0.12.1/retro-gtk/retro-module-query.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-module-query.c 2018-03-10 13:02:01.000000000 +0000 @@ -1,400 +1,105 @@ -/* retro-module-query.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from retro-module-query.vala, do not modify */ +// This file is part of retro-gtk. License: GPL-3.0+. -/* This file is part of retro-gtk. License: GPL-3.0+.*/ +#include "retro-module-query.h" -#include -#include -#include -#include -#include -#include - - -#define RETRO_TYPE_MODULE_QUERY (retro_module_query_get_type ()) -#define RETRO_MODULE_QUERY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_MODULE_QUERY, RetroModuleQuery)) -#define RETRO_MODULE_QUERY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_MODULE_QUERY, RetroModuleQueryClass)) -#define RETRO_IS_MODULE_QUERY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_MODULE_QUERY)) -#define RETRO_IS_MODULE_QUERY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_MODULE_QUERY)) -#define RETRO_MODULE_QUERY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_MODULE_QUERY, RetroModuleQueryClass)) - -typedef struct _RetroModuleQuery RetroModuleQuery; -typedef struct _RetroModuleQueryClass RetroModuleQueryClass; -typedef struct _RetroModuleQueryPrivate RetroModuleQueryPrivate; -enum { - RETRO_MODULE_QUERY_DUMMY_PROPERTY, - RETRO_MODULE_QUERY_LAST_PROPERTY -}; -static GParamSpec* retro_module_query_properties[RETRO_MODULE_QUERY_LAST_PROPERTY]; - -#define RETRO_TYPE_MODULE_ITERATOR (retro_module_iterator_get_type ()) -#define RETRO_MODULE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_MODULE_ITERATOR, RetroModuleIterator)) -#define RETRO_MODULE_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_MODULE_ITERATOR, RetroModuleIteratorClass)) -#define RETRO_IS_MODULE_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_MODULE_ITERATOR)) -#define RETRO_IS_MODULE_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_MODULE_ITERATOR)) -#define RETRO_MODULE_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_MODULE_ITERATOR, RetroModuleIteratorClass)) - -typedef struct _RetroModuleIterator RetroModuleIterator; -typedef struct _RetroModuleIteratorClass RetroModuleIteratorClass; -#define _g_free0(var) (var = (g_free (var), NULL)) -typedef struct _RetroParamSpecModuleQuery RetroParamSpecModuleQuery; - -struct _RetroModuleQuery { - GTypeInstance parent_instance; - volatile int ref_count; - RetroModuleQueryPrivate * priv; -}; - -struct _RetroModuleQueryClass { - GTypeClass parent_class; - void (*finalize) (RetroModuleQuery *self); -}; +#include "../retro-gtk-config.h" -struct _RetroModuleQueryPrivate { - gboolean recursive; +struct _RetroModuleQuery +{ + GObject parent_instance; + gboolean recursive; }; -struct _RetroParamSpecModuleQuery { - GParamSpec parent_instance; -}; - - -static gpointer retro_module_query_parent_class = NULL; +G_DEFINE_TYPE (RetroModuleQuery, retro_module_query, G_TYPE_OBJECT) -gpointer retro_module_query_ref (gpointer instance); -void retro_module_query_unref (gpointer instance); -GParamSpec* retro_param_spec_module_query (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); -void retro_value_set_module_query (GValue* value, gpointer v_object); -void retro_value_take_module_query (GValue* value, gpointer v_object); -gpointer retro_value_get_module_query (const GValue* value); -GType retro_module_query_get_type (void) G_GNUC_CONST; -#define RETRO_MODULE_QUERY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), RETRO_TYPE_MODULE_QUERY, RetroModuleQueryPrivate)) #define RETRO_MODULE_QUERY_ENV_PLUGIN_PATH "LIBRETRO_PLUGIN_PATH" -RetroModuleQuery* retro_module_query_new (gboolean recursive); -RetroModuleQuery* retro_module_query_construct (GType object_type, gboolean recursive); -gpointer retro_module_iterator_ref (gpointer instance); -void retro_module_iterator_unref (gpointer instance); -GParamSpec* retro_param_spec_module_iterator (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); -void retro_value_set_module_iterator (GValue* value, gpointer v_object); -void retro_value_take_module_iterator (GValue* value, gpointer v_object); -gpointer retro_value_get_module_iterator (const GValue* value); -GType retro_module_iterator_get_type (void) G_GNUC_CONST; -RetroModuleIterator* retro_module_query_iterator (RetroModuleQuery* self); -static gchar** retro_module_query_get_plugin_lookup_paths (int* result_length1); -RetroModuleIterator* retro_module_iterator_new (gchar** lookup_paths, int lookup_paths_length1, gboolean recursive); -RetroModuleIterator* retro_module_iterator_construct (GType object_type, gchar** lookup_paths, int lookup_paths_length1, gboolean recursive); -static void retro_module_query_finalize (RetroModuleQuery * obj); -static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); -static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); -static gint _vala_array_length (gpointer array); - - -RetroModuleQuery* retro_module_query_construct (GType object_type, gboolean recursive) { - RetroModuleQuery* self = NULL; - gboolean _tmp0_; - self = (RetroModuleQuery*) g_type_create_instance (object_type); - _tmp0_ = recursive; - self->priv->recursive = _tmp0_; - return self; -} - - -RetroModuleQuery* retro_module_query_new (gboolean recursive) { - return retro_module_query_construct (RETRO_TYPE_MODULE_QUERY, recursive); -} - - -RetroModuleIterator* retro_module_query_iterator (RetroModuleQuery* self) { - RetroModuleIterator* result = NULL; - gchar** paths = NULL; - gint _tmp0_; - gchar** _tmp1_; - gint paths_length1; - gint _paths_size_; - gboolean _tmp2_; - RetroModuleIterator* _tmp3_; - g_return_val_if_fail (self != NULL, NULL); - _tmp1_ = retro_module_query_get_plugin_lookup_paths (&_tmp0_); - paths = _tmp1_; - paths_length1 = _tmp0_; - _paths_size_ = paths_length1; - _tmp2_ = self->priv->recursive; - _tmp3_ = retro_module_iterator_new (paths, paths_length1, _tmp2_); - result = _tmp3_; - paths = (_vala_array_free (paths, paths_length1, (GDestroyNotify) g_free), NULL); - return result; -} - - -static const gchar* string_to_string (const gchar* self) { - const gchar* result = NULL; - g_return_val_if_fail (self != NULL, NULL); - result = self; - return result; -} - - -static gchar** retro_module_query_get_plugin_lookup_paths (int* result_length1) { - gchar** result = NULL; - gchar** envp = NULL; - gchar** _tmp0_; - gchar** _tmp1_; - gint envp_length1; - gint _envp_size_; - gchar* env_plugin_path = NULL; - gchar** _tmp2_; - gint _tmp2__length1; - const gchar* _tmp3_; - gchar* _tmp4_; - const gchar* _tmp5_; - const gchar* _tmp9_; - const gchar* _tmp10_; - const gchar* _tmp11_; - gchar* _tmp12_; - gchar* _tmp13_; - gchar** _tmp14_; - gchar** _tmp15_; - gchar** _tmp16_; - gint _tmp16__length1; - gchar** _tmp17_; - gint _tmp17__length1; - _tmp1_ = _tmp0_ = g_get_environ (); - envp = _tmp1_; - envp_length1 = _vala_array_length (_tmp0_); - _envp_size_ = envp_length1; - _tmp2_ = envp; - _tmp2__length1 = envp_length1; - _tmp3_ = g_environ_getenv (_tmp2_, RETRO_MODULE_QUERY_ENV_PLUGIN_PATH); - _tmp4_ = g_strdup (_tmp3_); - env_plugin_path = _tmp4_; - _tmp5_ = env_plugin_path; - if (_tmp5_ == NULL) { - gchar** _tmp6_; - gchar** _tmp7_; - gchar** _tmp8_; - gint _tmp8__length1; - _tmp7_ = _tmp6_ = g_strsplit (RETRO_PLUGIN_PATH, ":", 0); - _tmp8_ = _tmp7_; - _tmp8__length1 = _vala_array_length (_tmp6_); - if (result_length1) { - *result_length1 = _tmp8__length1; - } - result = _tmp8_; - _g_free0 (env_plugin_path); - envp = (_vala_array_free (envp, envp_length1, (GDestroyNotify) g_free), NULL); - return result; - } - _tmp9_ = env_plugin_path; - _tmp10_ = string_to_string (_tmp9_); - _tmp11_ = string_to_string (RETRO_PLUGIN_PATH); - _tmp12_ = g_strconcat (_tmp10_, ":", _tmp11_, NULL); - _tmp13_ = _tmp12_; - _tmp15_ = _tmp14_ = g_strsplit (_tmp13_, ":", 0); - _tmp16_ = _tmp15_; - _tmp16__length1 = _vala_array_length (_tmp14_); - _g_free0 (_tmp13_); - _tmp17_ = _tmp16_; - _tmp17__length1 = _tmp16__length1; - if (result_length1) { - *result_length1 = _tmp17__length1; - } - result = _tmp17_; - _g_free0 (env_plugin_path); - envp = (_vala_array_free (envp, envp_length1, (GDestroyNotify) g_free), NULL); - return result; -} - - -static void retro_value_module_query_init (GValue* value) { - value->data[0].v_pointer = NULL; -} - - -static void retro_value_module_query_free_value (GValue* value) { - if (value->data[0].v_pointer) { - retro_module_query_unref (value->data[0].v_pointer); - } -} - - -static void retro_value_module_query_copy_value (const GValue* src_value, GValue* dest_value) { - if (src_value->data[0].v_pointer) { - dest_value->data[0].v_pointer = retro_module_query_ref (src_value->data[0].v_pointer); - } else { - dest_value->data[0].v_pointer = NULL; - } -} - - -static gpointer retro_value_module_query_peek_pointer (const GValue* value) { - return value->data[0].v_pointer; -} - - -static gchar* retro_value_module_query_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { - if (collect_values[0].v_pointer) { - RetroModuleQuery * object; - object = collect_values[0].v_pointer; - if (object->parent_instance.g_class == NULL) { - return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); - } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { - return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); - } - value->data[0].v_pointer = retro_module_query_ref (object); - } else { - value->data[0].v_pointer = NULL; - } - return NULL; -} - - -static gchar* retro_value_module_query_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { - RetroModuleQuery ** object_p; - object_p = collect_values[0].v_pointer; - if (!object_p) { - return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); - } - if (!value->data[0].v_pointer) { - *object_p = NULL; - } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) { - *object_p = value->data[0].v_pointer; - } else { - *object_p = retro_module_query_ref (value->data[0].v_pointer); - } - return NULL; -} - - -GParamSpec* retro_param_spec_module_query (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { - RetroParamSpecModuleQuery* spec; - g_return_val_if_fail (g_type_is_a (object_type, RETRO_TYPE_MODULE_QUERY), NULL); - spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); - G_PARAM_SPEC (spec)->value_type = object_type; - return G_PARAM_SPEC (spec); -} - - -gpointer retro_value_get_module_query (const GValue* value) { - g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, RETRO_TYPE_MODULE_QUERY), NULL); - return value->data[0].v_pointer; -} - - -void retro_value_set_module_query (GValue* value, gpointer v_object) { - RetroModuleQuery * old; - g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, RETRO_TYPE_MODULE_QUERY)); - old = value->data[0].v_pointer; - if (v_object) { - g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, RETRO_TYPE_MODULE_QUERY)); - g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); - value->data[0].v_pointer = v_object; - retro_module_query_ref (value->data[0].v_pointer); - } else { - value->data[0].v_pointer = NULL; - } - if (old) { - retro_module_query_unref (old); - } -} - - -void retro_value_take_module_query (GValue* value, gpointer v_object) { - RetroModuleQuery * old; - g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, RETRO_TYPE_MODULE_QUERY)); - old = value->data[0].v_pointer; - if (v_object) { - g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, RETRO_TYPE_MODULE_QUERY)); - g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); - value->data[0].v_pointer = v_object; - } else { - value->data[0].v_pointer = NULL; - } - if (old) { - retro_module_query_unref (old); - } -} - - -static void retro_module_query_class_init (RetroModuleQueryClass * klass) { - retro_module_query_parent_class = g_type_class_peek_parent (klass); - ((RetroModuleQueryClass *) klass)->finalize = retro_module_query_finalize; - g_type_class_add_private (klass, sizeof (RetroModuleQueryPrivate)); -} - - -static void retro_module_query_instance_init (RetroModuleQuery * self) { - self->priv = RETRO_MODULE_QUERY_GET_PRIVATE (self); - self->ref_count = 1; -} +/* Private */ -static void retro_module_query_finalize (RetroModuleQuery * obj) { - RetroModuleQuery * self; - self = G_TYPE_CHECK_INSTANCE_CAST (obj, RETRO_TYPE_MODULE_QUERY, RetroModuleQuery); - g_signal_handlers_destroy (self); -} - - -GType retro_module_query_get_type (void) { - static volatile gsize retro_module_query_type_id__volatile = 0; - if (g_once_init_enter (&retro_module_query_type_id__volatile)) { - static const GTypeValueTable g_define_type_value_table = { retro_value_module_query_init, retro_value_module_query_free_value, retro_value_module_query_copy_value, retro_value_module_query_peek_pointer, "p", retro_value_module_query_collect_value, "p", retro_value_module_query_lcopy_value }; - static const GTypeInfo g_define_type_info = { sizeof (RetroModuleQueryClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) retro_module_query_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RetroModuleQuery), 0, (GInstanceInitFunc) retro_module_query_instance_init, &g_define_type_value_table }; - static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; - GType retro_module_query_type_id; - retro_module_query_type_id = g_type_register_fundamental (g_type_fundamental_next (), "RetroModuleQuery", &g_define_type_info, &g_define_type_fundamental_info, 0); - g_once_init_leave (&retro_module_query_type_id__volatile, retro_module_query_type_id); - } - return retro_module_query_type_id__volatile; -} - - -gpointer retro_module_query_ref (gpointer instance) { - RetroModuleQuery * self; - self = instance; - g_atomic_int_inc (&self->ref_count); - return instance; -} - - -void retro_module_query_unref (gpointer instance) { - RetroModuleQuery * self; - self = instance; - if (g_atomic_int_dec_and_test (&self->ref_count)) { - RETRO_MODULE_QUERY_GET_CLASS (self)->finalize (self); - g_type_free_instance ((GTypeInstance *) self); - } -} +static void +retro_module_query_finalize (GObject *object) +{ + G_OBJECT_CLASS (retro_module_query_parent_class)->finalize (object); +} + +static void +retro_module_query_class_init (RetroModuleQueryClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = retro_module_query_finalize; +} + +static void +retro_module_query_init (RetroModuleQuery *self) +{ +} + +static gchar ** +retro_module_query_get_plugin_lookup_paths () +{ + gchar **envp; + const gchar *env_plugin_path; + gchar *full_plugin_path; + gchar **result; + + envp = g_get_environ (); + env_plugin_path = g_environ_getenv (envp, RETRO_MODULE_QUERY_ENV_PLUGIN_PATH); + if (env_plugin_path == NULL) { + g_strfreev (envp); + + return g_strsplit (RETRO_PLUGIN_PATH, ":", 0); + } + + full_plugin_path = g_strconcat (env_plugin_path, ":", RETRO_PLUGIN_PATH, NULL); + g_strfreev (envp); + result = g_strsplit (full_plugin_path, ":", 0); + g_free (full_plugin_path); + + return result; +} + +/* Public */ + +/** + * retro_module_query_iterator: + * @self: a #RetroModuleQuery + * + * Creates a new #RetroModuleIterator. + * + * Returns: (transfer full): a new #RetroModuleIterator + */ +RetroModuleIterator * +retro_module_query_iterator (RetroModuleQuery *self) +{ + RetroModuleIterator *result; + gchar **paths; + + g_return_val_if_fail (RETRO_IS_MODULE_QUERY (self), NULL); + + paths = retro_module_query_get_plugin_lookup_paths (); + result = retro_module_iterator_new ((const gchar * const *) paths, + self->recursive); + g_strfreev (paths); + + return result; +} + +/** + * retro_module_query_new: + * @recursive: whether to run the query in sub-directories + * + * Creates a new #RetroModuleQuery. + * + * Returns: (transfer full): a new #RetroModuleQuery + */ +RetroModuleQuery * +retro_module_query_new (gboolean recursive) +{ + RetroModuleQuery *self; + self = g_object_new (RETRO_TYPE_MODULE_QUERY, NULL); + self->recursive = recursive; -static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { - if ((array != NULL) && (destroy_func != NULL)) { - int i; - for (i = 0; i < array_length; i = i + 1) { - if (((gpointer*) array)[i] != NULL) { - destroy_func (((gpointer*) array)[i]); - } - } - } + return self; } - - -static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { - _vala_array_destroy (array, array_length, destroy_func); - g_free (array); -} - - -static gint _vala_array_length (gpointer array) { - int length; - length = 0; - if (array) { - while (((gpointer*) array)[length]) { - length++; - } - } - return length; -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/retro-module-query.h retro-gtk-0.14.0/retro-gtk/retro-module-query.h --- retro-gtk-0.12.1/retro-gtk/retro-module-query.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-module-query.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,25 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_MODULE_QUERY_H +#define RETRO_MODULE_QUERY_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include +#include "retro-module-iterator.h" + +G_BEGIN_DECLS + +#define RETRO_TYPE_MODULE_QUERY (retro_module_query_get_type()) + +G_DECLARE_FINAL_TYPE (RetroModuleQuery, retro_module_query, RETRO, MODULE_QUERY, GObject) + +RetroModuleQuery *retro_module_query_new (gboolean recursive); +RetroModuleIterator *retro_module_query_iterator (RetroModuleQuery *self); + +G_END_DECLS + +#endif /* RETRO_MODULE_QUERY_H */ + diff -Nru retro-gtk-0.12.1/retro-gtk/retro-module-query.vala retro-gtk-0.14.0/retro-gtk/retro-module-query.vala --- retro-gtk-0.12.1/retro-gtk/retro-module-query.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-module-query.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -public class Retro.ModuleQuery { - private const string ENV_PLUGIN_PATH = "LIBRETRO_PLUGIN_PATH"; - - private bool recursive; - - public ModuleQuery (bool recursive) { - this.recursive = recursive; - } - - public ModuleIterator iterator () { - var paths = get_plugin_lookup_paths (); - - return new ModuleIterator (paths, recursive); - } - - private static string[] get_plugin_lookup_paths () { - var envp = Environ.@get (); - var env_plugin_path = Environ.get_variable (envp, ENV_PLUGIN_PATH); - if (env_plugin_path == null) - return Config.RETRO_PLUGIN_PATH.split (":"); - - return @"$env_plugin_path:$(Config.RETRO_PLUGIN_PATH)".split (":"); - } -} - diff -Nru retro-gtk-0.12.1/retro-gtk/retro-option.c retro-gtk-0.14.0/retro-gtk/retro-option.c --- retro-gtk-0.12.1/retro-gtk/retro-option.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-option.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,156 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-option.h" + +struct _RetroOption +{ + GObject parent_instance; + gchar *key; + gchar *description; + gchar **values; + gchar *current; +}; + +G_DEFINE_TYPE (RetroOption, retro_option, G_TYPE_OBJECT) + +#define RETRO_OPTION_ERROR (retro_option_error_quark ()) + +enum { + RETRO_OPTION_ERROR_NO_DESCRIPTION_SEPARATOR, + RETRO_OPTION_ERROR_NO_VALUES, + RETRO_OPTION_ERROR_INVALID_VALUE, +}; + +G_DEFINE_QUARK (retro-option-error, retro_option_error) + +/* Private */ + +static void +retro_option_finalize (GObject *object) +{ + RetroOption *self = (RetroOption *)object; + + g_free (self->key); + g_free (self->description); + g_strfreev (self->values); + g_free (self->current); + + G_OBJECT_CLASS (retro_option_parent_class)->finalize (object); +} + +static void +retro_option_class_init (RetroOptionClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = retro_option_finalize; +} + +static void +retro_option_init (RetroOption *self) +{ +} + +/* Public */ + +const gchar * +retro_option_get_key (RetroOption *self) +{ + g_return_val_if_fail (RETRO_IS_OPTION (self), NULL); + + return self->key; +} + +const gchar * +retro_option_get_description (RetroOption *self) +{ + g_return_val_if_fail (RETRO_IS_OPTION (self), NULL); + + return self->description; +} + +const gchar ** +retro_option_get_values (RetroOption *self) +{ + g_return_val_if_fail (RETRO_IS_OPTION (self), NULL); + + return (const gchar **) self->values; +} + +const gchar * +retro_option_get_current (RetroOption *self) +{ + g_return_val_if_fail (RETRO_IS_OPTION (self), NULL); + + return self->current; +} + +void +retro_option_set_current (RetroOption *self, + const gchar *current, + GError **error) +{ + g_return_if_fail (RETRO_IS_OPTION (self)); + g_return_if_fail (current != NULL); + + g_message ("%s, %s", self->current, current); + if (g_strcmp0 (self->current, current) == 0) + return; + + if (G_UNLIKELY (g_strv_contains ((const gchar *const *) self->values, current))) { + g_set_error_literal (error, + RETRO_OPTION_ERROR, + RETRO_OPTION_ERROR_INVALID_VALUE, + "Unexpected option value: option %s doesn’t have value %s."); + + return; + } + + g_free (self->current); + self->current = g_strdup (current); +} + +RetroOption * +retro_option_new (const RetroVariable *variable, + GError **error) +{ + RetroOption *self; + gchar *description_separator; + gchar **values; + + g_return_val_if_fail (variable != NULL, NULL); + g_return_val_if_fail (variable->key != NULL, NULL); + g_return_val_if_fail (variable->value != NULL, NULL); + + description_separator = g_strstr_len (variable->value, -1, "; "); + if (G_UNLIKELY (description_separator == NULL)) { + g_set_error_literal (error, + RETRO_OPTION_ERROR, + RETRO_OPTION_ERROR_NO_DESCRIPTION_SEPARATOR, + "Unexpected variable format: no description separator found."); + + return NULL; + } + + values = g_strsplit (description_separator + 2, "|", 0); + if (G_UNLIKELY (*values == NULL)) { + g_strfreev (values); + + g_set_error_literal (error, + RETRO_OPTION_ERROR, + RETRO_OPTION_ERROR_NO_VALUES, + "Unexpected variable format: no values."); + + return NULL; + } + + self = g_object_new (RETRO_TYPE_OPTION, NULL); + + self->key = g_strdup (variable->key); + self->description = g_strndup (variable->value, + description_separator - variable->value); + self->values = values; + self->current = g_strdup (values[0]); + + return self; +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-option.h retro-gtk-0.14.0/retro-gtk/retro-option.h --- retro-gtk-0.12.1/retro-gtk/retro-option.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-option.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,31 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_OPTION_H +#define RETRO_OPTION_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include +#include "retro-variable.h" + +G_BEGIN_DECLS + +#define RETRO_TYPE_OPTION (retro_option_get_type()) + +G_DECLARE_FINAL_TYPE (RetroOption, retro_option, RETRO, OPTION, GObject) + +RetroOption *retro_option_new (const RetroVariable *variable, + GError **error); +const gchar *retro_option_get_key (RetroOption *self); +const gchar *retro_option_get_description (RetroOption *self); +const gchar **retro_option_get_values (RetroOption *self); +const gchar *retro_option_get_current (RetroOption *self); +void retro_option_set_current (RetroOption *self, + const gchar *current, + GError **error); + +G_END_DECLS + +#endif /* RETRO_OPTION_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-options.c retro-gtk-0.14.0/retro-gtk/retro-options.c --- retro-gtk-0.12.1/retro-gtk/retro-options.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-options.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,187 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-options.h" + +#include "retro-option.h" + +struct _RetroOptions +{ + GObject parent_instance; + GHashTable *options; + gboolean updated; +}; + +G_DEFINE_TYPE (RetroOptions, retro_options, G_TYPE_OBJECT) + +enum { + SIG_VALUE_CHANGED, + N_SIGNALS, +}; + +static guint signals[N_SIGNALS]; + +RetroOptions * +retro_options_new (void) +{ + return g_object_new (RETRO_TYPE_OPTIONS, NULL); +} + +static void +retro_options_finalize (GObject *object) +{ + RetroOptions *self = (RetroOptions *)object; + + g_hash_table_unref (self->options); + + G_OBJECT_CLASS (retro_options_parent_class)->finalize (object); +} + +static void +retro_options_class_init (RetroOptionsClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = retro_options_finalize; + + signals[SIG_VALUE_CHANGED] = + g_signal_new ("value-changed", RETRO_TYPE_OPTIONS, G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, + 1, + G_TYPE_STRING); +} + +static void +retro_options_init (RetroOptions *self) +{ + self->options = g_hash_table_new_full (g_str_hash, g_str_equal, + g_free, g_object_unref); +} + +/* Public */ + +gboolean +retro_options_contains (RetroOptions *self, + const gchar *key) +{ + g_return_val_if_fail (RETRO_IS_OPTIONS (self), FALSE); + g_return_val_if_fail (key != NULL, FALSE); + + return g_hash_table_contains (self->options, key); +} + +const gchar * +retro_options_get_option_value (RetroOptions *self, + const gchar *key) +{ + RetroOption *option; + + g_return_val_if_fail (RETRO_IS_OPTIONS (self), NULL); + g_return_val_if_fail (key != NULL, NULL); + + option = RETRO_OPTION (g_hash_table_lookup (self->options, key)); + + return retro_option_get_current (option); +} + +void +retro_options_set_option_value (RetroOptions *self, + const gchar *key, + const gchar *value) +{ + RetroOption *option; + GError *tmp_error = NULL; + + g_return_if_fail (RETRO_IS_OPTIONS (self)); + g_return_if_fail (key != NULL); + g_return_if_fail (value != NULL); + + option = RETRO_OPTION (g_hash_table_lookup (self->options, key)); + + retro_option_set_current (option, value, &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_clear_error (&tmp_error); + + return; + } + + g_signal_emit (self, signals[SIG_VALUE_CHANGED], 0, key); + self->updated = TRUE; +} + +const gchar * +retro_options_get_option_description (RetroOptions *self, + const gchar *key) +{ + RetroOption *option; + + g_return_val_if_fail (RETRO_IS_OPTIONS (self), NULL); + g_return_val_if_fail (key != NULL, NULL); + + option = RETRO_OPTION (g_hash_table_lookup (self->options, key)); + + return retro_option_get_description (option); +} + +const gchar ** +retro_options_get_option_values (RetroOptions *self, + const gchar *key) +{ + RetroOption *option; + + g_return_val_if_fail (RETRO_IS_OPTIONS (self), NULL); + g_return_val_if_fail (key != NULL, NULL); + + option = RETRO_OPTION (g_hash_table_lookup (self->options, key)); + + return retro_option_get_values (option); +} + +GList * +retro_options_get_keys (RetroOptions *self) +{ + g_return_val_if_fail (RETRO_IS_OPTIONS (self), NULL); + + return g_hash_table_get_keys (self->options); +} + +void +retro_options_insert_variable (RetroOptions *self, + const RetroVariable *variable) +{ + RetroOption *option; + const gchar *key; + GError *tmp_error = NULL; + + g_return_if_fail (RETRO_IS_OPTIONS (self)); + g_return_if_fail (variable != NULL); + + option = retro_option_new (variable, &tmp_error); + if (G_UNLIKELY (tmp_error != NULL)) { + g_debug ("%s", tmp_error->message); + g_clear_error (&tmp_error); + + return; + } + + key = retro_option_get_key (option); + + g_hash_table_insert (self->options, g_strdup (key), option); + g_signal_emit (self, signals[SIG_VALUE_CHANGED], 0, key); + + self->updated = TRUE; +} + +gboolean +retro_options_get_variable_update (RetroOptions *self) +{ + g_return_val_if_fail (RETRO_IS_OPTIONS (self), FALSE); + + if (!self->updated) + return FALSE; + + self->updated = FALSE; + + return TRUE; +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-options.h retro-gtk-0.14.0/retro-gtk/retro-options.h --- retro-gtk-0.12.1/retro-gtk/retro-options.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-options.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,39 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_OPTIONS_H +#define RETRO_OPTIONS_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include +#include "retro-variable.h" + +G_BEGIN_DECLS + +#define RETRO_TYPE_OPTIONS (retro_options_get_type()) + +G_DECLARE_FINAL_TYPE (RetroOptions, retro_options, RETRO, OPTIONS, GObject) + +RetroOptions *retro_options_new (void); + +gboolean retro_options_contains (RetroOptions *self, + const gchar *key); +const gchar *retro_options_get_option_value (RetroOptions *self, + const gchar *key); +void retro_options_set_option_value (RetroOptions *self, + const gchar *key, + const gchar *value); +const gchar *retro_options_get_option_description (RetroOptions *self, + const gchar *key); +const gchar **retro_options_get_option_values (RetroOptions *self, + const gchar *key); +GList *retro_options_get_keys (RetroOptions *self); +void retro_options_insert_variable (RetroOptions *self, + const RetroVariable *variable); +gboolean retro_options_get_variable_update (RetroOptions *self); + +G_END_DECLS + +#endif /* RETRO_OPTIONS_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-pa-player.c retro-gtk-0.14.0/retro-gtk/retro-pa-player.c --- retro-gtk-0.12.1/retro-gtk/retro-pa-player.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-pa-player.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,146 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-pa-player.h" + +#include +#include + +struct _RetroPaPlayer +{ + GObject parent_instance; + RetroCore *core; + gulong on_audio_output_id; + gdouble sample_rate; + pa_simple *simple; +}; + +G_DEFINE_TYPE (RetroPaPlayer, retro_pa_player, G_TYPE_OBJECT) + +/* Private */ + +static void +retro_pa_player_finalize (GObject *object) +{ + RetroPaPlayer *self = (RetroPaPlayer *)object; + + g_clear_object (&self->core); + + if (self->simple != NULL) { + pa_simple_free (self->simple); + self->simple = NULL; + } + + G_OBJECT_CLASS (retro_pa_player_parent_class)->finalize (object); +} + +static void +retro_pa_player_class_init (RetroPaPlayerClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = retro_pa_player_finalize; +} + +static void +retro_pa_player_init (RetroPaPlayer *self) +{ +} + +static void +retro_pa_player_prepare_for_sample_rate (RetroPaPlayer *self, + gdouble sample_rate) +{ + pa_sample_spec sample_spec = {0}; + gint error; + + g_return_if_fail (RETRO_IS_PA_PLAYER (self)); + + self->sample_rate = sample_rate; + + pa_sample_spec_init (&sample_spec); + sample_spec.format = PA_SAMPLE_S16NE; + sample_spec.rate = (guint32) sample_rate; + sample_spec.channels = 2; + + if (self->simple != NULL) + pa_simple_free (self->simple); + + self->simple = pa_simple_new (NULL, NULL, PA_STREAM_PLAYBACK, NULL, "", + &sample_spec, NULL, NULL, &error); + if (!self->simple) { + g_critical ("pa_simple_new() failed: %s", pa_strerror(error)); + } +} + +static void +retro_pa_player_on_audio_output (RetroCore *sender, + gint16 *data, + int length, + gdouble sample_rate, + gpointer user_data) +{ + RetroPaPlayer *self = RETRO_PA_PLAYER (user_data); + + g_return_if_fail (RETRO_IS_PA_PLAYER (self)); + + if (self->simple == NULL || sample_rate != self->sample_rate) + retro_pa_player_prepare_for_sample_rate (self, sample_rate); + + if (self->simple == NULL) + return; + + pa_simple_write (self->simple, data, sizeof (gint16) * length, NULL); +} + +/* Public */ + +/** + * retro_pa_player_set_core: + * @self: a #RetroPaPlayer + * @core: (nullable): a #RetroCore, or %NULL + * + * Sets @core as the #RetroCore played by @self. + */ +void +retro_pa_player_set_core (RetroPaPlayer *self, + RetroCore *core) +{ + g_return_if_fail (RETRO_IS_PA_PLAYER (self)); + + if (self->core == core) + return; + + if (self->core != NULL) { + g_signal_handler_disconnect (G_OBJECT (self->core), + self->on_audio_output_id); + g_clear_object (&self->core); + } + + if (core != NULL) { + self->core = g_object_ref (core); + self->on_audio_output_id = + g_signal_connect_object (core, + "audio-output", + (GCallback) retro_pa_player_on_audio_output, + self, + 0); + } + + if (self->simple != NULL) { + pa_simple_free (self->simple); + self->simple = NULL; + } +} + +/** + * retro_pa_player_new: + * + * Creates a new #RetroPaPlayer. + * + * Returns: (transfer full): a new #RetroPaPlayer + */ +RetroPaPlayer * +retro_pa_player_new (void) +{ + return g_object_new (RETRO_TYPE_PA_PLAYER, NULL); +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-pa-player.h retro-gtk-0.14.0/retro-gtk/retro-pa-player.h --- retro-gtk-0.12.1/retro-gtk/retro-pa-player.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-pa-player.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,27 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_PA_PLAYER_H +#define RETRO_PA_PLAYER_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +// FIXME Remove as soon as possible. +typedef struct _RetroCore RetroCore; + +#define RETRO_TYPE_PA_PLAYER (retro_pa_player_get_type()) + +G_DECLARE_FINAL_TYPE (RetroPaPlayer, retro_pa_player, RETRO, PA_PLAYER, GObject) + +RetroPaPlayer *retro_pa_player_new (void); +void retro_pa_player_set_core (RetroPaPlayer *self, + RetroCore *core); + +G_END_DECLS + +#endif /* RETRO_PA_PLAYER_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-pixdata.c retro-gtk-0.14.0/retro-gtk/retro-pixdata.c --- retro-gtk-0.12.1/retro-gtk/retro-pixdata.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-pixdata.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,409 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-pixdata-private.h" + +#include + +G_DEFINE_BOXED_TYPE (RetroPixdata, retro_pixdata, retro_pixdata_copy, retro_pixdata_free) + +/* + * Because gdk-pixbuf saves dpi as integer we have to multiply it by big enough + * number to represent aspect ratio precisely. + */ +#define RETRO_CAIRO_DISPLAY_Y_DPI (1000000.0f) + +/* Private */ + +typedef struct { + guint16 b: 5; + guint16 g: 5; + guint16 r: 5; + guint16 x: 1; +} xrgb1555; + +typedef struct { + guint32 b: 8; + guint32 g: 8; + guint32 r: 8; + guint32 x: 8; +} xrgb8888; + +typedef struct { + guint16 b: 5; + guint16 g: 6; + guint16 r: 5; +} rgb565; + +typedef struct { + guint32 a: 8; + guint32 b: 8; + guint32 g: 8; + guint32 r: 8; +} rgba8888; + +typedef rgba8888 (*GetRGBA8888) (gconstpointer pixel); + +static rgba8888 +rgba8888_from_xrgb1555 (gconstpointer data) +{ + xrgb1555 pixel = *(const xrgb1555 *) data; + + return (rgba8888) { + pixel.r << 3 | pixel.r >> 2, + pixel.g << 3 | pixel.g >> 2, + pixel.b << 3 | pixel.b >> 2, + 0xff, + }; +} + +static rgba8888 +rgba8888_from_xrgb8888 (gconstpointer data) +{ + xrgb8888 pixel = *(const xrgb8888 *) data; + + return (rgba8888) { + pixel.r, + pixel.g, + pixel.b, + 0xff, + }; +} + +static rgba8888 +rgba8888_from_rgb565 (gconstpointer data) +{ + rgb565 pixel = *(const rgb565 *) data; + + return (rgba8888) { + pixel.r << 3 | pixel.r >> 2, + pixel.g << 2 | pixel.g >> 4, + pixel.b << 3 | pixel.b >> 2, + 0xff, + }; +} + +static gboolean +get_interface_for_pixel_format (gint pixel_format, + GetRGBA8888 *get_pixel, + gsize *pixel_size) +{ + switch (pixel_format) { + case RETRO_PIXEL_FORMAT_XRGB1555: + *get_pixel = rgba8888_from_xrgb1555; + *pixel_size = sizeof (xrgb1555); + + return TRUE; + case RETRO_PIXEL_FORMAT_XRGB8888: + *get_pixel = rgba8888_from_xrgb8888; + *pixel_size = sizeof (rgba8888); + + return TRUE; + case RETRO_PIXEL_FORMAT_RGB565: + *get_pixel = rgba8888_from_rgb565; + *pixel_size = sizeof (rgb565); + + return TRUE; + default: + return FALSE; + } +} + +/* + * The destination buffer must be at least `height * width * sizeof (rgba8888)` + * bytes long. + */ +static void +rgba8888_from_video (gconstpointer src, + rgba8888 *dst, + size_t pixel_size, + guint width, + guint height, + gsize pitch, + GetRGBA8888 get_pixel) +{ + gsize row, src_row, dst_row, col, src_col; + + for (row = 0 ; row < height ; row++) { + src_row = row * pitch; + dst_row = row * width; + + for (col = 0 ; col < width ; col++) { + src_col = col * pixel_size; + + dst[dst_row + col] = get_pixel (src_row + src_col + src); + } + } +} + +static void +pixels_free (guchar *pixels, + gpointer data) +{ + g_free (pixels); +} + +/** + * retro_pixdata_new: + * @data: the video data + * @width: the width + * @height: the height + * @pitch: the distance in bytes between rows + * @pixel_format: the pixel format + * @aspect_ratio: the aspect ratio to render the video + * + * Creates a new #RetroPixdata. + * + * Returns: (transfer full): a new #RetroPixdata, use retro_pixdata_free() to + * free it + */ +static RetroPixdata * +retro_pixdata_new (gconstpointer data, + RetroPixelFormat pixel_format, + gsize rowstride, + gsize width, + gsize height, + gfloat aspect_ratio) +{ + RetroPixdata *self; + + g_return_val_if_fail (data != NULL, NULL); + g_return_val_if_fail (width != 0, NULL); + g_return_val_if_fail (height != 0, NULL); + g_return_val_if_fail (aspect_ratio > 0.f, NULL); + + self = g_slice_new0 (RetroPixdata); + self->data = g_memdup (data, rowstride * height); + self->pixel_format = pixel_format; + self->rowstride = rowstride; + self->width = width; + self->height = height; + self->aspect_ratio = aspect_ratio; + + return self; +} + +/* Public */ + +/** + * retro_pixdata_init: + * @self: a #RetroPixdata + * @data: the video data + * @width: the width + * @height: the height + * @pitch: the distance in bytes between rows + * @pixel_format: the pixel format + * @aspect_ratio: the aspect ratio to render the video + * + * Initializes @self with the given parameters. + */ +void +retro_pixdata_init (RetroPixdata *self, + gconstpointer data, + RetroPixelFormat pixel_format, + gsize rowstride, + gsize width, + gsize height, + gfloat aspect_ratio) +{ + g_return_if_fail (self != NULL); + g_return_if_fail (data != NULL); + g_return_if_fail (rowstride != 0); + g_return_if_fail (width != 0); + g_return_if_fail (height != 0); + g_return_if_fail (aspect_ratio > 0.f); + + self->data = (guint8 *) data; + self->pixel_format = pixel_format; + self->rowstride = rowstride; + self->width = width; + self->height = height; + self->aspect_ratio = aspect_ratio; +} + +/** + * retro_pixdata_copy: + * @self: a #RetroPixdata + * + * Copies @self into a new #RetroPixdata. + * + * Returns: (transfer full): a new #RetroPixdata, use retro_pixdata_free() to + * free it + */ +RetroPixdata * +retro_pixdata_copy (RetroPixdata *self) +{ + g_return_val_if_fail (self != NULL, NULL); + + return retro_pixdata_new (self->data, self->pixel_format, + self->rowstride, self->width, self->height, + self->aspect_ratio); +} + +/** + * retro_pixdata_free: + * @self: a #RetroPixdata + * + * Frees the given #RetroPixdata object. + */ +void +retro_pixdata_free (RetroPixdata *self) +{ + g_return_if_fail (self != NULL); + + g_free (self->data); + + g_slice_free (RetroPixdata, self); +} + +/** + * retro_pixdata_get_width: + * @self: a #RetroCore + * + * Gets the width of @self. + * + * Returns: the width + */ +gint +retro_pixdata_get_width (RetroPixdata *self) +{ + g_return_val_if_fail (self != NULL, 0); + + return self->width; +} + +/** + * retro_pixdata_get_height: + * @self: a #RetroCore + * + * Gets the height of @self. + * + * Returns: the height + */ +gint +retro_pixdata_get_height (RetroPixdata *self) +{ + g_return_val_if_fail (self != NULL, 0); + + return self->height; +} + +/** + * retro_pixdata_get_aspect_ratio: + * @self: a #RetroCore + * + * Gets the aspect ratio the video should be rendered with. + * + * Returns: the aspect ratio + */ +gfloat +retro_pixdata_get_aspect_ratio (RetroPixdata *self) +{ + g_return_val_if_fail (self != NULL, 0.f); + + return self->aspect_ratio; +} + +/** + * retro_pixdata_to_pixbuf: + * @self: the #RetroPixdata + * + * Creates a new #GdkPixbuf from @self. + * + * Returns: (transfer full): a new #RetroPixdata + */ +GdkPixbuf * +retro_pixdata_to_pixbuf (RetroPixdata *self) +{ + GetRGBA8888 get_pixel; + gsize pixel_size; + rgba8888 *rgba8888_data; + GdkPixbuf *pixbuf; + gfloat x_dpi; + gchar *x_dpi_string; + gchar *y_dpi_string; + + g_return_val_if_fail (self != NULL, NULL); + + if (!get_interface_for_pixel_format (self->pixel_format, + &get_pixel, + &pixel_size)) + return NULL; + + rgba8888_data = g_new (rgba8888, self->width * self->height); + rgba8888_from_video (self->data, rgba8888_data, pixel_size, + self->width, self->height, self->rowstride, + get_pixel); + + if (rgba8888_data == NULL) + return NULL; + + pixbuf = gdk_pixbuf_new_from_data ((guchar *) rgba8888_data, + GDK_COLORSPACE_RGB, TRUE, 8, + self->width, self->height, + self->width * sizeof (rgba8888), + pixels_free, NULL); + + x_dpi = self->aspect_ratio * RETRO_CAIRO_DISPLAY_Y_DPI; + x_dpi_string = g_strdup_printf ("%g", x_dpi); + y_dpi_string = g_strdup_printf ("%g", RETRO_CAIRO_DISPLAY_Y_DPI); + gdk_pixbuf_set_option (pixbuf, "x-dpi", x_dpi_string); + gdk_pixbuf_set_option (pixbuf, "y-dpi", y_dpi_string); + g_free (y_dpi_string); + g_free (x_dpi_string); + + return pixbuf; +} + +/** + * retro_pixdata_load_gl_texture: + * @self: the #RetroPixdata + * + * Loads an OpenGL texture from @self. + * + * Returns: whether the loading was successful + */ +gboolean +retro_pixdata_load_gl_texture (RetroPixdata *self) +{ + GLenum format; + GLenum type; + gint pixel_size; + + g_return_val_if_fail (self != NULL, FALSE); + + switch (self->pixel_format) { + case RETRO_PIXEL_FORMAT_XRGB1555: + format = GL_BGRA; + type = GL_UNSIGNED_SHORT_5_5_5_1; + pixel_size = 2; + + break; + case RETRO_PIXEL_FORMAT_XRGB8888: + format = GL_BGRA; + type = GL_UNSIGNED_BYTE; + pixel_size = 4; + + break; + case RETRO_PIXEL_FORMAT_RGB565: + format = GL_RGB; + type = GL_UNSIGNED_SHORT_5_6_5; + pixel_size = 2; + + break; + default: + return FALSE; + } + + glPixelStorei (GL_UNPACK_ROW_LENGTH, self->rowstride / pixel_size); + glTexImage2D (GL_TEXTURE_2D, + 0, + GL_RGB, + self->width, + self->height, + 0, + format, type, + self->data); + glPixelStorei (GL_UNPACK_ROW_LENGTH, 0); + + return TRUE; +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-pixdata.h retro-gtk-0.14.0/retro-gtk/retro-pixdata.h --- retro-gtk-0.12.1/retro-gtk/retro-pixdata.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-pixdata.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,33 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_PIXDATA_H +#define RETRO_PIXDATA_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define RETRO_TYPE_PIXDATA (retro_pixdata_get_type()) + +GType retro_pixdata_get_type (void) G_GNUC_CONST; + +typedef struct _RetroPixdata RetroPixdata; + +RetroPixdata *retro_pixdata_copy (RetroPixdata *self); +void retro_pixdata_free (RetroPixdata *self); +gint retro_pixdata_get_width (RetroPixdata *self); +gint retro_pixdata_get_height (RetroPixdata *self); +gfloat retro_pixdata_get_aspect_ratio (RetroPixdata *self); +GdkPixbuf *retro_pixdata_to_pixbuf (RetroPixdata *self); +gboolean retro_pixdata_load_gl_texture (RetroPixdata *self); + +G_DEFINE_AUTOPTR_CLEANUP_FUNC (RetroPixdata, retro_pixdata_free) + +G_END_DECLS + +#endif /* RETRO_PIXDATA_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-pixdata-private.h retro-gtk-0.14.0/retro-gtk/retro-pixdata-private.h --- retro-gtk-0.12.1/retro-gtk/retro-pixdata-private.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-pixdata-private.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,36 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_PIXDATA_PRIVATE_H +#define RETRO_PIXDATA_PRIVATE_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include "retro-pixdata.h" + +#include "retro-pixel-format.h" + +G_BEGIN_DECLS + +struct _RetroPixdata +{ + guint8 *data; + RetroPixelFormat pixel_format; + gsize rowstride; + gsize width; + gsize height; + gfloat aspect_ratio; +}; + +void retro_pixdata_init (RetroPixdata *self, + gconstpointer data, + RetroPixelFormat pixel_format, + gsize rowstride, + gsize width, + gsize height, + gfloat aspect_ratio); + +G_END_DECLS + +#endif /* RETRO_PIXDATA_PRIVATE_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-pixel-format.c retro-gtk-0.14.0/retro-gtk/retro-pixel-format.c --- retro-gtk-0.12.1/retro-gtk/retro-pixel-format.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-pixel-format.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,26 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-pixel-format.h" + +GType +retro_pixel_format_get_type (void) +{ + static volatile gsize retro_pixel_format_type = 0; + + if (g_once_init_enter (&retro_pixel_format_type)) { + static const GEnumValue values[] = { + { RETRO_PIXEL_FORMAT_XRGB1555, "RETRO_PIXEL_FORMAT_XRGB1555", "xrgb1555" }, + { RETRO_PIXEL_FORMAT_XRGB8888, "RETRO_PIXEL_FORMAT_XRGB8888", "xrgb8888" }, + { RETRO_PIXEL_FORMAT_RGB565, "RETRO_PIXEL_FORMAT_RGB565", "rgb565" }, + { RETRO_PIXEL_FORMAT_UNKNOWN, "RETRO_PIXEL_FORMAT_UNKNOWN", "unknown" }, + { 0, NULL, NULL }, + }; + GType type; + + type = g_enum_register_static ("RetroPixelFormat", values); + + g_once_init_leave (&retro_pixel_format_type, type); + } + + return retro_pixel_format_type; +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-pixel-format.h retro-gtk-0.14.0/retro-gtk/retro-pixel-format.h --- retro-gtk-0.12.1/retro-gtk/retro-pixel-format.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-pixel-format.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,37 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_PIXEL_FORMAT_H +#define RETRO_PIXEL_FORMAT_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define RETRO_TYPE_PIXEL_FORMAT (retro_pixel_format_get_type ()) + +GType retro_pixel_format_get_type (void) G_GNUC_CONST; + +/** + * RetroPixelFormat: + * @RETRO_PIXEL_FORMAT_XRGB1555: native endian, the first bit is ignored + * @RETRO_PIXEL_FORMAT_XRGB8888: native endian, the first 8 bits are ignored + * @RETRO_PIXEL_FORMAT_RGB565: native endian + * @RETRO_PIXEL_FORMAT_UNKNOWN: an unknown format + * + * Represents the pixel formats used by Libretro. + */ +typedef enum +{ + RETRO_PIXEL_FORMAT_XRGB1555, + RETRO_PIXEL_FORMAT_XRGB8888, + RETRO_PIXEL_FORMAT_RGB565, + RETRO_PIXEL_FORMAT_UNKNOWN = -1, +} RetroPixelFormat; + +G_END_DECLS + +#endif /* RETRO_PIXEL_FORMAT_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-rotation.h retro-gtk-0.14.0/retro-gtk/retro-rotation.h --- retro-gtk-0.12.1/retro-gtk/retro-rotation.h 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-rotation.h 2018-03-10 13:02:01.000000000 +0000 @@ -3,6 +3,10 @@ #ifndef RETRO_ROTATION_H #define RETRO_ROTATION_H +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + #include G_BEGIN_DECLS diff -Nru retro-gtk-0.12.1/retro-gtk/retro-rumble-effect.c retro-gtk-0.14.0/retro-gtk/retro-rumble-effect.c --- retro-gtk-0.12.1/retro-gtk/retro-rumble-effect.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-rumble-effect.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,24 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-rumble-effect.h" + +GType +retro_rumble_effect_get_type (void) +{ + static volatile gsize retro_rumble_effect_type = 0; + + if (g_once_init_enter (&retro_rumble_effect_type)) { + static const GEnumValue values[] = { + { RETRO_RUMBLE_EFFECT_STRONG, "RETRO_RUMBLE_EFFECT_STRONG", "strong" }, + { RETRO_RUMBLE_EFFECT_WEAK, "RETRO_RUMBLE_EFFECT_WEAK", "weak" }, + { 0, NULL, NULL }, + }; + GType type; + + type = g_enum_register_static ("RetroRumbleEffect", values); + + g_once_init_leave (&retro_rumble_effect_type, type); + } + + return retro_rumble_effect_type; +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-rumble-effect.h retro-gtk-0.14.0/retro-gtk/retro-rumble-effect.h --- retro-gtk-0.12.1/retro-gtk/retro-rumble-effect.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-rumble-effect.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,29 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_RUMBLE_EFFECT_H +#define RETRO_RUMBLE_EFFECT_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +/** + * RetroRumbleEffect: + * @RETRO_RUMBLE_EFFECT_STRONG: the strong rumble effect + * @RETRO_RUMBLE_EFFECT_WEAK: the weak rumble effect + * + * Represents the strength of the rumble effect. + */ +typedef enum +{ + RETRO_RUMBLE_EFFECT_STRONG, + RETRO_RUMBLE_EFFECT_WEAK, +} RetroRumbleEffect; + +G_END_DECLS + +#endif /* RETRO_RUMBLE_EFFECT_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-system-av-info.h retro-gtk-0.14.0/retro-gtk/retro-system-av-info.h --- retro-gtk-0.12.1/retro-gtk/retro-system-av-info.h 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-system-av-info.h 2018-03-10 13:02:01.000000000 +0000 @@ -3,6 +3,10 @@ #ifndef RETRO_SYSTEM_AV_INFO_H #define RETRO_SYSTEM_AV_INFO_H +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + #include G_BEGIN_DECLS diff -Nru retro-gtk-0.12.1/retro-gtk/retro-system-info.h retro-gtk-0.14.0/retro-gtk/retro-system-info.h --- retro-gtk-0.12.1/retro-gtk/retro-system-info.h 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-system-info.h 2018-03-10 13:02:01.000000000 +0000 @@ -3,6 +3,10 @@ #ifndef RETRO_SYSTEM_INFO_H #define RETRO_SYSTEM_INFO_H +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + #include G_BEGIN_DECLS diff -Nru retro-gtk-0.12.1/retro-gtk/retro.vala retro-gtk-0.14.0/retro-gtk/retro.vala --- retro-gtk-0.12.1/retro-gtk/retro.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -[CCode (gir_namespace = "Retro", gir_version = "0.12")] -namespace Retro { - -/** - * The version of Libretro implemented by Retro. - */ -public const uint API_VERSION = 1; - -private const string ENV_PLUGIN_PATH = "RETRO_PLUGIN_PATH_1_0"; - -/** - * Error type thrown by interfaces when accessing one of their Core's - * callback. - */ -private errordomain CbError { - NO_CORE, - NO_CALLBACK -} - -public extern void g_log (Core core, string log_domain, LogLevelFlags log_level, string message); - -} - diff -Nru retro-gtk-0.12.1/retro-gtk/retro-variable.h retro-gtk-0.14.0/retro-gtk/retro-variable.h --- retro-gtk-0.12.1/retro-gtk/retro-variable.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-variable.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,24 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_VARIABLE_H +#define RETRO_VARIABLE_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +typedef struct _RetroVariable RetroVariable; + +struct _RetroVariable +{ + const gchar *key; + const gchar *value; +}; + +G_END_DECLS + +#endif /* RETRO_VARIABLE_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/retro-video-filter.c retro-gtk-0.14.0/retro-gtk/retro-video-filter.c --- retro-gtk-0.12.1/retro-gtk/retro-video-filter.c 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-video-filter.c 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,56 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#include "retro-video-filter.h" + +/** + * retro_video_filter_from_string: + * @filter: a filter name + * + * Gets a #RetroVideoFilter from it's name. It defaults to + * RETRO_VIDEO_FILTER_SMOOTH in case of error. + * + * Returns: a #RetroVideoFilter + */ +RetroVideoFilter +retro_video_filter_from_string (const gchar *filter) +{ + GEnumClass* enum_class; + RetroVideoFilter result; + GEnumValue* eval = NULL; + + g_return_val_if_fail (filter != NULL, RETRO_VIDEO_FILTER_SMOOTH); + + enum_class = (GEnumClass *) g_type_class_ref (RETRO_TYPE_VIDEO_FILTER); + eval = g_enum_get_value_by_nick (enum_class, filter); + + result = (eval == NULL) ? + RETRO_VIDEO_FILTER_SMOOTH : + (RetroVideoFilter) eval->value; + + g_type_class_unref (enum_class); + + return result; +} + +GType +retro_video_filter_get_type (void) +{ + static volatile gsize retro_video_filter_type = 0; + + if (g_once_init_enter (&retro_video_filter_type)) { + static const GEnumValue values[] = { + { RETRO_VIDEO_FILTER_SMOOTH, "RETRO_VIDEO_FILTER_SMOOTH", "smooth" }, + { RETRO_VIDEO_FILTER_SHARP, "RETRO_VIDEO_FILTER_SHARP", "sharp" }, + { RETRO_VIDEO_FILTER_CRT, "RETRO_VIDEO_FILTER_CRT", "crt" }, + { RETRO_VIDEO_FILTER_COUNT, "RETRO_VIDEO_FILTER_COUNT", "count" }, + { 0, NULL, NULL }, + }; + GType type; + + type = g_enum_register_static ("RetroVideoFilter", values); + + g_once_init_leave (&retro_video_filter_type, type); + } + + return retro_video_filter_type; +} diff -Nru retro-gtk-0.12.1/retro-gtk/retro-video-filter.h retro-gtk-0.14.0/retro-gtk/retro-video-filter.h --- retro-gtk-0.12.1/retro-gtk/retro-video-filter.h 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/retro-video-filter.h 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,39 @@ +// This file is part of retro-gtk. License: GPL-3.0+. + +#ifndef RETRO_VIDEO_FILTER_H +#define RETRO_VIDEO_FILTER_H + +#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION) +# error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define RETRO_TYPE_VIDEO_FILTER (retro_video_filter_get_type ()) + +GType retro_video_filter_get_type (void) G_GNUC_CONST; + +/** + * RetroVideoFilter: + * @RETRO_VIDEO_FILTER_SMOOTH: a smooth but blurry video filer + * @RETRO_VIDEO_FILTER_SHARP: a sharp video filter showing every pixel + * @RETRO_VIDEO_FILTER_CRT: a video filter mimicking CRT screens + * @RETRO_VIDEO_FILTER_COUNT: the number of video filters + * + * Represents the filters that can be applied to the video output. + */ +typedef enum +{ + RETRO_VIDEO_FILTER_SMOOTH, + RETRO_VIDEO_FILTER_SHARP, + RETRO_VIDEO_FILTER_CRT, + RETRO_VIDEO_FILTER_COUNT, +} RetroVideoFilter; + +RetroVideoFilter retro_video_filter_from_string (const gchar *filter); + +G_END_DECLS + +#endif /* RETRO_VIDEO_FILTER_H */ diff -Nru retro-gtk-0.12.1/retro-gtk/rumble.c retro-gtk-0.14.0/retro-gtk/rumble.c --- retro-gtk-0.12.1/retro-gtk/rumble.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/rumble.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,76 +0,0 @@ -/* rumble.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from rumble.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include - - -#define RETRO_TYPE_RUMBLE_EFFECT (retro_rumble_effect_get_type ()) - -#define RETRO_TYPE_RUMBLE (retro_rumble_get_type ()) -#define RETRO_RUMBLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_RUMBLE, RetroRumble)) -#define RETRO_IS_RUMBLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_RUMBLE)) -#define RETRO_RUMBLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_RUMBLE, RetroRumbleIface)) - -typedef struct _RetroRumble RetroRumble; -typedef struct _RetroRumbleIface RetroRumbleIface; - -typedef enum { - RETRO_RUMBLE_EFFECT_STRONG, - RETRO_RUMBLE_EFFECT_WEAK -} RetroRumbleEffect; - -struct _RetroRumbleIface { - GTypeInterface parent_iface; - gboolean (*set_rumble_state) (RetroRumble* self, guint port, RetroRumbleEffect effect, guint16 strength); -}; - - - -GType retro_rumble_effect_get_type (void) G_GNUC_CONST; -GType retro_rumble_get_type (void) G_GNUC_CONST; -gboolean retro_rumble_set_rumble_state (RetroRumble* self, guint port, RetroRumbleEffect effect, guint16 strength); - - -GType retro_rumble_effect_get_type (void) { - static volatile gsize retro_rumble_effect_type_id__volatile = 0; - if (g_once_init_enter (&retro_rumble_effect_type_id__volatile)) { - static const GEnumValue values[] = {{RETRO_RUMBLE_EFFECT_STRONG, "RETRO_RUMBLE_EFFECT_STRONG", "strong"}, {RETRO_RUMBLE_EFFECT_WEAK, "RETRO_RUMBLE_EFFECT_WEAK", "weak"}, {0, NULL, NULL}}; - GType retro_rumble_effect_type_id; - retro_rumble_effect_type_id = g_enum_register_static ("RetroRumbleEffect", values); - g_once_init_leave (&retro_rumble_effect_type_id__volatile, retro_rumble_effect_type_id); - } - return retro_rumble_effect_type_id__volatile; -} - - -gboolean retro_rumble_set_rumble_state (RetroRumble* self, guint port, RetroRumbleEffect effect, guint16 strength) { - g_return_val_if_fail (self != NULL, FALSE); - return RETRO_RUMBLE_GET_INTERFACE (self)->set_rumble_state (self, port, effect, strength); -} - - -static void retro_rumble_base_init (RetroRumbleIface * iface) { - static gboolean initialized = FALSE; - if (!initialized) { - initialized = TRUE; - } -} - - -GType retro_rumble_get_type (void) { - static volatile gsize retro_rumble_type_id__volatile = 0; - if (g_once_init_enter (&retro_rumble_type_id__volatile)) { - static const GTypeInfo g_define_type_info = { sizeof (RetroRumbleIface), (GBaseInitFunc) retro_rumble_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL }; - GType retro_rumble_type_id; - retro_rumble_type_id = g_type_register_static (G_TYPE_INTERFACE, "RetroRumble", &g_define_type_info, 0); - g_type_interface_add_prerequisite (retro_rumble_type_id, G_TYPE_OBJECT); - g_once_init_leave (&retro_rumble_type_id__volatile, retro_rumble_type_id); - } - return retro_rumble_type_id__volatile; -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/rumble.vala retro-gtk-0.14.0/retro-gtk/rumble.vala --- retro-gtk-0.12.1/retro-gtk/rumble.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/rumble.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -namespace Retro { - -public enum RumbleEffect { - STRONG, - WEAK -} - -public interface Rumble: Object { - public abstract bool set_rumble_state (uint port, RumbleEffect effect, uint16 strength); -} - -} - diff -Nru retro-gtk-0.12.1/retro-gtk/variable/options.c retro-gtk-0.14.0/retro-gtk/variable/options.c --- retro-gtk-0.12.1/retro-gtk/variable/options.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/variable/options.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,938 +0,0 @@ -/* options.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from options.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include -#include -#include -#include -#include - - -#define RETRO_TYPE_OPTION (retro_option_get_type ()) -#define RETRO_OPTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_OPTION, RetroOption)) -#define RETRO_OPTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_OPTION, RetroOptionClass)) -#define RETRO_IS_OPTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_OPTION)) -#define RETRO_IS_OPTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_OPTION)) -#define RETRO_OPTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_OPTION, RetroOptionClass)) - -typedef struct _RetroOption RetroOption; -typedef struct _RetroOptionClass RetroOptionClass; -typedef struct _RetroOptionPrivate RetroOptionPrivate; -enum { - RETRO_OPTION_DUMMY_PROPERTY, - RETRO_OPTION_CURRENT, - RETRO_OPTION_LAST_PROPERTY -}; -static GParamSpec* retro_option_properties[RETRO_OPTION_LAST_PROPERTY]; -#define _g_free0(var) (var = (g_free (var), NULL)) - -#define RETRO_TYPE_VARIABLE (retro_variable_get_type ()) -typedef struct _RetroVariable RetroVariable; - -#define RETRO_TYPE_VARIABLES (retro_variables_get_type ()) -#define RETRO_VARIABLES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_VARIABLES, RetroVariables)) -#define RETRO_IS_VARIABLES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_VARIABLES)) -#define RETRO_VARIABLES_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_VARIABLES, RetroVariablesIface)) - -typedef struct _RetroVariables RetroVariables; -typedef struct _RetroVariablesIface RetroVariablesIface; - -#define RETRO_TYPE_CORE (retro_core_get_type ()) -#define RETRO_CORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CORE, RetroCore)) -#define RETRO_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CORE, RetroCoreClass)) -#define RETRO_IS_CORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CORE)) -#define RETRO_IS_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CORE)) -#define RETRO_CORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CORE, RetroCoreClass)) - -typedef struct _RetroCore RetroCore; -typedef struct _RetroCoreClass RetroCoreClass; - -#define RETRO_TYPE_OPTIONS (retro_options_get_type ()) -#define RETRO_OPTIONS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_OPTIONS, RetroOptions)) -#define RETRO_OPTIONS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_OPTIONS, RetroOptionsClass)) -#define RETRO_IS_OPTIONS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_OPTIONS)) -#define RETRO_IS_OPTIONS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_OPTIONS)) -#define RETRO_OPTIONS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_OPTIONS, RetroOptionsClass)) - -typedef struct _RetroOptions RetroOptions; -typedef struct _RetroOptionsClass RetroOptionsClass; -typedef struct _RetroOptionsPrivate RetroOptionsPrivate; -enum { - RETRO_OPTIONS_DUMMY_PROPERTY, - RETRO_OPTIONS_CORE, - RETRO_OPTIONS_LAST_PROPERTY -}; -static GParamSpec* retro_options_properties[RETRO_OPTIONS_LAST_PROPERTY]; -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) -#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL))) -#define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL))) -typedef struct _RetroCorePrivate RetroCorePrivate; -enum { - RETRO_OPTIONS_VALUE_CHANGED_SIGNAL, - RETRO_OPTIONS_LAST_SIGNAL -}; -static guint retro_options_signals[RETRO_OPTIONS_LAST_SIGNAL] = {0}; - -struct _RetroOption { - GObject parent_instance; - RetroOptionPrivate * priv; - gchar* key; - gchar* description; - gchar** values; - gint values_length1; - gint _values_size_; -}; - -struct _RetroOptionClass { - GObjectClass parent_class; -}; - -struct _RetroOptionPrivate { - gchar* _current; -}; - -struct _RetroVariable { - gchar* key; - gchar* value; -}; - -struct _RetroVariablesIface { - GTypeInterface parent_iface; - gchar* (*get_variable) (RetroVariables* self, const gchar* key); - void (*set_variable) (RetroVariables* self, RetroVariable* variables, int variables_length1); - gboolean (*get_variable_update) (RetroVariables* self); - RetroCore* (*get_core) (RetroVariables* self); - void (*set_core) (RetroVariables* self, RetroCore* value); -}; - -struct _RetroOptions { - GObject parent_instance; - RetroOptionsPrivate * priv; - RetroCore* _core; -}; - -struct _RetroOptionsClass { - GObjectClass parent_class; -}; - -struct _RetroOptionsPrivate { - GHashTable* table; - gboolean update; -}; - -struct _RetroCore { - GObject parent_instance; - RetroCorePrivate * priv; - gdouble _frames_per_second; - RetroVariables* variables_interface; - void* environment_internal; -}; - -struct _RetroCoreClass { - GObjectClass parent_class; -}; - - -static gpointer retro_option_parent_class = NULL; -static gpointer retro_options_parent_class = NULL; -static RetroVariablesIface * retro_options_retro_variables_parent_iface = NULL; - -GType retro_option_get_type (void) G_GNUC_CONST; -#define RETRO_OPTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), RETRO_TYPE_OPTION, RetroOptionPrivate)) -GType retro_variable_get_type (void) G_GNUC_CONST; -RetroVariable* retro_variable_dup (const RetroVariable* self); -void retro_variable_free (RetroVariable* self); -void retro_variable_copy (const RetroVariable* self, RetroVariable* dest); -void retro_variable_destroy (RetroVariable* self); -RetroOption* retro_option_new (RetroVariable* variable); -RetroOption* retro_option_construct (GType object_type, RetroVariable* variable); -void retro_option_set_current (RetroOption* self, const gchar* value); -const gchar* retro_option_get_current (RetroOption* self); -static gboolean _vala_string_array_contains (gchar* * stack, int stack_length, gchar* needle); -static void retro_option_finalize (GObject * obj); -static void _vala_retro_option_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec); -static void _vala_retro_option_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec); -GType retro_core_get_type (void) G_GNUC_CONST; -GType retro_variables_get_type (void) G_GNUC_CONST; -GType retro_options_get_type (void) G_GNUC_CONST; -#define RETRO_OPTIONS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), RETRO_TYPE_OPTIONS, RetroOptionsPrivate)) -static void retro_options_insert_multiple (RetroOptions* self, RetroVariable* variables, int variables_length1); -static void retro_options_insert (RetroOptions* self, gchar* key, RetroVariable* value); -void retro_options_set_option (RetroOptions* self, gchar* key, gchar* value); -void retro_options_set (RetroOptions* self, gchar* key, gchar* value); -gboolean retro_options_contains (RetroOptions* self, const gchar* key); -const gchar* retro_options_lookup (RetroOptions* self, const gchar* key); -const gchar* retro_options_lookup_description (RetroOptions* self, const gchar* key); -gchar** retro_options_lookup_values (RetroOptions* self, const gchar* key, int* result_length1); -const gchar* retro_options_get (RetroOptions* self, const gchar* key); -GList* retro_options_get_keys (RetroOptions* self); -void retro_options_for_each (RetroOptions* self, GHFunc func, void* func_target); -void retro_options_foreach (RetroOptions* self, GHFunc func, void* func_target); -guint retro_options_size (RetroOptions* self); -static gchar* retro_options_real_get_variable (RetroVariables* base, const gchar* key); -static void retro_options_real_set_variable (RetroVariables* base, RetroVariable* variables, int variables_length1); -static gboolean retro_options_real_get_variable_update (RetroVariables* base); -RetroOptions* retro_options_new (void); -RetroOptions* retro_options_construct (GType object_type); -static GObject * retro_options_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); -static void _g_free0_ (gpointer var); -static void _g_object_unref0_ (gpointer var); -static void retro_options_finalize (GObject * obj); -RetroCore* retro_variables_get_core (RetroVariables* self); -static void _vala_retro_options_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec); -void retro_variables_set_core (RetroVariables* self, RetroCore* value); -static void _vala_retro_options_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec); -static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); -static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); -static gint _vala_array_length (gpointer array); - - -RetroOption* retro_option_construct (GType object_type, RetroVariable* variable) { - RetroOption * self = NULL; - gchar** desc_and_vals = NULL; - RetroVariable _tmp0_; - const gchar* _tmp1_; - gchar** _tmp2_; - gchar** _tmp3_; - gint desc_and_vals_length1; - gint _desc_and_vals_size_; - RetroVariable _tmp4_; - const gchar* _tmp5_; - gchar* _tmp6_; - const gchar* _tmp7_; - gchar* _tmp8_; - const gchar* _tmp9_; - gchar** _tmp10_; - gchar** _tmp11_; - gchar** _tmp12_; - gint _tmp12__length1; - const gchar* _tmp13_; - g_return_val_if_fail (variable != NULL, NULL); - self = (RetroOption*) g_object_new (object_type, NULL); - _tmp0_ = *variable; - _tmp1_ = _tmp0_.value; - _tmp3_ = _tmp2_ = g_strsplit (_tmp1_, "; ", 2); - desc_and_vals = _tmp3_; - desc_and_vals_length1 = _vala_array_length (_tmp2_); - _desc_and_vals_size_ = desc_and_vals_length1; - _tmp4_ = *variable; - _tmp5_ = _tmp4_.key; - _tmp6_ = g_strdup (_tmp5_); - _g_free0 (self->key); - self->key = _tmp6_; - _tmp7_ = desc_and_vals[0]; - _tmp8_ = g_strdup (_tmp7_); - _g_free0 (self->description); - self->description = _tmp8_; - _tmp9_ = desc_and_vals[1]; - _tmp11_ = _tmp10_ = g_strsplit (_tmp9_, "|", 0); - self->values = (_vala_array_free (self->values, self->values_length1, (GDestroyNotify) g_free), NULL); - self->values = _tmp11_; - self->values_length1 = _vala_array_length (_tmp10_); - self->_values_size_ = self->values_length1; - _tmp12_ = self->values; - _tmp12__length1 = self->values_length1; - _tmp13_ = _tmp12_[0]; - retro_option_set_current (self, _tmp13_); - desc_and_vals = (_vala_array_free (desc_and_vals, desc_and_vals_length1, (GDestroyNotify) g_free), NULL); - return self; -} - - -RetroOption* retro_option_new (RetroVariable* variable) { - return retro_option_construct (RETRO_TYPE_OPTION, variable); -} - - -const gchar* retro_option_get_current (RetroOption* self) { - const gchar* result; - const gchar* _tmp0_; - g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = self->priv->_current; - result = _tmp0_; - return result; -} - - -static gboolean _vala_string_array_contains (gchar* * stack, int stack_length, gchar* needle) { - int i; - for (i = 0; i < stack_length; i++) { - if (g_strcmp0 (stack[i], needle) == 0) { - return TRUE; - } - } - return FALSE; -} - - -void retro_option_set_current (RetroOption* self, const gchar* value) { - const gchar* _tmp0_; - gchar** _tmp1_; - gint _tmp1__length1; - g_return_if_fail (self != NULL); - _tmp0_ = value; - _tmp1_ = self->values; - _tmp1__length1 = self->values_length1; - if (_vala_string_array_contains (_tmp1_, _tmp1__length1, _tmp0_)) { - const gchar* _tmp2_; - gchar* _tmp3_; - _tmp2_ = value; - _tmp3_ = g_strdup (_tmp2_); - _g_free0 (self->priv->_current); - self->priv->_current = _tmp3_; - } - g_object_notify_by_pspec ((GObject *) self, retro_option_properties[RETRO_OPTION_CURRENT]); -} - - -static void retro_option_class_init (RetroOptionClass * klass) { - retro_option_parent_class = g_type_class_peek_parent (klass); - g_type_class_add_private (klass, sizeof (RetroOptionPrivate)); - G_OBJECT_CLASS (klass)->get_property = _vala_retro_option_get_property; - G_OBJECT_CLASS (klass)->set_property = _vala_retro_option_set_property; - G_OBJECT_CLASS (klass)->finalize = retro_option_finalize; - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_OPTION_CURRENT, retro_option_properties[RETRO_OPTION_CURRENT] = g_param_spec_string ("current", "current", "current", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); -} - - -static void retro_option_instance_init (RetroOption * self) { - self->priv = RETRO_OPTION_GET_PRIVATE (self); -} - - -static void retro_option_finalize (GObject * obj) { - RetroOption * self; - self = G_TYPE_CHECK_INSTANCE_CAST (obj, RETRO_TYPE_OPTION, RetroOption); - _g_free0 (self->key); - _g_free0 (self->description); - self->values = (_vala_array_free (self->values, self->values_length1, (GDestroyNotify) g_free), NULL); - _g_free0 (self->priv->_current); - G_OBJECT_CLASS (retro_option_parent_class)->finalize (obj); -} - - -GType retro_option_get_type (void) { - static volatile gsize retro_option_type_id__volatile = 0; - if (g_once_init_enter (&retro_option_type_id__volatile)) { - static const GTypeInfo g_define_type_info = { sizeof (RetroOptionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) retro_option_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RetroOption), 0, (GInstanceInitFunc) retro_option_instance_init, NULL }; - GType retro_option_type_id; - retro_option_type_id = g_type_register_static (G_TYPE_OBJECT, "RetroOption", &g_define_type_info, 0); - g_once_init_leave (&retro_option_type_id__volatile, retro_option_type_id); - } - return retro_option_type_id__volatile; -} - - -static void _vala_retro_option_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { - RetroOption * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, RETRO_TYPE_OPTION, RetroOption); - switch (property_id) { - case RETRO_OPTION_CURRENT: - g_value_set_string (value, retro_option_get_current (self)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - - -static void _vala_retro_option_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { - RetroOption * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, RETRO_TYPE_OPTION, RetroOption); - switch (property_id) { - case RETRO_OPTION_CURRENT: - retro_option_set_current (self, g_value_get_string (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - - -static void retro_options_insert_multiple (RetroOptions* self, RetroVariable* variables, int variables_length1) { - RetroVariable* _tmp0_; - gint _tmp0__length1; - g_return_if_fail (self != NULL); - _tmp0_ = variables; - _tmp0__length1 = variables_length1; - { - RetroVariable* variable_collection = NULL; - gint variable_collection_length1 = 0; - gint _variable_collection_size_ = 0; - gint variable_it = 0; - variable_collection = _tmp0_; - variable_collection_length1 = _tmp0__length1; - for (variable_it = 0; variable_it < _tmp0__length1; variable_it = variable_it + 1) { - RetroVariable _tmp1_ = {0}; - RetroVariable variable = {0}; - retro_variable_copy (&variable_collection[variable_it], &_tmp1_); - variable = _tmp1_; - { - RetroVariable _tmp2_; - const gchar* _tmp3_; - gchar* _tmp4_; - RetroVariable _tmp5_; - RetroVariable _tmp6_ = {0}; - _tmp2_ = variable; - _tmp3_ = _tmp2_.key; - _tmp4_ = g_strdup (_tmp3_); - _tmp5_ = variable; - retro_variable_copy (&_tmp5_, &_tmp6_); - retro_options_insert (self, _tmp4_, &_tmp6_); - retro_variable_destroy (&variable); - } - } - } -} - - -static void retro_options_insert (RetroOptions* self, gchar* key, RetroVariable* value) { - GHashTable* _tmp0_; - const gchar* _tmp1_; - gchar* _tmp2_; - RetroVariable _tmp3_; - RetroOption* _tmp4_; - const gchar* _tmp5_; - g_return_if_fail (self != NULL); - g_return_if_fail (key != NULL); - g_return_if_fail (value != NULL); - _tmp0_ = self->priv->table; - _tmp1_ = key; - _tmp2_ = g_strdup (_tmp1_); - _tmp3_ = *value; - _tmp4_ = retro_option_new (&_tmp3_); - g_hash_table_insert (_tmp0_, _tmp2_, _tmp4_); - _tmp5_ = key; - g_signal_emit (self, retro_options_signals[RETRO_OPTIONS_VALUE_CHANGED_SIGNAL], 0, _tmp5_); - self->priv->update = TRUE; - _g_free0 (key); - retro_variable_destroy (value); -} - - -/** - * Sets the current value of an option. - * - * @param key the key of the option - * @param value the value of the option - */ -void retro_options_set_option (RetroOptions* self, gchar* key, gchar* value) { - GHashTable* _tmp0_; - const gchar* _tmp1_; - gconstpointer _tmp2_; - const gchar* _tmp3_; - const gchar* _tmp4_; - g_return_if_fail (self != NULL); - g_return_if_fail (key != NULL); - g_return_if_fail (value != NULL); - _tmp0_ = self->priv->table; - _tmp1_ = key; - _tmp2_ = g_hash_table_lookup (_tmp0_, _tmp1_); - _tmp3_ = value; - retro_option_set_current ((RetroOption*) _tmp2_, _tmp3_); - _tmp4_ = key; - g_signal_emit (self, retro_options_signals[RETRO_OPTIONS_VALUE_CHANGED_SIGNAL], 0, _tmp4_); - self->priv->update = TRUE; - _g_free0 (key); - _g_free0 (value); -} - - -void retro_options_set (RetroOptions* self, gchar* key, gchar* value) { - const gchar* _tmp0_; - gchar* _tmp1_; - const gchar* _tmp2_; - gchar* _tmp3_; - g_return_if_fail (self != NULL); - g_return_if_fail (key != NULL); - g_return_if_fail (value != NULL); - _tmp0_ = key; - _tmp1_ = g_strdup (_tmp0_); - _tmp2_ = value; - _tmp3_ = g_strdup (_tmp2_); - retro_options_set_option (self, _tmp1_, _tmp3_); - _g_free0 (key); - _g_free0 (value); -} - - -/** - * Checks if an option exists for a key. - * - * @param key the key of the option - * @return //true// if the option exists, //false// otherwise - */ -gboolean retro_options_contains (RetroOptions* self, const gchar* key) { - gboolean result = FALSE; - GHashTable* _tmp0_; - const gchar* _tmp1_; - gboolean _tmp2_; - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (key != NULL, FALSE); - _tmp0_ = self->priv->table; - _tmp1_ = key; - _tmp2_ = g_hash_table_contains (_tmp0_, _tmp1_); - result = _tmp2_; - return result; -} - - -/** - * Gets the current value of an option. - * - * @param key the key of the option - */ -const gchar* retro_options_lookup (RetroOptions* self, const gchar* key) { - const gchar* result = NULL; - GHashTable* _tmp0_; - const gchar* _tmp1_; - gconstpointer _tmp2_; - const gchar* _tmp3_; - const gchar* _tmp4_; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (key != NULL, NULL); - _tmp0_ = self->priv->table; - _tmp1_ = key; - _tmp2_ = g_hash_table_lookup (_tmp0_, _tmp1_); - _tmp3_ = retro_option_get_current ((RetroOption*) _tmp2_); - _tmp4_ = _tmp3_; - result = _tmp4_; - return result; -} - - -/** - * Gets the description of an option. - * - * @param key the key of the option - */ -const gchar* retro_options_lookup_description (RetroOptions* self, const gchar* key) { - const gchar* result = NULL; - GHashTable* _tmp0_; - const gchar* _tmp1_; - gconstpointer _tmp2_; - const gchar* _tmp3_; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (key != NULL, NULL); - _tmp0_ = self->priv->table; - _tmp1_ = key; - _tmp2_ = g_hash_table_lookup (_tmp0_, _tmp1_); - _tmp3_ = ((RetroOption*) _tmp2_)->description; - result = _tmp3_; - return result; -} - - -/** - * Gets the possible values of an option. - * - * @param key the key of the option - */ -gchar** retro_options_lookup_values (RetroOptions* self, const gchar* key, int* result_length1) { - gchar** result = NULL; - GHashTable* _tmp0_; - const gchar* _tmp1_; - gconstpointer _tmp2_; - gchar** _tmp3_; - gint _tmp3__length1; - gchar** _tmp4_; - gint _tmp4__length1; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (key != NULL, NULL); - _tmp0_ = self->priv->table; - _tmp1_ = key; - _tmp2_ = g_hash_table_lookup (_tmp0_, _tmp1_); - _tmp3_ = ((RetroOption*) _tmp2_)->values; - _tmp3__length1 = ((RetroOption*) _tmp2_)->values_length1; - _tmp4_ = _tmp3_; - _tmp4__length1 = _tmp3__length1; - if (result_length1) { - *result_length1 = _tmp4__length1; - } - result = _tmp4_; - return result; -} - - -const gchar* retro_options_get (RetroOptions* self, const gchar* key) { - const gchar* result = NULL; - const gchar* _tmp0_; - const gchar* _tmp1_; - g_return_val_if_fail (self != NULL, NULL); - g_return_val_if_fail (key != NULL, NULL); - _tmp0_ = key; - _tmp1_ = retro_options_lookup (self, _tmp0_); - result = _tmp1_; - return result; -} - - -/** - * Gets the keys of the available options. - * - * @return the keys of the available options - */ -GList* retro_options_get_keys (RetroOptions* self) { - GList* result = NULL; - GHashTable* _tmp0_; - GList* _tmp1_; - g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = self->priv->table; - _tmp1_ = g_hash_table_get_keys (_tmp0_); - result = _tmp1_; - return result; -} - - -/** - * Iterates through the options. - * - * @param func the function to apply to each option - */ -void retro_options_for_each (RetroOptions* self, GHFunc func, void* func_target) { - GList* _tmp0_; - g_return_if_fail (self != NULL); - _tmp0_ = retro_options_get_keys (self); - { - GList* key_collection = NULL; - GList* key_it = NULL; - key_collection = _tmp0_; - for (key_it = key_collection; key_it != NULL; key_it = key_it->next) { - const gchar* key = NULL; - key = (const gchar*) key_it->data; - { - GHFunc _tmp1_; - void* _tmp1__target; - const gchar* _tmp2_; - const gchar* _tmp3_; - const gchar* _tmp4_; - _tmp1_ = func; - _tmp1__target = func_target; - _tmp2_ = key; - _tmp3_ = key; - _tmp4_ = retro_options_get (self, _tmp3_); - _tmp1_ (_tmp2_, _tmp4_, _tmp1__target); - } - } - _g_list_free0 (key_collection); - } -} - - -void retro_options_foreach (RetroOptions* self, GHFunc func, void* func_target) { - GHFunc _tmp0_; - void* _tmp0__target; - g_return_if_fail (self != NULL); - _tmp0_ = func; - _tmp0__target = func_target; - retro_options_for_each (self, _tmp0_, _tmp0__target); -} - - -/** - * Gets the number of options offered by the {@link core} - * - * @return the number of options offered by the {@link core} - */ -guint retro_options_size (RetroOptions* self) { - guint result = 0U; - GHashTable* _tmp0_; - guint _tmp1_; - g_return_val_if_fail (self != NULL, 0U); - _tmp0_ = self->priv->table; - _tmp1_ = g_hash_table_size (_tmp0_); - result = _tmp1_; - return result; -} - - -/** - * Gets the value for a variable. - * - * @param key the key of the variable whose value should be returned - * @return the value of the variable or //null// if the key doesn't exist - */ -static gchar* retro_options_real_get_variable (RetroVariables* base, const gchar* key) { - RetroOptions * self; - gchar* result = NULL; - const gchar* _tmp0_; - gboolean _tmp1_; - const gchar* _tmp2_; - const gchar* _tmp3_; - gchar* _tmp4_; - self = (RetroOptions*) base; - g_return_val_if_fail (key != NULL, NULL); - _tmp0_ = key; - _tmp1_ = retro_options_contains (self, _tmp0_); - if (!_tmp1_) { - result = NULL; - return result; - } - _tmp2_ = key; - _tmp3_ = retro_options_lookup (self, _tmp2_); - _tmp4_ = g_strdup (_tmp3_); - result = _tmp4_; - return result; -} - - -/** - * Sets a set of variables to handle. - * - * @param variables the variables to handle - */ -static void retro_options_real_set_variable (RetroVariables* base, RetroVariable* variables, int variables_length1) { - RetroOptions * self; - RetroVariable* _tmp0_; - gint _tmp0__length1; - self = (RetroOptions*) base; - _tmp0_ = variables; - _tmp0__length1 = variables_length1; - retro_options_insert_multiple (self, _tmp0_, _tmp0__length1); -} - - -/** - * Gets whether a value have been updated since last call to - * {@link get_variable}. - * - * @return //true// if a variable have been updated, //false// otherwise - */ -static gboolean retro_options_real_get_variable_update (RetroVariables* base) { - RetroOptions * self; - gboolean result = FALSE; - gboolean _tmp0_; - self = (RetroOptions*) base; - _tmp0_ = self->priv->update; - if (_tmp0_) { - self->priv->update = FALSE; - result = TRUE; - return result; - } - result = FALSE; - return result; -} - - -RetroOptions* retro_options_construct (GType object_type) { - RetroOptions * self = NULL; - self = (RetroOptions*) g_object_new (object_type, NULL); - return self; -} - - -RetroOptions* retro_options_new (void) { - return retro_options_construct (RETRO_TYPE_OPTIONS); -} - - -static RetroCore* retro_options_real_get_core (RetroVariables* base) { - RetroCore* result; - RetroOptions* self; - RetroCore* _tmp0_; - self = (RetroOptions*) base; - _tmp0_ = self->_core; - result = _tmp0_; - return result; -} - - -static gpointer _g_object_ref0 (gpointer self) { - return self ? g_object_ref (self) : NULL; -} - - -static void retro_options_real_set_core (RetroVariables* base, RetroCore* value) { - RetroOptions* self; - RetroCore* _tmp0_; - RetroCore* _tmp1_; - RetroCore* _tmp2_; - RetroCore* _tmp3_; - gboolean _tmp4_ = FALSE; - RetroCore* _tmp5_; - self = (RetroOptions*) base; - _tmp0_ = self->_core; - _tmp1_ = value; - if (_tmp0_ == _tmp1_) { - return; - } - _tmp2_ = value; - _tmp3_ = _g_object_ref0 (_tmp2_); - _g_object_unref0 (self->_core); - self->_core = _tmp3_; - _tmp5_ = self->_core; - if (_tmp5_ != NULL) { - RetroCore* _tmp6_; - RetroVariables* _tmp7_; - _tmp6_ = self->_core; - _tmp7_ = _tmp6_->variables_interface; - _tmp4_ = _tmp7_ != self; - } else { - _tmp4_ = FALSE; - } - if (_tmp4_) { - RetroCore* _tmp8_; - RetroVariables* _tmp9_; - _tmp8_ = self->_core; - _tmp9_ = _g_object_ref0 ((RetroVariables*) self); - _g_object_unref0 (_tmp8_->variables_interface); - _tmp8_->variables_interface = _tmp9_; - } - g_object_notify_by_pspec ((GObject *) self, retro_options_properties[RETRO_OPTIONS_CORE]); -} - - -static void _g_free0_ (gpointer var) { - var = (g_free (var), NULL); -} - - -static void _g_object_unref0_ (gpointer var) { - (var == NULL) ? NULL : (var = (g_object_unref (var), NULL)); -} - - -static GObject * retro_options_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { - GObject * obj; - GObjectClass * parent_class; - RetroOptions * self; - GHashFunc _tmp0_; - GEqualFunc _tmp1_; - GHashTable* _tmp2_; - parent_class = G_OBJECT_CLASS (retro_options_parent_class); - obj = parent_class->constructor (type, n_construct_properties, construct_properties); - self = G_TYPE_CHECK_INSTANCE_CAST (obj, RETRO_TYPE_OPTIONS, RetroOptions); - self->priv->update = FALSE; - _tmp0_ = g_str_hash; - _tmp1_ = g_str_equal; - _tmp2_ = g_hash_table_new_full (_tmp0_, _tmp1_, _g_free0_, _g_object_unref0_); - _g_hash_table_unref0 (self->priv->table); - self->priv->table = _tmp2_; - return obj; -} - - -static void retro_options_class_init (RetroOptionsClass * klass) { - retro_options_parent_class = g_type_class_peek_parent (klass); - g_type_class_add_private (klass, sizeof (RetroOptionsPrivate)); - G_OBJECT_CLASS (klass)->get_property = _vala_retro_options_get_property; - G_OBJECT_CLASS (klass)->set_property = _vala_retro_options_set_property; - G_OBJECT_CLASS (klass)->constructor = retro_options_constructor; - G_OBJECT_CLASS (klass)->finalize = retro_options_finalize; - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_OPTIONS_CORE, retro_options_properties[RETRO_OPTIONS_CORE] = g_param_spec_object ("core", "core", "core", RETRO_TYPE_CORE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); - /** - * Notifies the change of an option's current value. - * - * @param key the key of the option whose value changed - */ - retro_options_signals[RETRO_OPTIONS_VALUE_CHANGED_SIGNAL] = g_signal_new ("value_changed", RETRO_TYPE_OPTIONS, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); -} - - -static void retro_options_retro_variables_interface_init (RetroVariablesIface * iface) { - retro_options_retro_variables_parent_iface = g_type_interface_peek_parent (iface); - iface->get_variable = (gchar* (*) (RetroVariables *, const gchar*)) retro_options_real_get_variable; - iface->set_variable = (void (*) (RetroVariables *, RetroVariable*, int)) retro_options_real_set_variable; - iface->get_variable_update = (gboolean (*) (RetroVariables *)) retro_options_real_get_variable_update; - iface->get_core = retro_options_real_get_core; - iface->set_core = retro_options_real_set_core; -} - - -static void retro_options_instance_init (RetroOptions * self) { - self->priv = RETRO_OPTIONS_GET_PRIVATE (self); -} - - -static void retro_options_finalize (GObject * obj) { - RetroOptions * self; - self = G_TYPE_CHECK_INSTANCE_CAST (obj, RETRO_TYPE_OPTIONS, RetroOptions); - _g_object_unref0 (self->_core); - _g_hash_table_unref0 (self->priv->table); - G_OBJECT_CLASS (retro_options_parent_class)->finalize (obj); -} - - -/** - * Manage the options of a {@link Core}. - * - * The options are defined by the core's variables. - */ -GType retro_options_get_type (void) { - static volatile gsize retro_options_type_id__volatile = 0; - if (g_once_init_enter (&retro_options_type_id__volatile)) { - static const GTypeInfo g_define_type_info = { sizeof (RetroOptionsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) retro_options_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RetroOptions), 0, (GInstanceInitFunc) retro_options_instance_init, NULL }; - static const GInterfaceInfo retro_variables_info = { (GInterfaceInitFunc) retro_options_retro_variables_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; - GType retro_options_type_id; - retro_options_type_id = g_type_register_static (G_TYPE_OBJECT, "RetroOptions", &g_define_type_info, 0); - g_type_add_interface_static (retro_options_type_id, RETRO_TYPE_VARIABLES, &retro_variables_info); - g_once_init_leave (&retro_options_type_id__volatile, retro_options_type_id); - } - return retro_options_type_id__volatile; -} - - -static void _vala_retro_options_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { - RetroOptions * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, RETRO_TYPE_OPTIONS, RetroOptions); - switch (property_id) { - case RETRO_OPTIONS_CORE: - g_value_set_object (value, retro_variables_get_core ((RetroVariables*) self)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - - -static void _vala_retro_options_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { - RetroOptions * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, RETRO_TYPE_OPTIONS, RetroOptions); - switch (property_id) { - case RETRO_OPTIONS_CORE: - retro_variables_set_core ((RetroVariables*) self, g_value_get_object (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - - -static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { - if ((array != NULL) && (destroy_func != NULL)) { - int i; - for (i = 0; i < array_length; i = i + 1) { - if (((gpointer*) array)[i] != NULL) { - destroy_func (((gpointer*) array)[i]); - } - } - } -} - - -static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { - _vala_array_destroy (array, array_length, destroy_func); - g_free (array); -} - - -static gint _vala_array_length (gpointer array) { - int length; - length = 0; - if (array) { - while (((gpointer*) array)[length]) { - length++; - } - } - return length; -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/variable/options.vala retro-gtk-0.14.0/retro-gtk/variable/options.vala --- retro-gtk-0.12.1/retro-gtk/variable/options.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/variable/options.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,206 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -namespace Retro { - -private class Option : Object { - public string key; - public string description; - public string[] values; - - private string _current; - public string current { - get { return _current; } - set { - if (value in values) - _current = value.dup (); - } - } - - public Option (Variable variable) { - var desc_and_vals = variable.value.split ("; ", 2); - - key = variable.key; - description = desc_and_vals[0]; - values = desc_and_vals[1].split ("|"); - current = values[0]; - } -} - -/** - * Manage the options of a {@link Core}. - * - * The options are defined by the core's variables. - */ -private class Options: Object, Variables { - /** - * The core whose variables will be handled. - */ - public Core _core; - public Core core { - get { return _core; } - set { - if (_core == value) return; - - _core = value; - - if (_core != null && _core.variables_interface != this) - _core.variables_interface = this; - } - } - - private HashTable table; - - /** - * Notifies the change of an option's current value. - * - * @param key the key of the option whose value changed - */ - public signal void value_changed (string key); - - private bool update; - - construct { - update = false; - table = new HashTable (str_hash, str_equal); - } - - private void insert_multiple (Variable[] variables) { - foreach (var variable in variables) { - insert (variable.key, variable); - } - } - - private void insert (owned string key, owned Variable value) { - table.insert (key, new Option (value)); - value_changed (key); - update = true; - } - - /** - * Sets the current value of an option. - * - * @param key the key of the option - * @param value the value of the option - */ - public void set_option (owned string key, owned string value) { - table[key].current = value; - value_changed (key); - update = true; - } - - public new void @set (owned string key, owned string value) { - set_option (key, value); - } - - /** - * Checks if an option exists for a key. - * - * @param key the key of the option - * @return //true// if the option exists, //false// otherwise - */ - public bool contains (string key) { - return table.contains (key); - } - - /** - * Gets the current value of an option. - * - * @param key the key of the option - */ - public unowned string lookup (string key) { - return table[key].current; - } - - /** - * Gets the description of an option. - * - * @param key the key of the option - */ - public unowned string lookup_description (string key) { - return table[key].description; - } - - /** - * Gets the possible values of an option. - * - * @param key the key of the option - */ - public unowned string[] lookup_values (string key) { - return table[key].values; - } - - public new unowned string @get (string key) { - return lookup (key); - } - - /** - * Gets the keys of the available options. - * - * @return the keys of the available options - */ - public List get_keys () { - return table.get_keys (); - } - - /** - * Iterates through the options. - * - * @param func the function to apply to each option - */ - public void for_each (HFunc func) { - foreach (var key in get_keys ()) { - func (key, this[key]); - } - } - - public void @foreach (HFunc func) { - for_each (func); - } - - /** - * Gets the number of options offered by the {@link core} - * - * @return the number of options offered by the {@link core} - */ - public uint size () { - return table.size (); - } - - /** - * Gets the value for a variable. - * - * @param key the key of the variable whose value should be returned - * @return the value of the variable or //null// if the key doesn't exist - */ - public string? get_variable (string key) { - if (!contains (key)) - return null; - - return lookup (key); - } - - /** - * Sets a set of variables to handle. - * - * @param variables the variables to handle - */ - public void set_variable (Variable[] variables) { - insert_multiple (variables); - } - - /** - * Gets whether a value have been updated since last call to - * {@link get_variable}. - * - * @return //true// if a variable have been updated, //false// otherwise - */ - public bool get_variable_update () { - if (update) { - update = false; - return true; - } - return false; - } -} - -} diff -Nru retro-gtk-0.12.1/retro-gtk/variable/variables.c retro-gtk-0.14.0/retro-gtk/variable/variables.c --- retro-gtk-0.12.1/retro-gtk/variable/variables.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/variable/variables.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,186 +0,0 @@ -/* variables.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from variables.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include -#include -#include - - -#define RETRO_TYPE_VARIABLE (retro_variable_get_type ()) -typedef struct _RetroVariable RetroVariable; -#define _g_free0(var) (var = (g_free (var), NULL)) - -#define RETRO_TYPE_VARIABLES (retro_variables_get_type ()) -#define RETRO_VARIABLES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_VARIABLES, RetroVariables)) -#define RETRO_IS_VARIABLES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_VARIABLES)) -#define RETRO_VARIABLES_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), RETRO_TYPE_VARIABLES, RetroVariablesIface)) - -typedef struct _RetroVariables RetroVariables; -typedef struct _RetroVariablesIface RetroVariablesIface; - -#define RETRO_TYPE_CORE (retro_core_get_type ()) -#define RETRO_CORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CORE, RetroCore)) -#define RETRO_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CORE, RetroCoreClass)) -#define RETRO_IS_CORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CORE)) -#define RETRO_IS_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CORE)) -#define RETRO_CORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CORE, RetroCoreClass)) - -typedef struct _RetroCore RetroCore; -typedef struct _RetroCoreClass RetroCoreClass; - -struct _RetroVariable { - gchar* key; - gchar* value; -}; - -struct _RetroVariablesIface { - GTypeInterface parent_iface; - gchar* (*get_variable) (RetroVariables* self, const gchar* key); - void (*set_variable) (RetroVariables* self, RetroVariable* variables, int variables_length1); - gboolean (*get_variable_update) (RetroVariables* self); - RetroCore* (*get_core) (RetroVariables* self); - void (*set_core) (RetroVariables* self, RetroCore* value); -}; - - - -GType retro_variable_get_type (void) G_GNUC_CONST; -RetroVariable* retro_variable_dup (const RetroVariable* self); -void retro_variable_free (RetroVariable* self); -void retro_variable_copy (const RetroVariable* self, RetroVariable* dest); -void retro_variable_destroy (RetroVariable* self); -GType retro_core_get_type (void) G_GNUC_CONST; -GType retro_variables_get_type (void) G_GNUC_CONST; -gchar* retro_variables_get_variable (RetroVariables* self, const gchar* key); -void retro_variables_set_variable (RetroVariables* self, RetroVariable* variables, int variables_length1); -gboolean retro_variables_get_variable_update (RetroVariables* self); -RetroCore* retro_variables_get_core (RetroVariables* self); -void retro_variables_set_core (RetroVariables* self, RetroCore* value); - - -void retro_variable_copy (const RetroVariable* self, RetroVariable* dest) { - const gchar* _tmp0_; - gchar* _tmp1_; - const gchar* _tmp2_; - gchar* _tmp3_; - _tmp0_ = (*self).key; - _tmp1_ = g_strdup (_tmp0_); - _g_free0 ((*dest).key); - (*dest).key = _tmp1_; - _tmp2_ = (*self).value; - _tmp3_ = g_strdup (_tmp2_); - _g_free0 ((*dest).value); - (*dest).value = _tmp3_; -} - - -void retro_variable_destroy (RetroVariable* self) { - _g_free0 ((*self).key); - _g_free0 ((*self).value); -} - - -RetroVariable* retro_variable_dup (const RetroVariable* self) { - RetroVariable* dup; - dup = g_new0 (RetroVariable, 1); - retro_variable_copy (self, dup); - return dup; -} - - -void retro_variable_free (RetroVariable* self) { - retro_variable_destroy (self); - g_free (self); -} - - -GType retro_variable_get_type (void) { - static volatile gsize retro_variable_type_id__volatile = 0; - if (g_once_init_enter (&retro_variable_type_id__volatile)) { - GType retro_variable_type_id; - retro_variable_type_id = g_boxed_type_register_static ("RetroVariable", (GBoxedCopyFunc) retro_variable_dup, (GBoxedFreeFunc) retro_variable_free); - g_once_init_leave (&retro_variable_type_id__volatile, retro_variable_type_id); - } - return retro_variable_type_id__volatile; -} - - -/** - * Gets the value for a variable. - * - * @param key the key of the variable whose value should be returned - * @return the value of the variable or //null// if the key doesn't exist - */ -gchar* retro_variables_get_variable (RetroVariables* self, const gchar* key) { - g_return_val_if_fail (self != NULL, NULL); - return RETRO_VARIABLES_GET_INTERFACE (self)->get_variable (self, key); -} - - -/** - * Sets a set of variables to handle. - * - * @param variables the variables to handle - */ -void retro_variables_set_variable (RetroVariables* self, RetroVariable* variables, int variables_length1) { - g_return_if_fail (self != NULL); - RETRO_VARIABLES_GET_INTERFACE (self)->set_variable (self, variables, variables_length1); -} - - -/** - * Gets whether a value have been updated since last call to - * {@link get_variable}. - * - * @return //true// if a variable have been updated, //false// otherwise - */ -gboolean retro_variables_get_variable_update (RetroVariables* self) { - g_return_val_if_fail (self != NULL, FALSE); - return RETRO_VARIABLES_GET_INTERFACE (self)->get_variable_update (self); -} - - -RetroCore* retro_variables_get_core (RetroVariables* self) { - g_return_val_if_fail (self != NULL, NULL); - return RETRO_VARIABLES_GET_INTERFACE (self)->get_core (self); -} - - -void retro_variables_set_core (RetroVariables* self, RetroCore* value) { - g_return_if_fail (self != NULL); - RETRO_VARIABLES_GET_INTERFACE (self)->set_core (self, value); -} - - -static void retro_variables_base_init (RetroVariablesIface * iface) { - static gboolean initialized = FALSE; - if (!initialized) { - initialized = TRUE; - /** - * The core whose variables will be handled. - */ - g_object_interface_install_property (iface, g_param_spec_object ("core", "core", "core", RETRO_TYPE_CORE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); - } -} - - -/** - * An interface to handle a {@link Core}'s variables. - */ -GType retro_variables_get_type (void) { - static volatile gsize retro_variables_type_id__volatile = 0; - if (g_once_init_enter (&retro_variables_type_id__volatile)) { - static const GTypeInfo g_define_type_info = { sizeof (RetroVariablesIface), (GBaseInitFunc) retro_variables_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL }; - GType retro_variables_type_id; - retro_variables_type_id = g_type_register_static (G_TYPE_INTERFACE, "RetroVariables", &g_define_type_info, 0); - g_type_interface_add_prerequisite (retro_variables_type_id, G_TYPE_OBJECT); - g_once_init_leave (&retro_variables_type_id__volatile, retro_variables_type_id); - } - return retro_variables_type_id__volatile; -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/variable/variables.vala retro-gtk-0.14.0/retro-gtk/variable/variables.vala --- retro-gtk-0.12.1/retro-gtk/variable/variables.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/variable/variables.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -namespace Retro { - -/** - * A string key-value pair. - * - * Used by a {@link Core} in its environment callback. - */ -private struct Variable { - /** - * The key of the pair. - */ - public string? key; - - /** - * The value of the pair. - * - * If the key is null while retrieving a variable, - * value should be the complete environment variables formatted as - * key-value pairs separated by semicolons, like so: - * "key1=value1;key2=value2;...". - * - * If the key exists while retrieving a variable, value should be the - * value associated to the key. - * - * If the key doesn't exist while retrieving a variable, the value should - * be null. - */ - public string? value; -} - -/** - * An interface to handle a {@link Core}'s variables. - */ -private interface Variables : Object { - /** - * The core whose variables will be handled. - */ - public abstract Core core { get; set; } - - /** - * Gets the value for a variable. - * - * @param key the key of the variable whose value should be returned - * @return the value of the variable or //null// if the key doesn't exist - */ - public abstract string? get_variable (string key); - - /** - * Sets a set of variables to handle. - * - * @param variables the variables to handle - */ - public abstract void set_variable (Variable[] variables); - - /** - * Gets whether a value have been updated since last call to - * {@link get_variable}. - * - * @return //true// if a variable have been updated, //false// otherwise - */ - public abstract bool get_variable_update (); -} - -} - diff -Nru retro-gtk-0.12.1/retro-gtk/video/cairo-display.c retro-gtk-0.14.0/retro-gtk/video/cairo-display.c --- retro-gtk-0.12.1/retro-gtk/video/cairo-display.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/video/cairo-display.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,658 +0,0 @@ -/* cairo-display.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from cairo-display.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#define RETRO_TYPE_CAIRO_DISPLAY (retro_cairo_display_get_type ()) -#define RETRO_CAIRO_DISPLAY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CAIRO_DISPLAY, RetroCairoDisplay)) -#define RETRO_CAIRO_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CAIRO_DISPLAY, RetroCairoDisplayClass)) -#define RETRO_IS_CAIRO_DISPLAY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CAIRO_DISPLAY)) -#define RETRO_IS_CAIRO_DISPLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CAIRO_DISPLAY)) -#define RETRO_CAIRO_DISPLAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CAIRO_DISPLAY, RetroCairoDisplayClass)) - -typedef struct _RetroCairoDisplay RetroCairoDisplay; -typedef struct _RetroCairoDisplayClass RetroCairoDisplayClass; -typedef struct _RetroCairoDisplayPrivate RetroCairoDisplayPrivate; - -#define RETRO_TYPE_CORE (retro_core_get_type ()) -#define RETRO_CORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), RETRO_TYPE_CORE, RetroCore)) -#define RETRO_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), RETRO_TYPE_CORE, RetroCoreClass)) -#define RETRO_IS_CORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), RETRO_TYPE_CORE)) -#define RETRO_IS_CORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), RETRO_TYPE_CORE)) -#define RETRO_CORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), RETRO_TYPE_CORE, RetroCoreClass)) - -typedef struct _RetroCore RetroCore; -typedef struct _RetroCoreClass RetroCoreClass; - -#define RETRO_TYPE_VIDEO_FILTER (retro_video_filter_get_type ()) -enum { - RETRO_CAIRO_DISPLAY_DUMMY_PROPERTY, - RETRO_CAIRO_DISPLAY_PIXBUF, - RETRO_CAIRO_DISPLAY_LAST_PROPERTY -}; -static GParamSpec* retro_cairo_display_properties[RETRO_CAIRO_DISPLAY_LAST_PROPERTY]; -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) - -#define RETRO_TYPE_PIXEL_FORMAT (retro_pixel_format_get_type ()) -#define _g_free0(var) (var = (g_free (var), NULL)) -#define _cairo_pattern_destroy0(var) ((var == NULL) ? NULL : (var = (cairo_pattern_destroy (var), NULL))) -#define _cairo_surface_destroy0(var) ((var == NULL) ? NULL : (var = (cairo_surface_destroy (var), NULL))) - -struct _RetroCairoDisplay { - GtkDrawingArea parent_instance; - RetroCairoDisplayPrivate * priv; -}; - -struct _RetroCairoDisplayClass { - GtkDrawingAreaClass parent_class; -}; - -typedef enum { - RETRO_VIDEO_FILTER_SMOOTH, - RETRO_VIDEO_FILTER_SHARP -} RetroVideoFilter; - -struct _RetroCairoDisplayPrivate { - GdkPixbuf* _pixbuf; - RetroCore* core; - RetroVideoFilter filter; - gulong on_video_output_id; - gfloat aspect_ratio; - gboolean show_surface; -}; - -typedef enum { - RETRO_PIXEL_FORMAT_XRGB1555, - RETRO_PIXEL_FORMAT_XRGB8888, - RETRO_PIXEL_FORMAT_RGB565, - RETRO_PIXEL_FORMAT_UNKNOWN = -1 -} RetroPixelFormat; - - -static gpointer retro_cairo_display_parent_class = NULL; - -GType retro_cairo_display_get_type (void) G_GNUC_CONST; -GType retro_core_get_type (void) G_GNUC_CONST; -GType retro_video_filter_get_type (void) G_GNUC_CONST; -#define RETRO_CAIRO_DISPLAY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), RETRO_TYPE_CAIRO_DISPLAY, RetroCairoDisplayPrivate)) -#define RETRO_CAIRO_DISPLAY_Y_DPI 1000000.0f -GType retro_pixel_format_get_type (void) G_GNUC_CONST; -GdkPixbuf* gdk_pixbuf_new_from_video (guint8* data, guint width, guint height, gsize pitch, RetroPixelFormat pixel_format); -void retro_cairo_display_set_core (RetroCairoDisplay* self, RetroCore* core); -static void retro_cairo_display_on_video_output (RetroCairoDisplay* self, guint8* data, int data_length1, guint width, guint height, gsize pitch, RetroPixelFormat pixel_format, gfloat aspect_ratio); -static void _retro_cairo_display_on_video_output_retro_core_video_output (RetroCore* _sender, guint8* data, int data_length1, guint width, guint height, gsize pitch, RetroPixelFormat pixel_format, gfloat aspect_ratio, gpointer self); -void retro_cairo_display_set_filter (RetroCairoDisplay* self, RetroVideoFilter filter); -gboolean retro_cairo_display_get_coordinates_on_display (RetroCairoDisplay* self, gdouble widget_x, gdouble widget_y, gdouble* display_x, gdouble* display_y); -static void retro_cairo_display_get_video_box (RetroCairoDisplay* self, gdouble* width, gdouble* height, gdouble* x, gdouble* y); -void retro_cairo_display_set_pixbuf (RetroCairoDisplay* self, GdkPixbuf* value); -GdkPixbuf* retro_cairo_display_get_pixbuf (RetroCairoDisplay* self); -void retro_cairo_display_show_video (RetroCairoDisplay* self); -void retro_cairo_display_hide_video (RetroCairoDisplay* self); -static gboolean retro_cairo_display_real_draw (GtkWidget* base, cairo_t* cr); -static void retro_cairo_display_draw_background (RetroCairoDisplay* self, cairo_t* cr); -RetroCairoDisplay* retro_cairo_display_new (void); -RetroCairoDisplay* retro_cairo_display_construct (GType object_type); -static GObject * retro_cairo_display_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); -static void _gtk_widget_queue_draw_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self); -static void retro_cairo_display_finalize (GObject * obj); -static void _vala_retro_cairo_display_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec); -static void _vala_retro_cairo_display_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec); - - -static gpointer _g_object_ref0 (gpointer self) { - return self ? g_object_ref (self) : NULL; -} - - -static void _retro_cairo_display_on_video_output_retro_core_video_output (RetroCore* _sender, guint8* data, int data_length1, guint width, guint height, gsize pitch, RetroPixelFormat pixel_format, gfloat aspect_ratio, gpointer self) { - retro_cairo_display_on_video_output ((RetroCairoDisplay*) self, data, data_length1, width, height, pitch, pixel_format, aspect_ratio); -} - - -void retro_cairo_display_set_core (RetroCairoDisplay* self, RetroCore* core) { - RetroCore* _tmp0_; - RetroCore* _tmp3_; - RetroCore* _tmp4_; - RetroCore* _tmp5_; - g_return_if_fail (self != NULL); - _tmp0_ = self->priv->core; - if (_tmp0_ != NULL) { - RetroCore* _tmp1_; - gulong _tmp2_; - _tmp1_ = self->priv->core; - _tmp2_ = self->priv->on_video_output_id; - g_signal_handler_disconnect ((GObject*) _tmp1_, _tmp2_); - } - _tmp3_ = core; - _tmp4_ = _g_object_ref0 (_tmp3_); - _g_object_unref0 (self->priv->core); - self->priv->core = _tmp4_; - _tmp5_ = self->priv->core; - if (_tmp5_ != NULL) { - RetroCore* _tmp6_; - gulong _tmp7_; - _tmp6_ = core; - _tmp7_ = g_signal_connect_object (_tmp6_, "video-output", (GCallback) _retro_cairo_display_on_video_output_retro_core_video_output, self, 0); - self->priv->on_video_output_id = _tmp7_; - } -} - - -void retro_cairo_display_set_filter (RetroCairoDisplay* self, RetroVideoFilter filter) { - RetroVideoFilter _tmp0_; - g_return_if_fail (self != NULL); - _tmp0_ = filter; - self->priv->filter = _tmp0_; - gtk_widget_queue_draw ((GtkWidget*) self); -} - - -gboolean retro_cairo_display_get_coordinates_on_display (RetroCairoDisplay* self, gdouble widget_x, gdouble widget_y, gdouble* display_x, gdouble* display_y) { - gdouble _vala_display_x = 0.0; - gdouble _vala_display_y = 0.0; - gboolean result = FALSE; - gdouble w = 0.0; - gdouble h = 0.0; - gdouble x = 0.0; - gdouble y = 0.0; - gdouble _tmp0_ = 0.0; - gdouble _tmp1_ = 0.0; - gdouble _tmp2_ = 0.0; - gdouble _tmp3_ = 0.0; - gdouble _tmp4_; - gdouble _tmp5_; - gdouble _tmp6_; - gdouble _tmp7_; - gdouble _tmp8_; - gdouble _tmp9_; - gdouble _tmp10_; - gdouble _tmp11_; - gboolean _tmp12_ = FALSE; - gdouble _tmp13_; - gdouble _tmp14_; - g_return_val_if_fail (self != NULL, FALSE); - retro_cairo_display_get_video_box (self, &_tmp0_, &_tmp1_, &_tmp2_, &_tmp3_); - w = _tmp0_; - h = _tmp1_; - x = _tmp2_; - y = _tmp3_; - _tmp4_ = widget_x; - _tmp5_ = x; - _tmp6_ = w; - _tmp7_ = w; - _vala_display_x = (((_tmp4_ - _tmp5_) * 2.0) - _tmp6_) / _tmp7_; - _tmp8_ = widget_y; - _tmp9_ = y; - _tmp10_ = h; - _tmp11_ = h; - _vala_display_y = (((_tmp8_ - _tmp9_) * 2.0) - _tmp10_) / _tmp11_; - _tmp13_ = _vala_display_x; - _tmp14_ = _tmp13_; - if (((-1.0) <= _tmp14_) && (_tmp14_ <= 1.0)) { - gdouble _tmp15_; - gdouble _tmp16_; - _tmp15_ = _vala_display_y; - _tmp16_ = _tmp15_; - _tmp12_ = ((-1.0) <= _tmp16_) && (_tmp16_ <= 1.0); - } else { - _tmp12_ = FALSE; - } - result = _tmp12_; - if (display_x) { - *display_x = _vala_display_x; - } - if (display_y) { - *display_y = _vala_display_y; - } - return result; -} - - -static void retro_cairo_display_on_video_output (RetroCairoDisplay* self, guint8* data, int data_length1, guint width, guint height, gsize pitch, RetroPixelFormat pixel_format, gfloat aspect_ratio) { - gfloat _tmp0_; - guint8* _tmp1_; - gint _tmp1__length1; - guint _tmp2_; - guint _tmp3_; - gsize _tmp4_; - RetroPixelFormat _tmp5_; - GdkPixbuf* _tmp6_; - GdkPixbuf* _tmp7_; - gfloat x_dpi = 0.0F; - gfloat _tmp8_; - gchar* x_dpi_string = NULL; - gchar* _tmp9_; - gchar* y_dpi_string = NULL; - gchar* _tmp10_; - GdkPixbuf* _tmp11_; - GdkPixbuf* _tmp12_; - g_return_if_fail (self != NULL); - _tmp0_ = aspect_ratio; - self->priv->aspect_ratio = _tmp0_; - _tmp1_ = data; - _tmp1__length1 = data_length1; - _tmp2_ = width; - _tmp3_ = height; - _tmp4_ = pitch; - _tmp5_ = pixel_format; - _tmp6_ = gdk_pixbuf_new_from_video (_tmp1_, _tmp2_, _tmp3_, _tmp4_, _tmp5_); - _tmp7_ = _tmp6_; - retro_cairo_display_set_pixbuf (self, _tmp7_); - _g_object_unref0 (_tmp7_); - _tmp8_ = aspect_ratio; - x_dpi = _tmp8_ * RETRO_CAIRO_DISPLAY_Y_DPI; - _tmp9_ = g_strdup_printf ("%g", x_dpi); - x_dpi_string = _tmp9_; - _tmp10_ = g_strdup_printf ("%g", RETRO_CAIRO_DISPLAY_Y_DPI); - y_dpi_string = _tmp10_; - _tmp11_ = self->priv->_pixbuf; - gdk_pixbuf_set_option (_tmp11_, "x-dpi", x_dpi_string); - _tmp12_ = self->priv->_pixbuf; - gdk_pixbuf_set_option (_tmp12_, "y-dpi", y_dpi_string); - _g_free0 (y_dpi_string); - _g_free0 (x_dpi_string); -} - - -void retro_cairo_display_show_video (RetroCairoDisplay* self) { - g_return_if_fail (self != NULL); - self->priv->show_surface = TRUE; - gtk_widget_queue_draw ((GtkWidget*) self); -} - - -void retro_cairo_display_hide_video (RetroCairoDisplay* self) { - g_return_if_fail (self != NULL); - self->priv->show_surface = FALSE; - gtk_widget_queue_draw ((GtkWidget*) self); -} - - -static gpointer _cairo_pattern_reference0 (gpointer self) { - return self ? cairo_pattern_reference (self) : NULL; -} - - -static gboolean retro_cairo_display_real_draw (GtkWidget* base, cairo_t* cr) { - RetroCairoDisplay * self; - gboolean result = FALSE; - cairo_t* _tmp0_; - gboolean _tmp1_; - GdkPixbuf* to_draw = NULL; - GdkPixbuf* _tmp2_; - GdkPixbuf* _tmp3_; - GdkPixbuf* _tmp4_; - gboolean _tmp5_; - gboolean _tmp6_; - cairo_surface_t* surface = NULL; - GdkPixbuf* _tmp21_; - cairo_surface_t* _tmp22_; - gdouble w = 0.0; - gdouble h = 0.0; - gdouble x = 0.0; - gdouble y = 0.0; - gdouble _tmp23_ = 0.0; - gdouble _tmp24_ = 0.0; - gdouble _tmp25_ = 0.0; - gdouble _tmp26_ = 0.0; - gdouble xs = 0.0; - gdouble _tmp27_; - GdkPixbuf* _tmp28_; - gint _tmp29_; - gint _tmp30_; - gdouble ys = 0.0; - gdouble _tmp31_; - GdkPixbuf* _tmp32_; - gint _tmp33_; - gint _tmp34_; - cairo_t* _tmp35_; - gdouble _tmp36_; - gdouble _tmp37_; - cairo_t* _tmp38_; - cairo_surface_t* _tmp39_; - gdouble _tmp40_; - gdouble _tmp41_; - gdouble _tmp42_; - gdouble _tmp43_; - cairo_pattern_t* source = NULL; - cairo_t* _tmp44_; - cairo_pattern_t* _tmp45_; - cairo_pattern_t* _tmp46_; - RetroVideoFilter _tmp47_; - cairo_t* _tmp50_; - self = (RetroCairoDisplay*) base; - g_return_val_if_fail (cr != NULL, FALSE); - _tmp0_ = cr; - retro_cairo_display_draw_background (self, _tmp0_); - _tmp1_ = self->priv->show_surface; - if (!_tmp1_) { - result = FALSE; - return result; - } - _tmp2_ = self->priv->_pixbuf; - _tmp3_ = _g_object_ref0 (_tmp2_); - to_draw = _tmp3_; - _tmp4_ = to_draw; - if (_tmp4_ == NULL) { - result = FALSE; - _g_object_unref0 (to_draw); - return result; - } - _tmp5_ = gtk_widget_get_sensitive ((GtkWidget*) self); - _tmp6_ = _tmp5_; - if (!_tmp6_) { - GdkPixbuf* desaturated = NULL; - GdkPixbuf* _tmp7_; - gboolean _tmp8_; - gboolean _tmp9_; - GdkPixbuf* _tmp10_; - gint _tmp11_; - gint _tmp12_; - GdkPixbuf* _tmp13_; - gint _tmp14_; - gint _tmp15_; - GdkPixbuf* _tmp16_; - GdkPixbuf* _tmp17_; - GdkPixbuf* _tmp18_; - GdkPixbuf* _tmp19_; - GdkPixbuf* _tmp20_; - _tmp7_ = to_draw; - _tmp8_ = gdk_pixbuf_get_has_alpha (_tmp7_); - _tmp9_ = _tmp8_; - _tmp10_ = to_draw; - _tmp11_ = gdk_pixbuf_get_width (_tmp10_); - _tmp12_ = _tmp11_; - _tmp13_ = to_draw; - _tmp14_ = gdk_pixbuf_get_height (_tmp13_); - _tmp15_ = _tmp14_; - _tmp16_ = gdk_pixbuf_new (GDK_COLORSPACE_RGB, _tmp9_, 8, _tmp12_, _tmp15_); - desaturated = _tmp16_; - _tmp17_ = to_draw; - _tmp18_ = desaturated; - gdk_pixbuf_saturate_and_pixelate (_tmp17_, _tmp18_, 0.0f, FALSE); - _tmp19_ = desaturated; - _tmp20_ = _g_object_ref0 (_tmp19_); - _g_object_unref0 (to_draw); - to_draw = _tmp20_; - _g_object_unref0 (desaturated); - } - _tmp21_ = to_draw; - _tmp22_ = gdk_cairo_surface_create_from_pixbuf (_tmp21_, 1, NULL); - surface = _tmp22_; - retro_cairo_display_get_video_box (self, &_tmp23_, &_tmp24_, &_tmp25_, &_tmp26_); - w = _tmp23_; - h = _tmp24_; - x = _tmp25_; - y = _tmp26_; - _tmp27_ = w; - _tmp28_ = to_draw; - _tmp29_ = gdk_pixbuf_get_width (_tmp28_); - _tmp30_ = _tmp29_; - xs = _tmp27_ / _tmp30_; - _tmp31_ = h; - _tmp32_ = to_draw; - _tmp33_ = gdk_pixbuf_get_height (_tmp32_); - _tmp34_ = _tmp33_; - ys = _tmp31_ / _tmp34_; - _tmp35_ = cr; - _tmp36_ = xs; - _tmp37_ = ys; - cairo_scale (_tmp35_, _tmp36_, _tmp37_); - _tmp38_ = cr; - _tmp39_ = surface; - _tmp40_ = x; - _tmp41_ = xs; - _tmp42_ = y; - _tmp43_ = ys; - cairo_set_source_surface (_tmp38_, _tmp39_, _tmp40_ / _tmp41_, _tmp42_ / _tmp43_); - _tmp44_ = cr; - _tmp45_ = cairo_get_source (_tmp44_); - _tmp46_ = _cairo_pattern_reference0 (_tmp45_); - source = _tmp46_; - _tmp47_ = self->priv->filter; - switch (_tmp47_) { - case RETRO_VIDEO_FILTER_SHARP: - { - cairo_pattern_t* _tmp48_; - _tmp48_ = source; - cairo_pattern_set_filter (_tmp48_, CAIRO_FILTER_NEAREST); - break; - } - default: - case RETRO_VIDEO_FILTER_SMOOTH: - { - cairo_pattern_t* _tmp49_; - _tmp49_ = source; - cairo_pattern_set_filter (_tmp49_, CAIRO_FILTER_BILINEAR); - break; - } - } - _tmp50_ = cr; - cairo_paint (_tmp50_); - result = TRUE; - _cairo_pattern_destroy0 (source); - _cairo_surface_destroy0 (surface); - _g_object_unref0 (to_draw); - return result; -} - - -static void retro_cairo_display_draw_background (RetroCairoDisplay* self, cairo_t* cr) { - cairo_t* _tmp0_; - cairo_t* _tmp1_; - g_return_if_fail (self != NULL); - g_return_if_fail (cr != NULL); - _tmp0_ = cr; - cairo_set_source_rgb (_tmp0_, (gdouble) 0, (gdouble) 0, (gdouble) 0); - _tmp1_ = cr; - cairo_paint (_tmp1_); -} - - -static void retro_cairo_display_get_video_box (RetroCairoDisplay* self, gdouble* width, gdouble* height, gdouble* x, gdouble* y) { - gdouble _vala_width = 0.0; - gdouble _vala_height = 0.0; - gdouble _vala_x = 0.0; - gdouble _vala_y = 0.0; - gdouble w = 0.0; - gint _tmp0_; - gdouble h = 0.0; - gint _tmp1_; - gdouble display_ratio = 0.0; - gfloat _tmp2_; - gdouble allocated_ratio = 0.0; - gdouble _tmp3_; - gdouble _tmp4_; - gdouble _tmp5_; - gdouble _tmp6_; - gdouble _tmp13_; - gdouble _tmp14_; - gdouble _tmp15_; - gdouble _tmp16_; - g_return_if_fail (self != NULL); - _tmp0_ = gtk_widget_get_allocated_width ((GtkWidget*) self); - w = (gdouble) _tmp0_; - _tmp1_ = gtk_widget_get_allocated_height ((GtkWidget*) self); - h = (gdouble) _tmp1_; - _tmp2_ = self->priv->aspect_ratio; - display_ratio = (gdouble) _tmp2_; - _tmp3_ = w; - _tmp4_ = h; - allocated_ratio = _tmp3_ / _tmp4_; - _tmp5_ = allocated_ratio; - _tmp6_ = display_ratio; - if (_tmp5_ > _tmp6_) { - gdouble _tmp7_; - gdouble _tmp8_; - gdouble _tmp9_; - _tmp7_ = h; - _vala_height = _tmp7_; - _tmp8_ = h; - _tmp9_ = display_ratio; - _vala_width = (gdouble) (_tmp8_ * _tmp9_); - } else { - gdouble _tmp10_; - gdouble _tmp11_; - gdouble _tmp12_; - _tmp10_ = w; - _vala_width = _tmp10_; - _tmp11_ = w; - _tmp12_ = display_ratio; - _vala_height = (gdouble) (_tmp11_ / _tmp12_); - } - _tmp13_ = w; - _tmp14_ = _vala_width; - _vala_x = (_tmp13_ - _tmp14_) / 2; - _tmp15_ = h; - _tmp16_ = _vala_height; - _vala_y = (_tmp15_ - _tmp16_) / 2; - if (width) { - *width = _vala_width; - } - if (height) { - *height = _vala_height; - } - if (x) { - *x = _vala_x; - } - if (y) { - *y = _vala_y; - } -} - - -RetroCairoDisplay* retro_cairo_display_construct (GType object_type) { - RetroCairoDisplay * self = NULL; - self = (RetroCairoDisplay*) g_object_new (object_type, NULL); - return self; -} - - -RetroCairoDisplay* retro_cairo_display_new (void) { - return retro_cairo_display_construct (RETRO_TYPE_CAIRO_DISPLAY); -} - - -GdkPixbuf* retro_cairo_display_get_pixbuf (RetroCairoDisplay* self) { - GdkPixbuf* result; - GdkPixbuf* _tmp0_; - g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = self->priv->_pixbuf; - result = _tmp0_; - return result; -} - - -void retro_cairo_display_set_pixbuf (RetroCairoDisplay* self, GdkPixbuf* value) { - g_return_if_fail (self != NULL); - if (retro_cairo_display_get_pixbuf (self) != value) { - GdkPixbuf* _tmp0_; - GdkPixbuf* _tmp1_; - _tmp0_ = value; - _tmp1_ = _g_object_ref0 (_tmp0_); - _g_object_unref0 (self->priv->_pixbuf); - self->priv->_pixbuf = _tmp1_; - g_object_notify_by_pspec ((GObject *) self, retro_cairo_display_properties[RETRO_CAIRO_DISPLAY_PIXBUF]); - } -} - - -static void _gtk_widget_queue_draw_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) { - gtk_widget_queue_draw ((GtkWidget*) self); -} - - -static GObject * retro_cairo_display_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { - GObject * obj; - GObjectClass * parent_class; - RetroCairoDisplay * self; - parent_class = G_OBJECT_CLASS (retro_cairo_display_parent_class); - obj = parent_class->constructor (type, n_construct_properties, construct_properties); - self = G_TYPE_CHECK_INSTANCE_CAST (obj, RETRO_TYPE_CAIRO_DISPLAY, RetroCairoDisplay); - self->priv->filter = RETRO_VIDEO_FILTER_SMOOTH; - self->priv->show_surface = TRUE; - g_signal_connect_object ((GObject*) self, "notify::sensitive", (GCallback) _gtk_widget_queue_draw_g_object_notify, (GtkWidget*) self, 0); - g_signal_connect_object ((GObject*) self, "notify::pixbuf", (GCallback) _gtk_widget_queue_draw_g_object_notify, (GtkWidget*) self, 0); - return obj; -} - - -static void retro_cairo_display_class_init (RetroCairoDisplayClass * klass) { - retro_cairo_display_parent_class = g_type_class_peek_parent (klass); - g_type_class_add_private (klass, sizeof (RetroCairoDisplayPrivate)); - ((GtkWidgetClass *) klass)->draw = (gboolean (*) (GtkWidget *, cairo_t*)) retro_cairo_display_real_draw; - G_OBJECT_CLASS (klass)->get_property = _vala_retro_cairo_display_get_property; - G_OBJECT_CLASS (klass)->set_property = _vala_retro_cairo_display_set_property; - G_OBJECT_CLASS (klass)->constructor = retro_cairo_display_constructor; - G_OBJECT_CLASS (klass)->finalize = retro_cairo_display_finalize; - g_object_class_install_property (G_OBJECT_CLASS (klass), RETRO_CAIRO_DISPLAY_PIXBUF, retro_cairo_display_properties[RETRO_CAIRO_DISPLAY_PIXBUF] = g_param_spec_object ("pixbuf", "pixbuf", "pixbuf", gdk_pixbuf_get_type (), G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE)); -} - - -static void retro_cairo_display_instance_init (RetroCairoDisplay * self) { - self->priv = RETRO_CAIRO_DISPLAY_GET_PRIVATE (self); -} - - -static void retro_cairo_display_finalize (GObject * obj) { - RetroCairoDisplay * self; - self = G_TYPE_CHECK_INSTANCE_CAST (obj, RETRO_TYPE_CAIRO_DISPLAY, RetroCairoDisplay); - _g_object_unref0 (self->priv->_pixbuf); - _g_object_unref0 (self->priv->core); - G_OBJECT_CLASS (retro_cairo_display_parent_class)->finalize (obj); -} - - -GType retro_cairo_display_get_type (void) { - static volatile gsize retro_cairo_display_type_id__volatile = 0; - if (g_once_init_enter (&retro_cairo_display_type_id__volatile)) { - static const GTypeInfo g_define_type_info = { sizeof (RetroCairoDisplayClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) retro_cairo_display_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RetroCairoDisplay), 0, (GInstanceInitFunc) retro_cairo_display_instance_init, NULL }; - GType retro_cairo_display_type_id; - retro_cairo_display_type_id = g_type_register_static (gtk_drawing_area_get_type (), "RetroCairoDisplay", &g_define_type_info, 0); - g_once_init_leave (&retro_cairo_display_type_id__volatile, retro_cairo_display_type_id); - } - return retro_cairo_display_type_id__volatile; -} - - -static void _vala_retro_cairo_display_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { - RetroCairoDisplay * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, RETRO_TYPE_CAIRO_DISPLAY, RetroCairoDisplay); - switch (property_id) { - case RETRO_CAIRO_DISPLAY_PIXBUF: - g_value_set_object (value, retro_cairo_display_get_pixbuf (self)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - - -static void _vala_retro_cairo_display_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { - RetroCairoDisplay * self; - self = G_TYPE_CHECK_INSTANCE_CAST (object, RETRO_TYPE_CAIRO_DISPLAY, RetroCairoDisplay); - switch (property_id) { - case RETRO_CAIRO_DISPLAY_PIXBUF: - retro_cairo_display_set_pixbuf (self, g_value_get_object (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/video/cairo-display.vala retro-gtk-0.14.0/retro-gtk/video/cairo-display.vala --- retro-gtk-0.12.1/retro-gtk/video/cairo-display.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/video/cairo-display.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,143 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -public class Retro.CairoDisplay : Gtk.DrawingArea { - // Because gdk-pixbuf saves dpi as integer we have to multiply it by big - // enough number to represent aspect ratio precisely. - private const float Y_DPI = 1000000.0f; - - public Gdk.Pixbuf pixbuf { set; get; } - - private Core core; - private VideoFilter filter; - private ulong on_video_output_id; - private float aspect_ratio; - private bool show_surface; - - construct { - filter = VideoFilter.SMOOTH; - show_surface = true; - - notify["sensitive"].connect (queue_draw); - notify["pixbuf"].connect (queue_draw); - } - - [CCode (cname = "gdk_pixbuf_new_from_video")] - static extern Gdk.Pixbuf gdk_pixbuf_new_from_video ([CCode (array_length = false)] uint8[] data, uint width, uint height, size_t pitch, PixelFormat pixel_format); - - public void set_core (Core? core) { - if (this.core != null) - this.core.disconnect (on_video_output_id); - - this.core = core; - - if (this.core != null) - on_video_output_id = core.video_output.connect (on_video_output); - } - - public void set_filter (VideoFilter filter) { - this.filter = filter; - queue_draw (); - } - - public bool get_coordinates_on_display (double widget_x, double widget_y, out double display_x, out double display_y) { - double w, h, x, y; - get_video_box (out w, out h, out x, out y); - - // Return coordinates as a [-1.0,1.0] scale, (0.0,0.0) is the center. - display_x = ((widget_x-x) * 2.0 - w) / w; - display_y = ((widget_y-y) * 2.0 - h) / h; - - return (-1.0 <= display_x <= 1.0) && (-1.0 <= display_y <= 1.0); - } - - private void on_video_output (uint8[] data, uint width, uint height, size_t pitch, PixelFormat pixel_format, float aspect_ratio) { - this.aspect_ratio = aspect_ratio; - pixbuf = gdk_pixbuf_new_from_video (data, width, height, pitch, pixel_format); - - var x_dpi = aspect_ratio * Y_DPI; - var x_dpi_string = x_dpi.to_string (); - var y_dpi_string = Y_DPI.to_string (); - - pixbuf.set_option ("x-dpi", x_dpi_string); - pixbuf.set_option ("y-dpi", y_dpi_string); - } - - public void show_video () { - show_surface = true; - queue_draw (); - } - - public void hide_video () { - show_surface = false; - queue_draw (); - } - - public override bool draw (Cairo.Context cr) { - draw_background (cr); - - if (!show_surface) - return false; - - var to_draw = pixbuf; - if (to_draw == null) - return false; - - if (!sensitive) { - var desaturated = new Gdk.Pixbuf (Gdk.Colorspace.RGB, to_draw.has_alpha, 8, to_draw.width, to_draw.height); - to_draw.saturate_and_pixelate (desaturated, 0.0f, false); - to_draw = desaturated; - } - - var surface = Gdk.cairo_surface_create_from_pixbuf (to_draw, 1, null); - double w, h, x, y; - get_video_box (out w, out h, out x, out y); - double xs = w / to_draw.width; - double ys = h / to_draw.height; - - cr.scale (xs, ys); - cr.set_source_surface (surface, x/xs, y/ys); - var source = cr.get_source (); - switch (filter) { - case VideoFilter.SHARP: - source.set_filter (Cairo.Filter.NEAREST); - - break; - case VideoFilter.SMOOTH: - default: - source.set_filter (Cairo.Filter.BILINEAR); - - break; - } - cr.paint (); - - return true; - } - - private void draw_background (Cairo.Context cr) { - cr.set_source_rgb (0, 0, 0); - cr.paint (); - } - - private void get_video_box (out double width, out double height, out double x, out double y) { - var w = (double) get_allocated_width (); - var h = (double) get_allocated_height (); - - // Set the size of the display - double display_ratio = (double) aspect_ratio; - double allocated_ratio = w / h; - - // If the screen is wider than the video... - if (allocated_ratio > display_ratio) { - height = h; - width = (double) (h * display_ratio); - } - else { - width = w; - height = (double) (w / display_ratio); - } - - // Set the position of the display - x = (w - width) / 2; - y = (h - height) / 2; - } -} diff -Nru retro-gtk-0.12.1/retro-gtk/video/retro-video-converter.c retro-gtk-0.14.0/retro-gtk/video/retro-video-converter.c --- retro-gtk-0.12.1/retro-gtk/video/retro-video-converter.c 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/video/retro-video-converter.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,175 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -#include - -#include "retro-gtk-internal.h" - -typedef struct _xrgb1555 { - guint16 b: 5; - guint16 g: 5; - guint16 r: 5; - guint16 x: 1; -} xrgb1555; - -typedef struct _xrgb8888 { - guint32 b: 8; - guint32 g: 8; - guint32 r: 8; - guint32 x: 8; -} xrgb8888; - -typedef struct _rgb565 { - guint16 b: 5; - guint16 g: 6; - guint16 r: 5; -} rgb565; - -typedef struct _rgba8888 { - guint32 a: 8; - guint32 b: 8; - guint32 g: 8; - guint32 r: 8; -} rgba8888; - -typedef rgba8888 (*GetRGBA8888) (gconstpointer pixel); - -static rgba8888 -rgba8888_from_xrgb1555 (gconstpointer data) -{ - xrgb1555 pixel = *(const xrgb1555 *) data; - - return (rgba8888) { - pixel.r << 3 | pixel.r >> 2, - pixel.g << 3 | pixel.g >> 2, - pixel.b << 3 | pixel.b >> 2, - 0xff, - }; -} - -static rgba8888 -rgba8888_from_xrgb8888 (gconstpointer data) -{ - xrgb8888 pixel = *(const xrgb8888 *) data; - - return (rgba8888) { - pixel.r, - pixel.g, - pixel.b, - 0xff, - }; -} - -static rgba8888 -rgba8888_from_rgb565 (gconstpointer data) -{ - rgb565 pixel = *(const rgb565 *) data; - - return (rgba8888) { - pixel.r << 3 | pixel.r >> 2, - pixel.g << 2 | pixel.g >> 4, - pixel.b << 3 | pixel.b >> 2, - 0xff, - }; -} - -static gboolean -get_interface_for_pixel_format (gint pixel_format, - GetRGBA8888 *get_pixel, - gsize *pixel_size) -{ - switch (pixel_format) { - case RETRO_PIXEL_FORMAT_XRGB1555: - *get_pixel = rgba8888_from_xrgb1555; - *pixel_size = sizeof (xrgb1555); - - return TRUE; - case RETRO_PIXEL_FORMAT_XRGB8888: - *get_pixel = rgba8888_from_xrgb8888; - *pixel_size = sizeof (rgba8888); - - return TRUE; - case RETRO_PIXEL_FORMAT_RGB565: - *get_pixel = rgba8888_from_rgb565; - *pixel_size = sizeof (rgb565); - - return TRUE; - default: - return FALSE; - } -} - -/** - * The destination buffer must be at least `height * width * sizeof (rgba8888)` - * bytes long. - */ -static void -rgba8888_from_video (gconstpointer src, - rgba8888 *dst, - size_t pixel_size, - guint width, - guint height, - gsize pitch, - GetRGBA8888 get_pixel) -{ - gsize row, src_row, dst_row, col, src_col; - - for (row = 0 ; row < height ; row++) { - src_row = row * pitch; - dst_row = row * width; - - for (col = 0 ; col < width ; col++) { - src_col = col * pixel_size; - - dst[dst_row + col] = get_pixel (src_row + src_col + src); - } - } -} - -static rgba8888 * -new_rgba8888_from_video (gconstpointer src, - guint width, - guint height, - gsize pitch, - gint pixel_format) -{ - GetRGBA8888 get_pixel; - gsize pixel_size; - rgba8888 *dst; - - if (!get_interface_for_pixel_format (pixel_format, &get_pixel, &pixel_size)) - return NULL; - - dst = g_new (rgba8888, height * width); - rgba8888_from_video (src, dst, pixel_size, width, height, pitch, get_pixel); - - return dst; -} - -static void -pixels_free (guchar *pixels, - gpointer data) -{ - g_free (pixels); -} - -GdkPixbuf * -gdk_pixbuf_new_from_video (gconstpointer src, - guint width, - guint height, - gsize pitch, - gint pixel_format) -{ - rgba8888 *dst; - GdkPixbuf *pixbuf; - - dst = new_rgba8888_from_video (src, width, height, pitch, pixel_format); - if (dst == NULL) - return NULL; - - pixbuf = gdk_pixbuf_new_from_data ((guchar *) dst, - GDK_COLORSPACE_RGB, TRUE, 8, - width, height, width * sizeof (rgba8888), - pixels_free, NULL); - - return pixbuf; -} diff -Nru retro-gtk-0.12.1/retro-gtk/video/video-filter.c retro-gtk-0.14.0/retro-gtk/video/video-filter.c --- retro-gtk-0.12.1/retro-gtk/video/video-filter.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/video/video-filter.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -/* video-filter.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from video-filter.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include -#include -#include - - -#define RETRO_TYPE_VIDEO_FILTER (retro_video_filter_get_type ()) -#define _g_free0(var) ((var == NULL) ? NULL : (var = (g_free (var), NULL))) -#define _g_type_class_unref0(var) ((var == NULL) ? NULL : (var = (g_type_class_unref (var), NULL))) - -typedef enum { - RETRO_VIDEO_FILTER_SMOOTH, - RETRO_VIDEO_FILTER_SHARP -} RetroVideoFilter; - - - -GType retro_video_filter_get_type (void) G_GNUC_CONST; -RetroVideoFilter retro_video_filter_from_string (const gchar* filter); -static GEnumValue* _g_enum_value_dup (GEnumValue* self); - - -static GEnumValue* _g_enum_value_dup (GEnumValue* self) { - GEnumValue* dup; - dup = g_new0 (GEnumValue, 1); - memcpy (dup, self, sizeof (GEnumValue)); - return dup; -} - - -static gpointer __g_enum_value_dup0 (gpointer self) { - return self ? _g_enum_value_dup (self) : NULL; -} - - -RetroVideoFilter retro_video_filter_from_string (const gchar* filter) { - RetroVideoFilter result = 0; - GEnumClass* enumc = NULL; - GTypeClass* _tmp0_; - GEnumValue* eval = NULL; - GEnumClass* _tmp1_; - const gchar* _tmp2_; - GEnumValue* _tmp3_; - GEnumValue* _tmp4_; - RetroVideoFilter _tmp5_ = 0; - GEnumValue* _tmp6_; - g_return_val_if_fail (filter != NULL, 0); - _tmp0_ = g_type_class_ref (RETRO_TYPE_VIDEO_FILTER); - enumc = (GEnumClass*) _tmp0_; - _tmp1_ = enumc; - _tmp2_ = filter; - _tmp3_ = g_enum_get_value_by_nick (_tmp1_, _tmp2_); - _tmp4_ = __g_enum_value_dup0 (_tmp3_); - eval = _tmp4_; - _tmp6_ = eval; - if (_tmp6_ == NULL) { - _tmp5_ = RETRO_VIDEO_FILTER_SMOOTH; - } else { - GEnumValue* _tmp7_; - gint _tmp8_; - _tmp7_ = eval; - _tmp8_ = (*_tmp7_).value; - _tmp5_ = (RetroVideoFilter) _tmp8_; - } - result = _tmp5_; - _g_free0 (eval); - _g_type_class_unref0 (enumc); - return result; -} - - -GType retro_video_filter_get_type (void) { - static volatile gsize retro_video_filter_type_id__volatile = 0; - if (g_once_init_enter (&retro_video_filter_type_id__volatile)) { - static const GEnumValue values[] = {{RETRO_VIDEO_FILTER_SMOOTH, "RETRO_VIDEO_FILTER_SMOOTH", "smooth"}, {RETRO_VIDEO_FILTER_SHARP, "RETRO_VIDEO_FILTER_SHARP", "sharp"}, {0, NULL, NULL}}; - GType retro_video_filter_type_id; - retro_video_filter_type_id = g_enum_register_static ("RetroVideoFilter", values); - g_once_init_leave (&retro_video_filter_type_id__volatile, retro_video_filter_type_id); - } - return retro_video_filter_type_id__volatile; -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/video/video-filter.vala retro-gtk-0.14.0/retro-gtk/video/video-filter.vala --- retro-gtk-0.12.1/retro-gtk/video/video-filter.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/video/video-filter.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -public enum Retro.VideoFilter { - SMOOTH, - SHARP; - - public static VideoFilter from_string (string filter) { - var enumc = (EnumClass) typeof (VideoFilter).class_ref (); - var eval = enumc.get_value_by_nick (filter); - - return eval == null ? VideoFilter.SMOOTH : (VideoFilter) eval.value; - } -} diff -Nru retro-gtk-0.12.1/retro-gtk/video.c retro-gtk-0.14.0/retro-gtk/video.c --- retro-gtk-0.12.1/retro-gtk/video.c 2017-09-30 10:48:09.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/video.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -/* video.c generated by valac 0.36.1.39-72bb2, the Vala compiler - * generated from video.vala, do not modify */ - -/* This file is part of retro-gtk. License: GPL-3.0+.*/ - -#include -#include - - -#define RETRO_TYPE_PIXEL_FORMAT (retro_pixel_format_get_type ()) - -typedef enum { - RETRO_PIXEL_FORMAT_XRGB1555, - RETRO_PIXEL_FORMAT_XRGB8888, - RETRO_PIXEL_FORMAT_RGB565, - RETRO_PIXEL_FORMAT_UNKNOWN = -1 -} RetroPixelFormat; - - - -GType retro_pixel_format_get_type (void) G_GNUC_CONST; - - -/** - * Pixel formats used by Libretro. - */ -GType retro_pixel_format_get_type (void) { - static volatile gsize retro_pixel_format_type_id__volatile = 0; - if (g_once_init_enter (&retro_pixel_format_type_id__volatile)) { - static const GEnumValue values[] = {{RETRO_PIXEL_FORMAT_XRGB1555, "RETRO_PIXEL_FORMAT_XRGB1555", "xrgb1555"}, {RETRO_PIXEL_FORMAT_XRGB8888, "RETRO_PIXEL_FORMAT_XRGB8888", "xrgb8888"}, {RETRO_PIXEL_FORMAT_RGB565, "RETRO_PIXEL_FORMAT_RGB565", "rgb565"}, {RETRO_PIXEL_FORMAT_UNKNOWN, "RETRO_PIXEL_FORMAT_UNKNOWN", "unknown"}, {0, NULL, NULL}}; - GType retro_pixel_format_type_id; - retro_pixel_format_type_id = g_enum_register_static ("RetroPixelFormat", values); - g_once_init_leave (&retro_pixel_format_type_id__volatile, retro_pixel_format_type_id); - } - return retro_pixel_format_type_id__volatile; -} - - - diff -Nru retro-gtk-0.12.1/retro-gtk/video.vala retro-gtk-0.14.0/retro-gtk/video.vala --- retro-gtk-0.12.1/retro-gtk/video.vala 2017-09-30 07:01:19.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk/video.vala 1970-01-01 00:00:00.000000000 +0000 @@ -1,38 +0,0 @@ -// This file is part of retro-gtk. License: GPL-3.0+. - -namespace Retro { - -/** - * Pixel formats used by Libretro. - */ -public enum PixelFormat { - /** - * 0RGB1555, native endian. - * - * 0 bit must be set to 0. - * This pixel format is default for compatibility concerns only. - * If a 15/16-bit pixel format is desired, consider using RGB565. - */ - XRGB1555, - - /** - * XRGB8888, native endian. X bits are ignored. - */ - XRGB8888, - - /** - * RGB565, native endian. - * - * This pixel format is the recommended format to use if a 15/16-bit format is desired - * as it is the pixel format that is typically available on a wide range of low-power devices. - * It is also natively supported in APIs like OpenGL ES. - */ - RGB565, - - /** - * Unknown format. - */ - UNKNOWN = -1; -} - -} diff -Nru retro-gtk-0.12.1/retro-gtk.doap retro-gtk-0.14.0/retro-gtk.doap --- retro-gtk-0.12.1/retro-gtk.doap 1970-01-01 00:00:00.000000000 +0000 +++ retro-gtk-0.14.0/retro-gtk.doap 2018-03-10 13:02:01.000000000 +0000 @@ -0,0 +1,24 @@ + + + + retro-gtk + Toolkit to write GTK+ 3 based Libretro frontends + retro-gtk is a toolkit allowing to easily write GTK+ 3 based Libretro frontends. + + + + + C + + + + Adrien Plazas + + aplazas + + +