Adding support for detecting various platform specific libraries, paths and

other things (anything, really).

Should make building mozilla on diverse platforms such as linux/lesstif
much easier.

Currently Linux is the only platform that supports detection.

The new detection mechanism is very scaleable.  We will be able to add support
for other operating systems as well as more permutations of linux/arch/toolkit.

It has received the Reverend Ostrom blessing of approval.

So the lesstif people can stop bitching.  thank you for the feedback ;-)
This commit is contained in:
ramiro%netscape.com 1998-07-18 03:26:34 +00:00
Родитель f89ad269a7
Коммит ae2e32cb28
4 изменённых файлов: 1915 добавлений и 0 удалений

194
config/mkdetect/Makefile Normal file
Просмотреть файл

@ -0,0 +1,194 @@
# -*- Mode: Makefile -*-
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
DEPTH = ../..
# This is needed for $(OS_CONFIG) $(OS_VERSION) $(PROCESSOR_ARCHITECTURE)
include $(DEPTH)/config/config.mk
# I stared of with this as a distinguishing string for a given host...
#MKDETECT_CONFIG = $(OS_CONFIG)$(OS_VERSION)$(PROCESSOR_ARCHITECTURE)
# ...and then I realized that the most unique thing about any host is the
# host name. DDDDDUUUUUUHHHHHH
MKDETECT_CONFIG = $(MOZILLA_HOSTNAME)
MKDETECT_GLIBC = $(MOZILLA_DETECT_DIR)/detect_glibc.sh -o $(MKDETECT_CONFIG)
MKDETECT_MOTIF = $(MOZILLA_DETECT_DIR)/detect_motif.sh -o $(MKDETECT_CONFIG)
MKDETECT_X11 = $(MOZILLA_DETECT_DIR)/detect_x11.sh -o $(MKDETECT_CONFIG)
# The following macros are generated:
#
# MOZILLA_XFE_GLIBC_BROKEN_LOCALE_FLAGS
# Needed because of currently broken locale support when mixing gnu
# libc2 with any version of motif.
#
#
# MOZILLA_XFE_MOTIF_PRINT_SHELL_FLAGS
# X Print Shell Extension (available starting with X11R6.3) needed
# by motif 2.1.
#
#
# MOZILLA_XFE_USE_WINNING_FILE_SELECTION
# Hacks to the motif file selection code to "fix" it. Where "fix"
# means "make the motif fsb not suck as hell". Motif source code
# is needed for this hack (it breaks with lesstif)
#
#
# Questions about any of these flags or this wacky scheme in general, should
# go to ramiro@netscape.com.
#
all:: export
export:: $(MOZILLA_DETECT_NAME)
clean::
@rm -f $(MOZILLA_DETECT_NAME)
@$(MKDETECT_X11) --cleanup
@$(MKDETECT_MOTIF) --cleanup
@$(MKDETECT_GLIBC) --cleanup
clobber: clean
$(MOZILLA_DETECT_NAME):
@echo "Generating $(MOZILLA_DETECT_NAME)."
@rm -f $@
@touch $@
@echo "#" >> $@
@echo "# Do Not edit." >> $@
@echo "# Automagically generated file." >> $@
@echo "#" >> $@
@echo >> $@
@echo >> $@
##
## GLIBC
##
##
## In theory, you can use glibc2 in many platforms. Right now only Linux
## seems to be using it, though.
##
## Test whether -lBrokenLocale is needed. Locale support is broken
## when using motif (any version) with gnu libc2.
##
ifeq ($(shell $(MKDETECT_GLIBC)),2)
@echo "# GLIBC2" >> $@
@echo "MOZILLA_XFE_USING_GLIBC2 = 1" >> $@
@echo >> $@
@echo "# Broken Locale" >> $@
@echo "MOZILLA_XFE_GLIBC_BROKEN_LOCALE_FLAGS = -lBrokenLocale" >> $@
endif
##
## X11
##
##
## Set the x11 include flags
##
@echo >> $@
@echo "# X11" >> $@
@echo "MOZILLA_XFE_X11_INCLUDE_FLAGS = `$(MKDETECT_X11) -if`" >> $@
##
## Determine if we have static x11 libs and set static flags.
##
ifneq ($(shell $(MKDETECT_X11) -sl),unknown)
@echo "MOZILLA_XFE_X11_HAVE_STATIC_LIB = 1" >> $@
@echo "MOZILLA_XFE_X11_STATIC_FLAGS = `$(MKDETECT_X11) -sf`" >> $@
endif
##
## Determine if we have dynamic x11 libs and set dynamic flags.
##
ifneq ($(shell $(MKDETECT_X11) -dl),unknown)
@echo "MOZILLA_XFE_X11_HAVE_DYNAMIC_LIB = 1" >> $@
@echo "MOZILLA_XFE_X11_DYNAMIC_PATHS = `$(MKDETECT_X11) -dp`" >> $@
@echo "MOZILLA_XFE_X11_DYNAMIC_FLAGS = `$(MKDETECT_X11) -df`" >> $@
endif
##
## Test whether -lSM -lICE are needed. These libs are need for session
## management in X11R6.
##
ifeq ($(shell $(MKDETECT_X11)),6)
@echo "MOZILLA_XFE_X11_SM_FLAGS = -lSM -lICE" >> $@
endif
##
## Motif
##
##
## Set the motif include flags
##
@echo >> $@
@echo "# Motif" >> $@
@echo "MOZILLA_XFE_MOTIF_INCLUDE_FLAGS = `$(MKDETECT_MOTIF) -if`" >> $@
##
## Determine if we have static motif libs and set static flags.
##
ifneq ($(shell $(MKDETECT_MOTIF) -sl),unknown)
@echo "MOZILLA_XFE_MOTIF_HAVE_STATIC_LIB = 1" >> $@
@echo "MOZILLA_XFE_MOTIF_STATIC_FLAGS = `$(MKDETECT_MOTIF) -sf`" >> $@
endif
##
## Determine if we have dynamic motif libs and set dynamic flags.
##
ifneq ($(shell $(MKDETECT_MOTIF) -dl),unknown)
@echo "MOZILLA_XFE_MOTIF_HAVE_DYNAMIC_LIB = 1" >> $@
@echo "MOZILLA_XFE_MOTIF_DYNAMIC_PATHS = `$(MKDETECT_MOTIF) -dp`" >> $@
@echo "MOZILLA_XFE_MOTIF_DYNAMIC_FLAGS = `$(MKDETECT_MOTIF) -df`" >> $@
endif
##
## Test whether -lXp is needed. The -lXp (Print Shell Extensions)
## are needed only with motif 2.1.
##
ifeq ($(shell $(MKDETECT_MOTIF)),2.1)
@echo "MOZILLA_XFE_MOTIF_PRINT_SHELL_FLAGS = -lXp" >> $@
endif
##
## Test whether -lXpm is needed. The -lXpm (X Pixmap Libary) is needed
## by some versions of motif. Some vendors try to do their customers
## favours by hacking the stock motif libs to include Xpm support.
##
ifeq ($(shell $(MKDETECT_MOTIF) -xpm),True)
@echo "MOZILLA_XFE_MOTIF_XPM_FLAGS = -lXpm" >> $@
endif
##
## Test whether we are using "real" motif libraries. If we are, then
## we can turn on the file selection hack which only works with motif
## (not lesstif)
##
ifneq ($(shell $(MKDETECT_MOTIF) -l),True)
@echo >> $@
@echo "# Winning File Selection" >> $@
@echo "MOZILLA_XFE_USE_WINNING_FILE_SELECTION = 1" >> $@
endif
##
## Lots of other magical things can be detected here.
##

