1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244
|
/**/# Imakefile file for liblw.a, Copyright (c) 1992-1993 Lucid, Inc.
/*
* If you have Motif and want to provide support for Motif widgets in lwlib,
* then define USE_MOTIF.
*
* If you have OpenLook and want to provide support for OpenLook widgets in
* lwlib, then define USE_OLIT.
*
* Otherwise, define USE_LUCID to use Lucid's own Motif-lookalike widgets,
* which are included in this directory.
*
* You cannot define USE_MOTIF and USE_OLIT at the same time, but USE_LUCID
* may be defined along with either of the other two.
*
* The OLIT menubar is slow, and possibly buggy. We recommend against using
* it unless you'd like to try to improve it (which we encourage.)
*
* The Lucid menubar is much faster than the Motif menubar, but is missing
* a few features (most notably stay-up menus and keyboard traversal.) But
* since it has the Motif look-and-feel, we recommend using it even if you
* have Motif.
*
* Currently, only the Motif widgets provide support for dialog boxes. If
* you don't have Motif, you will not be able to pop up dialog boxes from
* emacs. If you define both USE_LUCID and USE_MOTIF, then the menus will
* be implemented with Lucid widgets, and the dialog boxes will be
* implemented with Motif widgets.
*
* It shouldn't take much work to add support for non-Motif dialog boxes;
* all that one need do is add code that implements Athena versions of the
* xm_create_dialog(), xm_update_one_widget(), and xm_update_one_value()
* routines in lwlib-Xm.c. If you do this, please send us the code.
*
* If you have your X11 source tree online, then you should define
* INCLUDE_EXTENSIONS to cause this library to contain some useful functions
* which Xt should provide but doesn't. You can only do this if you have
* the source tree online, because these functions require access to internal
* Xt data structures that are not defined in the exported header files.
* If you define INCLUDE_EXTENSIONS, then the variable $TOP must point at the
* root of the X11 source tree.
*
* To build a "shared" version of lwlib as well, define BUILD_SHARED_LIB.
* If INCLUDE_EXTENSIONS is defined, and you want to link with a dynamic
* version of Xt, it may be necessary to build a shared version of lwlib as
* well, as the X libraries sometimes put *different code* in the dynamic
* and shared versions of their libraries, for some reason I don't understand.
*
* Remember, if you build and install a shared version of lwlib, you may need
* to run ldconfig(8) before anything will realize that it exists.
*
* To compile with support for Lucid's Energize Programming System, you must
* define all of ENERGIZE, USE_LUCID, USE_MOTIF, and INCLUDE_EXTENSIONS.
*/
#define USE_LUCID
/* #define USE_MOTIF */
/* #define USE_OLIT */
/* #define BUILD_SHARED_LIB */
/* #define ENERGIZE */
/* #define INCLUDE_EXTENSIONS */
#ifdef INCLUDE_EXTENSIONS /* this is where it is at our site */
TOP = /$(WHICH_X)/mit
#endif
/*
*
* You shouldn't need to edit anything below this point.
*
*/
#ifdef ENERGIZE
# if !defined(USE_LUCID) || !defined(USE_MOTIF) || !defined(INCLUDE_EXTENSIONS)
ERROR! Energize requires Lucid widgets, Motif, and X Extensions.
# endif
#endif /* ENERGIZE */
#ifdef BUILD_SHARED_LIB
SOLWREV=1.0
#endif
#if (ProjectX == 4)
STD_DEFINES = LibraryDefines
CDEBUGFLAGS = LibraryCDebugFlags
EXT_DEFINES = -DTHIS_IS_X11R4
WHICH_X = x11r4
#define SpecialLibObjectRule SpecialObjectRule
#else /* !4 */
#if (ProjectX == 5)
#ifdef BUILD_SHARED_LIB
# define DoSharedLib YES
# define DoNormalLib YES
#endif
#include <Library.tmpl>
EXT_DEFINES = -DTHIS_IS_X11R5 -DINCLUDE_ALLOCA_H
WHICH_X = x11r5
#else /* !5 */
EXT_DEFINES = "ERROR! Imakefile was unable to determine whether this is X11r4 or X11r5."
#endif /* !5 */
#endif /* !4 */
LUCID_SRCS = lwlib-Xlw.c xlwmenu.c
LUCID_OBJS = lwlib-Xlw.o xlwmenu.o
MOTIF_SRCS = lwlib-Xm.c
MOTIF_OBJS = lwlib-Xm.o
OLIT_SRCS = lwlib-Xol.c lwlib-Xol-mb.c
OLIT_OBJS = lwlib-Xol.o lwlib-Xol-mb.o
#ifdef INCLUDE_EXTENSIONS
EXT_SRCS = dispatch.c xrdb-cpp.c xrdb.c
EXT_OBJS = dispatch.o xrdb-cpp.o xrdb.o
#endif
#if (defined(USE_MOTIF) && defined(USE_OLIT))
TOOLKIT_DEFINES = "ERROR! You cannot define both USE_MOTIF and USE_OLIT at the same time (in Imakefile)."
#else
# if (defined(USE_MOTIF) && defined(USE_LUCID))
TOOLKIT_DEFINES = -DUSE_MOTIF -DUSE_LUCID
TOOLKIT_SRCS = $(MOTIF_SRC) $(LUCID_SRCS)
TOOLKIT_OBJS = $(MOTIF_OBJS) $(LUCID_OBJS)
# else
# if (defined(USE_OLIT) && defined(USE_LUCID))
DEFINES = -DUSE_OLIT -DUSE_LUCID
TOOLKIT_SRCS = $(OLIT_SRC) $(LUCID_SRCS)
TOOLKIT_OBJS = $(OLIT_OBJS) $(LUCID_OBJS)
# else
# if defined(USE_OLIT)
TOOLKIT_DEFINES = -DUSE_OLIT
TOOLKIT_SRCS = $(OLIT_SRC)
TOOLKIT_OBJS = $(OLIT_OBJS)
# else
# if defined(USE_MOTIF)
TOOLKIT_DEFINES = -DUSE_MOTIF
TOOLKIT_SRCS = $(MOTIF_SRC)
TOOLKIT_OBJS = $(MOTIF_OBJS)
# else
# if defined(USE_LUCID)
TOOLKIT_DEFINES = -DUSE_LUCID
TOOLKIT_SRCS = $(LUCID_SRC)
TOOLKIT_OBJS = $(LUCID_OBJS)
# else
TOOLKIT_DEFINES = "ERROR! At least one of USE_MOTIF, USE_LUCID or USE_OLIT must be defined in Imakefile."
# endif
# endif
# endif
# endif
# endif
#endif
#ifdef ENERGIZE
# ifndef USE_MOTIF
EZ_OBJS = "ERROR! ENERGIZE requires USE_MOTIF to be defined in Imakefile."
# else
EZ_OBJS = energize/blpsheet.o energize/build.o energize/classbr_ps.o \
energize/ctreebr_ps.o energize/debuggerps.o \
energize/editmode.o energize/leb_psheet.o \
energize/projectdisp.o energize/projectps.o \
energize/search.o energize/target.o
ENERGIZEP = -DENERGIZE
# endif
#endif
SRCS = lwlib.c $(TOOLKIT_SRCS) lwlib-utils.c $(EXT_SRCS)
OBJS = lwlib.o $(TOOLKIT_OBJS) lwlib-utils.o $(EXT_OBJS) $(EZ_OBJS)
EXT_FLAGS = -I$(TOOLKITSRC) $(EXT_DEFINES)
LIBNAME = liblw.a
#if defined(ENERGIZE) && defined(BUILD_SHARED_LIB)
all::
@if [ ! -d shared ]; then mkdir shared; else exit 0; fi
@if [ ! -d energize/shared ]; then mkdir energize/shared; \
else exit 0; fi
@if [ ! -h shared/energize ]; \
then cd shared ; ln -s ../energize/shared energize ; \
else exit 0; fi
clean::
$(RM) shared/energize
#endif
#ifdef BUILD_SHARED_LIB
# if (ProjectX == 4)
SharedLibraryObjectRule ()
NormalSharedLibraryTarget(lw,$(SOLWREV),$(OBJS))
# else /* X != 4 */
LibraryObjectRule ()
SharedLibraryTarget(lw,$(SOLWREV),$(OBJS),shared,..)
# endif /* X != 4 */
#else /* !BUILD_SHARED_LIB */
NormalLibraryObjectRule ()
#endif /* !BUILD_SHARED_LIB */
NormalLibraryTarget (lw,$(OBJS))
MakefileSubdirs (energize)
DependTarget ()
#ifdef ENERGIZE
energize/Imakefile:
-mkdir energize
-(cd energize ; sh -c "ln -s ../$(VPATH)/energize/* .")
/* #### we should automatically edit BUILD_SHARED_LIB into/out of the energize
Imakefile, since that's the only thing down there that changes */
energize/Makefile: energize/Imakefile Imakefile
$(MAKE) $(MFLAGS) Makefiles
Makefile::
$(RM) energize/Makefile
$(EZ_OBJS): energize/Makefile
${RM} $@ ; cd energize ; $(MAKE) $(MFLAGS) CC="$(CC)" CFLAGS="$(CFLAGS)"
clean::
cd energize ; $(MAKE) $(MFLAGS) clean
#endif
#if defined(BUILD_SHARED_LIB) && (ProjectX == 4)
# define LWObjectRule SpecialSharedObjectRule
#else
# define LWObjectRule SpecialLibObjectRule
#endif
CPPDEFS=-DCPP_PROGRAM=\"CppCmd\"
LWObjectRule (lwlib.o, lwlib.c, $(TOOLKIT_DEFINES))
LWObjectRule (dispatch.o, dispatch.c, $(EXT_FLAGS))
LWObjectRule (xrdb-cpp.o, xrdb-cpp.c, $(EXT_FLAGS) "$(CPPDEFS)")
LWObjectRule (xrdb.o, xrdb.c, $(EXT_FLAGS))
LWObjectRule (lwlib-Xm.o, lwlib-Xm.c, $(ENERGIZEP))
lwlib-utils.o: lwlib-utils.h
lwlib.o: lwlib.h lwlib-internal.h
lwlib-Xlw.o: lwlib.h lwlib-internal.h
lwlib-Xm.o: lwlib.h lwlib-internal.h lwlib-utils.h
lwlib-Xol.o: lwlib.h lwlib-internal.h
lwlib-Xol-mb.o: lwlib-Xol-mb.h lwlib-Xol-mbP.h
|