Index: config.h =================================================================== --- config.h (revision 0) +++ config.h (revision 0) @@ -0,0 +1,2 @@ +/* FIXME replace with autoconf stuff */ +#define DEFAULT_CONFIG_PATH "~/GNUstep/Library/Configuration:/etc/GNUstep"; Index: filesystem.sh.in =================================================================== --- filesystem.sh.in (revision 24586) +++ filesystem.sh.in (working copy) @@ -1,211 +0,0 @@ -#! /bin/echo This file must be sourced inside (ba)sh using: . -# -# @configure_input@ -# -# Sets up the GNUstep filesystem paths for shell scripts -# -# Copyright (C) 2007 Free Software Foundation, Inc. -# -# Author: Nicola Pero , -# -# Date: February 2007 -# -# This file is part of the GNUstep Makefile Package. -# -# This library 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. -# -# You should have received a copy of the GNU General Public -# License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# -# This does the same that filesystem.make does, but for GNUstep.sh. -# Include this file after reading your config to make sure that all -# the paths are available. -# -# PS: If you change this list, make sure that top update the list of -# paths used in all other filesystem.*, and in common.make when -# GNUSTEP_INSTALLATION_DIR is set. -# - -# PS: We don't want to define these variables to avoid extreme -# environment pollution. :-) They are fixed subdirs of LIBRARY if you -# need them. -#GNUSTEP_SYSTEM_APPLICATION_SUPPORT = $GNUSTEP_SYSTEM_LIBRARY/ApplicationSupport -#GNUSTEP_SYSTEM_BUNDLES = $GNUSTEP_SYSTEM_LIBRARY/Bundles -#GNUSTEP_SYSTEM_FRAMEWORKS = $GNUSTEP_SYSTEM_LIBRARY/Frameworks -#GNUSTEP_SYSTEM_PALETTES = $GNUSTEP_SYSTEM_LIBRARY/ApplicationSupport/Palettes -#GNUSTEP_SYSTEM_SERVICES = $GNUSTEP_SYSTEM_LIBRARY/Services -#GNUSTEP_SYSTEM_RESOURCES = $GNUSTEP_SYSTEM_LIBRARY/Libraries/Resources -#GNUSTEP_SYSTEM_JAVA = $GNUSTEP_SYSTEM_LIBRARY/Libraries/Java - -# -# SYSTEM domain -# -if [ -z "$GNUSTEP_SYSTEM_APPS" ]; - then GNUSTEP_SYSTEM_APPS="@GNUSTEP_SYSTEM_APPS@" -fi -if [ -z "$GNUSTEP_SYSTEM_TOOLS" ]; - then GNUSTEP_SYSTEM_TOOLS="@GNUSTEP_SYSTEM_TOOLS@" -fi -if [ -z "$GNUSTEP_SYSTEM_LIBRARY" ]; - then GNUSTEP_SYSTEM_LIBRARY="@GNUSTEP_SYSTEM_LIBRARY@" -fi -if [ -z "$GNUSTEP_SYSTEM_HEADERS" ]; - then GNUSTEP_SYSTEM_HEADERS="@GNUSTEP_SYSTEM_HEADERS@" -fi -if [ -z "$GNUSTEP_SYSTEM_LIBRARIES" ]; - then GNUSTEP_SYSTEM_LIBRARIES="@GNUSTEP_SYSTEM_LIBRARIES@" -fi -if [ -z "$GNUSTEP_SYSTEM_DOCUMENTATION" ]; - then GNUSTEP_SYSTEM_DOCUMENTATION="@GNUSTEP_SYSTEM_DOCUMENTATION@" -fi -if [ -z "$GNUSTEP_SYSTEM_DOCUMENTATION_MAN" ]; - then GNUSTEP_SYSTEM_DOCUMENTATION_MAN="@GNUSTEP_SYSTEM_DOCUMENTATION_MAN@" -fi -if [ -z "$GNUSTEP_SYSTEM_DOCUMENTATION_INFO" ]; - then GNUSTEP_SYSTEM_DOCUMENTATION_INFO="@GNUSTEP_SYSTEM_DOCUMENTATION_INFO@" -fi - - -# -# LOCAL domain -# -if [ -z "$GNUSTEP_LOCAL_APPS" ]; - then GNUSTEP_LOCAL_APPS="@GNUSTEP_LOCAL_APPS@" -fi -if [ -z "$GNUSTEP_LOCAL_TOOLS" ]; - then GNUSTEP_LOCAL_TOOLS="@GNUSTEP_LOCAL_TOOLS@" -fi -if [ -z "$GNUSTEP_LOCAL_LIBRARY" ]; - then GNUSTEP_LOCAL_LIBRARY="@GNUSTEP_LOCAL_LIBRARY@" -fi -if [ -z "$GNUSTEP_LOCAL_HEADERS" ]; - then GNUSTEP_LOCAL_HEADERS="@GNUSTEP_LOCAL_HEADERS@" -fi -if [ -z "$GNUSTEP_LOCAL_LIBRARIES" ]; - then GNUSTEP_LOCAL_LIBRARIES="@GNUSTEP_LOCAL_LIBRARIES@" -fi -if [ -z "$GNUSTEP_LOCAL_DOCUMENTATION" ]; - then GNUSTEP_LOCAL_DOCUMENTATION="@GNUSTEP_LOCAL_DOCUMENTATION@" -fi -if [ -z "$GNUSTEP_LOCAL_DOCUMENTATION_MAN" ]; - then GNUSTEP_LOCAL_DOCUMENTATION_MAN="@GNUSTEP_LOCAL_DOCUMENTATION_MAN@" -fi -if [ -z "$GNUSTEP_LOCAL_DOCUMENTATION_INFO" ]; - then GNUSTEP_LOCAL_DOCUMENTATION_INFO="@GNUSTEP_LOCAL_DOCUMENTATION_INFO@" -fi - -# -# NETWORK domain -# -if [ -z "$GNUSTEP_NETWORK_APPS" ]; - then GNUSTEP_NETWORK_APPS="@GNUSTEP_NETWORK_APPS@" -fi -if [ -z "$GNUSTEP_NETWORK_TOOLS" ]; - then GNUSTEP_NETWORK_TOOLS="@GNUSTEP_NETWORK_TOOLS@" -fi -if [ -z "$GNUSTEP_NETWORK_LIBRARY" ]; - then GNUSTEP_NETWORK_LIBRARY="@GNUSTEP_NETWORK_LIBRARY@" -fi -if [ -z "$GNUSTEP_NETWORK_HEADERS" ]; - then GNUSTEP_NETWORK_HEADERS="@GNUSTEP_NETWORK_HEADERS@" -fi -if [ -z "$GNUSTEP_NETWORK_LIBRARIES" ]; - then GNUSTEP_NETWORK_LIBRARIES="@GNUSTEP_NETWORK_LIBRARIES@" -fi -if [ -z "$GNUSTEP_NETWORK_DOCUMENTATION" ]; - then GNUSTEP_NETWORK_DOCUMENTATION="@GNUSTEP_NETWORK_DOCUMENTATION@" -fi -if [ -z "$GNUSTEP_NETWORK_DOCUMENTATION_MAN" ]; - then GNUSTEP_NETWORK_DOCUMENTATION_MAN="@GNUSTEP_NETWORK_DOCUMENTATION_MAN@" -fi -if [ -z "$GNUSTEP_NETWORK_DOCUMENTATION_INFO" ]; - then GNUSTEP_NETWORK_DOCUMENTATION_INFO="@GNUSTEP_NETWORK_DOCUMENTATION_INFO@" -fi - -# -# USER domain -# -if [ -z "$GNUSTEP_USER_DIR_APPS" ]; - then GNUSTEP_USER_DIR_APPS="@GNUSTEP_USER_DIR_APPS@" -fi -if [ -z "$GNUSTEP_USER_DIR_TOOLS" ]; - then GNUSTEP_USER_DIR_TOOLS="@GNUSTEP_USER_DIR_TOOLS@" -fi -if [ -z "$GNUSTEP_USER_DIR_LIBRARY" ]; - then GNUSTEP_USER_DIR_LIBRARY="@GNUSTEP_USER_DIR_LIBRARY@" -fi -if [ -z "$GNUSTEP_USER_DIR_HEADERS" ]; - then GNUSTEP_USER_DIR_HEADERS="@GNUSTEP_USER_DIR_HEADERS@" -fi -if [ -z "$GNUSTEP_USER_DIR_LIBRARIES" ]; - then GNUSTEP_USER_DIR_LIBRARIES="@GNUSTEP_USER_DIR_LIBRARIES@" -fi -if [ -z "$GNUSTEP_USER_DIR_DOCUMENTATION" ]; - then GNUSTEP_USER_DIR_DOCUMENTATION="@GNUSTEP_USER_DIR_DOCUMENTATION@" -fi -if [ -z "$GNUSTEP_USER_DIR_DOCUMENTATION_MAN" ]; - then GNUSTEP_USER_DIR_DOCUMENTATION_MAN="@GNUSTEP_USER_DIR_DOCUMENTATION_MAN@" -fi -if [ -z "$GNUSTEP_USER_DIR_DOCUMENTATION_INFO" ]; - then GNUSTEP_USER_DIR_DOCUMENTATION_INFO="@GNUSTEP_USER_DIR_DOCUMENTATION_INFO@" -fi - -# -# Now for all directories in the USER domain, check if they are -# relative; if so, consider them as subdirs of GNUSTEP_HOME. -# -case "$GNUSTEP_USER_DIR_APPS" in - /*) # An absolute path - GNUSTEP_USER_APPS="$GNUSTEP_USER_DIR_APPS";; - *) # Something else - GNUSTEP_USER_APPS="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_APPS";; -esac -unset GNUSTEP_USER_DIR_APPS - -case "$GNUSTEP_USER_DIR_TOOLS" in - /*) GNUSTEP_USER_TOOLS="$GNUSTEP_USER_DIR_TOOLS";; - *) GNUSTEP_USER_TOOLS="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_TOOLS";; -esac -unset GNUSTEP_USER_DIR_TOOLS - -case "$GNUSTEP_USER_DIR_LIBRARY" in - /*) GNUSTEP_USER_LIBRARY="$GNUSTEP_USER_DIR_LIBRARY";; - *) GNUSTEP_USER_LIBRARY="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_LIBRARY";; -esac -unset GNUSTEP_USER_DIR_LIBRARY - -case "$GNUSTEP_USER_DIR_HEADERS" in - /*) GNUSTEP_USER_HEADERS="$GNUSTEP_USER_DIR_HEADERS";; - *) GNUSTEP_USER_HEADERS="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_HEADERS";; -esac -unset GNUSTEP_USER_DIR_HEADERS - -case "$GNUSTEP_USER_DIR_LIBRARIES" in - /*) GNUSTEP_USER_LIBRARIES="$GNUSTEP_USER_DIR_LIBRARIES";; - *) GNUSTEP_USER_LIBRARIES="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_LIBRARIES";; -esac -unset GNUSTEP_USER_DIR_LIBRARIES - -case "$GNUSTEP_USER_DIR_DOCUMENTATION" in - /*) GNUSTEP_USER_DOCUMENTATION="$GNUSTEP_USER_DIR_DOCUMENTATION";; - *) GNUSTEP_USER_DOCUMENTATION="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_DOCUMENTATION";; -esac -unset GNUSTEP_USER_DIR_DOCUMENTATION - -case "$GNUSTEP_USER_DIR_DOCUMENTATION_MAN" in - /*) GNUSTEP_USER_DOCUMENTATION_MAN="$GNUSTEP_USER_DIR_DOCUMENTATION_MAN";; - *) GNUSTEP_USER_DOCUMENTATION_MAN="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_DOCUMENTATION_MAN";; -esac -unset GNUSTEP_USER_DIR_DOCUMENTATION_MAN - -case "$GNUSTEP_USER_DIR_DOCUMENTATION_INFO" in - /*) GNUSTEP_USER_DOCUMENTATION_INFO="$GNUSTEP_USER_DIR_DOCUMENTATION_INFO";; - *) GNUSTEP_USER_DOCUMENTATION_INFO="$GNUSTEP_HOME/$GNUSTEP_USER_DIR_DOCUMENTATION_INFO";; -esac -unset GNUSTEP_USER_DIR_DOCUMENTATION_INFO Index: configure.ac =================================================================== --- configure.ac (revision 24586) +++ configure.ac (working copy) @@ -468,6 +468,13 @@ #-------------------------------------------------------------------- # Process --with-user-dir #-------------------------------------------------------------------- +AC_MSG_CHECKING(for user home directory) +AC_ARG_WITH(user-home,[--with-user-home must be an absolute path or an +equivalent such as ~.], +GNUSTEP_HOME="$withval",GNUSTEP_HOME='~') +AC_MSG_RESULT($GNUSTEP_HOME) +AC_SUBST(GNUSTEP_HOME) + AC_MSG_CHECKING(for user dir to use) AC_ARG_WITH(user-dir,[ --with-user-dir @@ -594,13 +601,26 @@ GNUSTEP_FLATTENED=; GNUSTEP_IS_FLATTENED=no; + _GNUSTEP_HEADERS_FLAGS='${_GNUSTEP_HEADERS_FLAGS_NON_FLATTENED}' + _GNUSTEP_LIBRARIES_FLAGS='${_GNUSTEP_LIBRARIES_FLAGS_NON_FLATTENED}' + _GNUSTEP_HEADERS_DIRS='${_GNUSTEP_HEADERS_DIRS_NON_FLATTENED}' + _GNUSTEP_LIBRARIES_DIRS='${_GNUSTEP_LIBRARIES_DIRS_NON_FLATTENED}' else + _GNUSTEP_HEADERS_FLAGS='${_GNUSTEP_HEADERS_FLAGS_FLATTENED}' + _GNUSTEP_LIBRARIES_FLAGS='${_GNUSTEP_LIBRARIES_FLAGS_FLATTENED}' + _GNUSTEP_HEADERS_DIRS='${_GNUSTEP_HEADERS_DIRS_FLATTENED}' + _GNUSTEP_LIBRARIES_DIRS='${_GNUSTEP_LIBRARIES_DIRS_FLATTENED}' GNUSTEP_FLATTENED=yes; GNUSTEP_IS_FLATTENED=yes; fi AC_SUBST(GNUSTEP_FLATTENED) AC_SUBST(GNUSTEP_IS_FLATTENED) +AC_SUBST(_GNUSTEP_HEADERS_FLAGS) +AC_SUBST(_GNUSTEP_LIBRARIES_FLAGS) +AC_SUBST(_GNUSTEP_HEADERS_DIRS) +AC_SUBST(_GNUSTEP_LIBRARIES_DIRS) + if test "$GNUSTEP_IS_FLATTENED" = "yes"; then AC_MSG_RESULT(yes); else @@ -620,29 +640,29 @@ # SYSTEM domain # if test x"$GNUSTEP_SYSTEM_APPS" = x""; then - GNUSTEP_SYSTEM_APPS="$GNUSTEP_SYSTEM_ROOT/Applications" + GNUSTEP_SYSTEM_APPS='${GNUSTEP_SYSTEM_ROOT}/Applications' fi if test x"$GNUSTEP_SYSTEM_TOOLS" = x""; then - GNUSTEP_SYSTEM_TOOLS="$GNUSTEP_SYSTEM_ROOT/Tools" + GNUSTEP_SYSTEM_TOOLS='${GNUSTEP_SYSTEM_ROOT}/Tools' fi if test x"$GNUSTEP_SYSTEM_LIBRARY" = x""; then - GNUSTEP_SYSTEM_LIBRARY="$GNUSTEP_SYSTEM_ROOT/Library" + GNUSTEP_SYSTEM_LIBRARY='${GNUSTEP_SYSTEM_ROOT}/Library' fi if test x"$GNUSTEP_SYSTEM_HEADERS" = x""; then - GNUSTEP_SYSTEM_HEADERS="$GNUSTEP_SYSTEM_ROOT/Library/Headers" + GNUSTEP_SYSTEM_HEADERS='${GNUSTEP_SYSTEM_ROOT}/Library/Headers' fi if test x"$GNUSTEP_SYSTEM_LIBRARIES" = x""; then - GNUSTEP_SYSTEM_LIBRARIES="$GNUSTEP_SYSTEM_LIBRARY/Libraries/" + GNUSTEP_SYSTEM_LIBRARIES='${GNUSTEP_SYSTEM_LIBRARY}/Libraries/' fi if test x"$GNUSTEP_SYSTEM_DOCUMENTATION" = x""; then - GNUSTEP_SYSTEM_DOCUMENTATION="$GNUSTEP_SYSTEM_LIBRARY/Documentation" + GNUSTEP_SYSTEM_DOCUMENTATION='${GNUSTEP_SYSTEM_LIBRARY}/Documentation' fi if test x"$GNUSTEP_SYSTEM_DOCUMENTATION_MAN" = x""; then - GNUSTEP_SYSTEM_DOCUMENTATION_MAN="$GNUSTEP_SYSTEM_DOCUMENTATION/man" + GNUSTEP_SYSTEM_DOCUMENTATION_MAN='${GNUSTEP_SYSTEM_DOCUMENTATION}/man' fi if test x"$GNUSTEP_SYSTEM_DOCUMENTATION_INFO" = x""; then - GNUSTEP_SYSTEM_DOCUMENTATION_INFO="$GNUSTEP_SYSTEM_DOCUMENTATION/info" + GNUSTEP_SYSTEM_DOCUMENTATION_INFO='${GNUSTEP_SYSTEM_DOCUMENTATION}/info' fi AC_SUBST(GNUSTEP_SYSTEM_TOOLS) @@ -655,28 +675,28 @@ AC_SUBST(GNUSTEP_SYSTEM_DOCUMENTATION_INFO) if test x"$GNUSTEP_LOCAL_APPS" = x""; then - GNUSTEP_LOCAL_APPS="$GNUSTEP_LOCAL_ROOT/Applications" + GNUSTEP_LOCAL_APPS='${GNUSTEP_LOCAL_ROOT}/Applications' fi if test x"$GNUSTEP_LOCAL_TOOLS" = x""; then - GNUSTEP_LOCAL_TOOLS="$GNUSTEP_LOCAL_ROOT/Tools" + GNUSTEP_LOCAL_TOOLS='${GNUSTEP_LOCAL_ROOT}/Tools' fi if test x"$GNUSTEP_LOCAL_LIBRARY" = x""; then - GNUSTEP_LOCAL_LIBRARY="$GNUSTEP_LOCAL_ROOT/Library" + GNUSTEP_LOCAL_LIBRARY='${GNUSTEP_LOCAL_ROOT}/Library' fi if test x"$GNUSTEP_LOCAL_HEADERS" = x""; then - GNUSTEP_LOCAL_HEADERS="$GNUSTEP_LOCAL_ROOT/Library/Headers" + GNUSTEP_LOCAL_HEADERS='${GNUSTEP_LOCAL_ROOT}/Library/Headers' fi if test x"$GNUSTEP_LOCAL_LIBRARIES" = x""; then - GNUSTEP_LOCAL_LIBRARIES="$GNUSTEP_LOCAL_LIBRARY/Libraries/" + GNUSTEP_LOCAL_LIBRARIES='${GNUSTEP_LOCAL_LIBRARY}/Libraries/' fi if test x"$GNUSTEP_LOCAL_DOCUMENTATION" = x""; then - GNUSTEP_LOCAL_DOCUMENTATION="$GNUSTEP_LOCAL_LIBRARY/Documentation" + GNUSTEP_LOCAL_DOCUMENTATION='${GNUSTEP_LOCAL_LIBRARY}/Documentation' fi if test x"$GNUSTEP_LOCAL_DOCUMENTATION_MAN" = x""; then - GNUSTEP_LOCAL_DOCUMENTATION_MAN="$GNUSTEP_LOCAL_DOCUMENTATION/man" + GNUSTEP_LOCAL_DOCUMENTATION_MAN='${GNUSTEP_LOCAL_DOCUMENTATION}/man' fi if test x"$GNUSTEP_LOCAL_DOCUMENTATION_INFO" = x""; then - GNUSTEP_LOCAL_DOCUMENTATION_INFO="$GNUSTEP_LOCAL_DOCUMENTATION/info" + GNUSTEP_LOCAL_DOCUMENTATION_INFO='${GNUSTEP_LOCAL_DOCUMENTATION}/info' fi AC_SUBST(GNUSTEP_LOCAL_TOOLS) @@ -689,28 +709,28 @@ AC_SUBST(GNUSTEP_LOCAL_DOCUMENTATION_INFO) if test x"$GNUSTEP_NETWORK_APPS" = x""; then - GNUSTEP_NETWORK_APPS="$GNUSTEP_NETWORK_ROOT/Applications" + GNUSTEP_NETWORK_APPS='${GNUSTEP_NETWORK_ROOT}/Applications' fi if test x"$GNUSTEP_NETWORK_TOOLS" = x""; then - GNUSTEP_NETWORK_TOOLS="$GNUSTEP_NETWORK_ROOT/Tools" + GNUSTEP_NETWORK_TOOLS='${GNUSTEP_NETWORK_ROOT}/Tools' fi if test x"$GNUSTEP_NETWORK_LIBRARY" = x""; then - GNUSTEP_NETWORK_LIBRARY="$GNUSTEP_NETWORK_ROOT/Library" + GNUSTEP_NETWORK_LIBRARY='${GNUSTEP_NETWORK_ROOT}/Library' fi if test x"$GNUSTEP_NETWORK_HEADERS" = x""; then - GNUSTEP_NETWORK_HEADERS="$GNUSTEP_NETWORK_ROOT/Library/Headers" + GNUSTEP_NETWORK_HEADERS='${GNUSTEP_NETWORK_ROOT}/Library/Headers' fi if test x"$GNUSTEP_NETWORK_LIBRARIES" = x""; then - GNUSTEP_NETWORK_LIBRARIES="$GNUSTEP_NETWORK_LIBRARY/Libraries/" + GNUSTEP_NETWORK_LIBRARIES='${GNUSTEP_NETWORK_LIBRARY}/Libraries/' fi if test x"$GNUSTEP_NETWORK_DOCUMENTATION" = x""; then - GNUSTEP_NETWORK_DOCUMENTATION="$GNUSTEP_NETWORK_LIBRARY/Documentation" + GNUSTEP_NETWORK_DOCUMENTATION='${GNUSTEP_NETWORK_LIBRARY}/Documentation' fi if test x"$GNUSTEP_NETWORK_DOCUMENTATION_MAN" = x""; then - GNUSTEP_NETWORK_DOCUMENTATION_MAN="$GNUSTEP_NETWORK_DOCUMENTATION/man" + GNUSTEP_NETWORK_DOCUMENTATION_MAN='${GNUSTEP_NETWORK_DOCUMENTATION}/man' fi if test x"$GNUSTEP_NETWORK_DOCUMENTATION_INFO" = x""; then - GNUSTEP_NETWORK_DOCUMENTATION_INFO="$GNUSTEP_NETWORK_DOCUMENTATION/info" + GNUSTEP_NETWORK_DOCUMENTATION_INFO='${GNUSTEP_NETWORK_DOCUMENTATION}/info' fi AC_SUBST(GNUSTEP_NETWORK_TOOLS) @@ -723,28 +743,28 @@ AC_SUBST(GNUSTEP_NETWORK_DOCUMENTATION_INFO) if test x"$GNUSTEP_USER_DIR_APPS" = x""; then - GNUSTEP_USER_DIR_APPS="$GNUSTEP_USER_DIR/Applications" + GNUSTEP_USER_DIR_APPS='${GNUSTEP_USER_DIR}/Applications' fi if test x"$GNUSTEP_USER_DIR_TOOLS" = x""; then - GNUSTEP_USER_DIR_TOOLS="$GNUSTEP_USER_DIR/Tools" + GNUSTEP_USER_DIR_TOOLS='${GNUSTEP_USER_DIR}/Tools' fi if test x"$GNUSTEP_USER_DIR_LIBRARY" = x""; then - GNUSTEP_USER_DIR_LIBRARY="$GNUSTEP_USER_DIR/Library" + GNUSTEP_USER_DIR_LIBRARY='${GNUSTEP_USER_DIR}/Library' fi if test x"$GNUSTEP_USER_DIR_HEADERS" = x""; then - GNUSTEP_USER_DIR_HEADERS="$GNUSTEP_USER_DIR/Library/Headers" + GNUSTEP_USER_DIR_HEADERS='${GNUSTEP_USER_DIR}/Library/Headers' fi if test x"$GNUSTEP_USER_DIR_LIBRARIES" = x""; then - GNUSTEP_USER_DIR_LIBRARIES="$GNUSTEP_USER_DIR_LIBRARY/Libraries/" + GNUSTEP_USER_DIR_LIBRARIES='${GNUSTEP_USER_DIR_LIBRARY}/Libraries/' fi if test x"$GNUSTEP_USER_DIR_DOCUMENTATION" = x""; then - GNUSTEP_USER_DIR_DOCUMENTATION="$GNUSTEP_USER_DIR/Documentation" + GNUSTEP_USER_DIR_DOCUMENTATION='${GNUSTEP_USER_DIR}/Documentation' fi if test x"$GNUSTEP_USER_DIR_DOCUMENTATION_MAN" = x""; then - GNUSTEP_USER_DIR_DOCUMENTATION_MAN="$GNUSTEP_USER_DIR_DOCUMENTATION/man" + GNUSTEP_USER_DIR_DOCUMENTATION_MAN='${GNUSTEP_USER_DIR_DOCUMENTATION}/man' fi if test x"$GNUSTEP_USER_DIR_DOCUMENTATION_INFO" = x""; then - GNUSTEP_USER_DIR_DOCUMENTATION_INFO="$GNUSTEP_USER_DIR_DOCUMENTATION/info" + GNUSTEP_USER_DIR_DOCUMENTATION_INFO='${GNUSTEP_USER_DIR_DOCUMENTATION}/info' fi AC_SUBST(GNUSTEP_USER_DIR_TOOLS) @@ -1259,7 +1279,7 @@ #-------------------------------------------------------------------- AC_CONFIG_FILES([config-noarch.make config.make openapp opentool executable.template GNUmakefile GNUstep.conf GNUstep.sh GNUstep.csh fixpath.sh -gnustep-make.spec gnustep-config filesystem.make filesystem.sh filesystem.csh]) +gnustep-make.spec gnustep.cfg]) AC_CONFIG_COMMANDS([default], [[chmod a+x openapp opentool fixpath.sh executable.template]], [[]]) Index: gnustep-config.in =================================================================== --- gnustep-config.in (revision 24586) +++ gnustep-config.in (working copy) @@ -1,128 +0,0 @@ -#! /bin/sh -# -# @configure_input@ -# -# Script that outputs GNUstep filesystem configuration; can -# be used by non-gnustep-make building/config systems to know -# how GNUstep is configured on this machine -# -# Copyright (C) 2007 Free Software Foundation, Inc. -# -# Author: Nicola Pero -# -# This file is part of the GNUstep Makefile Package. -# -# This library 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. -# -# You should have received a copy of the GNU General Public -# License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# - -if [ -z "$1" ]; then - echo "usage: gnustep-config argument" - echo "gnustep-config --help for more help" - exit 1 -fi - -if [ "$1" == "--help" ]; then - echo "usage: gnustep-config.sh argument" - echo - echo "Will print out the value of the specified argument, which can be " - echo "any GNUstep filesystem setting from the following list -- " - echo - echo "GNUSTEP_MAKEFILES" - echo "GNUSTEP_USER_DIR" - echo "GNUSTEP_USER_DEFAULTS_DIR" - echo "GNUSTEP_HOST" - echo "GNUSTEP_HOST_CPU" - echo "GNUSTEP_HOST_VENDOR" - echo "GNUSTEP_HOST_OS" - echo "GNUSTEP_IS_FLATTENED" - echo "GNUSTEP_xxx_ROOT (might be obsolete soon)" - echo "GNUSTEP_xxx_APPS" - echo "GNUSTEP_xxx_TOOLS" - echo "GNUSTEP_xxx_LIBRARY" - echo "GNUSTEP_xxx_HEADERS" - echo "GNUSTEP_xxx_LIBRARIES" - echo "GNUSTEP_xxx_DOCUMENTATION" - echo "GNUSTEP_xxx_DOCUMENTATION_MAN" - echo "GNUSTEP_xxx_DOCUMENTATION_INFO" - echo "where 'xxx' could be any of 'SYSTEM', 'NETWORK', 'LOCAL' and 'USER'." - echo - echo "For example, you could get the value of GNUSTEP_SYSTEM_TOOLS to find" - echo "where command-line system programs are located on this system." - echo - exit 0 -fi - -# -# Important - keep the following in sync with GNUstep.sh.in -# - -# -# Read our configuration files. We only do that to locate -# GNUSTEP_MAKEFILES, so that we can execute GNUstep.sh and -# access any variable that we might ever need. -# - -# Determine the location of the system configuration file -if [ -z "$GNUSTEP_CONFIG_FILE" ]; then - address@hidden@ -fi - -# Determine the location of the user configuration file -if [ -z "$GNUSTEP_USER_CONFIG_FILE" ]; then - address@hidden@ -fi - -# Read the system configuration file -if [ -f "$GNUSTEP_CONFIG_FILE" ]; then - . "$GNUSTEP_CONFIG_FILE" -fi - -# FIXME: determining GNUSTEP_HOME -GNUSTEP_HOME=~ - -# Read the user configuration file ... unless it is disabled (ie, set -# to an empty string) -if [ -n "$GNUSTEP_USER_CONFIG_FILE" ]; then - case "$GNUSTEP_USER_CONFIG_FILE" in - /*) # An absolute path - if [ -f "$GNUSTEP_USER_CONFIG_FILE" ]; then - . "$GNUSTEP_USER_CONFIG_FILE" - fi;; - *) # Something else - if [ -f "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" ]; then - . "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" - fi;; - esac -fi - -if [ -z "$GNUSTEP_MAKEFILES" ]; then - address@hidden@ -fi - -# -# If all they want to know if GNUSTEP_MAKEFILES, we can print it out -# -if [ "$1" == "GNUSTEP_MAKEFILES" ]; then - echo "$GNUSTEP_MAKEFILES" - exit 0 -fi - -# -# Else, now read all the standard GNUstep config -# -GNUSTEP_SH_EXPORT_ALL_VARIABLES=yes -. $GNUSTEP_MAKEFILES/GNUstep.sh -unset GNUSTEP_SH_EXPORT_ALL_VARIABLES - -# -# Now print whatever variable they asked for -# -echo $(eval echo \$$1) Index: step-config.c =================================================================== --- step-config.c (revision 0) +++ step-config.c (revision 0) @@ -0,0 +1,186 @@ +#include "gsconfig.h" +#include +#include + +void gsconfig_print_help(char *program_name) +{ + printf("usage: %s [OPTION]...\n", program_name); + printf(" %-20s %s\n", "-l", "list all variables"); + printf(" %-20s %s\n", "-o FILE", "output file"); + printf(" %-20s %s\n", "-x VARIABLE", "printf the contents of VARIABLE to stdout"); + printf(" %-20s %s\n", "-f FORMAT", "valid formats are c, csh, sh, make"); + printf(" %-20s %s\n", "-h", "help."); + exit(0); +} + +void dump_hash(struct gsconfig_hash *hash, FILE *file, int fspec) +{ + struct gsconfig_list *thing; + char *format; + int i; + + switch(fspec) + { + case GSCONFIG_FORMAT_HUMAN: + format = "%-40s %s\n"; + break; + case GSCONFIG_FORMAT_SH: + format = "export %s=\"%s\"\n"; + break; + case GSCONFIG_FORMAT_MAKE: + format = "%s=%s\n"; + break; + case GSCONFIG_FORMAT_CSH: + format = "setenv %s %s;\n"; + break; + case GSCONFIG_FORMAT_C: + format = "#define %s \"%s\"\n"; + } + + for (i = 0; i <= hash->max_hash; i++) + { + for (thing = hash->table[i]; thing; thing = thing->next) + { + fprintf(file, format, thing->key, gsconfig_parse_string(hash, thing->value)); + } + } +} + +int main(int argc, char **argv) +{ + FILE *fi = stdin; + FILE *fo = stdout; + struct gsconfig_list *head = NULL; + struct gsconfig_hash *hash = init_gsconfig_hash(50); + int c; + int fspec = GSCONFIG_FORMAT_HUMAN; + int list_all = 0; + char *pathlist = getenv("GNUSTEP_CONFIG_PATH"); + char *variable = NULL; + char *category = NULL; + int error; + + if (!(argc > 1)) + gsconfig_print_help(argv[0]); + + while ((c = getopt(argc, argv, "lhf:o:x:")) != -1) + switch(c) + { + case 'f': + if (strcmp(optarg, "make") == 0) + fspec = GSCONFIG_FORMAT_MAKE; + else if (strcmp(optarg, "sh") == 0) + fspec = GSCONFIG_FORMAT_SH; + else if (strcmp(optarg, "csh") == 0) + fspec = GSCONFIG_FORMAT_CSH; + else if (strcmp(optarg, "c") == 0) + fspec = GSCONFIG_FORMAT_C; + else + { + fprintf(stderr, "unsupported format: %s\n", optarg); + exit(0); + } + break; + case 'o': + if (fspec == GSCONFIG_FORMAT_HUMAN) + fspec = GSCONFIG_FORMAT_SH; + fo = fopen(optarg, "w"); + if (fo == NULL && errno) + { + fprintf(stderr, "%s\n", strerror(errno)); + exit(1); + } + break; + case 'h': + gsconfig_print_help(argv[0]); + break; + case 'l': + list_all=1; + break; + case 'x': + variable=optarg; + break; + default: + gsconfig_print_help(argv[0]); + break; + } + + if (optind < argc) + { + category = argv[optind++]; + } + +/* if (!category) + category = "gnustep"; + */ + + if (category) + { + struct gsconfig_path_list *config_file_list; + struct gsconfig_path_list *config_file; + struct gsconfig_list *head; + + config_file_list = gsconfig_paths_for_category(pathlist, category); + for (config_file = config_file_list; config_file; config_file = config_file->next) + { + fi = fopen(config_file->path, "r"); + + if (fi) + { + head = gsconfig_split_file(fi); + while (head) + { + struct gsconfig_list *next = head->next; + int keyHash = strlen(head->key); + int add = gsconfig_hash_search(hash, keyHash, head->key) == NULL; + int env = 0; + char * fromEnv; + if (add) + { + /* replace whats found in the config files with + * any environment variables */ + fromEnv = getenv(head->key); + if (fromEnv) + { + struct gsconfig_list *envVar; + char *value = malloc(strlen(fromEnv) + 1); + + strcpy(value, fromEnv); + add = 1; + free(head->value); + head->value = value; + } + } + + if (add) + { + gsconfig_hash_add(hash, keyHash, head); + } + else + { + free(head->key); + free(head->value); + free(head); + } + head = next; + } + } + } + } + + if (variable && hash) + { + head = gsconfig_hash_search(hash, strlen(variable), variable); + if (head) + printf("%s\n", head->value); + exit(0); + } + + if (list_all) + { + dump_hash(hash, fo, fspec); + } + + gsconfig_free_hash_table(hash); + return 0; +} Index: filesystem.csh.in =================================================================== --- filesystem.csh.in (revision 24586) +++ filesystem.csh.in (working copy) @@ -1,220 +0,0 @@ -#! /bin/echo This file must be sourced inside csh using: source -# -# @configure_input@ -# -# Sets up the GNUstep filesystem paths for shell scripts -# -# Copyright (C) 2007 Free Software Foundation, Inc. -# -# Author: Nicola Pero , -# -# Date: February 2007 -# -# This file is part of the GNUstep Makefile Package. -# -# This library 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. -# -# You should have received a copy of the GNU General Public -# License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# -# This does the same as filesystem.sh, but for csh. -# - -# -# SYSTEM domain -# -if ( ! ${?GNUSTEP_SYSTEM_ROOT} ) then - setenv GNUSTEP_SYSTEM_APPS "@GNUSTEP_SYSTEM_APPS@" -endif -if ( ! ${?GNUSTEP_SYSTEM_TOOLS} ) then - setenv GNUSTEP_SYSTEM_TOOLS "@GNUSTEP_SYSTEM_TOOLS@" -endif -if ( ! ${?GNUSTEP_SYSTEM_LIBRARY} ) then - setenv GNUSTEP_SYSTEM_LIBRARY "@GNUSTEP_SYSTEM_LIBRARY@" -endif -if ( ! ${?GNUSTEP_SYSTEM_HEADERS} ) then - setenv GNUSTEP_SYSTEM_HEADERS "@GNUSTEP_SYSTEM_HEADERS@" -endif -if ( ! ${?GNUSTEP_SYSTEM_LIBRARIES} ) then - setenv GNUSTEP_SYSTEM_LIBRARIES "@GNUSTEP_SYSTEM_LIBRARIES@" -endif -if ( ! ${?GNUSTEP_SYSTEM_DOCUMENTATION} ) then - setenv GNUSTEP_SYSTEM_DOCUMENTATION "@GNUSTEP_SYSTEM_DOCUMENTATION@" -endif -if ( ! ${?GNUSTEP_SYSTEM_DOCUMENTATION_MAN} ) then - setenv GNUSTEP_SYSTEM_DOCUMENTATION_MAN "@GNUSTEP_SYSTEM_DOCUMENTATION_MAN@" -endif -if ( ! ${?GNUSTEP_SYSTEM_DOCUMENTATION_INFO} ) then - setenv GNUSTEP_SYSTEM_DOCUMENTATION_INFO "@GNUSTEP_SYSTEM_DOCUMENTATION_INFO@" -endif - -# -# LOCAL domain -# -if ( ! ${?GNUSTEP_LOCAL_APPS} ) then - setenv GNUSTEP_LOCAL_APPS "@GNUSTEP_LOCAL_APPS@" -endif -if ( ! ${?GNUSTEP_LOCAL_TOOLS} ) then - setenv GNUSTEP_LOCAL_TOOLS "@GNUSTEP_LOCAL_TOOLS@" -endif -if ( ! ${?GNUSTEP_LOCAL_LIBRARY} ) then - setenv GNUSTEP_LOCAL_LIBRARY "@GNUSTEP_LOCAL_LIBRARY@" -endif -if ( ! ${?GNUSTEP_LOCAL_HEADERS} ) then - setenv GNUSTEP_LOCAL_HEADERS "@GNUSTEP_LOCAL_HEADERS@" -endif -if ( ! ${?GNUSTEP_LOCAL_LIBRARIES} ) then - setenv GNUSTEP_LOCAL_LIBRARIES "@GNUSTEP_LOCAL_LIBRARIES@" -endif -if ( ! ${?GNUSTEP_LOCAL_DOCUMENTATION} ) then - setenv GNUSTEP_LOCAL_DOCUMENTATION "@GNUSTEP_LOCAL_DOCUMENTATION@" -endif -if ( ! ${?GNUSTEP_LOCAL_DOCUMENTATION_MAN} ) then - setenv GNUSTEP_LOCAL_DOCUMENTATION_MAN "@GNUSTEP_LOCAL_DOCUMENTATION_MAN@" -endif -if ( ! ${?GNUSTEP_LOCAL_DOCUMENTATION_INFO} ) then - setenv GNUSTEP_LOCAL_DOCUMENTATION_INFO "@GNUSTEP_LOCAL_DOCUMENTATION_INFO@" -endif - -# -# NETWORK domain -# -if ( ! ${?GNUSTEP_NETWORK_APPS} ) then - setenv GNUSTEP_NETWORK_APPS "@GNUSTEP_NETWORK_APPS@" -endif -if ( ! ${?GNUSTEP_NETWORK_TOOLS} ) then - setenv GNUSTEP_NETWORK_TOOLS "@GNUSTEP_NETWORK_TOOLS@" -endif -if ( ! ${?GNUSTEP_NETWORK_LIBRARY} ) then - setenv GNUSTEP_NETWORK_LIBRARY "@GNUSTEP_NETWORK_LIBRARY@" -endif -if ( ! ${?GNUSTEP_NETWORK_HEADERS} ) then - setenv GNUSTEP_NETWORK_HEADERS "@GNUSTEP_NETWORK_HEADERS@" -endif -if ( ! ${?GNUSTEP_NETWORK_LIBRARIES} ) then - setenv GNUSTEP_NETWORK_LIBRARIES "@GNUSTEP_NETWORK_LIBRARIES@" -endif -if ( ! ${?GNUSTEP_NETWORK_DOCUMENTATION} ) then - setenv GNUSTEP_NETWORK_DOCUMENTATION "@GNUSTEP_NETWORK_DOCUMENTATION@" -endif -if ( ! ${?GNUSTEP_NETWORK_DOCUMENTATION_MAN} ) then - setenv GNUSTEP_NETWORK_DOCUMENTATION_MAN "@GNUSTEP_NETWORK_DOCUMENTATION_MAN@" -endif -if ( ! ${?GNUSTEP_NETWORK_DOCUMENTATION_INFO} ) then - setenv GNUSTEP_NETWORK_DOCUMENTATION_INFO "@GNUSTEP_NETWORK_DOCUMENTATION_INFO@" -endif - -# -# USER domain -# -if ( ! ${?GNUSTEP_USER_DIR_APPS} ) then - setenv GNUSTEP_USER_DIR_APPS "@GNUSTEP_USER_DIR_APPS@" -endif -if ( ! ${?GNUSTEP_USER_DIR_TOOLS} ) then - setenv GNUSTEP_USER_DIR_TOOLS "@GNUSTEP_USER_DIR_TOOLS@" -endif -if ( ! ${?GNUSTEP_USER_DIR_LIBRARY} ) then - setenv GNUSTEP_USER_DIR_LIBRARY "@GNUSTEP_USER_DIR_LIBRARY@" -endif -if ( ! ${?GNUSTEP_USER_DIR_HEADERS} ) then - setenv GNUSTEP_USER_DIR_HEADERS "@GNUSTEP_USER_DIR_HEADERS@" -endif -if ( ! ${?GNUSTEP_USER_DIR_LIBRARIES} ) then - setenv GNUSTEP_USER_DIR_LIBRARIES "@GNUSTEP_USER_DIR_LIBRARIES@" -endif -if ( ! ${?GNUSTEP_USER_DIR_DOCUMENTATION} ) then - setenv GNUSTEP_USER_DIR_DOCUMENTATION "@GNUSTEP_USER_DIR_DOCUMENTATION@" -endif -if ( ! ${?GNUSTEP_USER_DIR_DOCUMENTATION_MAN} ) then - setenv GNUSTEP_USER_DIR_DOCUMENTATION_MAN "@GNUSTEP_USER_DIR_DOCUMENTATION_MAN@" -endif -if ( ! ${?GNUSTEP_USER_DIR_DOCUMENTATION_INFO} ) then - setenv GNUSTEP_USER_DIR_DOCUMENTATION_INFO "@GNUSTEP_USER_DIR_DOCUMENTATION_INFO@" -endif - -switch ("${GNUSTEP_USER_DIR_APPS}") - case /*: # An absolute path - setenv GNUSTEP_USER_APPS "${GNUSTEP_USER_DIR_APPS}" - breaksw - default: # Something else - setenv GNUSTEP_USER_APPS "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_APPS}" - breaksw -endsw - -switch ("${GNUSTEP_USER_DIR_TOOLS}") - case /*: - setenv GNUSTEP_USER_TOOLS "${GNUSTEP_USER_DIR_TOOLS}" - breaksw - default: - setenv GNUSTEP_USER_TOOLS "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_TOOLS}" - breaksw -endsw - -switch ("${GNUSTEP_USER_DIR_LIBRARY}") - case /*: - setenv GNUSTEP_USER_LIBRARY "${GNUSTEP_USER_DIR_LIBRARY}" - breaksw - default: - setenv GNUSTEP_USER_LIBRARY "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_LIBRARY}" - breaksw -endsw - -switch ("${GNUSTEP_USER_DIR_HEADERS}") - case /*: - setenv GNUSTEP_USER_HEADERS "${GNUSTEP_USER_DIR_HEADERS}" - breaksw - default: - setenv GNUSTEP_USER_HEADERS "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_HEADERS}" - breaksw -endsw - -switch ("${GNUSTEP_USER_DIR_LIBRARIES}") - case /*: - setenv GNUSTEP_USER_LIBRARIES "${GNUSTEP_USER_DIR_LIBRARIES}" - breaksw - default: - setenv GNUSTEP_USER_LIBRARIES "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_LIBRARIES}" - breaksw -endsw - -switch ("${GNUSTEP_USER_DIR_DOCUMENTATION}") - case /*: - setenv GNUSTEP_USER_DOCUMENTATION "${GNUSTEP_USER_DIR_DOCUMENTATION}" - breaksw - default: - setenv GNUSTEP_USER_DOCUMENTATION "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_DOCUMENTATION}" - breaksw -endsw - -switch ("${GNUSTEP_USER_DIR_DOCUMENTATION_MAN}") - case /*: - setenv GNUSTEP_USER_DOCUMENTATION_MAN "${GNUSTEP_USER_DIR_DOCUMENTATION_MAN}" - breaksw - default: - setenv GNUSTEP_USER_DOCUMENTATION_MAN "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_DOCUMENTATION_MAN}" - breaksw -endsw - -switch ("${GNUSTEP_USER_DIR_DOCUMENTATION_INFO}") - case /*: - setenv GNUSTEP_USER_DOCUMENTATION_INFO "${GNUSTEP_USER_DIR_DOCUMENTATION_INFO}" - breaksw - default: - setenv GNUSTEP_USER_DOCUMENTATION_INFO "${GNUSTEP_HOME}/${GNUSTEP_USER_DIR_DOCUMENTATION_INFO}" - breaksw -endsw - -unsetenv GNUSTEP_USER_DIR_APPS -unsetenv GNUSTEP_USER_DIR_TOOLS -unsetenv GNUSTEP_USER_DIR_LIBRARY -unsetenv GNUSTEP_USER_DIR_HEADERS -unsetenv GNUSTEP_USER_DIR_LIBRARIES -unsetenv GNUSTEP_USER_DIR_DOCUMENTATION -unsetenv GNUSTEP_USER_DIR_DOCUMENTATION_MAN -unsetenv GNUSTEP_USER_DIR_DOCUMENTATION_INFO Index: gsconfig.c =================================================================== --- gsconfig.c (revision 0) +++ gsconfig.c (revision 0) @@ -0,0 +1,379 @@ +#include "gsconfig.h" +#include "config.h" + +void gsconfig_error(char *file, int line) +{ + fprintf(stderr, "error allocating stuff %s:%i\n", file, line); + exit(1); +} + +char *gsconfig_parse_string(struct gsconfig_hash *foo, char *string) +{ + char *curr = string; + int i = 0; + size_t len = strlen(string); + char *tmp = malloc(strlen(string) + 1); + char *merg = NULL; + int b = 0; + int e = 0; + + strcpy(tmp, string); + + if (!string) return NULL; + + while (*curr != '\0') + { + char *prev; + + prev = curr; + curr++; + i++; + + if (*prev == '$' && *curr == '{') + { + b = i + 1; + while (*curr != '\0') + { + curr++; + i++; + if (*curr == '}') + { + break; + } + } + + if (*curr != '}') + { + fprintf(stderr, "error missing } processing: %s\n", string); + return string; + } + else + { + char *varName; + struct gsconfig_list *var; + size_t newLen = 0; + size_t varLen = 0; + + e = i; + varName = malloc(e - b + 1); + strncpy(varName, &tmp[b], e - b); + varName[e - b] = '\0'; + + var = gsconfig_hash_search(foo, e - b, varName); + if (var) + varLen = newLen = strlen(var->value); + newLen += (b - 2); + newLen += len - e; + merg = malloc(newLen + 1); + memcpy(merg, tmp, b - 2); + if (var) + memcpy(&merg[b-2], var->value, varLen); + memcpy(&merg[varLen + b - 2], &tmp[e + 1], len - e); + i = b - 2; + b = b - 2; + e = 0; + curr = &merg[b]; + tmp = merg; + len = strlen(tmp); + } + } + } + + return tmp; +} + +struct gsconfig_hash *init_gsconfig_hash(int maxHash) +{ + struct gsconfig_hash *hash; + int i; + + hash = malloc(sizeof(struct gsconfig_hash)); + if (!hash) gsconfig_error(__FILE__,__LINE__); + + hash->table = malloc(sizeof(struct gsconfig_list *) * (maxHash + 1)); + if (hash->table == NULL) + gsconfig_error(__FILE__,__LINE__); + + for (i = 0; i <= maxHash; i++) + hash->table[i] = NULL; + hash->max_hash = maxHash; + return hash; +} + +void gsconfig_hash_grow(struct gsconfig_hash *foo, int hash) +{ + int i; + + if (hash < foo->max_hash) + return; + + foo->table = realloc(foo->table, sizeof(struct gsconfig_list**) * (hash + 1)); + if (!foo->table) + gsconfig_error(__FILE__,__LINE__); + + for (i = foo->max_hash; i <= hash; i++) + { + foo->table[i]=NULL; + } + foo->max_hash = hash; +} + +void gsconfig_hash_add(struct gsconfig_hash *foo, int hash, struct gsconfig_list *thing) +{ + struct gsconfig_list *head; + + + if (foo->max_hash < hash) + { + gsconfig_hash_grow(foo, hash); + } + + head = foo->table[hash]; + thing->next = head; + foo->table[hash] = thing; +} + +struct gsconfig_list *gsconfig_hash_search(struct gsconfig_hash *foo, int hash, char *key) +{ + struct gsconfig_list *thing; + if (foo->max_hash < hash) return NULL; + for (thing = foo->table[hash]; thing; thing=thing->next) + { + if (strcmp(thing->key, key) == 0) + return thing; + } + return NULL; +} + + +struct gsconfig_path_list *gsconfig_paths_for_category(char *pathlist, char *category) +{ + char *_pathlist = pathlist ? pathlist : DEFAULT_CONFIG_PATH; + char *path; + char *theRest; + struct gsconfig_path_list *head = NULL; + + + theRest = malloc(strlen(_pathlist) + 1); + strcpy(theRest, _pathlist); + + + while ((path = strsep(&theRest, ":"))) + { + char *full_path; + struct gsconfig_path_list *node; + + node = malloc(sizeof(struct gsconfig_path_list)); + + if (path[0] == '~') + { + char *home = getenv("HOME"); + full_path = malloc(strlen(home) + + (strlen(_pathlist) - 1) + + strlen(category) + + sizeof("//.cfg") + + 1); + sprintf(full_path, "%s/%s/%s.cfg", home, &path[1], category); + } + else + { + full_path = malloc(strlen(_pathlist) + strlen(category) + sizeof("//.cfg") + 1); + sprintf(full_path, "%s/%s.cfg", path, category); + } + + node->next = head; + node->path = full_path; + head = node; + } + return head; +} + +char *trim_whitespace(char *str) +{ + char *head = str; + char *c = str; + size_t len = strlen(str); + int hoff = 0; + int toff = 0; + char *ret; // = malloc(len + 1); + size_t newSz; + + while (*c != '\0') + { + if (isspace(*c)) + { + c++; + hoff++; + } + else + { + break; + } + } + + c = &str[len-1]; + + while (c != head) + { + if (isspace(*c)) + { + c--; + toff++; + } + else + { + break; + } + } + + newSz = len - (hoff + toff); + ret = malloc(newSz + 1); + strncpy(ret, &str[hoff], newSz); + ret[newSz] = '\0'; + return ret; +} + +void gsconfig_free_hash_table(struct gsconfig_hash *foo) +{ + int i; + int c = foo->max_hash; + + for (i = 0; i < c; i++) + { + struct gsconfig_list *head = foo->table[i]; + + while (head) + { + struct gsconfig_list *next = head->next; + free(head->key); + free(head->value); + free(head); + head = next; + } + } + free(foo->table); + free(foo); +} + +struct gsconfig_list *gsconfig_split_file(FILE *fi) +{ + char buf[128]; + char *left = NULL; + size_t leftSz = 0; + char *right = NULL; + size_t rightSz = 0; + int foundEq = 0; + struct gsconfig_list *head = NULL; + + while (1) + { + char *r = fgets(buf, 128, fi); + int i = 0; + char *key; + char *val = buf; + size_t keySz; + size_t valSz; + + if (r == NULL) + { + break; + } + while (isspace(*r)) + r++; + if (*r == '#') + continue; + + /* split foo=bar into two strings left and right*/ + if (!foundEq) + { + key = strsep(&val,"="); + foundEq = val != NULL; + keySz = strlen(key); + if (key != NULL) + { + if (!leftSz) + { + left = malloc(keySz + 1); + leftSz = keySz + 1; + strcpy(left, key); + } + else + { + left = realloc(left, leftSz + keySz); + strcat(left, key); + leftSz += keySz; + } + } + + if (val != NULL) + { + valSz = strlen(val); + right = malloc(valSz + 1); + strcpy(right, val); + rightSz = valSz + 1; + } + } + else + { + valSz = strlen(val); + if (rightSz) + { + right = realloc(right, rightSz + valSz); + strcat(right, val); + rightSz += valSz; + } + else + { + right = malloc(valSz + 1); + rightSz = valSz + 1; + strcpy(right, val); + } + } + + /* + * some data was found but no key value pair. + * maybe a comment.. (could surely be optimized not to malloc stuff?) + * + * only supports # at the beginning of the line. + */ + if (left && (left[leftSz - 2] == '\n' || left[0] == '#')) + { + char *stuff = trim_whitespace(left); + + if (strlen(stuff)) + { + char *errStr = trim_whitespace(left); + fprintf(stderr, "error parsing key pair '%s'\n", errStr); + free(errStr); + } + + free(stuff); + free(left); + leftSz = 0; + left = NULL; + keySz = 0; + key = NULL; + foundEq = 0; + } + else if (left && right && right[rightSz - 2] == '\n') + { + /* a key/value pair was found */ + struct gsconfig_list *kv; + + kv = malloc(sizeof(struct gsconfig_list)); + kv->key = trim_whitespace(left); + kv->value = trim_whitespace(right); + kv->next = head; + head = kv; + + free(left); + free(right); + left = NULL; + leftSz = 0; + right = NULL; + rightSz = 0; + foundEq = 0; + } + } + return head; +} Index: gsconfig.h =================================================================== --- gsconfig.h (revision 0) +++ gsconfig.h (revision 0) @@ -0,0 +1,42 @@ +#ifndef __GSCONFIG_H +#include +#include +#include + +#define GSCONFIG_FORMAT_SH 0 +#define GSCONFIG_FORMAT_CSH 1 +#define GSCONFIG_FORMAT_HUMAN 2 +#define GSCONFIG_FORMAT_MAKE 3 +#define GSCONFIG_FORMAT_C 4 + +struct gsconfig_path_list { + char *path; + struct gsconfig_path_list *next; +}; + +struct gsconfig_list { + char *key; + char *value; + struct gsconfig_list *next; +}; + +struct gsconfig_hash { + int max_hash; + struct gsconfig_list **table; +}; + +/* + * returns a linked list of all key/value pairs in the file + * variables unexpanded. + */ +struct gsconfig_list *gsconfig_split_file(FILE *fi); +struct gsconfig_list *gsconfig_hash_search(struct gsconfig_hash *table, int hash, char *key); +struct gsconfig_hash *init_gsconfig_hash(int maxHash); +void gsconfig_hash_add(struct gsconfig_hash *table, int hash, struct gsconfig_list *thing); +struct gsconfig_path_list *gsconfig_paths_for_category(char *pathlist, char *category); + + + +#define __GSCONFIG_H +#endif + Index: GNUmakefile.in =================================================================== --- GNUmakefile.in (revision 24586) +++ GNUmakefile.in (working copy) @@ -119,9 +119,12 @@ EC = @ endif -all: generated-files +all: generated-files step-config $(EC)(echo "Thanks. All is ready to install.") +step-config: step-config.o gsconfig.o + @CC@ @CFLAGS@ -o $@ $^ + install: generated-files $(EC)(echo "Creating system domain: $(GNUSTEP_SYSTEM_ROOT)"; \ $(srcdir)/create_domain_dir_tree.sh "$(GNUSTEP_SYSTEM_ROOT)"; \ @@ -139,9 +142,9 @@ $(makedir)/Instance \ $(makedir)/Instance/Shared \ $(makedir)/Instance/Documentation) - $(EC)(echo "Installing GNUstep configuration file in $(GNUSTEP_CONFIG_FILE)"; \ + $(EC)(echo "Installing GNUstep configuration file in $(GNUSTEP_CONFIG_FILE_DIR)"; \ $(srcdir)/mkinstalldirs "$(GNUSTEP_CONFIG_FILE_DIR)"; \ - $(INSTALL_DATA) GNUstep.conf "$(GNUSTEP_CONFIG_FILE)") + $(INSTALL_DATA) gnustep.cfg "$(GNUSTEP_CONFIG_FILE_DIR)/gnustep.cfg") -$(EC) rm -f "$(GNUSTEP_SYSTEM_ROOT)/Makefiles" $(EC)(echo "Installing gnustep-make support software") $(EC)(for f in config.guess config.sub install-sh mkinstalldirs \ @@ -152,8 +155,6 @@ done) $(EC)($(INSTALL_DATA) GNUstep.sh $(makedir); \ $(INSTALL_DATA) GNUstep.csh $(makedir); \ - $(INSTALL_DATA) filesystem.sh $(makedir); \ - $(INSTALL_DATA) filesystem.csh $(makedir); \ $(INSTALL_DATA) $(srcdir)/ld_lib_path.sh $(makedir); \ $(INSTALL_DATA) $(srcdir)/ld_lib_path.csh $(makedir); \ $(INSTALL_DATA) $(srcdir)/GNUstep-reset.sh $(makedir); \ @@ -161,7 +162,7 @@ $(INSTALL_PROGRAM) -m 755 openapp $(tooldir); \ $(INSTALL_PROGRAM) -m 755 debugapp $(tooldir); \ $(INSTALL_PROGRAM) -m 755 opentool $(tooldir); \ - $(INSTALL_PROGRAM) -m 755 gnustep-config $(tooldir)) + $(INSTALL_PROGRAM) -m 755 step-config $(tooldir)) $(EC)(echo "Installing makefiles"; \ for f in $(MAKE_FILES); do \ $(INSTALL_DATA) $(srcdir)/$$f $(makedir); \ @@ -241,9 +242,8 @@ rm -f GNUmakefile config-noarch.make config.make config.h rm -f config.cache config.log config.status rm -f openapp opentool executable.template - rm -f GNUstep.sh GNUstep.csh fixpath.sh gnustep-config - rm -f filesystem.make filesystem.sh filesystem.csh - rm -f gnustep-make.spec GNUstep.conf + rm -f GNUstep.sh GNUstep.csh fixpath.sh + rm -f gnustep-make.spec gnustep.cfg rm -f config-precomp-test.log svn-tag: @@ -305,8 +305,8 @@ $${rpmbuild} -ba gnustep-make.spec generated-files: GNUmakefile GNUstep.sh GNUstep.csh fixpath.sh config-noarch.make config.make \ - openapp opentool gnustep-make.spec executable.template gnustep-config \ - filesystem.make filesystem.sh filesystem.csh GNUstep.conf + openapp opentool gnustep-make.spec executable.template \ + gnustep.cfg GNUmakefile: GNUmakefile.in config.status $(SHELL) config.status @@ -317,21 +317,12 @@ GNUstep.csh: GNUstep.csh.in $(SHELL) config.status -GNUstep.conf: GNUstep.conf.in +gnustep.cfg: gnustep.cfg.in $(SHELL) config.status fixpath.sh: fixpath.sh.in $(SHELL) config.status -filesystem.make: filesystem.make.in - $(SHELL) config.status - -filesystem.sh: filesystem.sh.in - $(SHELL) config.status - -filesystem.csh: filesystem.csh.in - $(SHELL) config.status - config-noarch.make: config-noarch.make.in Version $(SHELL) config.status --recheck @@ -349,6 +340,3 @@ executable.template: executable.template.in $(SHELL) config.status - -gnustep-config: gnustep-config.in - $(SHELL) config.status Index: config-noarch.make.in =================================================================== --- config-noarch.make.in (revision 24586) +++ config-noarch.make.in (working copy) @@ -37,74 +37,6 @@ address@hidden@ address@hidden@ -# The default library combination -default_library_combo = @ac_cv_library_combo@ - -# -# Location of GNUstep's config file for this installation -# -# Warning - the base library's configure.in will extract the GNUstep -# config file location from the following line using grep/sed - so if -# you change the following lines you *need* to update the base library -# configure.in too. -# -# PS: At run-time, this can be overridden on the command-line, or -# via an environment variable. -ifeq ($(GNUSTEP_CONFIG_FILE),) -GNUSTEP_CONFIG_FILE = @GNUSTEP_CONFIG_FILE@ -endif - -# -# Now we set up the environment and everything by reading the GNUstep -# configuration file(s). -# - -# These are the defaults value ... they will be used only if they are -# not set in the config files (or on the command-line or in -# environment). -GNUSTEP_SYSTEM_ROOT = @GNUSTEP_SYSTEM_ROOT@ -GNUSTEP_LOCAL_ROOT = @GNUSTEP_LOCAL_ROOT@ -GNUSTEP_NETWORK_ROOT = @GNUSTEP_NETWORK_ROOT@ -GNUSTEP_USER_DIR = @GNUSTEP_USER_DIR@ - -# This includes the GNUstep configuration file, but only if it exists --include $(GNUSTEP_CONFIG_FILE) - -# FIXME: determining GNUSTEP_HOME -GNUSTEP_HOME = $(HOME) - -# Read the user configuration file ... unless it is disabled (ie, set -# to an empty string) -ifneq ($(GNUSTEP_USER_CONFIG_FILE),) - - # FIXME - Checking for relative vs. absolute paths! - ifneq ($(filter /%, $(GNUSTEP_USER_CONFIG_FILE)),) - # Path starts with '/', consider it absolute - -include $(GNUSTEP_USER_CONFIG_FILE) - else - # Path does no start with '/', try it as relative - -include $(GNUSTEP_HOME)/$(GNUSTEP_USER_CONFIG_FILE) - endif - -endif - -# GNUSTEP_FLATTENED is obsolete, please use GNUSTEP_IS_FLATTENED -# instead -GNUSTEP_FLATTENED = @GNUSTEP_FLATTENED@ -GNUSTEP_IS_FLATTENED = @GNUSTEP_IS_FLATTENED@ - -# -# Set GNUSTEP_USER_ROOT from GNUSTEP_USER_DIR; GNUSTEP_USER_ROOT is -# the variable used in practice -# -ifneq ($(filter /%, $(GNUSTEP_USER_DIR)),) - # Path starts with '/', consider it absolute - GNUSTEP_USER_ROOT = $(GNUSTEP_USER_DIR) -else - # Path does no start with '/', try it as relative - GNUSTEP_USER_ROOT = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR) -endif - # If multi-platform support is disabled, just use the hardcoded cpu, # vendor and os determined when gnustep-make was configured. The # reason using the hardcoded ones might be better is that config.guess @@ -114,10 +46,3 @@ # prevent this problem, unless we were configured to determine the # platform at run time, by default we use the hardcoded values of # GNUSTEP_HOST*. - -ifeq ("@GNUSTEP_MULTI_PLATFORM@","") - GNUSTEP_HOST = @target@ - GNUSTEP_HOST_CPU = @clean_target_cpu@ - GNUSTEP_HOST_VENDOR = @clean_target_vendor@ - GNUSTEP_HOST_OS = @clean_target_os@ -endif Index: GNUstep.sh.in =================================================================== --- GNUstep.sh.in (revision 24586) +++ GNUstep.sh.in (working copy) @@ -76,161 +76,23 @@ # Read our configuration files # -# Determine the location of the system configuration file -if [ -z "$GNUSTEP_CONFIG_FILE" ]; then - address@hidden@ -fi +# Read in step-config +CONFIG_FILE=`mktemp` +step-config -o $CONFIG_FILE -l -f sh gnustep +. $CONFIG_FILE +rm $CONFIG_FILE -# Determine the location of the user configuration file -if [ -z "$GNUSTEP_USER_CONFIG_FILE" ]; then - address@hidden@ -fi - -# Read the system configuration file -if [ -f "$GNUSTEP_CONFIG_FILE" ]; then - . "$GNUSTEP_CONFIG_FILE" -fi - -# FIXME: determining GNUSTEP_HOME -GNUSTEP_HOME=~ - -# Read the user configuration file ... unless it is disabled (ie, set -# to an empty string) -if [ -n "$GNUSTEP_USER_CONFIG_FILE" ]; then - case "$GNUSTEP_USER_CONFIG_FILE" in - /*) # An absolute path - if [ -f "$GNUSTEP_USER_CONFIG_FILE" ]; then - . "$GNUSTEP_USER_CONFIG_FILE" - fi;; - *) # Something else - if [ -f "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" ]; then - . "$GNUSTEP_HOME/$GNUSTEP_USER_CONFIG_FILE" - fi;; - esac -fi - -# Now, set any essential variable (that is not already set) to the -# built-in values. - -# This is deprecated and will be removed -if [ -z "$GNUSTEP_SYSTEM_ROOT" ]; then - address@hidden@ -fi - -# This is deprecated and will be removed -if [ -z "$GNUSTEP_LOCAL_ROOT" ]; then - address@hidden@ -fi - -# This is deprecated and will be removed -if [ -z "$GNUSTEP_NETWORK_ROOT" ]; then - address@hidden@ -fi - export GNUSTEP_SYSTEM_ROOT GNUSTEP_LOCAL_ROOT GNUSTEP_NETWORK_ROOT - -# GNUSTEP_FLATTENED is obsolete, please use GNUSTEP_IS_FLATTENED -# instead address@hidden@ address@hidden@ -if [ -z "$LIBRARY_COMBO" ]; then - address@hidden@ -fi -export GNUSTEP_IS_FLATTENED GNUSTEP_FLATTENED LIBRARY_COMBO - -if [ -z "$GNUSTEP_MAKEFILES" ]; then - address@hidden@ -fi -export GNUSTEP_MAKEFILES - -if [ -z "$GNUSTEP_USER_DIR" ]; then - address@hidden@ -fi - -# -# Set GNUSTEP_USER_ROOT which is the variable used in practice -# -case "$GNUSTEP_USER_DIR" in - /*) # An absolute path - GNUSTEP_USER_ROOT="$GNUSTEP_USER_DIR";; - *) # Something else - GNUSTEP_USER_ROOT="$GNUSTEP_HOME/$GNUSTEP_USER_DIR";; -esac - -# This is deprecated and will be removed export GNUSTEP_USER_ROOT - -# If multi-platform support is disabled, just use the hardcoded cpu, -# vendor and os determined when gnustep-make was configured. The -# reason using the hardcoded ones might be better is that config.guess -# and similar scripts might even require compiling test files to -# determine the platform - but then you can't source GNUstep.sh -# without having gcc, binutils, libc6-dev installed. Which can be a -# problem for end-users who are not developers and have no development -# tools installed. To prevent this problem, unless we were configured -# to determine the platform at run time, by default we use the -# hardcoded values of GNUSTEP_HOST*. -if [ -z "@GNUSTEP_MULTI_PLATFORM@" ]; then - address@hidden@ - address@hidden@ - address@hidden@ - address@hidden@ -fi - -# -# Determine the host information -# -if [ -z "$GNUSTEP_HOST" ]; then - # Not all shells (e.g. /bin/sh on FreeBSD < 4.0 or ash) have pushd/popd - tmpdir=`pwd`; cd /tmp - GNUSTEP_HOST=`$GNUSTEP_MAKEFILES/config.guess` - GNUSTEP_HOST=`$GNUSTEP_MAKEFILES/config.sub $GNUSTEP_HOST` - cd "$tmpdir" - unset tmpdir -fi - -if [ -z "$GNUSTEP_HOST_CPU" ]; then - GNUSTEP_HOST_CPU=`$GNUSTEP_MAKEFILES/cpu.sh $GNUSTEP_HOST` - GNUSTEP_HOST_CPU=`$GNUSTEP_MAKEFILES/clean_cpu.sh $GNUSTEP_HOST_CPU` -fi - -if [ -z "$GNUSTEP_HOST_VENDOR" ]; then - GNUSTEP_HOST_VENDOR=`$GNUSTEP_MAKEFILES/vendor.sh $GNUSTEP_HOST` - GNUSTEP_HOST_VENDOR=`$GNUSTEP_MAKEFILES/clean_vendor.sh $GNUSTEP_HOST_VENDOR` -fi - -if [ -z "$GNUSTEP_HOST_OS" ]; then - GNUSTEP_HOST_OS=`$GNUSTEP_MAKEFILES/os.sh $GNUSTEP_HOST` - GNUSTEP_HOST_OS=`$GNUSTEP_MAKEFILES/clean_os.sh $GNUSTEP_HOST_OS` -fi - export GNUSTEP_HOST GNUSTEP_HOST_CPU GNUSTEP_HOST_VENDOR GNUSTEP_HOST_OS -# Now load in all the remaining paths -. $GNUSTEP_MAKEFILES/filesystem.sh - -# No longer needed -unset GNUSTEP_HOME - # Determine if the paths look like Windows paths that need fixing fixup_paths=no if [ -z "`echo $GNUSTEP_MAKEFILES | sed 's|^[a-zA-Z]:/.*$||'`" ]; then fixup_paths=yes fi -# GNUSTEP_PATHLIST is deprecated and will be removed. # -# GNUSTEP_PATHLIST is like an abstract path-like shell variable, which -# can be used to search the gnustep directories - and in these -# scripts, it is also used to set up other shell variables -# -if [ -z "$GNUSTEP_PATHLIST" ]; then - - GNUSTEP_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_ROOT" "$GNUSTEP_LOCAL_ROOT" "$GNUSTEP_NETWORK_ROOT" "$GNUSTEP_SYSTEM_ROOT" $fixup_paths` - export GNUSTEP_PATHLIST -fi - -# # Add path to Tools to PATH # GNUSTEP_TOOLS_PATHLIST=`$GNUSTEP_MAKEFILES/print_unique_pathlist.sh "$GNUSTEP_USER_TOOLS" "$GNUSTEP_LOCAL_TOOLS" "$GNUSTEP_NETWORK_TOOLS" "$GNUSTEP_SYSTEM_TOOLS" $fixup_paths` @@ -375,66 +237,6 @@ . "$GNUSTEP_USER_ROOT/GNUstep.sh" fi -# -# Clean up the environment by removing the filesystem variables. Do -# it unless we were explicitly requested not to clean it up! Mostly -# gnustep-config will request that the environment is not cleaned up, -# so it can print out all of the GNUstep variables. -# -if [ -n "$GNUSTEP_SH_EXPORT_ALL_VARIABLES" ]; then - export GNUSTEP_SYSTEM_APPS GNUSTEP_SYSTEM_TOOLS GNUSTEP_SYSTEM_LIBRARY - export GNUSTEP_SYSTEM_HEADERS GNUSTEP_SYSTEM_LIBRARIES - export GNUSTEP_SYSTEM_DOCUMENTATION GNUSTEP_SYSTEM_DOCUMENTATION_MAN GNUSTEP_SYSTEM_DOCUMENTATION_INFO - - export GNUSTEP_LOCAL_APPS GNUSTEP_LOCAL_TOOLS GNUSTEP_LOCAL_LIBRARY - export GNUSTEP_LOCAL_HEADERS GNUSTEP_LOCAL_LIBRARIES - export GNUSTEP_LOCAL_DOCUMENTATION GNUSTEP_LOCAL_DOCUMENTATION_MAN GNUSTEP_LOCAL_DOCUMENTATION_INFO - - export GNUSTEP_NETWORK_APPS GNUSTEP_NETWORK_TOOLS GNUSTEP_NETWORK_LIBRARY - export GNUSTEP_NETWORK_HEADERS GNUSTEP_NETWORK_LIBRARIES - export GNUSTEP_NETWORK_DOCUMENTATION GNUSTEP_NETWORK_DOCUMENTATION_MAN GNUSTEP_NETWORK_DOCUMENTATION_INFO - - export GNUSTEP_USER_APPS GNUSTEP_USER_TOOLS GNUSTEP_USER_LIBRARY - export GNUSTEP_USER_HEADERS GNUSTEP_USER_LIBRARIES - export GNUSTEP_USER_DOCUMENTATION GNUSTEP_USER_DOCUMENTATION_MAN GNUSTEP_USER_DOCUMENTATION_INFO -else - unset GNUSTEP_SYSTEM_APPS - unset GNUSTEP_SYSTEM_TOOLS - unset GNUSTEP_SYSTEM_LIBRARY - unset GNUSTEP_SYSTEM_HEADERS - unset GNUSTEP_SYSTEM_LIBRARIES - unset GNUSTEP_SYSTEM_DOCUMENTATION - unset GNUSTEP_SYSTEM_DOCUMENTATION_MAN - unset GNUSTEP_SYSTEM_DOCUMENTATION_INFO - - unset GNUSTEP_LOCAL_APPS - unset GNUSTEP_LOCAL_TOOLS - unset GNUSTEP_LOCAL_LIBRARY - unset GNUSTEP_LOCAL_HEADERS - unset GNUSTEP_LOCAL_LIBRARIES - unset GNUSTEP_LOCAL_DOCUMENTATION - unset GNUSTEP_LOCAL_DOCUMENTATION_MAN - unset GNUSTEP_LOCAL_DOCUMENTATION_INFO - - unset GNUSTEP_NETWORK_APPS - unset GNUSTEP_NETWORK_TOOLS - unset GNUSTEP_NETWORK_LIBRARY - unset GNUSTEP_NETWORK_HEADERS - unset GNUSTEP_NETWORK_LIBRARIES - unset GNUSTEP_NETWORK_DOCUMENTATION - unset GNUSTEP_NETWORK_DOCUMENTATION_MAN - unset GNUSTEP_NETWORK_DOCUMENTATION_INFO - - unset GNUSTEP_USER_APPS - unset GNUSTEP_USER_TOOLS - unset GNUSTEP_USER_LIBRARY - unset GNUSTEP_USER_HEADERS - unset GNUSTEP_USER_LIBRARIES - unset GNUSTEP_USER_DOCUMENTATION - unset GNUSTEP_USER_DOCUMENTATION_MAN - unset GNUSTEP_USER_DOCUMENTATION_INFO -fi - if [ -n "$GS_ZSH_NEED_TO_RESTORE_SET" ]; then set +y fi Index: common.make =================================================================== --- common.make (revision 24586) +++ common.make (working copy) @@ -32,6 +32,23 @@ # from having to recompute it! export GNUSTEP_MAKEFILES +# during the build will be placed. '.' means it's the same as the +# source directory; this case is the default/common and we optimize +# for it whenever possible. +ifeq ($(GNUSTEP_BUILD_DIR),) + GNUSTEP_BUILD_DIR = . +endif + +ifeq ($(CONFIG_FILE),) +CONFIG_FILE=$(CURDIR)/gnustep-config.make +$(shell step-config gnustep -o $(CONFIG_FILE) -l -f make) +# export this to avoid recreation in sub-GNUmakefiles +export CONFIG_FILE +endif + +include $(CONFIG_FILE) +export GNUSTEP_HEADERS_FLAGS + # # Get the global config information. This includes # GNUSTEP_SYSTEM_ROOT, GNUSTEP_MAKE_VERSION, GNUSTEP_IS_FLATTENED, @@ -80,13 +97,6 @@ # include $(GNUSTEP_MAKEFILES)/$(GNUSTEP_TARGET_LDIR)/config.make -# GNUSTEP_BUILD_DIR is the directory in which anything generated -# during the build will be placed. '.' means it's the same as the -# source directory; this case is the default/common and we optimize -# for it whenever possible. -ifeq ($(GNUSTEP_BUILD_DIR),) - GNUSTEP_BUILD_DIR = . -endif # # Get standard messages @@ -274,106 +284,7 @@ # Now prepare the library and header flags - we first prepare the list # of directories (trying to avoid duplicates in the list), then # optionally remove the empty ones, then prepend -I / -L to them. -ifeq ($(GNUSTEP_IS_FLATTENED), no) -# The following variables have to be evaluated after setting domain to -# something, such as USER. When you evaluate them in that situation, -# they will generate paths according to the following definition. -# Later, we'll systematically replace domain with USER, the LOCAL, -# then NETWORK, then SYSTEM. -GS_HEADER_PATH = \ - $(GNUSTEP_$(domain)_HEADERS)/$(GNUSTEP_TARGET_DIR) \ - $(GNUSTEP_$(domain)_HEADERS) - -GS_LIBRARY_PATH = \ - $(GNUSTEP_$(domain)_LIBRARIES)/$(GNUSTEP_TARGET_LDIR) \ - $(GNUSTEP_$(domain)_LIBRARIES)/$(GNUSTEP_TARGET_DIR) - -else - -# In the flattened case, the paths to generate are considerably simpler. - -GS_HEADER_PATH = $(GNUSTEP_$(domain)_HEADERS) -GS_LIBRARY_PATH = $(GNUSTEP_$(domain)_LIBRARIES) - -endif - -ifeq ($(FOUNDATION_LIB), apple) -GS_FRAMEWORK_PATH = $(GNUSTEP_$(domain)_FRAMEWORKS) -else -GS_FRAMEWORK_PATH = -endif - -# First, we add paths based in the USER domain. - -# Please note that the following causes GS_HEADER_PATH to be evaluated -# with the variable domain equal to USER, which gives the effect we -# wanted. -GNUSTEP_HEADERS_DIRS = $(foreach domain,USER,$(GS_HEADER_PATH)) -GNUSTEP_LIBRARIES_DIRS = $(foreach domain,USER,$(GS_LIBRARY_PATH)) -GNUSTEP_FRAMEWORKS_DIRS = $(foreach domain,USER,$(GS_FRAMEWORK_PATH)) - -# Second, if LOCAL flags are different from USER flags (which have -# already been added), we add the LOCAL flags too. -ifneq ($(GNUSTEP_LOCAL_HEADERS), $(GNUSTEP_USER_HEADERS)) -GNUSTEP_HEADERS_DIRS += $(foreach domain,LOCAL,$(GS_HEADER_PATH)) -endif - -ifneq ($(GNUSTEP_LOCAL_LIBRARIES), $(GNUSTEP_USER_LIBRARIES)) -GNUSTEP_LIBRARIES_DIRS += $(foreach domain,LOCAL,$(GS_LIBRARY_PATH)) -endif - -ifneq ($(GNUSTEP_LOCAL_FRAMEWORKS), $(GNUSTEP_USER_FRAMEWORKS)) -GNUSTEP_FRAMEWORKS_DIRS += $(foreach domain,LOCAL,$(GS_FRAMEWORK_PATH)) -endif - -# Third, if NETWORK flags are different from USER and LOCAL flags (which -# have already been added), we add those too. -ifneq ($(GNUSTEP_NETWORK_HEADERS), $(GNUSTEP_USER_HEADERS)) -ifneq ($(GNUSTEP_NETWORK_HEADERS), $(GNUSTEP_LOCAL_HEADERS)) -GNUSTEP_HEADERS_DIRS += $(foreach domain,NETWORK,$(GS_HEADER_PATH)) -endif -endif - -ifneq ($(GNUSTEP_NETWORK_LIBRARIES), $(GNUSTEP_USER_LIBRARIES)) -ifneq ($(GNUSTEP_NETWORK_LIBRARIES), $(GNUSTEP_LOCAL_LIBRARIES)) -GNUSTEP_LIBRARIES_DIRS += $(foreach domain,NETWORK,$(GS_LIBRARY_PATH)) -endif -endif - -ifneq ($(GNUSTEP_NETWORK_FRAMEWORKS), $(GNUSTEP_USER_FRAMEWORKS)) -ifneq ($(GNUSTEP_NETWORK_FRAMEWORKS), $(GNUSTEP_LOCAL_FRAMEWORKS)) -GNUSTEP_FRAMEWORKS_DIRS += $(foreach domain,NETWORK,$(GS_FRAMEWORK_PATH)) -endif -endif - -# Last, if SYSTEM flags are different from USER, LOCAL and NETWORK -# flags (which have already been added), we add the ones based on -# SYSTEM too. -ifneq ($(GNUSTEP_SYSTEM_HEADERS), $(GNUSTEP_USER_HEADERS)) -ifneq ($(GNUSTEP_SYSTEM_HEADERS), $(GNUSTEP_LOCAL_HEADERS)) -ifneq ($(GNUSTEP_SYSTEM_HEADERS), $(GNUSTEP_NETWORK_HEADERS)) -GNUSTEP_HEADERS_DIRS += $(foreach domain,SYSTEM,$(GS_HEADER_PATH)) -endif -endif -endif - -ifneq ($(GNUSTEP_SYSTEM_LIBRARIES), $(GNUSTEP_USER_LIBRARIES)) -ifneq ($(GNUSTEP_SYSTEM_LIBRARIES), $(GNUSTEP_LOCAL_LIBRARIES)) -ifneq ($(GNUSTEP_SYSTEM_LIBRARIES), $(GNUSTEP_NETWORK_LIBRARIES)) -GNUSTEP_LIBRARIES_DIRS += $(foreach domain,SYSTEM,$(GS_LIBRARY_PATH)) -endif -endif -endif - -ifneq ($(GNUSTEP_SYSTEM_FRAMEWORKS), $(GNUSTEP_USER_FRAMEWORKS)) -ifneq ($(GNUSTEP_SYSTEM_FRAMEWORKS), $(GNUSTEP_LOCAL_FRAMEWORKS)) -ifneq ($(GNUSTEP_SYSTEM_FRAMEWORKS), $(GNUSTEP_NETWORK_FRAMEWORKS)) -GNUSTEP_FRAMEWORKS_DIRS += $(foreach domain,SYSTEM,$(GS_FRAMEWORK_PATH)) -endif -endif -endif - ifeq ($(REMOVE_EMPTY_DIRS),yes) # This variable, when evaluated, gives $(dir) if dir is non-empty, and # nothing if dir is empty. @@ -400,11 +311,6 @@ $(addprefix -L,$(foreach dir,$(GNUSTEP_LIBRARIES_DIRS),$(remove_if_empty))) GNUSTEP_FRAMEWORKS_FLAGS = \ $(addprefix -F,$(foreach dir,$(GNUSTEP_FRAMEWORKS_DIRS),$(remove_if_empty))) -else - # Default case, just add -I / -L - GNUSTEP_HEADERS_FLAGS = $(addprefix -I,$(GNUSTEP_HEADERS_DIRS)) - GNUSTEP_LIBRARIES_FLAGS = $(addprefix -L,$(GNUSTEP_LIBRARIES_DIRS)) - GNUSTEP_FRAMEWORKS_FLAGS = $(addprefix -F,$(GNUSTEP_FRAMEWORKS_DIRS)) endif ifeq ($(FOUNDATION_LIB), fd) Index: filesystem.make.in =================================================================== --- filesystem.make.in (revision 24586) +++ filesystem.make.in (working copy) @@ -1,198 +0,0 @@ -# -# filesystem.make -# -# Sets up the filesystem paths -# -# Copyright (C) 2007 Free Software Foundation, Inc. -# -# Author: Nicola Pero , -# Matt Rice , -# -# Date: February 2007 -# -# This file is part of the GNUstep Makefile Package. -# -# This library 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. -# -# You should have received a copy of the GNU General Public -# License along with this library; see the file COPYING.LIB. -# If not, write to the Free Software Foundation, -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# -# We make sure that all the interesting paths in all domains are -# defined. Having this is a great help in iterating over header dirs, -# for example. -# -# PS: If you change this list, make sure that top update the list of -# paths used in common.make when GNUSTEP_INSTALLATION_DIR is set. -# - -# -# We use '?=' to only set variables that have not already been set by -# the user in the config files (that should be read before this file). -# So, this describes the GNUstep filesystem default that is -# automatically used when the config file is missing some settings. -# -# Some directories are fixed to be subdirectories of Library. -# -# We keep the list in this simple format (instead of generating it -# from functions, for example) to make it very easy to read for -# everyone. -# - -# -# SYSTEM domain -# -GNUSTEP_SYSTEM_APPS ?= @GNUSTEP_SYSTEM_APPS@ -GNUSTEP_SYSTEM_TOOLS ?= @GNUSTEP_SYSTEM_TOOLS@ -GNUSTEP_SYSTEM_LIBRARY ?= @GNUSTEP_SYSTEM_LIBRARY@ -GNUSTEP_SYSTEM_HEADERS ?= @GNUSTEP_SYSTEM_HEADERS@ -GNUSTEP_SYSTEM_LIBRARIES ?= @GNUSTEP_SYSTEM_LIBRARIES@ -GNUSTEP_SYSTEM_DOCUMENTATION ?= @GNUSTEP_SYSTEM_DOCUMENTATION@ -GNUSTEP_SYSTEM_DOCUMENTATION_MAN ?= @GNUSTEP_SYSTEM_DOCUMENTATION_MAN@ -GNUSTEP_SYSTEM_DOCUMENTATION_INFO ?= @GNUSTEP_SYSTEM_DOCUMENTATION_INFO@ - -# -# SYSTEM domain, variables that are fixed to subdirs of LIBRARY -# -GNUSTEP_SYSTEM_APPLICATION_SUPPORT = $(GNUSTEP_SYSTEM_LIBRARY)/ApplicationSupport -GNUSTEP_SYSTEM_BUNDLES = $(GNUSTEP_SYSTEM_LIBRARY)/Bundles -GNUSTEP_SYSTEM_FRAMEWORKS = $(GNUSTEP_SYSTEM_LIBRARY)/Frameworks -GNUSTEP_SYSTEM_PALETTES = $(GNUSTEP_SYSTEM_LIBRARY)/ApplicationSupport/Palettes -GNUSTEP_SYSTEM_SERVICES = $(GNUSTEP_SYSTEM_LIBRARY)/Services -GNUSTEP_SYSTEM_RESOURCES = $(GNUSTEP_SYSTEM_LIBRARY)/Libraries/Resources -GNUSTEP_SYSTEM_JAVA = $(GNUSTEP_SYSTEM_LIBRARY)/Libraries/Java - - -# -# LOCAL domain -# -GNUSTEP_LOCAL_APPS ?= @GNUSTEP_LOCAL_APPS@ -GNUSTEP_LOCAL_TOOLS ?= @GNUSTEP_LOCAL_TOOLS@ -GNUSTEP_LOCAL_LIBRARY ?= @GNUSTEP_LOCAL_LIBRARY@ -GNUSTEP_LOCAL_HEADERS ?= @GNUSTEP_LOCAL_HEADERS@ -GNUSTEP_LOCAL_LIBRARIES ?= @GNUSTEP_LOCAL_LIBRARIES@ -GNUSTEP_LOCAL_DOCUMENTATION ?= @GNUSTEP_LOCAL_DOCUMENTATION@ -GNUSTEP_LOCAL_DOCUMENTATION_MAN ?= @GNUSTEP_LOCAL_DOCUMENTATION_MAN@ -GNUSTEP_LOCAL_DOCUMENTATION_INFO ?= @GNUSTEP_LOCAL_DOCUMENTATION_INFO@ - -# -# LOCAL domain, variables that are fixed to subdirs of LIBRARY -# -GNUSTEP_LOCAL_APPLICATION_SUPPORT = $(GNUSTEP_LOCAL_LIBRARY)/ApplicationSupport -GNUSTEP_LOCAL_BUNDLES = $(GNUSTEP_LOCAL_LIBRARY)/Bundles -GNUSTEP_LOCAL_FRAMEWORKS = $(GNUSTEP_LOCAL_LIBRARY)/Frameworks -GNUSTEP_LOCAL_PALETTES = $(GNUSTEP_LOCAL_LIBRARY)/ApplicationSupport/Palettes -GNUSTEP_LOCAL_SERVICES = $(GNUSTEP_LOCAL_LIBRARY)/Services -GNUSTEP_LOCAL_RESOURCES = $(GNUSTEP_LOCAL_LIBRARY)/Libraries/Resources -GNUSTEP_LOCAL_JAVA = $(GNUSTEP_LOCAL_LIBRARY)/Libraries/Java - - - -# -# NETWORK domain -# -GNUSTEP_NETWORK_APPS ?= @GNUSTEP_NETWORK_APPS@ -GNUSTEP_NETWORK_TOOLS ?= @GNUSTEP_NETWORK_TOOLS@ -GNUSTEP_NETWORK_LIBRARY ?= @GNUSTEP_NETWORK_LIBRARY@ -GNUSTEP_NETWORK_HEADERS ?= @GNUSTEP_NETWORK_HEADERS@ -GNUSTEP_NETWORK_LIBRARIES ?= @GNUSTEP_NETWORK_LIBRARIES@ -GNUSTEP_NETWORK_DOCUMENTATION ?= @GNUSTEP_NETWORK_DOCUMENTATION@ -GNUSTEP_NETWORK_DOCUMENTATION_MAN ?= @GNUSTEP_NETWORK_DOCUMENTATION_MAN@ -GNUSTEP_NETWORK_DOCUMENTATION_INFO ?= @GNUSTEP_NETWORK_DOCUMENTATION_INFO@ - -# -# NETWORK domain, variables that are fixed to subdirs of LIBRARY -# -GNUSTEP_NETWORK_APPLICATION_SUPPORT = $(GNUSTEP_NETWORK_LIBRARY)/ApplicationSupport -GNUSTEP_NETWORK_BUNDLES = $(GNUSTEP_NETWORK_LIBRARY)/Bundles -GNUSTEP_NETWORK_FRAMEWORKS = $(GNUSTEP_NETWORK_LIBRARY)/Frameworks -GNUSTEP_NETWORK_PALETTES = $(GNUSTEP_NETWORK_LIBRARY)/ApplicationSupport/Palettes -GNUSTEP_NETWORK_SERVICES = $(GNUSTEP_NETWORK_LIBRARY)/Services -GNUSTEP_NETWORK_RESOURCES = $(GNUSTEP_NETWORK_LIBRARY)/Libraries/Resources -GNUSTEP_NETWORK_JAVA = $(GNUSTEP_NETWORK_LIBRARY)/Libraries/Java - - -# -# USER domain -# Please note that here the GNUstep.conf values are called GNUSTEP_USER_DIR_* -# which we convert into the actual GNUSTEP_USER_* after prepending (if needed) -# GNUSTEP_HOME. -# -GNUSTEP_USER_DIR_APPS ?= @GNUSTEP_USER_DIR_APPS@ -GNUSTEP_USER_DIR_TOOLS ?= @GNUSTEP_USER_DIR_TOOLS@ -GNUSTEP_USER_DIR_LIBRARY ?= @GNUSTEP_USER_DIR_LIBRARY@ -GNUSTEP_USER_DIR_HEADERS ?= @GNUSTEP_USER_DIR_HEADERS@ -GNUSTEP_USER_DIR_LIBRARIES ?= @GNUSTEP_USER_DIR_LIBRARIES@ -GNUSTEP_USER_DIR_DOCUMENTATION ?= @GNUSTEP_USER_DIR_DOCUMENTATION@ -GNUSTEP_USER_DIR_DOCUMENTATION_MAN ?= @GNUSTEP_USER_DIR_DOCUMENTATION_MAN@ -GNUSTEP_USER_DIR_DOCUMENTATION_INFO ?= @GNUSTEP_USER_DIR_DOCUMENTATION_INFO@ - -# Now, any directories in the user domain that are relative (ie, they -# don't start with '/') get automatically prefixed with GNUSTEP_HOME. - -ifneq ($(filter /%, $(GNUSTEP_USER_DIR_APPS)),) - # Path starts with '/', so we can use it as it is - GNUSTEP_USER_APPS = $(GNUSTEP_USER_DIR_APPS) -else - # Path does no start with '/', consider it as relative to GNUSTEP_HOME - GNUSTEP_USER_APPS = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_APPS) -endif - -ifneq ($(filter /%, $(GNUSTEP_USER_DIR_TOOLS)),) - GNUSTEP_USER_TOOLS = $(GNUSTEP_USER_DIR_TOOLS) -else - GNUSTEP_USER_TOOLS = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_TOOLS) -endif - -ifneq ($(filter /%, $(GNUSTEP_USER_DIR_LIBRARY)),) - GNUSTEP_USER_LIBRARY = $(GNUSTEP_USER_DIR_LIBRARY) -else - GNUSTEP_USER_LIBRARY = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_LIBRARY) -endif - -ifneq ($(filter /%, $(GNUSTEP_USER_DIR_HEADERS)),) - GNUSTEP_USER_HEADERS = $(GNUSTEP_USER_DIR_HEADERS) -else - GNUSTEP_USER_HEADERS = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_HEADERS) -endif - -ifneq ($(filter /%, $(GNUSTEP_USER_DIR_LIBRARIES)),) - GNUSTEP_USER_LIBRARIES = $(GNUSTEP_USER_DIR_LIBRARIES) -else - GNUSTEP_USER_LIBRARIES = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_LIBRARIES) -endif - -ifneq ($(filter /%, $(GNUSTEP_USER_DIR_DOCUMENTATION)),) - GNUSTEP_USER_DOCUMENTATION = $(GNUSTEP_USER_DIR_DOCUMENTATION) -else - GNUSTEP_USER_DOCUMENTATION = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_DOCUMENTATION) -endif - -ifneq ($(filter /%, $(GNUSTEP_USER_DIR_DOCUMENTATION_MAN)),) - GNUSTEP_USER_DOCUMENTATION_MAN = $(GNUSTEP_USER_DIR_DOCUMENTATION_MAN) -else - GNUSTEP_USER_DOCUMENTATION_MAN = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_DOCUMENTATION_MAN) -endif - -ifneq ($(filter /%, $(GNUSTEP_USER_DIR_DOCUMENTATION_INFO)),) - GNUSTEP_USER_DOCUMENTATION_INFO = $(GNUSTEP_USER_DIR_DOCUMENTATION_INFO) -else - GNUSTEP_USER_DOCUMENTATION_INFO = $(GNUSTEP_HOME)/$(GNUSTEP_USER_DIR_DOCUMENTATION_INFO) -endif - - -# -# USER domain, variables that are fixed to subdirs of LIBRARY -# -GNUSTEP_USER_APPLICATION_SUPPORT = $(GNUSTEP_USER_LIBRARY)/ApplicationSupport -GNUSTEP_USER_BUNDLES = $(GNUSTEP_USER_LIBRARY)/Bundles -GNUSTEP_USER_FRAMEWORKS = $(GNUSTEP_USER_LIBRARY)/Frameworks -GNUSTEP_USER_PALETTES = $(GNUSTEP_USER_LIBRARY)/ApplicationSupport/Palettes -GNUSTEP_USER_SERVICES = $(GNUSTEP_USER_LIBRARY)/Services -GNUSTEP_USER_RESOURCES = $(GNUSTEP_USER_LIBRARY)/Libraries/Resources -GNUSTEP_USER_JAVA = $(GNUSTEP_USER_LIBRARY)/Libraries/Java