221
config/mkdetect/detect_glibc.sh Executable file
Просмотреть файл

@ -0,0 +1,221 @@
#!/bin/sh
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
##############################################################################
##
## Name: detect_glibc.sh - Print __GLIBC__ version if gnu libc 2 is found.
##
## Description: This script is needed by the mozilla build system. It needs
## to determine whether the current platform (mostly the
## various linux "platforms") are based on the gnu libc2. This
## information is later used in mozilla to determine whether
## gnu libc 2 specific "features" need to be handled, such
## as broken locales.
##
## Author: Ramiro Estrugo <ramiro@netscape.com>
##
##############################################################################
##
## Command Line Flags Supported:
##
## -g | --is-glibc2: Print True/False if detected __GLIBC__.
##
## -v | --print-version: Print value of __GLIBC__ if found, or none.
##
## -o | --set-object-name: Set object name for current system.
## -cc | --set-compiler: Set compiler for building test program.
##
## -c | --cleanup: Clean up any generated files.
##
##
## Constants
##
GLIBC_PROG_PREFIX=./detect_glibc
##
## Defaults
##
GLIBC_PRINT_IS_GLIBC2=False
GLIBC_PRINT_VERSION=False
GLIBC_OBJECT_NAME=`uname`-`uname -r`
GLIBC_CC=cc
GLIBC_CLEANUP=False
function glibc_usage()
{
echo
echo "Usage: `basename $0` [options]"
echo
echo " -g, --is-glibc2: Print True/False if detected __GLIBC__."
echo
echo " -v, --print-version: Print value of __GLIBC__ if found, or none."
echo
echo " -o, --set-object-name: Set object name for current system."
echo " -cc, --set-compiler: Set compiler for building test program."
echo
echo " -c, --cleanup: Clean up any generated files."
echo
echo " -h, --help: Print this blurb."
echo
echo "The default is '-v' if no options are given."
echo
}
##
## Parse the command line
##
while [ "$*" ]; do
case $1 in
-h | --help)
shift
glibc_usage
exit 0
;;
-g | --is-glibc2)
shift
GLIBC_PRINT_IS_GLIBC2=True
;;
-v | --print-version)
shift
GLIBC_PRINT_VERSION=True
;;
-o | --set-object-name)
shift
GLIBC_OBJECT_NAME="$1"
shift
;;
-cc | --set-compiler)
shift
GLIBC_CC="$1"
shift
;;
-c | --cleanup)
shift
GLIBC_CLEANUP=True
;;
-*)
echo "`basename $0`: invalid option '$1'"
shift
glibc_usage
exit 0
;;
esac
done
##
## Glibc info program name
##
GLIBC_PROG="$GLIBC_PROG_PREFIX"_"$GLIBC_OBJECT_NAME"
GLIBC_SRC="$GLIBC_PROG_PREFIX"_"$GLIBC_OBJECT_NAME.c"
##
## Cleanup the dummy test source/program
##
function glibc_cleanup()
{
rm -f $GLIBC_PROG $GLIBC_SRC
}
##
## -c | --cleanup
##
if [ "$GLIBC_CLEANUP" = "True" ]
then
glibc_cleanup
exit 0
fi
if [ ! -f $GLIBC_SRC ]
then
cat << EOF > $GLIBC_SRC
#include <stdio.h>
int main(int argc,char ** argv)
{
#ifdef __GLIBC__
fprintf(stdout,"%d\n",__GLIBC__);
#else
fprintf(stdout,"none\n");
#endif
return 0;
}
EOF
fi
if [ ! -f $GLIBC_SRC ]
then
echo
echo "Could not create test program source $GLIBC_SRC."
echo
exit
fi
##
## Compile the dummy test program if needed
##
if [ ! -x $GLIBC_PROG ]
then
$GLIBC_CC -o $GLIBC_PROG $GLIBC_SRC
fi
if [ ! -x $GLIBC_PROG ]
then
echo
echo "Could not create test program $GLIBC_PROG."
echo
exit
fi
##
## Execute the dummy test program
##
GLIBC_PROG_OUTPUT=`$GLIBC_PROG`
##
## -g | --is-glibc2
##
if [ "$GLIBC_PRINT_IS_GLIBC2" = "True" ]
then
if [ "$GLIBC_PROG_OUTPUT" = "2" ]
then
echo True
else
echo False
fi
exit 0
fi
echo $GLIBC_PROG_OUTPUT

797
config/mkdetect/detect_motif.sh Executable file
Просмотреть файл

