1 2# ------------------------------------------------------------------------ 3# Makefile for BLT library using VC++. 4# ------------------------------------------------------------------------ 5 6include e:/src/blt/win/makedefs 7 8TOOLS32 = c:/Program\ Files/Microsoft\ Visual\ Studio/Vc98 9AR = lib.exe -link50compat 10LD = link.exe 11CC = cl.exe 12rc32 = rc.exe 13 14ifeq ($(WITH_JPEG),0) 15EXTRA_DEFINES = 16endif 17ifeq ($(WITH_JPEG),1) 18EXTRA_DEFINES = -DHAVE_JPEGLIB_H=1 19JPEGDIR = $(srcdir)/../../jpeg-6b 20JPEGLIB = $(JPEGDIR)/libjpeg.lib 21JPEGINC = $(JPEGDIR) 22endif 23ifeq ($(WITH_JPEG),2) 24EXTRA_DEFINES = -DHAVE_IJL_H=1 25JPEGDIR = c:/Program\ Files/Intel/IJL 26JPEGLIB = $(JPEGDIR)/lib/ijl15l.lib 27JPEGINC = $(JPEGDIR)/Include 28endif 29 30# ------------------------------------------------------------------------ 31# C Compiler options 32# ------------------------------------------------------------------------ 33 34DEFINES = -D_X86_=1 -D__STDC__ -DWIN32 -DCONSOLE -D_MT \ 35 $(DEBUG_DEFINES) $(SHLIB_DEFINES) $(EXTRA_DEFINES) 36 37ifeq ($(SHARED),1) 38SHLIB_DEFINES = -D_DLL 39SHLIB_TARGET = build-dll 40LIBS = $(COMMON_LIBS) 41else 42SHLIB_DEFINES = -D_CTYPE_DISABLE_MACROS 43LIBS = $(COMMON_LIBS) $(EXTRA_LIBS) 44endif 45 46ifeq ($(DEBUG),1) 47CFLAGS = -Z7 -Od 48DEBUG_LDFLAGS = -debug:full -debugtype:cv 49DEBUG_DEFINES = -DUSE_TCLALLOC=0 50TK_LIB = $(TKDIR)/win/Debug/tk$(v2)d.lib 51TCL_LIB = $(TCLDIR)/win/Debug/tcl$(v2)d.lib 52MSVCRT = msvcrtd.lib 53else 54CFLAGS = -Ox -GB -GD 55DEBUG_LDFLAGS = -debug:full -debugtype:cv 56TK_LIB = $(TKDIR)/win/Release/tk$(v2).lib 57TCL_LIB = $(TCLDIR)/win/Release/tcl$(v2).lib 58MSVCRT = msvcrt.lib 59endif 60 61EXTRA_CFLAGS = -nologo -W3 62 63# ------------------------------------------------------------------------ 64# Linker flags and options 65# ------------------------------------------------------------------------ 66 67COMMON_LDFLAGS = -nodefaultlib -release -nologo -warn:3 \ 68 -machine:IX86 -align:0x1000 \ 69 $(DEBUG_LDFLAGS) 70 71DLLENTRY = @12 72SHLIB_LDFLAGS = $(COMMON_LDFLAGS) \ 73 -subsystem:console -entry:mainCRTStartup \ 74 -subsystem:windows -entry:WinMainCRTStartup \ 75 -entry:_DllMainCRTStartup$(DLLENTRY) -dll 76 77LDFLAGS = $(COMMON_LDFLAGS) \ 78 -fixed:NO -stack:2300000 79 80COMMON_LIBS = $(TK_LIB) $(TCL_LIB) \ 81 $(MSVCRT) \ 82 kernel32.lib user32.lib 83 84EXTRA_LIBS = $(OLELIB) \ 85 $(JPEGLIB) \ 86 gdi32.lib \ 87 oldnames.lib \ 88 advapi32.lib \ 89 winspool.lib \ 90 comdlg32.lib 91 92TCL_ONLY_LIBS = $(TCL_LIB) $(MSVCRT) kernel32.lib user32.lib advapi32.lib 93 94 95# ------------------------------------------------------------------------ 96# Source and target installation directories 97# ------------------------------------------------------------------------ 98 99srcdir = . 100instdirs = $(prefix) $(exec_prefix) $(bindir) $(libdir) \ 101 $(includedir) 102instdirs = $(exec_prefix) $(prefix) $(libdir) 103 104# ------------------------------------------------------------------------ 105# Directories containing Tcl and Tk include files and libraries 106# ------------------------------------------------------------------------ 107 108TCLDIR = $(srcdir)/../../tcl$(v3) 109TKDIR = $(srcdir)/../../tk$(v3) 110INCLUDES = -I. -I$(srcdir) \ 111 -I$(TOOLS32)/include \ 112 -I$(JPEGINC) \ 113 -I$(TCLDIR)/win -I$(TCLDIR)/generic \ 114 -I$(TKDIR)/win -I$(TKDIR)/generic -I$(TKDIR)/xlib \ 115 116#-I$(TCLROOT)/include 117 118SHLIB_LD_LIBS = $(COMMON_LIBS) $(EXTRA_LIBS) 119 120# ------------------------------------------------------------------------ 121# You don't need to edit anything beyond this point 122# ------------------------------------------------------------------------ 123 124N_OBJS = bltTed.o 125V3_OBJS = bltTri.o bltGrMt.o 126 127TK_OBJS = tkButton.o tkFrame.o tkScrollbar.o 128 129GRAPH_OBJS = bltGrAxis.o \ 130 bltGrBar.o \ 131 bltGrElem.o \ 132 bltGrGrid.o \ 133 bltGrHairs.o \ 134 bltGrLegd.o \ 135 bltGrLine.o \ 136 bltGrMarker.o \ 137 bltGrMisc.o \ 138 bltGrPen.o \ 139 bltGrPs.o \ 140 bltGraph.o 141 142TCL_ONLY_OBJS = bltAlloc.o \ 143 bltArrayObj.o \ 144 bltBgexec.o \ 145 bltChain.o \ 146 bltDebug.o \ 147 bltHash.o \ 148 bltList.o \ 149 bltNsUtil.o \ 150 bltParse.o \ 151 bltPool.o \ 152 bltSpline.o \ 153 bltSwitch.o \ 154 bltTree.o \ 155 bltTreeCmd.o \ 156 bltUtil.o \ 157 bltVecCmd.o \ 158 bltVecMath.o \ 159 bltVecObjCmd.o \ 160 bltVector.o \ 161 bltWatch.o \ 162 bltWinPipe.o \ 163 bltWinUtil.o \ 164 bltWinDde.o \ 165 pure_api.o 166 167DEMO_OBJS = tkConsole.o bltWinMain.o 168 169OBJS = $(GRAPH_OBJS) \ 170 $(TCL_ONLY_OBJS) \ 171 bltBeep.o \ 172 bltBind.o \ 173 bltBitmap.o \ 174 bltBusy.o \ 175 bltCanvEps.o \ 176 bltConfig.o \ 177 bltContainer.o \ 178 bltDragdrop.o \ 179 bltHierbox.o \ 180 bltHtext.o \ 181 bltImage.o \ 182 bltWinImage.o \ 183 bltPs.o \ 184 bltTable.o \ 185 bltTabnotebook.o \ 186 bltTabset.o \ 187 bltText.o \ 188 bltTile.o \ 189 bltTreeView.o \ 190 bltTreeViewCmd.o \ 191 bltTreeViewEdit.o \ 192 bltTreeViewColumn.o \ 193 bltTreeViewStyle.o \ 194 bltWinDraw.o \ 195 bltWinPrnt.o \ 196 bltWindow.o \ 197 bltObjConfig.o \ 198 bltWinop.o \ 199 $(TK_OBJS) $(N_OBJS) 200 201NOT_YET = bltContainer.o bltCutBuffer.o bltColor.o 202 203HEADERS = blt.h bltChain.h bltVector.h bltTree.h bltPool.h bltHash.h 204 205# GNU Make-specific macro 206SRCS = $(patsubst %.o,$(srcdir)/%.c,$(OBJS)) 207 208shell_name = bltwish 209version = $(BLT_MAJOR_VERSION)$(BLT_MINOR_VERSION) 210bltwish = bltwish.exe 211bltsh = bltsh.exe 212bltwish2 = bltwish$(version).exe 213bltsh2 = bltsh$(version).exe 214 215lib_name = BLT$(version) 216lib_a = BLT$(version).lib 217lib_so = BLT$(version).dll 218tcl_only_lib_a = BLTlite$(version).lib 219tcl_only_lib_so = BLTlite$(version).dll 220 221CC_SWITCHES = $(CFLAGS) $(EXTRA_CFLAGS) $(DEFINES) $(INCLUDES) 222VPATH = $(srcdir) 223 224all: build-library $(SHLIB_TARGET) build-demos 225 226install: all install-dirs install-headers install-binaries install-demos 227 228build-demos: $(SHLIB_TARGET) $(bltwish) $(bltsh) 229 230build-library: $(lib_a) $(tcl_only_lib_a) 231 232build-dll: build-library $(lib_so) $(tcl_only_lib_so) 233 234$(bltwish): $(lib_a) tkConsole.o bltWinMain.c 235 $(RM) $(bltwish) 236 $(CC) -c $(CC_SWITCHES) -DTCLLIBPATH=\"$(TCLLIBPATH)\" \ 237 -FobltWinMain.o $(srcdir)/bltWinMain.c 238 LIB=$(TOOLS32)/lib \ 239 $(LD) $(LDFLAGS) tkConsole.o bltWinMain.o -out:$(bltwish) \ 240 $(lib_a) $(LIBS) 241 242$(bltsh): $(tcl_only_lib_a) bltWinMain.c 243 $(RM) $(bltsh) 244 $(CC) -c $(CC_SWITCHES) -DTCL_ONLY \ 245 -DTCLLIBPATH=\"$(TCLLIBPATH)\" \ 246 -FobltWinMain.o $(srcdir)/bltWinMain.c 247 LIB=$(TOOLS32)/lib \ 248 $(LD) $(LDFLAGS) bltWinMain.o -out:$(bltsh) \ 249 $(tcl_only_lib_a) $(TCL_ONLY_LIBS) 250 251$(lib_a): bltHash.h $(OBJS) bltInit.c 252 $(RM) bltInit.o 253 $(CC) -c $(CC_SWITCHES) -DBLT_LIBRARY=\"$(BLT_LIBRARY)\" \ 254 -FobltInit.o $(srcdir)/bltInit.c 255 $(RM) $@ 256 $(AR) -out:$@ bltInit.o $(OBJS) 257 258$(lib_so): $(lib_a) $(OBJS) bltInit.c 259 $(RM) bltInit.o 260 $(CC) -c $(CC_SWITCHES) -DBLT_LIBRARY=\"$(BLT_LIBRARY)\" \ 261 -FobltInit.o $(srcdir)/bltInit.c 262 $(RM) $@ 263 LIB=$(TOOLS32)/lib \ 264 $(LD) $(SHLIB_LDFLAGS) -out:$@ bltInit.o $(OBJS) $(SHLIB_LD_LIBS) 265 266$(tcl_only_lib_a): bltHash.h $(TCL_ONLY_OBJS) bltInit.c 267 $(RM) bltInit.o 268 $(CC) -c $(CC_SWITCHES) -DTCL_ONLY -DBLT_LIBRARY=\"$(BLT_LIBRARY)\" \ 269 -FobltInit.o $(srcdir)/bltInit.c 270 $(RM) $@ 271 $(AR) -out:$@ bltInit.o $(TCL_ONLY_OBJS) 272 273$(tcl_only_lib_so): $(tcl_only_lib_a) $(TCL_ONLY_OBJS) bltInit.c 274 $(RM) bltInit.o 275 $(CC) -c $(CC_SWITCHES) -DTCL_ONLY -DBLT_LIBRARY=\"$(BLT_LIBRARY)\" \ 276 -FobltInit.o $(srcdir)/bltInit.c 277 $(RM) $@ 278 LIB=$(TOOLS32)/lib \ 279 $(LD) $(SHLIB_LDFLAGS) -out:$@ bltInit.o $(TCL_ONLY_OBJS) \ 280 $(TCL_ONLY_LIBS) 281 282bltHash.h: bltHash.h.in 283 sed -e 's/@SIZEOF_VOID_P@/4/' \ 284 -e 's/@SIZEOF_INT@/4/' \ 285 -e 's/@SIZEOF_LONG@/4/' \ 286 -e 's/@SIZEOF_LONG_LONG@/8/' \ 287 -e 's/@HAVE_INTTYPES_H@/0/' \ 288 bltHash.h.in > bltHash.h 289 290install-dirs: 291 @for i in $(instdirs) ; do \ 292 if test ! -d "$$i" ; then \ 293 echo " mkdir $$i" ; \ 294 mkdir "$$i" ; \ 295 fi ; \ 296 done 297 298install-binaries: install-lib install-demos 299 300install-demos: build-demos 301 $(INSTALL) $(bltwish) $(bindir)/$(bltwish) 302 $(INSTALL) $(bltwish) $(bindir)/$(bltwish2) 303 $(INSTALL) $(bltsh) $(bindir)/$(bltsh) 304 $(INSTALL) $(bltsh) $(bindir)/$(bltsh2) 305 306install-lib: $(lib_so) $(lib_a) 307 $(INSTALL_DATA) $(lib_so) $(bindir) 308 $(INSTALL_DATA) $(lib_a) $(libdir) 309 $(INSTALL_DATA) $(tcl_only_lib_so) $(bindir) 310 $(INSTALL_DATA) $(tcl_only_lib_a) $(libdir) 311 312install-headers: 313 for i in $(HEADERS) ; do \ 314 $(INSTALL_DATA) "$(srcdir)/$$i" $(includedir) ; \ 315 done 316 317lint: 318 $(LINT) $(LINTFLAGS) $(DEFINES) $(INCLUDES) $(SRCS) 319 320clean: 321 $(RM) *.o *.pdb *.exp \ 322 $(lib_a) $(lib_so) $(tcl_only_lib_a) $(tcl_only_lib_so) \ 323 $(bltwish) $(bltsh) $(bltwish2) $(bltsh2) 324 $(RM) $(srcdir)/*.bak $(srcdir)/*\~ $(srcdir)/"#"* 325 326distclean: clean 327 $(RM) Makefile 328 329.c.o: 330 $(CC) -c $(CC_SWITCHES) -Fo$*.o $< 331 332