--- a/configure.ac +++ b/configure.ac @@ -38,6 +38,8 @@ AC_C_STRINGIZE AC_PROG_LN_S +AC_CANONICAL_HOST + if test "${build}" != "${host}" then CC=${CC-${host_alias-gcc}} @@ -51,6 +53,8 @@ CC_FOR_BUILD="${CC}" AC_PROG_CC + build_mingw=no + # We must set the default linker to the linker used by gcc for the correct # operation of libtool. If LD is not defined and we are using gcc, try to # set the LD default to the ld used by gcc. @@ -60,7 +64,9 @@ then case $build in *-*-mingw*) - gcc_prog_ld=`$CC -print-prog-name=ld 2>&1 | tr -d '\015'` ;; + gcc_prog_ld=`$CC -print-prog-name=ld 2>&1 | tr -d '\015'` + AC_MSG_NOTICE([MINGW environment detected, executing MINGW type build]) + build_mingw=yes ;; *) gcc_prog_ld=`$CC -print-prog-name=ld 2>&1` ;; esac @@ -78,6 +84,7 @@ fi AM_PROG_CC_C_O AC_SUBST(CC_FOR_BUILD) +AM_CONDITIONAL(BUILD_MINGW, test "${build_mingw}" = yes) dnl large file support AC_CHECK_TYPES([off_t]) --- a/demo/plugin/Makefile.am +++ b/demo/plugin/Makefile.am @@ -4,7 +4,7 @@ noinst_PROGRAMS = demo_plugin.so demo_plugin_so_SOURCES = demo_plugin.c gnuplot_plugin.h -demo_plugin_so_CFLAGS = -rdynamic -fPIC -I$(top_srcdir)/src +demo_plugin_so_CFLAGS = -fPIC -I$(top_srcdir)/src demo_plugin_so_LDFLAGS = -shared # Note: Solaris SunPro C compiler needs these flags instead --- a/docs/Makefile.am +++ b/docs/Makefile.am @@ -38,6 +38,11 @@ AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/term \ -I./ja/term +if BUILD_MINGW +AM_CPPFLAGS += -DWINDOWS_NO_GUI +dist_doc_DATA = gnuplot.pdf +endif + # Documentation will be prepared for all terminals in CORETERM # even if the terminal itself is not included in the build. --- a/Makefile.am +++ b/Makefile.am @@ -7,6 +7,8 @@ PATCHLEVEL PGPKEYS README RELEASE_NOTES \ win +dist_doc_DATA = FAQ.pdf README RELEASE_NOTES Copyright NEWS BUGS + DISTCLEANFILES = stamp-h ACLOCAL_AMFLAGS = -I m4 --- a/src/command.c +++ b/src/command.c @@ -107,7 +107,7 @@ static TBOOLEAN pause_internal; /* flag to indicate not to use a dialog box */ #endif /* OS2_IPC */ -#ifndef _WIN32 +#ifndef _MSC_VER # include "help.h" #endif --- a/src/Makefile.am +++ b/src/Makefile.am @@ -99,6 +99,60 @@ # Hercules and original pc graphics driver code # corgraph.asm header.mac hrcgraph.asm pcgraph.asm lineproc.mac +# MINGW specific build section +if BUILD_MINGW + +AM_CPPFLAGS += -DHAVE_GDIPLUS -DHAVE_DWRITE -DHAVE_D2D -DHAVE_D2D11 -DHAVE_PRNTVPT -DWIN32 +AM_CPPFLAGS += -O2 -pipe -DUNICODE -D_UNICODE -Wno-unused-function +AM_CPPFLAGS += -D_Windows -DHAVE_CONFIG_H +AM_CPPFLAGS += -D__USE_MINGW_ANSI_STDIO=1 +AM_CPPFLAGS += -DUSE_MOUSE=1 -DWIN_IPC + +AM_LDFLAGS = + +gnuplot_SOURCES += win/winmain.c win/wgnuplib.c win/wgraph.c win/wprinter.c \ +win/wpause.c win/wgdiplus.cpp win/wd2d.cpp win/wtext.h plot.h gpexecute.c + +gnuplot_CPPFLAGS = $(AM_CPPFLAGS) -DPIPES -DWGP_CONSOLE +gnuplot_LDADD += -lkernel32 -lgdi32 -lwinspool -lcomdlg32 -lcomctl32 \ + -ladvapi32 -lshell32 -lmsimg32 -lgdiplus -lshlwapi -ld2d1 -ld3d11 -ldwrite \ + -lprntvpt -lwindowscodecs -lole32 -lgobject-2.0 +gnuplot_LDFLAGS = $(AM_LDFLAGS) -mconsole -municode + +#wgnuplot section +bin_PROGRAMS += wgnuplot + +menudir = $(prefix)/bin +menu_DATA = win/wgnuplot.mnu + +wgnuplot_SOURCES = $(gnuplot_SOURCES) +wgnuplot_SOURCES += win/wtext.c win/screenbuf.c win/wmenu.c win/wredirect.cpp +wgnuplot_CPPFLAGS = $(AM_CPPFLAGS) -DPIPES +wgnuplot_LDADD = $(gnuplot_LDADD) wgplt_res.$(O) +wgnuplot_LDFLAGS = $(AM_LDFLAGS) -mwindows -municode + +#wgnuplot_pipes section +bin_PROGRAMS += wgnuplot_pipes + +wgnuplot_pipes_SOURCES = $(gnuplot_SOURCES) +wgnuplot_pipes_SOURCES += win/wtext.c win/screenbuf.c win/wmenu.c win/wredirect.cpp +wgnuplot_pipes_CPPFLAGS = $(AM_CPPFLAGS) -DPIPES +wgnuplot_pipes_LDADD = $(gnuplot_LDADD) wgplt_res.$(O) +wgnuplot_pipes_LDFLAGS = $(AM_LDFLAGS) -mwindows -municode + +RCFLAGS = --include-dir=$(srcdir)/win \ + --define __WIN32__ --define __WIN95__ \ + --define __GNUWIN32__ --use-temp-file +RCOUT = wgplt_res.$(O) +RES2COFF = echo wgplt_res.$(O) + +wgplt_res.$(O): win/wgnuplot.rc win/wgnuplib.rc win/wresourc.h win/texticon.ico win/grpicon.ico win/wgnuplot.exe.manifest win/wgnuplot.exe.manifest64 + echo Making RESOURCE FILE + windres $(RCFLAGS) $< wgplt_res.$(O) + echo wgplt_res.$(O) + +endif # BUILD_MINGW + if BUILD_WXWIDGETS gnuplot_SOURCES += wxterminal/wxt_gui.cpp endif --- a/src/win/winmain.c +++ b/src/win/winmain.c @@ -372,7 +372,7 @@ else lang = GetLanguageCode(); - filename = (LPTSTR) malloc((_tcslen(szModuleName) + _tcslen(name) + _tcslen(lang) + _tcslen(ext) + 1) * sizeof(TCHAR)); + filename = (LPTSTR) malloc(1024 * sizeof(TCHAR)); if (filename) { _tcscpy(filename, szModuleName); _tcscat(filename, name);