@ -0,0 +1,797 @@
#!/bin/sh
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
##############################################################################
##
## Name: detect_motif.sh - Get motif lib location, version and other info.
##
## Description: Artificial intelligence to figure out:
##
## + Where the motif headers/lib are located.
## + Whether lesstif is being used.
## + The version of motif being used.
## + The compile and link flags needed to build motif apps.
##
## Author: Ramiro Estrugo <ramiro@netscape.com>
##
##############################################################################
## This script looks in the space sepeared list of directories
## (MOTIF_SEARCH_PATH) for motif headers and libraries.
##
## The search path can be overrided by the user by setting:
##
## MOZILLA_MOTIF_SEARCH_PATH
##
## To a space delimeted list of directories to search for motif paths.
##
## For example, if you have many different versions of motif installed,
## and you want the current build to use headers in /foo/motif/include
## and libraries in /foo/motif/lib, then do this:
##
## export MOZILLA_MOTIF_SEARCH_PATH="/foo/motif"
##
## The script also generates and builds a program 'detect_motif-OBJECT_NAME'
## which prints out info on the motif detected on the system.
##
## This information is munged into useful strings that can be printed
## through the various command line flags decribed bellow. This script
## can be invoked from Makefiles or other scripts in order to set
## flags needed to build motif program.
##
## The 'detect_motif-OBJECT_NAME' program is generated/built only
## once and reused. Because of the OBJECT_NAME suffix, it will work on
## multiple platforms at the same time.
##
## The generated files can be wiped by the --cleanup flag.
##
##
## Command Line Flags Supported:
##
## -l | --is-lesstif: Print True/False if usign lesstif.
##
## -v | --print-version: Print XmVERSION.
## -r | --print-revision: Print XmREVISION.
## -u | --print-update-level: Print XmUPDATE_LEVEL.
## -s | --print-version-string: Print XmVERSION_STRING.
##
## -id | --print-include-dir: Print dir of motif includes.
## -sd | --print-static-dir: Print dir of motif static libs.
## -dd | --print-dynamic-dir: Print dir of motif dynamic libs.
##
## -sl | --print-static-lib: Print static lib.
## -dl | --print-dynamic-lib: Print dynamic lib.
##
## -if | --print-include-flags: Print cc flags needed to build motif apps.
## -sf | --print-static-flags: Print ld flags for linking statically.
## -df | --print-dynamic-flags: Print ld flags for linking dynamically.
## -dp | --print-dynamic-paths: Print ld paths for linking dynamically.
##
## -de | --dynamic-ext: Set extension used on dynamic libs.
## -se | --static-ext: Set extension used on static libs.
##
## -o | --set-object-name: Set object name for current system.
## -cc | --set-compiler: Set compiler for building test program.
##
## -xpm | --requires-xpm: Print {True,False} if we need libXpm.
##
## -c | --cleanup: Clean up any generated files.
##
##
## Look for motif stuff in the following places:
##
DEFAULT_MOTIF_SEARCH_PATH="\
/usr/lesstif \
/usr/local \
/usr/dt \
/usr/X11R6 \
/usr \
"
##
## The user can override the default share path by setting MOZILLA_MOTIF_SEARCH
##
if [ -n "$MOZILLA_MOTIF_SEARCH_PATH" ]
then
MOTIF_SEARCH_PATH=$MOZILLA_MOTIF_SEARCH_PATH
else
MOTIF_SEARCH_PATH=$DEFAULT_MOTIF_SEARCH_PATH
fi
##
## Constants
##
MOTIF_PROG_PREFIX=./detect_motif
##
## Defaults
##
MOTIF_DYNAMIC_EXT=so
MOTIF_STATIC_EXT=a
MOTIF_PRINT_IS_LESSTIF=False
MOTIF_PRINT_VERSION=False
MOTIF_PRINT_REVISION=False
MOTIF_PRINT_UPDATE_LEVEL=False
MOTIF_PRINT_INCLUDE_DIR=False
MOTIF_PRINT_STATIC_DIR=False
MOTIF_PRINT_DYNAMIC_DIR=False
MOTIF_PRINT_STATIC_LIB=False
MOTIF_PRINT_DYNAMIC_LIB=False
MOTIF_PRINT_INCLUDE_FLAGS=False
MOTIF_PRINT_STATIC_FLAGS=False
MOTIF_PRINT_DYNAMIC_FLAGS=False
MOTIF_PRINT_DYNAMIC_PATHS=False
MOTIF_PRINT_EVERYTHING=False
MOTIF_OBJECT_NAME=`uname`-`uname -r`
MOTIF_CC=cc
MOTIF_CLEANUP=False
MOTIF_CHECK_XPM=False
##
## Stuff we need to figure out
##
MOTIF_VERSION_RESULT=unknown
MOTIF_REVISION_RESULT=unknown
MOTIF_UPDATE_RESULT=unknown
MOTIF_VERSION_REVISION_RESULT=unknown
MOTIF_VERSION_REVISION_UPDATE_RESULT=unknown
MOTIF_VERSION_STRING_RESULT=unknown
MOTIF_IS_LESSTIF_RESULT=unknown
MOTIF_INCLUDE_DIR=unknown
MOTIF_STATIC_LIB=unknown
MOTIF_DYNAMIC_LIB=unknown
MOTIF_STATIC_DIR=unknown
MOTIF_DYNAMIC_DIR=unknown
MOTIF_INCLUDE_FLAGS=unknown
MOTIF_STATIC_FLAGS=unknown
MOTIF_DYNAMIC_FLAGS=unknown
MOTIF_DYNAMIC_PATHS=unknown
function motif_usage()
{
echo
echo "Usage: `basename $0` [options]"
echo
echo " -l, --is-lesstif: Print {True,False} if using lesstif."
echo
echo " -v, --print-version: Print XmVERSION."
echo " -r, --print-revision: Print XmREVISION."
echo " -u, --print-update-level: Print XmUPDATE_LEVEL."
echo " -s, --print-version-string: Print XmVERSION_STRING."
echo
echo " -id, --print-include-dir: Print dir of motif includes."
echo " -sd, --print-static-dir: Print dir of motif static libs."
echo " -dd, --print-dynamic-dir: Print dir of motif dynamic libs."
echo
echo " -sl, --print-static-lib: Print static lib."
echo " -dl --print-dynamic-lib: Print dynamic lib."
echo
echo " -if, --print-include-flags: Print cc flags needed to compile."
echo " -sf, --print-static-flags: Print ld flags for linking statically."
echo " -df, --print-dynamic-flags: Print ld flags for linking dynamically."
echo " -dp, --print-dynamic-paths: Print ld paths for linking dynamically."
echo
echo " -e, --print-everything: Print everything that is known."
echo
echo " -de, --dynamic-ext: Set extension used on dynamic libs."
echo " -se, --static-ext: Set extension used on static libs."
echo
echo " -o, --set-object-name: Set object name for current system."
echo " -cc, --set-compiler: Set compiler for building test program."
echo
echo " -xpm, --requires-xpm: Print {True,False} if we need libXpm."
echo
echo " -h, --help: Print this blurb."
echo
echo " -c, --cleanup: Clean up any generated files."
echo
echo "The default is '-v -r' if no options are given."
echo
}
##
## Parse the command line
##
while [ "$*" ]; do
case $1 in
-h | --help)
shift
motif_usage
exit 0
;;
-l | --is-lesstif)
shift
MOTIF_PRINT_IS_LESSTIF=True
;;
-v | --print-version)
shift
MOTIF_PRINT_VERSION=True
;;
-r | --print-revision)
shift
MOTIF_PRINT_REVISION=True
;;
-u | --print-update-level)
shift
MOTIF_PRINT_UPDATE_LEVEL=True
;;
-s | --print-version-string)
shift
MOTIF_PRINT_VERSION_STRING=True
;;
-id | --print-include-dir)
shift
MOTIF_PRINT_INCLUDE_DIR=True
;;
-sd | --print-static-dir)
shift
MOTIF_PRINT_STATIC_DIR=True
;;
-dd | --print-dynamic-dir)
shift
MOTIF_PRINT_DYNAMIC_DIR=True
;;
-sl | --print-static-lib)
shift
MOTIF_PRINT_STATIC_LIB=True
;;
-dl | --print-dynamic-lib)
shift
MOTIF_PRINT_DYNAMIC_LIB=True
;;
-if | --print-include-flags)
shift
MOTIF_PRINT_INCLUDE_FLAGS=True
;;
-sf | --print-static-flags)
shift
MOTIF_PRINT_STATIC_FLAGS=True
;;
-df | --print-dynamic-flags)
shift
MOTIF_PRINT_DYNAMIC_FLAGS=True
;;
-dp | --print-dynamic-paths)
shift
MOTIF_PRINT_DYNAMIC_PATHS=True
;;
-e | --print-everything)
shift
MOTIF_PRINT_EVERYTHING=True
;;
-de | --dynamic-ext)
shift
MOTIF_DYNAMIC_EXT="$1"
shift
;;
-se | --static-ext)
shift
MOTIF_STATIC_EXT="$1"
shift
;;
-o | --set-object-name)
shift
MOTIF_OBJECT_NAME="$1"
shift
;;
-cc | --set-compiler)
shift
MOTIF_CC="$1"
shift
;;
-c | --cleanup)
shift
MOTIF_CLEANUP=True
;;
-xpm | --requires-xpm)
shift
MOTIF_CHECK_XPM=True
;;
-*)
echo "`basename $0`: invalid option '$1'"
shift
motif_usage
exit 0
;;
esac
done
##
## Motif info program name
##
MOTIF_PROG="$MOTIF_PROG_PREFIX"_"$MOTIF_OBJECT_NAME"
MOTIF_SRC="$MOTIF_PROG_PREFIX"_"$MOTIF_OBJECT_NAME.c"
##
## The library names
##
MOTIF_DYNAMIC_LIB_NAME=libXm.$MOTIF_DYNAMIC_EXT
MOTIF_STATIC_LIB_NAME=libXm.$MOTIF_STATIC_EXT
##
## Cleanup the dummy test source/program
##
function motif_cleanup()
{
rm -f $MOTIF_PROG $MOTIF_SRC
}
##
## Check whether the motif libs need Xpm
##
function motif_check_xpm()
{
_lib=
_count=0
if [ -f $MOTIF_DYNAMIC_LIB ]
then
_lib=$MOTIF_DYNAMIC_LIB
else
if [ -f $MOTIF_STATIC_LIB ]
then
_lib=$MOTIF_STATIC_LIB
fi
fi
if [ -f $_lib ]
then
_count=`strings $_lib | grep Xpm | wc -l`
fi
if [ $_count -gt 0 ]
then
echo True
else
echo False
fi
unset _count
unset _lib
}
##
## -c | --cleanup
##
if [ "$MOTIF_CLEANUP" = "True" ]
then
motif_cleanup
exit 0
fi
##
## Look for <Xm/Xm.h>
##
for d in $MOTIF_SEARCH_PATH
do
if [ -d $d/include/Xm ]
then
MOTIF_INCLUDE_DIR=$d/include
break;
fi
done
##
## Make sure the <Xm/Xm.h> header was found.
##
if [ -z $MOTIF_INCLUDE_DIR ]
then
echo
echo "Could not find <Xm/Xm.h> anywhere on your system."
echo
exit 1
fi
##
## Generate the dummy test program if needed
##
if [ ! -f $MOTIF_SRC ]
then
cat << EOF > $MOTIF_SRC
#include <stdio.h>
#include <Xm/Xm.h>
int
main(int argc,char ** argv)
{
char * lesstif =
#ifdef LESSTIF_VERSION
"True"
#else
"False"
#endif
;
/* XmVERSION:XmREVISION:XmUPDATE_LEVEL:XmVERSION_STRING:IsLesstif */
fprintf(stdout,"%d:%d:%d:%s:%s\n",
XmVERSION,
XmREVISION,
XmUPDATE_LEVEL,
XmVERSION_STRING,
lesstif);
return 0;
}
EOF
fi
##
## Make sure code was created
##
if [ ! -f $MOTIF_SRC ]
then
echo
echo "Could not create or read test program source $MOTIF_SRC."
echo
exit 1
fi
##
## Set flags needed to Compile the dummy test program
##
MOTIF_INCLUDE_FLAGS=-I$MOTIF_INCLUDE_DIR
##
## Compile the dummy test program if needed
##
if [ ! -x $MOTIF_PROG ]
then
$MOTIF_CC $MOTIF_INCLUDE_FLAGS -o $MOTIF_PROG $MOTIF_SRC
fi
##
## Make sure it compiled
##
if [ ! -x $MOTIF_PROG ]
then
echo
echo "Could not create or execute test program $MOTIF_PROG."
echo
exit 1
fi
##
## Execute the dummy test program
##
MOTIF_PROG_OUTPUT=`$MOTIF_PROG`
##
## Output has the following format:
##
## 1 2 3 4 5
## XmVERSION:XmREVISION:XmUPDATE_LEVEL:XmVERSION_STRING:IsLesstif
##
MOTIF_VERSION_RESULT=`echo $MOTIF_PROG_OUTPUT | awk -F":" '{ print $1; }'`
MOTIF_REVISION_RESULT=`echo $MOTIF_PROG_OUTPUT | awk -F":" '{ print $2; }'`
MOTIF_UPDATE_RESULT=`echo $MOTIF_PROG_OUTPUT | awk -F":" '{ print $3; }'`
MOTIF_VERSION_REVISION_RESULT=$MOTIF_VERSION_RESULT.$MOTIF_REVISION_RESULT
MOTIF_VERSION_REVISION_UPDATE_RESULT=$MOTIF_VERSION_REVISION_RESULT.$MOTIF_UPDATE_RESULT
MOTIF_VERSION_STRING_RESULT=`echo $MOTIF_PROG_OUTPUT | awk -F":" '{ print $4; }'`
MOTIF_IS_LESSTIF_RESULT=`echo $MOTIF_PROG_OUTPUT | awk -F":" '{ print $5; }'`
##
## There could be up to 4 dyanmic libs and/or links.
##
## libXm.so
## libXm.so.1
## libXm.so.1.2
## libXm.so.1.2.4
##
MOTIF_DYNAMIC_SEARCH_PATH="\
$MOTIF_DYNAMIC_LIB_NAME \
$MOTIF_DYNAMIC_LIB_NAME.$MOTIF_VERSION_RESULT \
$MOTIF_DYNAMIC_LIB_NAME.$MOTIF_VERSION_REVISION_RESULT \
$MOTIF_DYNAMIC_LIB_NAME.$MOTIF_VERSION_REVISION_UPDATE_RESULT \
"
##
## Look for static library
##
for d in $MOTIF_SEARCH_PATH
do
if [ -f $d/lib/$MOTIF_STATIC_LIB_NAME ]
then
MOTIF_STATIC_DIR=$d/lib
MOTIF_STATIC_LIB=$MOTIF_STATIC_DIR/$MOTIF_STATIC_LIB_NAME
MOTIF_STATIC_FLAGS=$MOTIF_STATIC_LIB
break
fi
done
##
## Look for dyanmic libraries
##
for d in $MOTIF_SEARCH_PATH
do
for l in $MOTIF_DYNAMIC_SEARCH_PATH
do
if [ -x $d/lib/$l ]
then
MOTIF_DYNAMIC_DIR=$d/lib
MOTIF_DYNAMIC_LIB=$d/lib/$l
MOTIF_DYNAMIC_PATHS="-L$MOTIF_DYNAMIC_DIR"
MOTIF_DYNAMIC_FLAGS="-lXm"
break 2
fi
done
done
##
## If the static library directory is different than the dynamic one, it
## is possible that the system contains two incompatible installations of
## motif/lesstif. For example, lesstif could be installed in /usr/lesstif
## and the real motif could be installed in /usr/X11R6. This would cause
## outofwhackage later in the build.
##
## Need to handle this one. Maybe we should just ignore the motif static
## libs and just use the lesstif ones ? This is probably what the "user"
## wants anyway. For instance, a "user" could be testing whether mozilla
## works with lesstif without erasing the real motif libs.
##
## Also, by default the lesstif build system only creates dynamic libraries.
## So this problem will always exist when both motif and lesstif are installed
## in the system.
##
if [ "$MOTIF_STATIC_DIR" != "$MOTIF_DYNAMIC_DIR" ]
then
MOTIF_STATIC_DIR=unknown
MOTIF_STATIC_LIB=unknown
MOTIF_STATIC_FLAGS=unknown
fi
##
## -l | --is-lesstif
##
if [ "$MOTIF_PRINT_IS_LESSTIF" = "True" ]
then
echo $MOTIF_IS_LESSTIF_RESULT
exit 0
fi
##
## -e | --print-everything
##
if [ "$MOTIF_PRINT_EVERYTHING" = "True" ]
then
echo
echo "XmVERSION: $MOTIF_VERSION_RESULT"
echo "XmREVISION: $MOTIF_REVISION_RESULT"
echo "XmUPDATE_LEVEL: $MOTIF_UPDATE_RESULT"
echo "XmVERSION_STRING: $MOTIF_VERSION_STRING_RESULT"
echo
echo "Lesstif ?: $MOTIF_IS_LESSTIF_RESULT"
echo
echo "Include dir: $MOTIF_INCLUDE_DIR"
echo "Static lib dir: $MOTIF_STATIC_DIR"
echo "Dynamic lib dir: $MOTIF_DYNAMIC_DIR"
echo
echo "Static lib: $MOTIF_STATIC_LIB"
echo "Dynamic lib: $MOTIF_DYNAMIC_LIB"
echo
echo "Include flags: $MOTIF_INCLUDE_FLAGS"
echo "Static fags: $MOTIF_STATIC_FLAGS"
echo "Dynamic paths: $MOTIF_DYNAMIC_PATHS"
echo "Dynamic flags: $MOTIF_DYNAMIC_FLAGS"
echo
echo "OBJECT_NAME: $MOTIF_OBJECT_NAME"
echo "Test program: $MOTIF_PROG"
echo
exit 0
fi
##
## -xpm | --requires-xpm
##
if [ "$MOTIF_CHECK_XPM" = "True" ]
then
motif_check_xpm
exit 0
fi
##
## -id | --print-include-dir
##
if [ "$MOTIF_PRINT_INCLUDE_DIR" = "True" ]
then
echo $MOTIF_INCLUDE_DIR
exit 0
fi
##
## -dd | --print-dynamic-dir
##
if [ "$MOTIF_PRINT_DYNAMIC_DIR" = "True" ]
then
echo $MOTIF_DYNAMIC_DIR
exit 0
fi
##
## -sd | --print-static-dir
##
if [ "$MOTIF_PRINT_STATIC_DIR" = "True" ]
then
echo $MOTIF_STATIC_DIR
exit 0
fi
##
## -dl | --print-dynamic-lib
##
if [ "$MOTIF_PRINT_DYNAMIC_LIB" = "True" ]
then
echo $MOTIF_DYNAMIC_LIB
exit 0
fi
##
## -sl | --print-static-lib
##
if [ "$MOTIF_PRINT_STATIC_LIB" = "True" ]
then
echo $MOTIF_STATIC_LIB
exit 0
fi
##
## -if | --print-include-flags
##
if [ "$MOTIF_PRINT_INCLUDE_FLAGS" = "True" ]
then
echo $MOTIF_INCLUDE_FLAGS
exit 0
fi
##
## -df | --print-dynamic-flags
##
if [ "$MOTIF_PRINT_DYNAMIC_FLAGS" = "True" ]
then
echo $MOTIF_DYNAMIC_FLAGS
exit 0
fi
##
## -dp | --print-dynamic-paths
##
if [ "$MOTIF_PRINT_DYNAMIC_PATHS" = "True" ]
then
echo $MOTIF_DYNAMIC_PATHS
exit 0
fi
##
## -sf | --print-static-flags
##
if [ "$MOTIF_PRINT_STATIC_FLAGS" = "True" ]
then
echo $MOTIF_STATIC_FLAGS
exit 0
fi
num=
##
## -v | --print-version
##
if [ "$MOTIF_PRINT_VERSION" = "True" ]
then
num=$MOTIF_VERSION_RESULT
##
## -r | --print-revision
##
if [ "$MOTIF_PRINT_REVISION" = "True" ]
then
num="$num".
num="$num"$MOTIF_REVISION_RESULT
##
## -u | --print-update-level
##
if [ "$MOTIF_PRINT_UPDATE_LEVEL" = "True" ]
then
num="$num".
num="$num"$MOTIF_UPDATE_RESULT
fi
fi
echo $num
exit 0
fi
##
## -s | --print-version-string
##
if [ "$MOTIF_PRINT_VERSION_STRING" = "True" ]
then
echo $MOTIF_VERSION_STRING_RESULT
exit 0
fi
##
## Default: Print XmVERSION.XmREVISION
##
echo $MOTIF_VERSION_RESULT.$MOTIF_REVISION_RESULT
exit 0

