зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
f89ad269a7
Коммит
ae2e32cb28
|
@ -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.
|
||||
##
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
Загрузка…
Ссылка в новой задаче