diff --git a/configure.in b/configure.in index 61f08594c..c3360aeff 100644 --- a/configure.in +++ b/configure.in @@ -68,10 +68,14 @@ AC_SUBST(ARCHFLAGS) AC_SUBST(OPTIM) dnl OS-specific pre-tests... +dnl uname_GUI equals $uname unless we target cygwin +dnl in combination with X11. +uname_GUI=$uname case $uname in CYGWIN* | MINGW*) # Handle Cygwin option *first*, before all other tests. - AC_ARG_ENABLE(cygwin, [ --enable-cygwin use the CygWin libraries [default=no]]) + AC_ARG_ENABLE(cygwin, [ --enable-cygwin use the CygWin libraries [(default=no)]]) + AC_ARG_ENABLE(x11, [ --enable-x11 use CygWin with X11 [(default=no)]]) if test x$enable_cygwin != xyes; then # NOTE: We can't use ARCHFLAGS for this, since it does not work # with some of the function tests - Cygwin uses a @@ -81,6 +85,11 @@ case $uname in CXXFLAGS="$CXXFLAGS -mno-cygwin" LDFLAGS="$LDFLAGS -mno-cygwin" DSOFLAGS="$DSOFLAGS -mno-cygwin" + else + # we target cygwin in combination with X11 + if test x$enable_x11 == xyes; then + uname_GUI="X11$uname" + fi fi ;; esac @@ -267,11 +276,19 @@ if test x$enable_shared = xyes; then IMGDSONAME="mgwfltknox_images-$FL_API_VERSION.dll" CAIRODSONAME="mgwfltknox_cairo-$FL_API_VERSION.dll" else - DSONAME="cygfltknox-$FL_API_VERSION.dll" - FLDSONAME="cygfltknox_forms-$FL_API_VERSION.dll" - GLDSONAME="cygfltknox_gl-$FL_API_VERSION.dll" - IMGDSONAME="cygfltknox_images-$FL_API_VERSION.dll" - CAIRODSONAME="cygfltknox_cairo-$FL_API_VERSION.dll" + if test x$enable_x11 == xyes; then + DSONAME="cygfltk-$FL_API_VERSION.dll" + FLDSONAME="cygfltk_forms-$FL_API_VERSION.dll" + GLDSONAME="cygfltk_gl-$FL_API_VERSION.dll" + IMGDSONAME="cygfltk_images-$FL_API_VERSION.dll" + CAIRODSONAME="cygfltk_cairo-$FL_API_VERSION.dll" + else + DSONAME="cygfltknox-$FL_API_VERSION.dll" + FLDSONAME="cygfltknox_forms-$FL_API_VERSION.dll" + GLDSONAME="cygfltknox_gl-$FL_API_VERSION.dll" + IMGDSONAME="cygfltknox_images-$FL_API_VERSION.dll" + CAIRODSONAME="cygfltknox_cairo-$FL_API_VERSION.dll" + fi fi #----------------------------------------------------------- # -Wl,--enable-runtime-pseudo-reloc: See str 1585 @@ -730,15 +747,15 @@ AC_ARG_WITH(links, [ --with-links make header links for common missp INSTALL_DESKTOP="" UNINSTALL_DESKTOP="" -case $uname in +case $uname_GUI in CYGWIN* | MINGW*) - dnl Cygwin environment... + dnl Cygwin environment, using windows GDI ... # Recent versions of Cygwin are seriously broken and the size # checks don't work because the shell puts out \r\n instead of # \n. Here we just force U32 to be defined to "unsigned"... AC_DEFINE(U32,unsigned) - CFLAGS="-mwindows -DWIN32 $CFLAGS" - CXXFLAGS="-mwindows -DWIN32 $CXXFLAGS" + CFLAGS="-mwindows -DWIN32 -DUSE_OPENGL32 $CFLAGS" + CXXFLAGS="-mwindows -DWIN32 -DUSE_OPENGL32 $CXXFLAGS" LDFLAGS="-mwindows $LDFLAGS" DSOFLAGS="-mwindows $DSOFLAGS" LIBS="$LIBS -lole32 -luuid -lcomctl32" @@ -766,7 +783,7 @@ case $uname in AC_DEFINE(HAVE_PTHREAD) fi - THREADS="threads.exe" + THREADS="threads$EXEEXT" fi # Don't make symlinks since Windows is not case sensitive. @@ -781,7 +798,7 @@ case $uname in if test x$have_pthread = xyes; then AC_DEFINE(HAVE_PTHREAD) - THREADS="threads" + THREADS="threads$EXEEXT" fi if test x$enable_gl != xno; then @@ -810,9 +827,10 @@ case $uname in *) # All others are UNIX/X11... + # This includes cygwin target combined with X11 if test x$have_pthread = xyes; then AC_DEFINE(HAVE_PTHREAD) - THREADS="threads" + THREADS="threads$EXEEXT" fi dnl Check for X11... @@ -891,9 +909,10 @@ case $uname in CPPFLAGS="`$FTCONFIG --cflags` $CPPFLAGS" CXXFLAGS="`$FTCONFIG --cflags` $CXXFLAGS" + AC_CHECK_LIB(fontconfig, FcPatternCreate) AC_CHECK_HEADER(X11/Xft/Xft.h, AC_CHECK_LIB(Xft, XftDrawCreate, - AC_DEFINE(USE_XFT) + AC_DEFINE(USE_XFT) LIBS="-lXft $LIBS")) fi fi @@ -1199,7 +1218,7 @@ echo "" echo "Configuration Summary" echo "-------------------------------------------------------------------------" -case $uname in +case $uname_GUI in CYGWIN* | MINGW*) graphics="GDI" ;; diff --git a/documentation/src/intro.dox b/documentation/src/intro.dox index 2965883c1..3dfa2e034 100644 --- a/documentation/src/intro.dox +++ b/documentation/src/intro.dox @@ -208,6 +208,9 @@ Enable the X double-buffer extension \par --enable-xft Enable the Xft library for anti-aliased fonts under X11 +\par --enable-x11 +When targeting cygwin, build with X11 GUI instead of windows GDI + \par --bindir=/path Set the location for executables [default = $prefix/bin] diff --git a/src/Makefile b/src/Makefile index 486a749a7..2e050e14f 100644 --- a/src/Makefile +++ b/src/Makefile @@ -365,6 +365,10 @@ libfltk_images_s.a: $(IMGOBJECTS) # against the import libraries in the src dir. #----------------------------------------------------------------- +#----------------------------------------------------------------- +# cygwin GDI shared libraries +#----------------------------------------------------------------- + cygfltknox-1.3.dll: $(LIBNAME) echo $(DSOCOMMAND) $(LIBNAME) ... $(DSOCOMMAND) $(LIBNAME) -Wl,--no-whole-archive \ @@ -389,6 +393,34 @@ cygfltknox_images-1.3.dll: $(IMGLIBNAME) cygfltknox-1.3.dll -L. -lfltk -Wl,--exclude-libs -Wl,libfltk_png.a \ $(IMAGELIBS) $(LDLIBS) +#----------------------------------------------------------------- +# cygwin X11 shared libraries +#----------------------------------------------------------------- + +cygfltk-1.3.dll: $(LIBNAME) + echo $(DSOCOMMAND) $(LIBNAME) ... + $(DSOCOMMAND) $(LIBNAME) -Wl,--no-whole-archive \ + -Wl,--out-implib=libfltk.dll.a $(LDLIBS) + +cygfltk_forms-1.3.dll: $(FLLIBNAME) cygfltk-1.3.dll + echo $(DSOCOMMAND) $(FLLIBNAME) ... + $(DSOCOMMAND) $(FLLIBNAME) -Wl,--no-whole-archive \ + -Wl,--out-implib=libfltk_forms.dll.a \ + -L. -lfltk $(LDLIBS) + +cygfltk_gl-1.3.dll: $(GLLIBNAME) cygfltk-1.3.dll + echo $(DSOCOMMAND) $(GLLIBNAME) ... + $(DSOCOMMAND) $(GLLIBNAME) -Wl,--no-whole-archive \ + -Wl,--out-implib=libfltk_gl.dll.a \ + -L. -lfltk $(GLDLIBS) + +cygfltk_images-1.3.dll: $(IMGLIBNAME) cygfltk-1.3.dll + echo $(DSOCOMMAND) $(IMGLIBNAME) ... + $(DSOCOMMAND) $(IMGLIBNAME) -Wl,--no-whole-archive \ + -Wl,--out-implib=libfltk_images.dll.a \ + -L. -lfltk -Wl,--exclude-libs -Wl,libfltk_png.a \ + $(IMAGELIBS) $(LDLIBS) + mgwfltknox-1.3.dll: $(LIBNAME) echo $(DSOCOMMAND) $(LIBNAME) ... $(DSOCOMMAND) $(LIBNAME) -Wl,--no-whole-archive \ @@ -660,6 +692,10 @@ uninstall: $(RM) $(DESTDIR)$(bindir)/$(DSONAME); \ $(RM) $(DESTDIR)$(libdir)/libfltk.dll.a;\ fi + if test x$(DSONAME) = xcygfltk-1.3.dll; then\ + $(RM) $(DESTDIR)$(bindir)/$(DSONAME); \ + $(RM) $(DESTDIR)$(libdir)/libfltk.dll.a;\ + fi if test x$(DSONAME) = xmgwfltknox-1.3.dll; then\ $(RM) $(DESTDIR)$(bindir)/$(DSONAME); \ $(RM) $(DESTDIR)$(libdir)/libfltk.dll.a;\ @@ -681,6 +717,10 @@ uninstall: $(RM) $(DESTDIR)$(bindir)/$(FLDSONAME); \ $(RM) $(DESTDIR)$(libdir)/libfltk_forms.dll.a;\ fi + if test x$(FLDSONAME) = xcygfltk_forms-1.3.dll; then\ + $(RM) $(DESTDIR)$(bindir)/$(FLDSONAME); \ + $(RM) $(DESTDIR)$(libdir)/libfltk_forms.dll.a;\ + fi if test x$(FLDSONAME) = xmgwfltknox_forms-1.3.dll; then\ $(RM) $(DESTDIR)$(bindir)/$(FLDSONAME); \ $(RM) $(DESTDIR)$(libdir)/libfltk_forms.dll.a;\ @@ -704,6 +744,10 @@ uninstall: $(RM) $(DESTDIR)$(bindir)/$(GLDSONAME); \ $(RM) $(DESTDIR)$(libdir)/libfltk_gl.dll.a;\ fi + if test x$(GLDSONAME) = xcygfltk_gl-1.3.dll; then\ + $(RM) $(DESTDIR)$(bindir)/$(GLDSONAME); \ + $(RM) $(DESTDIR)$(libdir)/libfltk_gl.dll.a;\ + fi if test x$(GLDSONAME) = xmgwfltknox_gl-1.3.dll; then\ $(RM) $(DESTDIR)$(bindir)/$(GLDSONAME); \ $(RM) $(DESTDIR)$(libdir)/libfltk_gl.dll.a;\ @@ -727,6 +771,10 @@ uninstall: $(RM) $(DESTDIR)$(bindir)/$(IMGDSONAME); \ $(RM) $(DESTDIR)$(libdir)/libfltk_images.dll.a;\ fi + if test x$(IMGDSONAME) = xcygfltk_images-1.3.dll; then\ + $(RM) $(DESTDIR)$(bindir)/$(IMGDSONAME); \ + $(RM) $(DESTDIR)$(libdir)/libfltk_images.dll.a;\ + fi if test x$(IMGDSONAME) = xmgwfltknox_images-1.3.dll; then\ $(RM) $(DESTDIR)$(bindir)/$(IMGDSONAME); \ $(RM) $(DESTDIR)$(libdir)/libfltk_images.dll.a;\