# # $Id: makefile.win,v 1.16 2007/11/19 21:17:13 sfeam Exp $ # # GNUPLOT Makefile for Borland C++ 3.1 Windows version # and Win32 using Borland C++ 4 (or 5? --- 4.52 is known to work) # or Borland C++ Builder 1 (newer versions may work as well) # # Cd to the 'src' directory, and 'make -f ../config/makefile.win' # To compile for win32, pass option '-DWIN32=1' to 'make'. # # This makefile may need some editing before it can be used. Check # BCC installation path, the WIN32 and RUNTIME_LIB flags, in particular. # # The compile and link includes debug flags. Take them out if you # do not want them included (-y -v -M, /m /s /v /l) # # New 991003: WIN32=1 build makes the helpers (doc2rtf, bf_test) as Win32 # console applications, instead of plain DOS programs. This # way, it also works with those compilers missing a DOS option. # # CAVEAT for the 16bit Windows (BC 3.1) version: # You will also need to edit term.h to not include some of the # terminal types which you are not going to use, otherwise you will get a # message about too much global data defined in term.c. A working example # is 'config/term_pc.h'. # directory names, like for use with makefile.all: T=..\\term\\ D=..\\docs\\ M=..\\demo\\ # where to place wgnuplot.hlp helpfile HELPFILE = wgnuplot.hlp # location of Borland C compiler TC = e:\borl\cbuilder # location of TLINK.EXE and BCC.EXE BIN = $(TC)\bin\\ #The full path name of the help compiler. For BC++: #HC = $(BIN)\hc # this comes with C++ Builder 1.0 (but doesn't seem to work): #HC = $(TC)\help\tools\hcw /c /e # or you can use the 'help workshop' available directly from MS: HC = h:\mssdk\bin\hcw /c/e # WIN32=1 for Win32s or Win32 (--> '95 or NT) # new: allow '-DWIN32=1' on make command line to take effect: !if "$(WIN32)"=="" WIN32=0 !endif # Uncomment _this_ for BC++ 4.52 (or others that give linker errors for # the 'errno' variable)... : #RUNTIME_LIBRARY=cw32.lib # ... or this for more modern ones (like C++Builder 1.0) -- it's the # properly multithreading one: RUNTIME_LIBRARY=cw32mt.lib !if $(WIN32) # 32bit Windows compilation. CC = bcc32 PROCESSOR_OPT = DEFINE_HELPFILE = -DHELPFILE=\"$(HELPFILE)\" # For BC++ 4.52, you may try this version with Pentium scheduling # optimization. NB: bcc32a in 4.52 increased in bugginess quite # a bit more than in program speed :-( #CC = bcc32a #PROCESSOR_OPT = -5 !else # 16bit Windows compiler CC = bcc DEFINE_HELPFILE = -DHELPFILE="$(HELPFILE)" !endif # -c means don't link # -ml means use large model (large code, large data) # -M means produce link map # -y means include line numbers for debugger # -v means include debug info # -w- means ignore warnings and do not report them # -w-rvl ignore function must return a value error # -Ff=128 means make data object > 128 FAR # -W means window application # -DREADLINE to use the history/line editing capability. If you want this # capability add -DREADLINE to CFLAGS then add 'readline' to the /o # section of the linker call. !if $(WIN32) CFLAGS = -c -W -M -G -y -v -w-rvl -w-use -w-par -w-aus -w-pro $(PROCESSOR_OPT) -I$(TC)\include -Iwin -DREADLINE=1 -DHAVE_STRNICMP -DWIN32 -DHAVE_STRERROR -DNO_GIH -DWIN32_LEAN_AND_MEAN -DPROTOTYPES -DHAVE_VFPRINTF -DHAVE_GETCWD -DHAVE_STPCPY -DUSE_MOUSE=1 -DWIN_IPC -DHAVE_STRINGIZE -DGP_MATHERR=_matherr -DGP_EXCEPTION=_exception -DHAVE_STRUCT_EXCEPTION_IN_MATH_H=1 CAUXFLAGS = -tWC -w-par -w-use -w-aus -f -N -M -y -v -d -I$(TC)\include -DWIN32 -DWINDOWS_NO_GUI -DHAVE_STRNICMP -DPROTOTYPES -DHAVE_STRINGIZE !else CFLAGS = -c -W -ml -w-par -w-use -w-aus -f -h -N -M -y -v -d -Ff=32 -I$(TC)\include -Iwin -DREADLINE=1 -zEGPFAR_DATA -DHAVE_STRNICMP -DMSDOS=1 -DNO_GIH -DPROTOTYPES -DHAVE_GETCWD -DHAVE_VFPRINTF -DNDEBUG -DHAVE_STRINGIZE CAUXFLAGS = -ml -w-par -w-use -w-aus -f -N -M -y -v -d -I$(TC)\include -DMSDOS=1 -DHAVE_STRNICMP -DPROTOTYPES -DHAVE_VFPRINTF -DHAVE_STRINGIZE !endif OBJS = alloc.obj axis.obj binary.obj bitmap.obj color.obj command.obj contour.obj datafile.obj \ dynarray.obj eval.obj fit.obj gadgets.obj getcolor.obj graphics.obj graph3d.obj help.obj \ hidden3d.obj history.obj internal.obj interpol.obj matrix.obj misc.obj mouse.obj parse.obj \ plot.obj plot2d.obj plot3d.obj pm3d.obj readline.obj save.obj scanner.obj \ set.obj show.obj specfun.obj standard.obj stdfn.obj tables.obj tabulate.obj \ term.obj time.obj unset.obj util.obj util3d.obj variable.obj \ history.obj version.obj winmain.obj DLLOBJS = gpexecute.obj wgnuplib.obj wtext.obj wmenu.obj wpause.obj wgraph.obj wprinter.obj CSOURCE5 = $(T)aed.trm $(T)cgi.trm $(T)cgm.trm $(T)debug.trm \ $(T)dumb.trm $(T)dxy.trm \ $(T)eepic.trm $(T)epson.trm $(T)fig.trm $(T)hp26.trm \ $(T)hp2648.trm $(T)hpgl.trm $(T)hpljii.trm CSOURCE6 = $(T)impcodes.h $(T)imagen.trm $(T)object.h \ $(T)kyo.trm $(T)latex.trm $(T)pbm.trm $(T)win.trm CSOURCE7 = $(T)post.trm $(T)qms.trm $(T)regis.trm $(T)sun.trm \ $(T)t410x.trm $(T)tek.trm $(T)unixpc.trm $(T)unixplot.trm \ $(T)v384.trm $(T)x11.trm CSOURCE8 = contour.c specfun.c binary.c interpol.obj WINDOWS = makefile.win makefile.msw README.win win\wcommon.h \ win\wgnuplib.c win\wgnuplib.def win\wgnuplib.h win\wgnuplib.rc\ win\wgnuplot.def win\wgnuplot.hpj win\wgnuplot.mnu win\wgnuplot.rc \ win\wgraph.c win\winmain.c win\wmenu.c win\wpause.c \ win\wprinter.c win\wresourc.h win\wtext.c win\wtext.h \ win\geticon.c $(D)doc2rtf.c $(T)win.trm win\wgnupl32.def !if $(WIN32) all: wgnupl32.exe $(HELPFILE) wgnuplot.mnu $(M)bf_test.exe !else all: wgnuplot.exe wgnuplot.dll $(HELPFILE) wgnuplot.mnu $(M)bf_test.exe !endif wgnuplot.exe: $(OBJS) win\wgnuplot.def win\wgnuplot.rc winmain.obj wgnuplot.lib # $(BIN)tlink /Twe /c @&&! $(BIN)tlink /Twe /c /s /v /l @&&! $(TC)\lib\C0Wl + bitmap command eval graphics graph3d help internal misc parse + plot plot2d plot3d scanner set show specfun standard stdfn term util version contour + binary interpol variable + axis gadgets color getcolor pm3d mouse + winmain + readline history + fit matrix datafile alloc util3d hidden3d dynarray time + ,wgnuplot,wgnuplot, + wgnuplot.lib + $(TC)\lib\import + $(TC)\lib\mathwl + $(TC)\lib\cwl, + win\wgnuplot.def ! $(BIN)brc -30 -k -i$(TC)\include win\wgnuplot.rc wgnuplot.exe # gnuplot.opt contains a list of the 'core' files, in case that's of # any use... wgnupl32.exe: $(OBJS) $(DLLOBJS) win\wgnupl32.def wgnupl32.res winmain.obj # $(BIN)tlink32 /Tpe /c @&&! $(BIN)tlink32 /Tpe /c /m /s /v @&&! $(TC)\lib\C0W32 + bitmap command eval graphics graph3d help internal misc parse + plot plot2d plot3d scanner set show specfun standard stdfn term util version contour + wgnuplib wtext wmenu wpause wgraph wprinter gpexecute + binary interpol + axis gadgets color getcolor pm3d mouse + winmain + readline history + fit matrix datafile alloc util3d hidden3d dynarray time + save unset variable tables + ,wgnupl32,wgnupl32, + $(TC)\lib\import32 + $(TC)\lib\$(RUNTIME_LIBRARY), + win\wgnupl32.def, wgnupl32.res ! wgnupl32.res: win\wgnuplot.rc win\wgnuplib.rc $(BIN)brcc32 -DWIN32 -i$(TC)\include -r -fowgnupl32 win\wgnuplot.rc # default rules .c.obj: $(BIN)$(CC) @&&! $(CFLAGS) ! $< # rules bitmap.obj: bitmap.c bitmap.h plot.h command.obj: command.c plot.h setshow.h fit.h $(BIN)$(CC) $(DEFINE_HELPFILE) @&&! $(CFLAGS) ! command.c contour.obj: contour.c plot.h eval.obj: eval.c plot.h graphics.obj: graphics.c plot.h setshow.h graph3d.obj: graphics.c plot.h setshow.h fit.obj: fit.c fit.h matrix.h plot.h matrix.obj: matrix.c matrix.h fit.h internal.obj: internal.c plot.h misc.obj: misc.c plot.h setshow.h parse.obj: parse.c plot.h $(BIN)$(CC) @&&! $(CFLAGS) ! parse.c plot.obj: plot.c plot.h setshow.h $(BIN)$(CC) @&&! $(CFLAGS) ! plot.c hidden3d.obj: hidden3d.c plot.h setshow.h plot3d.obj: plot3d.c plot.h setshow.h plot2d.obj: plot2d.c plot.h setshow.h readline.obj: readline.c plot.h scanner.obj: scanner.c plot.h set.obj: set.c plot.h setshow.h show.obj: show.c plot.h setshow.h $(BIN)$(CC) $(DEFINE_HELPFILE) @&&! $(CFLAGS) ! show.c specfun.obj: specfun.c standard.obj: standard.c plot.h stdfn.obj: stdfn.c stdfn.h interpol.obj: interpol.c plot.h setshow.h tabulate.obj: tabulate.c tabulate.h alloc.h axis.h graphics.h graph3d.h plot3d.h term.obj: term.c term.h plot.h set.c show.c bitmap.h $(CSOURCE5) $(CSOURCE6) $(CSOURCE7) win\wgnuplib.h $(BIN)$(CC) @&&! $(CFLAGS) ! $(TERMFLAGS) -I$(T) -I. term.c util.obj: util.c plot.h util3d.obj: util3d.c plot.h setshow.h variable.obj: variable.c plot.h variable.h version.obj: version.c winmain.obj: win\winmain.c win\wgnuplib.h win\wtext.h plot.h $(BIN)$(CC) $(DEFINE_HELPFILE) @&&! $(CFLAGS) ! win\winmain.c wgnuplot.mnu: win\wgnuplot.mnu copy win\wgnuplot.mnu wgnuplot.mnu # different compiler options for DLL's */ !if $(WIN32) DLLCC = $(BIN)$(CC) -DWIN32 -c -M -y -v -WE -I$(TC)\include -Iwin -DPROTOTYPES -DUSE_MOUSE=1 -DWIN_IPC -DHAVE_STRINGIZE !else DLLCC = $(BIN)$(CC) -c -WD -ms! -w-par -f -M -y -v -w -N -I$(TC)\include -Iwin !endif wgnuplot.lib: wgnuplot.dll $(BIN)implib wgnuplot.lib wgnuplot.dll wgnuplot.dll: $(DLLOBJS) win/wgnuplib.def win/wgnuplib.rc $(BIN)tlink /c /n /Twd /L$(TC)\lib /m /s /v /l @&&! c0ds + wgnuplib wtext wmenu wpause wgraph wprinter, + wgnuplot.dll, + wgnuplib.map, + import mathws cws, + win\wgnuplib.def ! $(BIN)brc -30 -i$(TC)\include -t win\wgnuplib.rc wgnuplot.dll wgnuplib.obj: win/wgnuplib.c win/wgnuplib.h win/wcommon.h win/wresourc.h $(DLLCC) win/wgnuplib.c wmenu.obj: win/wmenu.c win/wgnuplib.h win/wcommon.h win/wresourc.h $(DLLCC) win/wmenu.c wtext.obj: win/wtext.c win/wgnuplib.h win/wcommon.h win/wresourc.h $(DLLCC) win/wtext.c wpause.obj: win/wpause.c win/wgnuplib.h win/wcommon.h win/wresourc.h $(DLLCC) win/wpause.c wprinter.obj: win/wprinter.c win/wgnuplib.h win/wcommon.h win/wresourc.h $(DLLCC) win/wprinter.c wgraph.obj: win/wgraph.c win/wgnuplib.h win/wcommon.h win/wresourc.h $(DLLCC) win/wgraph.c # convert gnuplot.doc to gnuplot.rtf $(HELPFILE): win\gnuplot.rtf $(HC) win\wgnuplot.hpj -copy win\wgnuplot.hlp $(HELPFILE) win\gnuplot.rtf: doc2rtf.exe $(D)gnuplot.doc win\wgnuplot.hpj doc2rtf $(D)gnuplot.doc win\gnuplot.rtf doc2rtf.exe: $(D)doc2rtf.c $(D)termdoc.c $(D)xref.c $(CSOURCE5) $(CSOURCE6) $(CSOURCE7) $(BIN)$(CC) -edoc2rtf.exe @&&! -D_Windows -w-pro $(CAUXFLAGS) -I. -I$(T) -I$(D) ! $(D)doc2rtf.c $(D)termdoc.c $(D)xref.c # make binary demo files $(M)bf_test.exe: bf_test.c dbinary.obj dalloc.obj $(BIN)$(CC) -e$(M)bf_test.exe @&&! -L$(TC)\lib $(CAUXFLAGS) ! bf_test.c dbinary.obj dalloc.obj cd ..\demo bf_test cd ..\src dalloc.obj: alloc.c $(BIN)$(CC) -c @&&! $(CAUXFLAGS) ! -odalloc.obj alloc.c dbinary.obj: binary.c $(BIN)$(CC) -c @&&! $(CAUXFLAGS) ! -odbinary.obj binary.c # clean up temporary files clean: del *.obj del win\*.obj del wgnuplot.map del win\wgnuplot.res del wgnupl32.map del wgnupl32.res del win\gnuplot.rtf del doc2rtf.map del doc2rtf.exe del win\wgnuplib.res del wgnuplib.map del wgnuplot.lib del bf_test.map del $(M)bf_test.exe del $(M)bf_test.map realclean: veryclean veryclean: clean del wgnuplot.exe del wgnuplot.hlp del win\wgnuplot.hlp -attrib -h wgnuplot.gid del wgnuplot.gid del wgnuplot.mnu del wgnuplot.dll del wgnupl32.exe del $(M)binary1 del $(M)binary2 del $(M)binary3 del $(M)fit.log del $(M)soundfit.par