Hello all, I have been following the discussion of Klaas and Marteez wrt "compile under Cygwin" and "wxOnAssert error" threads.
What I considered doing was going back to attempting to use bakefiles and generating the necessary makefiles for wxDev(gcc) (and also for Borland) which uses a monolithic build. After spending a couple of days looking at it, I gave up. However, what I have had some success with is reusing a wxWidgets contrib library makefile, and adjusting it to cater for the wxArt2D libraries. and example - the contents of the makefile for docview # ========================================================================= # This makefile was generated by # Bakefile 0.2.0 (http://bakefile.sourceforge.net) # Do not modify, all changes will be overwritten! # ========================================================================= include ./config.gcc # ------------------------------------------------------------------------- # Do not modify the rest of this file! # ------------------------------------------------------------------------- ### Variables: ### CPPDEPS = -MT$@ [EMAIL PROTECTED] -MD WX_RELEASE_NODOT = 28 WX_VERSION_NODOT = $(WX_RELEASE_NODOT)0 OBJS = \ gcc_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG) LIBDIRNAME = $(WXART2D)\lib\gcc_$(LIBTYPE_SUFFIX)$(CFG) SETUPHDIR = \ $(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG) DOCVIEWDLL_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \ $(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \ -I$(SETUPHDIR) -I$(WXWIN)\include -I$(WXART2D)\modules -I$(WXART2D)\include -I$(WXWIN)\src\expat\lib -W -Wall \ -I$(WXART2D)\modules -I..\..\include\wx\docview -I..\..\src\docview -DWXUSINGDLL -DWXMAKINGDLL_DOCVIEW \ $(__RTTIFLAG) $(__EXCEPTIONSFLAG) -Wno-ctor-dtor-privacy $(CPPFLAGS) \ $(CXXFLAGS) DOCVIEWDLL_OBJECTS = \ $(OBJS)\docviewdll_dummy.o \ $(OBJS)\docviewdll_version_rc.o \ $(OBJS)\docviewdll_cparser.o \ $(OBJS)\docviewdll_doccom.o \ $(OBJS)\docviewdll_docmdiref.o \ $(OBJS)\docviewdll_docviewref.o \ $(OBJS)\docviewdll_xh_a2dmenu.o DOCVIEWLIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \ $(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \ -I$(SETUPHDIR) -I$(WXWIN)\include -I$(WXART2D)\modules -I$(WXART2D)\include -I$(WXWIN)\src\expat\lib -W -Wall \ -I$(WXART2D)\modules -I..\..\include\wx\docview -I..\..\src\docview $(__RTTIFLAG) $(__EXCEPTIONSFLAG) \ -Wno-ctor-dtor-privacy $(CPPFLAGS) $(CXXFLAGS) DOCVIEWLIB_OBJECTS = \ $(OBJS)\docviewlib_dummy.o \ $(OBJS)\docviewlib_cparser.o \ $(OBJS)\docviewlib_doccom.o \ $(OBJS)\docviewlib_docmdiref.o \ $(OBJS)\docviewlib_docviewref.o \ $(OBJS)\docviewlib_xh_a2dmenu.o ### Conditionally set variables: ### ifeq ($(GCC_VERSION),2.95) GCCFLAGS = -fvtable-thunks endif ifeq ($(USE_GUI),0) PORTNAME = base endif ifeq ($(USE_GUI),1) PORTNAME = msw endif ifeq ($(OFFICIAL_BUILD),0) VENDORTAG = _$(VENDOR) endif ifeq ($(OFFICIAL_BUILD),1) VENDORTAG = endif ifeq ($(BUILD),debug) ifeq ($(DEBUG_FLAG),default) WXDEBUGFLAG = d endif endif ifeq ($(DEBUG_FLAG),1) WXDEBUGFLAG = d endif ifeq ($(UNICODE),1) WXUNICODEFLAG = u endif ifeq ($(WXUNIV),1) WXUNIVNAME = univ endif ifeq ($(SHARED),1) WXDLLFLAG = dll endif ifeq ($(SHARED),0) LIBTYPE_SUFFIX = lib endif ifeq ($(SHARED),1) LIBTYPE_SUFFIX = dll endif ifeq ($(MONOLITHIC),0) EXTRALIBS_FOR_BASE = endif ifeq ($(MONOLITHIC),1) EXTRALIBS_FOR_BASE = endif ifeq ($(SHARED),1) __docviewdll___depname = \ $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview_gcc$(VENDORTAG).dll endif ifeq ($(WXUNIV),1) __WXUNIV_DEFINE_p_1 = --define __WXUNIVERSAL__ endif ifeq ($(BUILD),debug) ifeq ($(DEBUG_FLAG),default) __DEBUG_DEFINE_p_1 = --define __WXDEBUG__ endif endif ifeq ($(DEBUG_FLAG),1) __DEBUG_DEFINE_p_1 = --define __WXDEBUG__ endif ifeq ($(USE_EXCEPTIONS),0) __EXCEPTIONS_DEFINE_p_1 = --define wxNO_EXCEPTIONS endif ifeq ($(USE_RTTI),0) __RTTI_DEFINE_p_1 = --define wxNO_RTTI endif ifeq ($(USE_THREADS),0) __THREAD_DEFINE_p_1 = --define wxNO_THREADS endif ifeq ($(UNICODE),1) __UNICODE_DEFINE_p_1 = --define _UNICODE endif ifeq ($(MSLU),1) __MSLU_DEFINE_p_1 = --define wxUSE_UNICODE_MSLU=1 endif ifeq ($(MONOLITHIC),1) __WXLIB_MONO_p = \ -lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR) endif ifeq ($(USE_GUI),1) __LIB_TIFF_p = -lwxtiff$(WXDEBUGFLAG) endif ifeq ($(USE_GUI),1) __LIB_JPEG_p = -lwxjpeg$(WXDEBUGFLAG) endif ifeq ($(USE_GUI),1) __LIB_PNG_p = -lwxpng$(WXDEBUGFLAG) endif ifeq ($(MSLU),1) __UNICOWS_LIB_p = -lunicows endif ifeq ($(MONOLITHIC),0) __WXLIB_CORE_p = \ -lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core endif ifeq ($(MONOLITHIC),0) __WXLIB_BASE_p = \ -lwxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR) endif ifeq ($(SHARED),0) __docviewlib___depname = \ $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview.a endif ifeq ($(BUILD),debug) ifeq ($(DEBUG_INFO),default) __DEBUGINFO = -g endif endif ifeq ($(BUILD),release) ifeq ($(DEBUG_INFO),default) __DEBUGINFO = endif endif ifeq ($(DEBUG_INFO),0) __DEBUGINFO = endif ifeq ($(DEBUG_INFO),1) __DEBUGINFO = -g endif ifeq ($(BUILD),debug) __OPTIMIZEFLAG = -O0 endif ifeq ($(BUILD),release) __OPTIMIZEFLAG = -O2 endif ifeq ($(USE_THREADS),0) __THREADSFLAG = endif ifeq ($(USE_THREADS),1) __THREADSFLAG = -mthreads endif ifeq ($(USE_RTTI),0) __RTTIFLAG = -fno-rtti endif ifeq ($(USE_RTTI),1) __RTTIFLAG = endif ifeq ($(USE_EXCEPTIONS),0) __EXCEPTIONSFLAG = -fno-exceptions endif ifeq ($(USE_EXCEPTIONS),1) __EXCEPTIONSFLAG = endif ifeq ($(WXUNIV),1) __WXUNIV_DEFINE_p = -D__WXUNIVERSAL__ endif ifeq ($(BUILD),debug) ifeq ($(DEBUG_FLAG),default) __DEBUG_DEFINE_p = -D__WXDEBUG__ endif endif ifeq ($(DEBUG_FLAG),1) __DEBUG_DEFINE_p = -D__WXDEBUG__ endif ifeq ($(USE_EXCEPTIONS),0) __EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS endif ifeq ($(USE_RTTI),0) __RTTI_DEFINE_p = -DwxNO_RTTI endif ifeq ($(USE_THREADS),0) __THREAD_DEFINE_p = -DwxNO_THREADS endif ifeq ($(UNICODE),1) __UNICODE_DEFINE_p = -D_UNICODE endif ifeq ($(MSLU),1) __MSLU_DEFINE_p = -DwxUSE_UNICODE_MSLU=1 endif all: $(OBJS) $(OBJS): -if not exist $(OBJS) mkdir $(OBJS) ### Targets: ### all: $(__docviewdll___depname) $(__docviewlib___depname) clean: -if exist $(OBJS)\*.o del $(OBJS)\*.o -if exist $(OBJS)\*.d del $(OBJS)\*.d -if exist $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview_gcc$(VENDORTAG).dll del $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview_gcc$(VENDORTAG).dll -if exist $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview.a del $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview.a -if exist $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview.a del $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview.a ifeq ($(SHARED),1) $(LIBDIRNAME)\wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview_gcc$(VENDORTAG).dll: $(DOCVIEWDLL_OBJECTS) $(OBJS)\docviewdll_version_rc.o $(CXX) -shared -fPIC -o $@ $(DOCVIEWDLL_OBJECTS) $(LDFLAGS) $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) -Wl,--out-implib,$(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview.a $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lodbc32 $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) endif ifeq ($(SHARED),0) $(LIBDIRNAME)\libwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview.a: $(DOCVIEWLIB_OBJECTS) if exist $@ del $@ ar rcu $@ $(DOCVIEWLIB_OBJECTS) ranlib $@ endif $(OBJS)\docviewdll_dummy.o: $(WXWIN)/src/common/dummy.cpp $(CXX) -c -o $@ $(DOCVIEWDLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\docviewdll_version_rc.o: $(WXWIN)/src/msw/version.rc windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_1) $(__DEBUG_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) $(__UNICODE_DEFINE_p_1) $(__MSLU_DEFINE_p_1) --include-dir $(SETUPHDIR) --include-dir ../../src/docview/../../../include --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_docview_gcc$(VENDORTAG) $(OBJS)\docviewdll_cparser.o: ../../src/cparser.cpp $(CXX) -c -o $@ $(DOCVIEWDLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\docviewdll_doccom.o: ../../src/doccom.cpp $(CXX) -c -o $@ $(DOCVIEWDLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\docviewdll_docmdiref.o: ../../src/docmdiref.cpp $(CXX) -c -o $@ $(DOCVIEWDLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\docviewdll_docviewref.o: ../../src/docviewref.cpp $(CXX) -c -o $@ $(DOCVIEWDLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\docviewdll_xh_a2dmenu.o: ../../src/xh_a2dmenu.cpp $(CXX) -c -o $@ $(DOCVIEWDLL_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\docviewlib_dummy.o: $(WXWIN)/src/common/dummy.cpp $(CXX) -c -o $@ $(DOCVIEWLIB_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\docviewlib_cparser.o: ../../src/cparser.cpp $(CXX) -c -o $@ $(DOCVIEWLIB_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\docviewlib_doccom.o: ../../src/doccom.cpp $(CXX) -c -o $@ $(DOCVIEWLIB_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\docviewlib_docmdiref.o: ../../src/docmdiref.cpp $(CXX) -c -o $@ $(DOCVIEWLIB_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\docviewlib_docviewref.o: ../../src/docviewref.cpp $(CXX) -c -o $@ $(DOCVIEWLIB_CXXFLAGS) $(CPPDEPS) $< $(OBJS)\docviewlib_xh_a2dmenu.o: ../../src/xh_a2dmenu.cpp $(CXX) -c -o $@ $(DOCVIEWLIB_CXXFLAGS) $(CPPDEPS) $< .PHONY: all clean # Dependencies tracking: -include $(OBJS)/*.d Using this method (and you could conceivably create a blank template and make some program fill in the required info) it is a reasonably simple procedure of create a \lib\gcc_lib folder under your main wxArt2D folder. Under each library root folder create a build\msw folder. copy the above makefile.gcc into it. copy the associated config.gcc file into it. I then have a batch file set WXWIN=c:\wxWidgets-2.8.7 set WXDEV=c:\Program Files\Dev-Cpp set WXART2D=c:\wxart2d set path=%WXDEV%\bin;%WXDEV%\libexec\gcc\mingw32\3.4.2; rem these are for vista only set C_INCLUDE_PATH=%WXDEV%\include;%WXDEV%\lib\gcc\mingw32\3.4.2\include;%WXDEV%\include\c++\3.4.2;%WXDEV%\include\c++\3.4.2\mingw32 set CPLUS_INCLUDE_PATH=%C_INCLUDE_PATH% set LIBRARY_PATH=%WXDEV%\lib set GCC_EXEC_PREFIX=%WXDEV%\ set LD_LIBRARY_PATH=%WXDEV%\lib rem end of Vista only variables mingw32-make -f makefile.gcc BUILD=release MONOLITHIC=1 USE_OPENGL=1 RUNTIME_LIBS=static USE_RTTI=0 USE_EXCEPTIONS=1 2> compfile.txt pause which I also place into the build\msw folder. (All the environmental variables are to allow the gcc compiler to function correctly in Vista and are not required prior to this (XP, 2000, 98) It's taking me a bit of time, since I compile - check errors - recompile - etc, but I am achieving results. I only build in release mode static library, so there may very well be errors in the dynamic library sections, but once completed, you are very welcome to see my efforts. And the beauty of this method is that once the makefiles are functioning correctly for each individual library/sample/executable, then it is a simple matter to batch build the whole library, simply maintaining a single batch file which steps sequentially through the makefiles. I used this method when creating libraries for wxdev-C++. Best regards Mal ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Wxart2d-users_dev mailing list Wxart2d-users_dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wxart2d-users_dev