diff --git a/config/mkdetect/Makefile b/config/mkdetect/Makefile new file mode 100644 index 000000000000..2b12394590b2 --- /dev/null +++ b/config/mkdetect/Makefile @@ -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. +## + diff --git a/config/mkdetect/detect_glibc.sh b/config/mkdetect/detect_glibc.sh new file mode 100755 index 000000000000..95d44a820a79 --- /dev/null +++ b/config/mkdetect/detect_glibc.sh @@ -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 +## +############################################################################## + +## +## 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 + +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 diff --git a/config/mkdetect/detect_motif.sh b/config/mkdetect/detect_motif.sh new file mode 100755 index 000000000000..37c2c307aa91 --- /dev/null +++ b/config/mkdetect/detect_motif.sh @@ -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 +## +############################################################################## + + +## 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 +## +for d in $MOTIF_SEARCH_PATH +do + if [ -d $d/include/Xm ] + then + MOTIF_INCLUDE_DIR=$d/include + break; + fi +done + +## +## Make sure the header was found. +## +if [ -z $MOTIF_INCLUDE_DIR ] +then + echo + echo "Could not find 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 +#include + +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 diff --git a/config/mkdetect/detect_x11.sh b/config/mkdetect/detect_x11.sh new file mode 100755 index 000000000000..7072b99a4df4 --- /dev/null +++ b/config/mkdetect/detect_x11.sh @@ -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 +## +############################################################################## + + +## 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 +## +for d in $X11_SEARCH_PATH +do + if [ -d $d/include/X11 ] + then + X11_INCLUDE_DIR=$d/include + break; + fi +done + +## +## Make sure the header was found. +## +if [ -z $X11_INCLUDE_DIR ] +then + echo + echo "Could not find 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 +#include + +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