X-Git-Url: http://git.maemo.org/git/?p=gnuplot;a=blobdiff_plain;f=config%2Fmakefile.os2;fp=config%2Fmakefile.os2;h=8b24022c50d77562da3bcb2ddaa2f7a3cb2df20d;hp=0000000000000000000000000000000000000000;hb=39ec1247a71f61152a4a7f502a30f06a3896c5da;hpb=06be459be4f5f6a7c6ff878e84f355fb2575caa8 diff --git a/config/makefile.os2 b/config/makefile.os2 new file mode 100644 index 0000000..8b24022 --- /dev/null +++ b/config/makefile.os2 @@ -0,0 +1,460 @@ +# +# $Id: makefile.os2,v 1.50.2.1 2008/02/23 11:21:24 mikulik Exp $ +# +# GNUPLOT Makefile for use on OS/2 2.x (and above) +# using emx 0.9 (and above) and GNUMake +# +# To compile gnuplot, run the following command in directory gnuplot\src: +# make -f ..\config\makefile.os2 +# + +# The following tools and libraries are recommended/required to use this +# makefile out of the box: +# - GNU make, e.g. http://hobbes.nmsu.edu/pub/os2/dev/util/make-3.81beta3-r2-bin.zip +# - IPFC included in the OS/2 developer kit +# - emtex is only required for some parts of the documentation +# +# - GD library, http://hobbes.nmsu.edu/pub/os2/util/gd-2-0-33.zip +# - GNU readline, http://os2ports.com/ftp/pub/os2/unix/devtools/readline/readline4.1-os2.zip +# - PDFlib Lite 6.0 or later compiled for emx (available as source from http://www.pdflib.com/ ) +# - XFree86 libraries, ftp://ftp.netlabs.org/pub/xfree86/4.5.0 + +# We depend on using cmd.exe (or a compatible one) and the +# standard OS/2 tool set. (additionally we use 'cat') +SHELL=cmd.exe + +# +# ***************** Begin of Configuration section *************************** +# + +# +# Comment out the definition lines to disable the according features: +# + +# X11 driver +# requires installed XFree86 +X11=1 + +# GIF, PNG, JPEG device drivers +# Requires gd library (not part of gnuplot) +# +# You can use the following set of options for GD library v2.0 something +# or newer. This library writes PNG, JPEG and GIF images. +# If libgd has been compiled with TrueType font support, then you can use +# scaled TrueType fonts in PNG images. If not, then uncomment FREETYPE. +# The pre-compiled GD library by Ilya Zakharevich available at +# http://hobbes.nmsu.edu/pub/os2/util/gd-2-0-33.zip +# is strongly recommended. This packages already includes the required +# GD, JPEG and Z and freetype libraries. +GD=1 +PNG=1 +GIF=1 +JPEG=1 +FREETYPE=1 + +# PDF device driver +# requires PDFlib (not part of gnuplot) +PDF=1 + +# VESAkit support +# requires SVGA- and VESA Kit (not part of gnuplot) +# VESA=1 + +# GNU_ReadLine support +# requires GNU readline library (static or DLL; not part of gnuplot) +# GNU_RL=1 + +# saving of history (no longer requires GNU readline) +HISTORY=1 + +# DEBUGging support +# creates binaries suitable for debugging. Some bugs may come and go +# as opposed to a production build since we lower the optimization level +# DEBUG=1 + +# MOUSE support for PM and X11 terminals +MOUSE=1 + +# +# ****************** End of Configuration section **************************** +# + +# +# Miscellaneous setup +# + +.PHONY: all runtime alldocs demo binaries infomin clean veryclean +.SUFFIXES: .c .trm .o .obj .exe .rc .res .dll + +# A reasonable default +default: runtime + +# A basic help screen +help: + @echo " Usage: $(MAKE) -f makefile.os2 target" + @echo " where target is one of:" + @echo " all runtime alldocs demo binaries infomin help clean veryclean" + +# +# Definitions of flags and symbols used by makefile.all and makefile.os2 +# + +# these definitions are used by makefile.all +T=../term/ +D=../docs/ +L=$(D)latextut/ +M=../demo/ + +# +# Definitions valid for all targets on OS/2 +# + +OS2DIR = os2 +DOCDIR = ..\docs +DEMODIR = ..\demo +TERMDIR = ..\term + + +# where to place gnuplot.gih helpfile +HELPFILE = $(DOCDIR)\gnuplot.gih + +# Where to install the PostScript prologue files, relatively to the executable +# gnuplot.exe +GNUPLOT_PS_DIR = share/PostScript + +# +# 3 sets of variables are defined and used to create +# 1: gnuplot.exe, and utilities +# 2: gnupmdrv.exe (the PM-driver executable) +# +CC = gcc +CC2 = gcc +O = o +O2 = obj + +# Flags for compiler and linker under OS/2 +OS2FLAGS = -DOS2 + +# Flags for compiling with EMX/GCC +# Special note: -ffloat-store is necessary to avoid some strange behaviour +# of this code: +# reset; set key; set xlabel "Year"; set xdata time; set timefmt "%y%m%d" +# set format x "%y"; set xrange ["900621" : "950126"]; +# plot '-' using 1:2 title 'Fitted IO' with lines 1 +# 900621 20 +# 950126 55 +# e +# Confirmed for gcc 2.7.x/2.8.x; graphics.c used to be the culprit, but as +# of today (20010918) it isn't any more ... +# +EMXSPECIFIC = -DHAVE_CONFIG_H -ffloat-store +LIBS = + +# +# Choose flags suitable for a debugging or for a production build +# +ifdef DEBUG +CFLAGS = -g $(OS2FLAGS) $(EMXSPECIFIC) -Wall -Wno-comment -O0 -Zmt +LDFLAGS = -g -Zmt -Zcrtdll -Zbsd-signals +CFLAGS2 = -g $(OS2FLAGS) $(EMXSPECIFIC) -Wall -O0 -Zmt -Zomf +LDFLAGS2 = -g -Zmt -Zcrtdll -Zbsd-signals -Zomf +else +CFLAGS = $(OS2FLAGS) $(EMXSPECIFIC) -O4 -mpentium -Wall -Wno-unused -Wno-comment -Zmt +LDFLAGS = -s -Zmt -Zcrtdll -Zbsd-signals +CFLAGS2 = $(OS2FLAGS) $(EMXSPECIFIC) -O4 -mpentium -Wall -Wno-unused -Zmt -Zomf +LDFLAGS2 = -s -Zmt -Zcrtdll -Zbsd-signals -Zomf +endif + +# +# Settings for the terminals to be included +# +TERMFLAGS = -DGNUPLOT_PS_DIR=\"$(GNUPLOT_PS_DIR)\" -I. -I.. -I$(T) + +ifdef GD + CFLAGS += -DHAVE_LIBGD -DHAVE_GD_H + TERMLIBS += -lgd +ifdef FREETYPE + CFLAGS += -DHAVE_GD_TTF +endif +ifdef PNG + CFLAGS += -DHAVE_GD_PNG +endif +ifdef GIF + CFLAGS += -DHAVE_GD_GIF -DGIF_ANIMATION +endif +ifdef JPEG + CFLAGS += -DHAVE_GD_JPEG +endif +endif + +ifdef PDF + TERMFLAGS += -DHAVE_LIBPDF -DHAVE_PDFLIB_H + TERMLIBS += -lpdflib +endif + +# SVGA-/VESAkit support +ifdef VESA + TERMFLAGS += -DEMXVESA + TERMLIBS += -ljmgraph -lvesa +endif + +# X11 support +ifdef X11 + TERMFLAGS += -DX11 -DX11_DRIVER_DIR=\".\" +endif + +# MOUSE support +ifdef MOUSE + TERMFLAGS += -DUSE_MOUSE + # the interprocess communication flag OS2_IPC is #defined in config.(os2,h) +endif + +# GNU readline support +ifdef GNU_RL + CFLAGS += -DHAVE_LIBREADLINE + LIBS += -lreadline -ltermcap +endif + +# saving history (independent of GNU readline) +ifdef HISTORY + CFLAGS += -DGNUPLOT_HISTORY +endif + + +# TOOLS +CPP = cpp +# Do not name this variable "IPFC"!! This won't work out... +IPF_C = ipfc.exe + +# Tools for buildings the docs +DVIPS = dvips +LATEX = latex +PDFLATEX = vlatex +PLAINTEX = tex + +# +# Default Rules +# +.c.$(O): + $(CC) $(CFLAGS) $(TERMFLAGS) -o $*.$(O) -c $*.c +.c.obj: + $(CC2) $(CFLAGS2) $(TERMFLAGS) -o $*.obj -c $*.c + +# +# Include dependencies valid for all platforms from makefile.all +# +include makefile.all + + +# +# Pre-defined sets of targets: +# +all: runtime demo +alldocs: $(DOCDIR)\gnuplot.gih $(DOCDIR)\gnuplot.inf $(DOCDIR)\gnuplot.html \ + $(DOCDIR)\gnuplot.info $(DOCDIR)\gnuplot.ps \ + $(DOCDIR)\gnuplot.pdf +runtime: config.h binaries infomin $(DOCDIR)\gnuplot.inf +infomin: gnupmdrv.hlp $(DOCDIR)\gnuplot.gih +demo: $(M)binary1 $(M)binary2 $(M)binary3 +ifdef X11 +binaries: gnuplot.exe gnupmdrv.exe gnuplot_x11.exe +else +binaries: gnuplot.exe gnupmdrv.exe +endif + +OBJS = $(COREOBJS) version.$(O) + +$(OBJS): config.h + +term.$(O): $(CORETERM) term.h config.h $(OS2DIR)\pm_msgs.h + +gnuplot.exe: $(OBJS) + $(CC) $(LDFLAGS) -o $@ $(OBJS) $(TERMLIBS) $(LIBS) + +# +# Build the PM outboard driver +# +$(OS2DIR)\gnupmdrv.$(O2): $(OS2DIR)\gnupmdrv.c $(OS2DIR)\gnupmdrv.h config.h +$(OS2DIR)\gclient.$(O2): $(OS2DIR)\gclient.c $(OS2DIR)\gnupmdrv.h config.h $(OS2DIR)\pm_msgs.h mouse.h +$(OS2DIR)\dialogs.$(O2): $(OS2DIR)\dialogs.c $(OS2DIR)\gnupmdrv.h config.h $(OS2DIR)\dialogs.h +$(OS2DIR)\print.$(O2): $(OS2DIR)\print.c $(OS2DIR)\gnupmdrv.h config.h +$(OS2DIR)\gpexecute.$(O2): gpexecute.c gpexecute.h +$(OS2DIR)\gnupmdrv.res : $(OS2DIR)\gnupmdrv.rc $(OS2DIR)\gnuplot.ico $(OS2DIR)\dialogs.h + cd $(OS2DIR) && rc -r gnupmdrv.rc & cd .. + +OS2OBJ = $(OS2DIR)\gnupmdrv.$(O2) $(OS2DIR)\gclient.$(O2) $(OS2DIR)\print.$(O2) \ + $(OS2DIR)\dialogs.$(O2) gpexecute.$(O2) + +gnupmdrv.exe: $(OS2OBJ) $(OS2DIR)\gnupmdrv.res $(OS2DIR)\gnupmdrv.def + $(CC2) $(LDFLAGS2) -o $@ $(OS2OBJ) $(OS2DIR)\gnupmdrv.res $(OS2DIR)\gnupmdrv.def + +gnupmdrv.hlp: $(OS2DIR)\gnupmdrv.ipf +# Cannot use the command +# $(IPF_C) $< $@ +# because IPFC 2.1 does not support this syntax. Use instead: + copy $< . && $(IPF_C) gnupmdrv.ipf && del gnupmdrv.ipf + +# +# Build the X11 outboard driver +# + +# X11 libraries +X11LIBS = -L$(X11ROOT)/XFree86/lib -lX11 -lsocket -Zbsd-signals -Zcrtdll +# X11 includes +X11INCLUDES = -I$(X11ROOT)/XFree86/include +X11FLAGS= -Zmt -D__UNIXOS2__ -DI_NEED_OS2_H +ifdef MOUSE +X11FLAGS += -DUSE_MOUSE +endif + +gnuplot_x11.exe: gplt_x11.o gpexecute.o getcolor_x11.o + $(CC) $(LDFLAGS) $(X11FLAGS) $(EMXSPECIFIC) -o $@ -DGPLT_X11_MODE $^ $(X11LIBS) + +gplt_x11.o: gplt_x11.c mouse.h gpexecute.h config.h + $(CC) $(CFLAGS) $(X11FLAGS) $(EMXSPECIFIC) $(X11INCLUDES) -c -o $@ $< + +getcolor_x11.o: getcolor.c + $(CC) $(CFLAGS) $(X11FLAGS) $(EMXSPECIFIC) -DGPLT_X11_MODE -c -o $@ $< + +# +# Create config.h +# This file is preferable over having explicit gcc command longer than 10 lines: +# gcc ... -DHAVE_ -DHAVE_ ... -DHAVE_ -DHAVE_ ... myfile.c +# +config.h: ..\config\config.os2 + if exist $@ del $@ + copy $< $@ + +# +# Create documentation in various formats +# +# The idea behind the renaming business is that we may want to +# use various LaTeX systems which may choke if they find existing +# intermediate files from other systems. +# Call LaTeX three times to get the toc right. +$(DOCDIR)\gnuplot.dvi: $(DOCDIR)\gnuplot.tex + copy $(DOCDIR)\gnuplot.tex $(DOCDIR)\gnuplot_2.tex + cd $(DOCDIR) && $(LATEX) gnuplot_2.tex && $(LATEX) gnuplot_2.tex && $(LATEX) gnuplot_2.tex + if exist $(DOCDIR)\gnuplot.dvi del $(DOCDIR)\gnuplot.dvi + move $(DOCDIR)\gnuplot_2.dvi $(DOCDIR)\gnuplot.dvi + del $(DOCDIR)\gnuplot_2.* +$(DOCDIR)\gnuplot.ps: $(DOCDIR)\gnuplot.dvi + $(DVIPS) -o $@ $(DOCDIR)\gnuplot.dvi +$(DOCDIR)\gnuplot.pdf: $(DOCDIR)\gnuplot.tex + copy $(DOCDIR)\gnuplot.tex $(DOCDIR)\gnuplot_3.tex + copy $(DOCDIR)\..\VERSION $(DOCDIR) + cd $(DOCDIR) && $(PDFLATEX) gnuplot_3.tex && $(PDFLATEX) gnuplot_3.tex && $(PDFLATEX) gnuplot_3.tex + if exist $(DOCDIR)\gnuplot.pdf del $(DOCDIR)\gnuplot.pdf + move $(DOCDIR)\gnuplot_3.pdf $(DOCDIR)\gnuplot.pdf + del $(DOCDIR)\gnuplot_3.* +$(DOCDIR)\gnuplot.tex: $(DOCDIR)\gnuplot.doc $(DOCDIR)\doc2tex.exe + $(DOCDIR)\doc2tex.exe $(DOCDIR)\gnuplot.doc $@ +$(DOCDIR)\gnuplot.inf: $(DOCDIR)\gnuplot.ipf +# Cannot use the command +# $(IPF_C) /INF $< $@ +# because IPFC 2.1 does not support this syntax. Use instead: + cd $(DOCDIR) && $(IPF_C) /INF gnuplot.ipf +$(DOCDIR)\gnuplot.gih: $(DOCDIR)\gnuplot.doc $(DOCDIR)\doc2gih.exe + $(DOCDIR)\doc2gih.exe $(DOCDIR)\gnuplot.doc $@ +$(DOCDIR)\gnuplot.html: $(DOCDIR)\gnuplot.texi $(DOCDIR)\gnuplot.doc + $(MAKEINFO) --html -I$(DOCDIR) $(DOCDIR)\gnuplot.texi --no-split --output=$@ +$(DOCDIR)\gnuplot.info: $(DOCDIR)\gnuplot.texi $@ + $(MAKEINFO) -I$(DOCDIR) $(DOCDIR)\gnuplot.texi --no-split --output=$@ +# $(DOCDIR)\gnuplot.texi: $(DOCDIR)\gnuplot.doc $(DOCDIR)\doc2texi.pl +# perl $(DOCDIR)\doc2texi.pl $(DOCDIR)\gnuplot.doc >$@ +$(DOCDIR)\gnuplot.rtf: $(DOCDIR)\gnuplot.doc $(DOCDIR)\doc2rtf.exe + $(DOCDIR)\doc2rtf.exe $(DOCDIR)\gnuplot.doc $@ +$(DOCDIR)\gnuplot.ms: $(DOCDIR)\gnuplot.doc $(DOCDIR)\doc2ms.exe + $(DOCDIR)\doc2ms.exe $(DOCDIR)\gnuplot.doc $@ +$(DOCDIR)\gnuplot.ipf: $(DOCDIR)\gnuplot.doc $(DOCDIR)\doc2ipf.exe + $(DOCDIR)\doc2ipf.exe $(DOCDIR)\gnuplot.doc $@ +# Assume we need A4 format +$(DOCDIR)\gpcard.ps: $(DOCDIR)\gpcard.dvi + cd $(DOCDIR) && $(DVIPS) -o gpcard_letter.ps $< + cd $(DOCDIR) && psresize -pletter -Pa4 gpcard_letter.ps $@ +$(DOCDIR)\gpcard.dvi: $(DOCDIR)\gpcard.tex + cd $(DOCDIR) && $(PLAINTEX) gpcard.tex && $(PLAINTEX) gpcard.tex + +# +# Tools for converting the documentation from docs\gnuplot.doc +# in various formats +# + +# Some dependencies - no rule! +$(DOCDIR)\doc2gih.exe $(DOCDIR)\doc2ipf.exe $(DOCDIR)\doc2info.exe \ +$(DOCDIR)\doc2tex.exe $(DOCDIR)\doc2rtf.exe: \ + $(DOCDIR)\termdoc.c $(DOCDIR)\xref.c $(DOCDIR)\allterm.h ..\src\config.h + + +SORT_TERMINALS=1 +ifdef SORT_TERMINALS +# sort alphabetically all terminals +$(DOCDIR)\allterm.h: $(CORETERM) + @echo "Building allterm.h" + @..\src\os2\4allterm.cmd sort +else +# SORT_TERMINALS==0, then sequence of terminals according to "ls term/*.trm": +$(DOCDIR)\allterm.h: $(CORETERM) + @echo "Building allterm.h" + @..\src\os2\4allterm.cmd nosort +endif + +$(DOCDIR)\doc2gih.exe: $(DOCDIR)\doc2gih.c $(DOCDIR)\termdoc.c $(OS2TERM) + $(CC) $(CFLAGS) $(TERMFLAGS) -DALL_TERM_DOC -o $@ $(DOCDIR)\doc2gih.c $(DOCDIR)\termdoc.c +$(DOCDIR)\doc2ipf.exe: $(DOCDIR)\doc2ipf.c $(DOCDIR)\termdoc.c $(DOCDIR)\xref.c $(OS2TERM) + $(CC) $(CFLAGS) $(TERMFLAGS) -DALL_TERM_DOC -o $@ $(DOCDIR)\doc2ipf.c $(DOCDIR)\termdoc.c $(DOCDIR)\xref.c +$(DOCDIR)\doc2tex.exe: $(DOCDIR)\doc2tex.c $(DOCDIR)\termdoc.c $(OS2TERM) $(DOCDIR)\allterm.h + $(CC) $(CFLAGS) $(TERMFLAGS) -DALL_TERM_DOC -o $@ $(DOCDIR)\doc2tex.c $(DOCDIR)\termdoc.c +$(DOCDIR)\doc2rtf.exe: $(DOCDIR)\doc2rtf.c $(DOCDIR)\termdoc.c $(DOCDIR)\xref.c $(OS2TERM) + $(CC) $(CFLAGS) $(TERMFLAGS) -DALL_TERM_DOC -o $@ $(DOCDIR)\doc2rtf.c $(DOCDIR)\termdoc.c $(DOCDIR)\xref.c +$(DOCDIR)\doc2ms.exe: $(DOCDIR)\doc2ms.c $(DOCDIR)\termdoc.c $(OS2TERM) + $(CC) $(CFLAGS) $(TERMFLAGS) -DALL_TERM_DOC -o $@ $(DOCDIR)\doc2ms.c $(DOCDIR)\termdoc.c +# +# Create binary demo files +# +$(M)binary1 $(M)binary2 $(M)binary3: $(M)bf_test.exe + cd $(DEMODIR) && bf_test.exe + +$(M)bf_test.exe : bf_test.c binary.$(O) alloc.$(O) + $(CC) $(CFLAGS) -o $@ bf_test.c binary.$(O) alloc.$(O) + +# +# Clean up +# + +# Clean up all files temporary used +clean: + if exist config.h del config.h + if exist *.$(O) del *.$(O) + if exist *.$(O2) del *.$(O2) + cd $(OS2DIR) && if exist *.$(O2) del *.$(O2) + if exist $(OS2DIR)\gnupmdrv.res del $(OS2DIR)\gnupmdrv.res + if exist $(DEMODIR)\bf_test.exe del $(DEMODIR)\bf_test.exe + if exist $(DOCDIR)\doc2*.exe del $(DOCDIR)\doc2*.exe + if exist $(DOCDIR)\gnuplot.ipf del $(DOCDIR)\gnuplot.ipf + if exist $(DOCDIR)\gnuplot_2* del $(DOCDIR)\gnuplot_2* + if exist $(DOCDIR)\gnuplot_3* del $(DOCDIR)\gnuplot_3* + if exist core del core + if exist $(DOCDIR)\allterm.? del $(DOCDIR)\allterm.? + +# Clean up ALL files that were not part of the source distribution +veryclean: clean + if exist *.exe del *.exe + if exist $(DOCDIR)\gnuplot.dvi del $(DOCDIR)\gnuplot.dvi + if exist $(DOCDIR)\gnuplot.gih del $(DOCDIR)\gnuplot.gih + if exist $(DOCDIR)\gnupmdrv.hlp del $(DOCDIR)\gnupmdrv.hlp + if exist $(DOCDIR)\gnuplot.html del $(DOCDIR)\gnuplot.html + if exist $(DOCDIR)\gnuplot.inf del $(DOCDIR)\gnuplot.inf + if exist $(DOCDIR)\gnuplot.info del $(DOCDIR)\gnuplot.info + if exist $(DOCDIR)\gnuplot.ms del $(DOCDIR)\gnuplot.ms + if exist $(DOCDIR)\gnuplot.ps del $(DOCDIR)\gnuplot.ps + if exist $(DOCDIR)\gnuplot.pdf del $(DOCDIR)\gnuplot.pdf + if exist $(DOCDIR)\gnuplot.rtf del $(DOCDIR)\gnuplot.rtf + if exist $(DOCDIR)\gnuplot.tex del $(DOCDIR)\gnuplot.tex + if exist $(DOCDIR)\gpcard*.ps del $(DOCDIR)\gpcard*.ps + if exist $(DOCDIR)\*.dvi del $(DOCDIR)\*.dvi + if exist $(DOCDIR)\*.log del $(DOCDIR)\*.log + if exist $(DOCDIR)\*.aux del $(DOCDIR)\*.aux + if exist $(DOCDIR)\*.toc del $(DOCDIR)\*.toc + if exist $(DEMODIR)\binary? del $(DEMODIR)\binary? +