diff --git a/config.subr b/config.subr
index db04157..8fae541 100644
--- a/config.subr
+++ b/config.subr
@@ -96,19 +96,34 @@ config_include() {
rm -f "$OUT"
}
-config_lib() {
- LIBS_SAVE="$LIBS"
- OUT=".config_$1.c"
+config_lib_have() {
+ NAME="$1"
shift
- echo "/* generated by configure */" > "$OUT"
- echo "int main (void) { return 0; }" >> "$OUT"
- LIBS="${LIBS} $@"
- if ${CC} ${CPPFLAGS} ${CFLAGS} "$OUT" ${LIBS} -o /dev/null; then
- :
+ OUT_C=".config_$NAME.c"
+ OUT=".config_$NAME"
+ echo "/* generated by configure */" > "$OUT_C"
+ echo "int main (void) { return 0; }" >> "$OUT_C"
+ if ${CC} ${CPPFLAGS} ${CFLAGS} "$OUT_C" ${LIBS} $@ -o "$OUT"; then
+ eval "HAVE_$NAME=true"
+ echo "HAVE_$NAME = true" >> ${CONFIG_MK}
else
- LIBS="${LIBS_SAVE}"
+ eval "HAVE_$NAME=false"
+ echo "HAVE_$NAME = false" >> ${CONFIG_MK}
+ fi
+ rm -f "$OUT" "$OUT_C"
+}
+
+config_lib() {
+ NAME="$1"
+ shift
+ OUT_C=".config_$NAME.c"
+ OUT=".config_$NAME"
+ echo "/* generated by configure */" > "$OUT_C"
+ echo "int main (void) { return 0; }" >> "$OUT_C"
+ if ${CC} ${CPPFLAGS} ${CFLAGS} "$OUT_C" ${LIBS} $@ -o "$OUT"; then
+ LIBS="$LIBS $@"
fi
- rm "$OUT"
+ rm -f "$OUT" "$OUT_C"
}
env_reset() {
@@ -286,18 +301,18 @@ if [ "x$LIBTOOL" = "x" ]; then
fi
echo "LIBTOOL = $LIBTOOL" >> ${CONFIG_MK}
-if [ "x$SWIFTC" = "x" ]; then
- if test -x "$(which swiftc 2>/dev/null)"; then
- SWIFTC="$(which swiftc)"
- HAVE_SWIFT=true
- else
- HAVE_SWIFT=false
- fi
-else
- HAVE_SWIFT=true
-fi
-echo "SWIFTC = $SWIFTC" >> ${CONFIG_MK}
-echo "HAVE_SWIFT = $HAVE_SWIFT" >> ${CONFIG_MK}
+#if [ "x$SWIFTC" = "x" ]; then
+# if test -x "$(which swiftc 2>/dev/null)"; then
+# SWIFTC="$(which swiftc)"
+# HAVE_SWIFT=true
+# else
+# HAVE_SWIFT=false
+# fi
+#else
+# HAVE_SWIFT=true
+#fi
+#echo "SWIFTC = $SWIFTC" >> ${CONFIG_MK}
+#echo "HAVE_SWIFT = $HAVE_SWIFT" >> ${CONFIG_MK}
if [ "x$OBJCC" = "x" ]; then
if test -x "$(which clang 2>/dev/null)"; then
diff --git a/libc3/window/cairo/Makefile b/libc3/window/cairo/Makefile
index 60cd17e..f63d736 100644
--- a/libc3/window/cairo/Makefile
+++ b/libc3/window/cairo/Makefile
@@ -12,7 +12,7 @@
build:
${MAKE} ${LIB}
- if ${HAVE_SWIFT}; then ${MAKE} -C quartz build; fi
+ if ${HAVE_COCOA}; then ${MAKE} -C quartz build; fi
if ${HAVE_XCB}; then ${MAKE} -C xcb build; fi
all:
@@ -23,52 +23,49 @@ all:
asan:
${MAKE} ${LIB_ASAN}
- if ${HAVE_SWIFT}; then ${MAKE} -C quartz asan; fi
+ if ${HAVE_COCOA}; then ${MAKE} -C quartz asan; fi
if ${HAVE_XCB}; then ${MAKE} -C xcb asan; fi
clean:
- if ${HAVE_SWIFT}; then ${MAKE} -C quartz clean; fi
+ if ${HAVE_COCOA}; then ${MAKE} -C quartz clean; fi
if ${HAVE_XCB}; then ${MAKE} -C xcb clean; fi
clean_cov:
- if ${HAVE_SWIFT}; then ${MAKE} -C quartz clean_cov; fi
+ if ${HAVE_COCOA}; then ${MAKE} -C quartz clean_cov; fi
if ${HAVE_XCB}; then ${MAKE} -C xcb clean_cov; fi
cov:
${MAKE} ${LIB_COV}
- if ${HAVE_SWIFT}; then ${MAKE} -C quartz cov; fi
+ if ${HAVE_COCOA}; then ${MAKE} -C quartz cov; fi
if ${HAVE_XCB}; then ${MAKE} -C xcb cov; fi
debug:
${MAKE} ${LIB_DEBUG}
- if ${HAVE_SWIFT}; then ${MAKE} -C quartz debug; fi
- if ${HAVE_XCB}; then ${MAKE} -C xcb debug; fi
+ if ${HAVE_COCOA}; then ${MAKE} -C quartz debug; else if ${HAVE_XCB}; then ${MAKE} -C xcb debug; fi; fi
demo: build
- if ${HAVE_SWIFT}; then ${MAKE} -C quartz demo; fi
- if ${HAVE_XCB}; then ${MAKE} -C xcb demo; fi
+ if ${HAVE_COCOA}; then ${MAKE} -C quartz demo; else if ${HAVE_XCB}; then ${MAKE} -C xcb demo; fi; fi
distclean:
- if ${HAVE_SWIFT}; then ${MAKE} -C quartz distclean; fi
+ if ${HAVE_COCOA}; then ${MAKE} -C quartz distclean; fi
if ${HAVE_XCB}; then ${MAKE} -C xcb distclean; fi
gcovr:
- if ${HAVE_SWIFT}; then ${MAKE} -C quartz gcovr; fi
+ if ${HAVE_COCOA}; then ${MAKE} -C quartz gcovr; fi
if ${HAVE_XCB}; then ${MAKE} -C xcb gcovr; fi
gdb_demo: debug
- if ${HAVE_SWIFT}; then ${MAKE} -C quartz gdb_demo; fi
- if ${HAVE_XCB}; then ${MAKE} -C xcb gdb_demo; fi
+ if ${HAVE_COCOA}; then ${MAKE} -C quartz gdb_demo; else if ${HAVE_XCB}; then ${MAKE} -C xcb gdb_demo; fi; fi
install:
- if ${HAVE_SWIFT}; then ${MAKE} -C quartz install; fi
+ if ${HAVE_COCOA}; then ${MAKE} -C quartz install; fi
if ${HAVE_XCB}; then ${MAKE} -C xcb install; fi
lldb_demo: debug
- if ${HAVE_SWIFT}; then ${MAKE} -C quartz lldb_demo; else if ${HAVE_XCB}; then ${MAKE} -C xcb lldb_demo; fi; fi
+ if ${HAVE_COCOA}; then ${MAKE} -C quartz lldb_demo; else if ${HAVE_XCB}; then ${MAKE} -C xcb lldb_demo; fi; fi
test:
- if ${HAVE_SWIFT}; then ${MAKE} -C quartz test; fi
+ if ${HAVE_COCOA}; then ${MAKE} -C quartz test; fi
if ${HAVE_XCB}; then ${MAKE} -C xcb test; fi
update_sources:
diff --git a/libc3/window/cairo/configure b/libc3/window/cairo/configure
index fb563b5..3cfda71 100755
--- a/libc3/window/cairo/configure
+++ b/libc3/window/cairo/configure
@@ -43,6 +43,8 @@ LIBS="$LIBS -rpath ${PREFIX}/lib"
config_asan
config_gnu
pkg_config cairo
+config_lib_have COCOA -framework Cocoa
+pkg_config xkbcommon
config_define PREFIX "\"${PREFIX}\""
# Address Sanitizer config
@@ -142,7 +144,7 @@ echo "HAVE_XCB = $HAVE_XCB" >> ${CONFIG_MK}
update_config_mk
env_reset
-if ${HAVE_SWIFT}; then
+if ${HAVE_COCOA}; then
( cd quartz && ./configure; )
fi
diff --git a/libc3/window/cairo/quartz/configure b/libc3/window/cairo/quartz/configure
index 3a22d7c..ad012e5 100755
--- a/libc3/window/cairo/quartz/configure
+++ b/libc3/window/cairo/quartz/configure
@@ -60,6 +60,7 @@ CPPFLAGS="$CPPFLAGS -I../../../../libffi/include -I../../../.."
config_asan
config_gnu
pkg_config cairo
+config_lib COCOA -framework Cocoa
pkg_config xkbcommon
LIBS="$LIBS"
diff --git a/libc3/window/cairo/quartz/demo/c3_window_cairo_quartz_demo b/libc3/window/cairo/quartz/demo/c3_window_cairo_quartz_demo
deleted file mode 100755
index a0b7e1b..0000000
--- a/libc3/window/cairo/quartz/demo/c3_window_cairo_quartz_demo
+++ /dev/null
@@ -1,210 +0,0 @@
-#! /bin/sh
-
-# c3_window_cairo_quartz_demo - temporary wrapper script for .libs/c3_window_cairo_quartz_demo
-# Generated by libtool (GNU libtool) 2.4.7
-#
-# The c3_window_cairo_quartz_demo 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='s|\([`"$\\]\)|\\\1|g'
-
-# 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=""
-
-# This environment variable determines our operation mode.
-if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
- # install mode needs the following variables:
- generated_by_libtool_version='2.4.7'
- notinst_deplibs=' ../libc3_window_cairo_quartz.la /Users/thodg/c/thodg/c3-lang/c3/libc3/window/cairo/libc3_window_cairo.la /Users/thodg/c/thodg/c3-lang/c3/libc3/window/libc3_window.la /Users/thodg/c/thodg/c3-lang/c3/libc3/libc3.la /Users/thodg/c/thodg/c3-lang/c3/libffi/libffi.la'
-else
- # When we are sourced in execute mode, $file and $ECHO are already set.
- if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
- file="$0"
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
- eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-}
- ECHO="printf %s\\n"
- 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 /opt/homebrew/bin/glibtool value, followed by no.
-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" | /usr/bin/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" | /usr/bin/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 "c3_window_cairo_quartz_demo:c3_window_cairo_quartz_demo:$LINENO: libtool wrapper (GNU libtool) 2.4.7" 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 "c3_window_cairo_quartz_demo:c3_window_cairo_quartz_demo:$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 ()
-{
-
- if test -n "$lt_option_debug"; then
- $ECHO "c3_window_cairo_quartz_demo:c3_window_cairo_quartz_demo:$LINENO: newargv[0]: $progdir/$program" 1>&2
- func_lt_dump_args ${1+"$@"} 1>&2
- fi
- exec "$progdir/$program" ${1+"$@"}
-
- $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" | /usr/bin/sed 's%/[^/]*$%%'`
- test "x$thisdir" = "x$file" && thisdir=.
-
- # Follow symbolic links until we get to the real thisdir.
- file=`ls -ld "$file" | /usr/bin/sed -n 's/.*-> //p'`
- while test -n "$file"; do
- destdir=`$ECHO "$file" | /usr/bin/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" | /usr/bin/sed 's%^.*/%%'`
- file=`ls -ld "$thisdir/$file" | /usr/bin/sed -n 's/.*-> //p'`
- done
-
- # Usually 'no', except on cygwin/mingw when embedded into
- # the cwrapper.
- WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
- 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
- *[\\/].libs ) thisdir=`$ECHO "$thisdir" | /usr/bin/sed 's%[\\/][^\\/]*$%%'` ;;
- .libs ) thisdir=. ;;
- esac
- fi
-
- # Try to get the absolute directory name.
- absdir=`cd "$thisdir" && pwd`
- test -n "$absdir" && thisdir="$absdir"
-
- program='c3_window_cairo_quartz_demo'
- progdir="$thisdir/.libs"
-
-
- if test -f "$progdir/$program"; then
- # Add our own library path to DYLD_LIBRARY_PATH
- DYLD_LIBRARY_PATH="/Users/thodg/c/thodg/c3-lang/c3/libc3/window/cairo/quartz/.libs:/Users/thodg/c/thodg/c3-lang/c3/libc3/window/cairo/.libs:/Users/thodg/c/thodg/c3-lang/c3/libc3/window/.libs:/Users/thodg/c/thodg/c3-lang/c3/libc3/.libs:/Users/thodg/c/thodg/c3-lang/c3/libffi/.libs:$DYLD_LIBRARY_PATH"
-
- # Some systems cannot cope with colon-terminated DYLD_LIBRARY_PATH
- # The second colon is a workaround for a bug in BeOS R4 sed
- DYLD_LIBRARY_PATH=`$ECHO "$DYLD_LIBRARY_PATH" | /usr/bin/sed 's/::*$//'`
-
- export DYLD_LIBRARY_PATH
-
- if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; 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 libtool documentation for more information." 1>&2
- exit 1
- fi
-fi
diff --git a/libc3/window/cairo/quartz/demo/configure b/libc3/window/cairo/quartz/demo/configure
index 68320d9..8dd3f18 100755
--- a/libc3/window/cairo/quartz/demo/configure
+++ b/libc3/window/cairo/quartz/demo/configure
@@ -210,11 +210,7 @@ for BUNDLE_LIB in ${BUNDLE_LIBS}; do
L=$(basename $BUNDLE_LIB)
echo " install_name_tool -id @executable_path/../Frameworks/ ${APP}/Contents/Frameworks/$L" >> ${CONFIG_MK}
echo " install_name_tool -change ${LIBDIR}/$L @executable_path/../Frameworks/$L ${APP}/Contents/MacOS/${PROG}" >> ${CONFIG_MK}
- DEPS=$(otool -L "$BUNDLE_LIB" | awk '/^\t.+(\/usr\/lib|\/System)/ { next } /^\t/ { print $1 }')
- for DEP in $DEPS; do
- D=$(basename "$DEP")
- echo " if [ -f $APP/Contents/Frameworks/$D ]; then install_name_tool -change \"$DEP\" @executable_path/../Frameworks/$D $APP/Contents/Frameworks/$L; fi" >> ${CONFIG_MK}
- done
+ echo " DEPS=\$\$(otool -L '${BUNDLE_LIB}' | awk '/^\t.+(\/usr\/lib|\/System)/ { next } /^\t/ { print \$\$1 }'); for DEP in \$\${DEPS}; do D=\$\$(basename \"\$\${DEP}\"); if [ -f $APP/Contents/Frameworks/\$\$D ]; then install_name_tool -change \$\${DEP} @executable_path/../Frameworks/\$\$D $APP/Contents/Frameworks/$L; fi; done" >> ${CONFIG_MK}
done
echo >> ${CONFIG_MK}
echo ".PHONY: \\" >> ${CONFIG_MK}
@@ -230,11 +226,7 @@ for BUNDLE_LIB in ${BUNDLE_LIBS_ASAN}; do
L=$(basename $BUNDLE_LIB)
echo " install_name_tool -id @executable_path/../Frameworks/ ${APP_ASAN}/Contents/Frameworks/$L" >> ${CONFIG_MK}
echo " install_name_tool -change ${LIBDIR}/$L @executable_path/../Frameworks/$L ${APP_ASAN}/Contents/MacOS/${PROG_ASAN}" >> ${CONFIG_MK}
- DEPS=$(otool -L "$BUNDLE_LIB" | awk '/^\t.+(\/usr\/lib|\/System)/ { next } /^\t/ { print $1 }')
- for DEP in $DEPS; do
- D=$(basename "$DEP")
- echo " if [ -f $APP_ASAN/Contents/Frameworks/$D ]; then install_name_tool -change \"$DEP\" @executable_path/../Frameworks/$D $APP_ASAN/Contents/Frameworks/$L; fi" >> ${CONFIG_MK}
- done
+ echo " DEPS=\$\$(otool -L '${BUNDLE_LIB}' | awk '/^\t.+(\/usr\/lib|\/System)/ { next } /^\t/ { print \$\$1 }'); for DEP in \$\${DEPS}; do D=\$\$(basename \"\$\${DEP}\"); if [ -f $APP/Contents/Frameworks/\$\$D ]; then install_name_tool -change \$\${DEP} @executable_path/../Frameworks/\$\$D $APP/Contents/Frameworks/$L; fi; done" >> ${CONFIG_MK}
done
echo >> ${CONFIG_MK}
echo ".PHONY: \\" >> ${CONFIG_MK}
@@ -250,11 +242,7 @@ for BUNDLE_LIB in ${BUNDLE_LIBS_COV}; do
L=$(basename $BUNDLE_LIB)
echo " install_name_tool -id @executable_path/../Frameworks/ ${APP_COV}/Contents/Frameworks/$L" >> ${CONFIG_MK}
echo " install_name_tool -change ${LIBDIR}/$L @executable_path/../Frameworks/$L ${APP_COV}/Contents/MacOS/${PROG}" >> ${CONFIG_MK}
- DEPS=$(otool -L "$BUNDLE_LIB" | awk '/^\t.+(\/usr\/lib|\/System)/ { next } /^\t/ { print $1 }')
- for DEP in $DEPS; do
- D=$(basename "$DEP")
- echo " if [ -f $APP_COV/Contents/Frameworks/$D ]; then install_name_tool -change \"$DEP\" @executable_path/../Frameworks/$D $APP_COV/Contents/Frameworks/$L; fi" >> ${CONFIG_MK}
- done
+ echo " DEPS=\$\$(otool -L '${BUNDLE_LIB}' | awk '/^\t.+(\/usr\/lib|\/System)/ { next } /^\t/ { print \$\$1 }'); for DEP in \$\${DEPS}; do D=\$\$(basename \"\$\${DEP}\"); if [ -f $APP/Contents/Frameworks/\$\$D ]; then install_name_tool -change \$\${DEP} @executable_path/../Frameworks/\$\$D $APP/Contents/Frameworks/$L; fi; done" >> ${CONFIG_MK}
done
echo >> ${CONFIG_MK}
echo ".PHONY: \\" >> ${CONFIG_MK}
@@ -270,11 +258,7 @@ for BUNDLE_LIB in ${BUNDLE_LIBS_DEBUG}; do
L=$(basename $BUNDLE_LIB)
echo " install_name_tool -id @executable_path/../Frameworks/ ${APP_DEBUG}/Contents/Frameworks/$L" >> ${CONFIG_MK}
echo " install_name_tool -change ${LIBDIR}/$L @executable_path/../Frameworks/$L ${APP_DEBUG}/Contents/MacOS/${PROG_DEBUG}" >> ${CONFIG_MK}
- DEPS=$(otool -L "$BUNDLE_LIB" | awk '/^\t.+(\/usr\/lib|\/System)/ { next } /^\t/ { print $1 }')
- for DEP in $DEPS; do
- D=$(basename "$DEP")
- echo " if [ -f $APP_DEBUG/Contents/Frameworks/$D ]; then install_name_tool -change \"$DEP\" @executable_path/../Frameworks/$D $APP_DEBUG/Contents/Frameworks/$L; fi" >> ${CONFIG_MK}
- done
+ echo " DEPS=\$\$(otool -L '${BUNDLE_LIB}' | awk '/^\t.+(\/usr\/lib|\/System)/ { next } /^\t/ { print \$\$1 }'); for DEP in \$\${DEPS}; do D=\$\$(basename \"\$\${DEP}\"); if [ -f $APP/Contents/Frameworks/\$\$D ]; then install_name_tool -change \$\${DEP} @executable_path/../Frameworks/\$\$D $APP/Contents/Frameworks/$L; fi; done" >> ${CONFIG_MK}
done
echo >> ${CONFIG_MK}
echo ".PHONY: \\" >> ${CONFIG_MK}