703
config/mkdetect/detect_x11.sh Executable file
Просмотреть файл

@ -0,0 +1,703 @@
#!/bin/sh
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
##############################################################################
##
## Name: detect_x11.sh - Get X11 lib location, version and other info.
##
## Description: Artificial intelligence to figure out:
##
## + Where the X11 headers/lib are located.
## + The version of X11 being used.
## + The compile and link flags needed to build X11 apps.
##
## Author: Ramiro Estrugo <ramiro@netscape.com>
##
##############################################################################
## This script looks in the space sepeared list of directories
## (X11_SEARCH_PATH) for x11 headers and libraries.
##
## The search path can be overrided by the user by setting:
##
## MOZILLA_X11_SEARCH_PATH
##
## To a space delimeted list of directories to search for x11 paths.
##
## For example, if you have many different versions of x11 installed,
## and you want the current build to use headers in /foo/x11/include
## and libraries in /foo/x11/lib, then do this:
##
## export MOZILLA_X11_SEARCH_PATH="/foo/x11"
##
## The script also generates and builds a program 'detect_x11-OBJECT_NAME'
## which prints out info on the x11 detected on the system.
##
## This information is munged into useful strings that can be printed
## through the various command line flags decribed bellow. This script
## can be invoked from Makefiles or other scripts in order to set
## flags needed to build x11 program.
##
## The get 'detect_x11-OBJECT_NAME' program is generated/built only
## once and reused. Because of the OBJECT_NAME suffix, it will work on
## multiple platforms at the same time.
##
## The generated files can be wiped by the --cleanup flag.
##
##
## Command Line Flags Supported:
##
## -v | --print-version: Print XlibSpecificationRelease.
## -r | --print-revision: Print XmREVISION.
## -u | --print-update-level: Print XmUPDATE_LEVEL.
## -s | --print-version-string: Print XmVERSION_STRING.
##
## -id | --print-include-dir: Print dir of x11 includes.
## -sd | --print-static-dir: Print dir of x11 static libs.
## -dd | --print-dynamic-dir: Print dir of x11 dynamic libs.
##
## -sl | --print-static-lib: Print static lib.
## -dl | --print-dynamic-lib: Print dynamic lib.
##
## -if | --print-include-flags: Print cc flags needed to build x11 apps.
## -sf | --print-static-flags: Print ld flags for linking statically.
## -df | --print-dynamic-flags: Print ld flags for linking dynamically.
## -dp | --print-dynamic-paths: Print ld paths for linking dynamically.
##
## -de | --dynamic-ext: Set extension used on dynamic libs.
## -se | --static-ext: Set extension used on static libs.
##
## -o | --set-object-name: Set object name for current system.
## -cc | --set-compiler: Set compiler for building test program.
##
## -c | --cleanup: Clean up any generated files.
##
##
## Look for x11 stuff in the following places:
##
DEFAULT_X11_SEARCH_PATH="\
/usr/local \
/usr/openwin \
/usr/X11R6 \
/usr/include/X11 \
/usr \
"
##
## The user can override the default share path by setting MOZILLA_X11_SEARCH
##
if [ -n "$MOZILLA_X11_SEARCH_PATH" ]
then
X11_SEARCH_PATH=$MOZILLA_X11_SEARCH_PATH
else
X11_SEARCH_PATH=$DEFAULT_X11_SEARCH_PATH
fi
##
## Constants
##
X11_PROG_PREFIX=./detect_x11
##
## Defaults
##
X11_DYNAMIC_EXT=so
X11_STATIC_EXT=a
X11_PRINT_VERSION=False
X11_PRINT_REVISION=False
X11_PRINT_UPDATE_LEVEL=False
X11_PRINT_INCLUDE_DIR=False
X11_PRINT_STATIC_DIR=False
X11_PRINT_DYNAMIC_DIR=False
X11_PRINT_STATIC_LIB=False
X11_PRINT_DYNAMIC_LIB=False
X11_PRINT_INCLUDE_FLAGS=False
X11_PRINT_STATIC_FLAGS=False
X11_PRINT_DYNAMIC_FLAGS=False
X11_PRINT_DYNAMIC_PATHS=False
X11_PRINT_EVERYTHING=False
X11_OBJECT_NAME=`uname`-`uname -r`
X11_CC=cc
X11_CLEANUP=False
##
## Stuff we need to figure out
##
X11_VERSION_RESULT=unknown
X11_REVISION_RESULT=unknown
X11_UPDATE_RESULT=unknown
X11_VERSION_REVISION_RESULT=unknown
X11_VERSION_REVISION_UPDATE_RESULT=unknown
X11_VERSION_STRING_RESULT=unknown
X11_INCLUDE_DIR=unknown
X11_STATIC_LIB=unknown
X11_DYNAMIC_LIB=unknown
X11_STATIC_DIR=unknown
X11_DYNAMIC_DIR=unknown
X11_INCLUDE_FLAGS=unknown
X11_STATIC_FLAGS=unknown
X11_DYNAMIC_FLAGS=unknown
X11_DYNAMIC_PATHS=unknown
function x11_usage()
{
echo
echo "Usage: `basename $0` [options]"
echo
echo " -v, --print-version: Print XlibSpecificationRelease."
echo " -r, --print-revision: Print XmREVISION."
echo " -u, --print-update-level: Print XmUPDATE_LEVEL."
echo " -s, --print-version-string: Print XmVERSION_STRING."
echo
echo " -id, --print-include-dir: Print dir of x11 includes."
echo " -sd, --print-static-dir: Print dir of x11 static libs."
echo " -dd, --print-dynamic-dir: Print dir of x11 dynamic libs."
echo
echo " -sl, --print-static-lib: Print static lib."
echo " -dl --print-dynamic-lib: Print dynamic lib."
echo
echo " -if, --print-include-flags: Print cc flags needed to compile."
echo " -sf, --print-static-flags: Print ld flags for linking statically."
echo " -df, --print-dynamic-flags: Print ld flags for linking dynamically."
echo " -dp, --print-dynamic-paths: Print ld paths for linking dynamically."
echo
echo " -e, --print-everything: Print everything that is known."
echo
echo " -de, --dynamic-ext: Set extension used on dynamic libs."
echo " -se, --static-ext: Set extension used on static libs."
echo
echo " -o, --set-object-name: Set object name for current system."
echo " -cc, --set-compiler: Set compiler for building test program."
echo
echo " -h, --help: Print this blurb."
echo
echo " -c, --cleanup: Clean up any generated files."
echo
echo "The default is '-v' if no options are given."
echo
}
##
## Parse the command line
##
while [ "$*" ]; do
case $1 in
-h | --help)
shift
x11_usage
exit 0
;;
-v | --print-version)
shift
X11_PRINT_VERSION=True
;;
-r | --print-revision)
shift
X11_PRINT_REVISION=True
;;
-u | --print-update-level)
shift
X11_PRINT_UPDATE_LEVEL=True
;;
-s | --print-version-string)
shift
X11_PRINT_VERSION_STRING=True
;;
-id | --print-include-dir)
shift
X11_PRINT_INCLUDE_DIR=True
;;
-sd | --print-static-dir)
shift
X11_PRINT_STATIC_DIR=True
;;
-dd | --print-dynamic-dir)
shift
X11_PRINT_DYNAMIC_DIR=True
;;
-sl | --print-static-lib)
shift
X11_PRINT_STATIC_LIB=True
;;
-dl | --print-dynamic-lib)
shift
X11_PRINT_DYNAMIC_LIB=True
;;
-if | --print-include-flags)
shift
X11_PRINT_INCLUDE_FLAGS=True
;;
-sf | --print-static-flags)
shift
X11_PRINT_STATIC_FLAGS=True
;;
-df | --print-dynamic-flags)
shift
X11_PRINT_DYNAMIC_FLAGS=True
;;
-dp | --print-dynamic-paths)
shift
X11_PRINT_DYNAMIC_PATHS=True
;;
-e | --print-everything)
shift
X11_PRINT_EVERYTHING=True
;;
-de | --dynamic-ext)
shift
X11_DYNAMIC_EXT="$1"
shift
;;
-se | --static-ext)
shift
X11_STATIC_EXT="$1"
shift
;;
-o | --set-object-name)
shift
X11_OBJECT_NAME="$1"
shift
;;
-cc | --set-compiler)
shift
X11_CC="$1"
shift
;;
-c | --cleanup)
shift
X11_CLEANUP=True
;;
-*)
echo "`basename $0`: invalid option '$1'"
shift
x11_usage
exit 0
;;
esac
done
##
## X11 info program name
##
X11_PROG="$X11_PROG_PREFIX"_"$X11_OBJECT_NAME"
X11_SRC="$X11_PROG_PREFIX"_"$X11_OBJECT_NAME.c"
##
## The library names
##
X11_DYNAMIC_LIB_NAME=libX11.$X11_DYNAMIC_EXT
X11_STATIC_LIB_NAME=libX11.$X11_STATIC_EXT
##
## Cleanup the dummy test source/program
##
function x11_cleanup()
{
rm -f $X11_PROG $X11_SRC
}
##
## -c | --cleanup
##
if [ "$X11_CLEANUP" = "True" ]
then
x11_cleanup
exit 0
fi
##
## Look for <X11/Xlib.h>
##
for d in $X11_SEARCH_PATH
do
if [ -d $d/include/X11 ]
then
X11_INCLUDE_DIR=$d/include
break;
fi
done
##
## Make sure the <X11/Xlib.h> header was found.
##
if [ -z $X11_INCLUDE_DIR ]
then
echo
echo "Could not find <X11/Xlib.h> anywhere on your system."
echo
exit 1
fi
##
## Generate the dummy test program if needed
##
if [ ! -f $X11_SRC ]
then
cat << EOF > $X11_SRC
#include <stdio.h>
#include <X11/Xlib.h>
int
main(int argc,char ** argv)
{
#if 0
/* XmVERSION:XmREVISION:XmUPDATE_LEVEL:XmVERSION_STRING:IsLesstif */
fprintf(stdout,"%d:%d:%d:%s:%s\n",
XmVERSION,
XmREVISION,
XmUPDATE_LEVEL,
XmVERSION_STRING,
lesstif);
#else
/* XlibSpecificationRelease */
fprintf(stdout,"%d\n",
XlibSpecificationRelease);
#endif
return 0;
}
EOF
fi
##
## Make sure code was created
##
if [ ! -f $X11_SRC ]
then
echo
echo "Could not create or read test program source $X11_SRC."
echo
exit 1
fi
##
## Set flags needed to Compile the dummy test program
##
X11_INCLUDE_FLAGS=-I$X11_INCLUDE_DIR
##
## Compile the dummy test program if needed
##
if [ ! -x $X11_PROG ]
then
$X11_CC $X11_INCLUDE_FLAGS -o $X11_PROG $X11_SRC
fi
##
## Make sure it compiled
##
if [ ! -x $X11_PROG ]
then
echo
echo "Could not create or execute test program $X11_PROG."
echo
exit 1
fi
##
## Execute the dummy test program
##
X11_PROG_OUTPUT=`$X11_PROG`
##
## Output has the following format:
##
## 1 2 3 4 5
## XlibSpecificationRelease
##
X11_VERSION_RESULT=`echo $X11_PROG_OUTPUT | awk -F":" '{ print $1; }'`
#X11_REVISION_RESULT=`echo $X11_PROG_OUTPUT | awk -F":" '{ print $2; }'`
#X11_UPDATE_RESULT=`echo $X11_PROG_OUTPUT | awk -F":" '{ print $3; }'`
#X11_VERSION_REVISION_RESULT=$X11_VERSION_RESULT.$X11_REVISION_RESULT
#X11_VERSION_REVISION_UPDATE_RESULT=$X11_VERSION_REVISION_RESULT.$X11_UPDATE_RESULT
#X11_VERSION_STRING_RESULT=`echo $X11_PROG_OUTPUT | awk -F":" '{ print $4; }'`
##
## There could be up to 4 dyanmic libs and/or links.
##
## libX11.so
## libX11.so.6
## libX11.so.6.1
## libX11.so.6.1.x
##
X11_DYNAMIC_SEARCH_PATH="\
$X11_DYNAMIC_LIB_NAME \
$X11_DYNAMIC_LIB_NAME.$X11_VERSION_RESULT \
$X11_DYNAMIC_LIB_NAME.$X11_VERSION_REVISION_RESULT \
$X11_DYNAMIC_LIB_NAME.$X11_VERSION_REVISION_UPDATE_RESULT \
"
##
## Look for static library
##
for d in $X11_SEARCH_PATH
do
if [ -f $d/lib/$X11_STATIC_LIB_NAME ]
then
X11_STATIC_DIR=$d/lib
X11_STATIC_LIB=$X11_STATIC_DIR/$X11_STATIC_LIB_NAME
X11_STATIC_FLAGS=$X11_STATIC_LIB
break
fi
done
##
## Look for dyanmic libraries
##
for d in $X11_SEARCH_PATH
do
for l in $X11_DYNAMIC_SEARCH_PATH
do
if [ -x $d/lib/$l ]
then
X11_DYNAMIC_DIR=$d/lib
X11_DYNAMIC_LIB=$d/lib/$l
X11_DYNAMIC_PATHS="-L$X11_DYNAMIC_DIR"
X11_DYNAMIC_FLAGS="-lX11"
break 2
fi
done
done
##
## If the static library directory is different than the dynamic one, it
## is possible that the system contains two incompatible installations of
## x11. For example, a hacked x11 could be installed in /foo/X11.HACKED
## and the real x11 could be installed in /usr/X11R6. This would cause
## outofwhackage later in the build.
##
## Need to handle this one. Maybe we should just ignore the x11 static
## libs and just use the hacked ones ? This is probably what the "user"
## wants anyway. For instance, a "user" could be testing whether mozilla
## works with X11.HACKED without erasing the real x11 libs.
##
## Also, some x11 installations only have dynamic libraries.
##
## -e | --print-everything
##
if [ "$X11_PRINT_EVERYTHING" = "True" ]
then
echo
echo "XlibSpecificationRelease: $X11_VERSION_RESULT"
# echo "XmREVISION: $X11_REVISION_RESULT"
# echo "XmUPDATE_LEVEL: $X11_UPDATE_RESULT"
# echo "XmVERSION_STRING: $X11_VERSION_STRING_RESULT"
# echo
echo "Include dir: $X11_INCLUDE_DIR"
echo "Static lib dir: $X11_STATIC_DIR"
echo "Dynamic lib dir: $X11_DYNAMIC_DIR"
echo
echo "Static lib: $X11_STATIC_LIB"
echo "Dynamic lib: $X11_DYNAMIC_LIB"
echo
echo "Include flags: $X11_INCLUDE_FLAGS"
echo "Static flags: $X11_STATIC_FLAGS"
echo "dynamic paths: $X11_DYNAMIC_PATHS"
echo "dynamic flags: $X11_DYNAMIC_FLAGS"
echo
echo "OBJECT_NAME: $X11_OBJECT_NAME"
echo "Test program: $X11_PROG"
echo
exit 0
fi
##
## -id | --print-include-dir
##
if [ "$X11_PRINT_INCLUDE_DIR" = "True" ]
then
echo $X11_INCLUDE_DIR
exit 0
fi
##
## -dd | --print-dynamic-dir
##
if [ "$X11_PRINT_DYNAMIC_DIR" = "True" ]
then
echo $X11_DYNAMIC_DIR
exit 0
fi
##
## -sd | --print-static-dir
##
if [ "$X11_PRINT_STATIC_DIR" = "True" ]
then
echo $X11_STATIC_DIR
exit 0
fi
##
## -dl | --print-dynamic-lib
##
if [ "$X11_PRINT_DYNAMIC_LIB" = "True" ]
then
echo $X11_DYNAMIC_LIB
exit 0
fi
##
## -sl | --print-static-lib
##
if [ "$X11_PRINT_STATIC_LIB" = "True" ]
then
echo $X11_STATIC_LIB
exit 0
fi
##
## -if | --print-include-flags
##
if [ "$X11_PRINT_INCLUDE_FLAGS" = "True" ]
then
echo $X11_INCLUDE_FLAGS
exit 0
fi
##
## -df | --print-dynamic-flags
##
if [ "$X11_PRINT_DYNAMIC_FLAGS" = "True" ]
then
echo $X11_DYNAMIC_FLAGS
exit 0
fi
##
## -dp | --print-dynamic-paths
##
if [ "$X11_PRINT_DYNAMIC_PATHS" = "True" ]
then
echo $X11_DYNAMIC_PATHS
exit 0
fi
##
## -sf | --print-static-flags
##
if [ "$X11_PRINT_STATIC_FLAGS" = "True" ]
then
echo $X11_STATIC_FLAGS
exit 0
fi
num=
##
## -v | --print-version
##
if [ "$X11_PRINT_VERSION" = "True" ]
then
num=$X11_VERSION_RESULT
##
## -r | --print-revision
##
if [ "$X11_PRINT_REVISION" = "True" ]
then
num="$num".
num="$num"$X11_REVISION_RESULT
##
## -u | --print-update-level
##
if [ "$X11_PRINT_UPDATE_LEVEL" = "True" ]
then
num="$num".
num="$num"$X11_UPDATE_RESULT
fi
fi
echo $num
exit 0
fi
##
## -s | --print-version-string
##
if [ "$X11_PRINT_VERSION_STRING" = "True" ]
then
echo $X11_VERSION_STRING_RESULT
exit 0
fi
##
## Default: Print XmVERSION
##
echo $X11_VERSION_RESULT
exit 0