|
From: Ned K. <ne...@us...> - 2004-07-09 01:29:01
|
Update of /cvsroot/squeak/squeak/platforms/win32/misc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8335/win32/misc Added Files: Tag: ned-branch Makefile.mingw.gcc33 Log Message: GCC 3.3 compatibility. --- NEW FILE: Makefile.mingw.gcc33 --- ############################################################################# # Makefile for Win32 Squeak using gcc-3.3.1 and MingW32 # Modified from Andreas Raab's # "Makefile for Win32 Squeak using gcc-2.95.2 and MingW32" # by Ned Konz ############################################################################# # Assumes standard VMMaker platform tree: # # <squeak root> => ROOTDIR (where makefile is called from) # build => BLDDIR # platforms/ # Cross/ => CROSSDIR # plugins/ # Mpeg3Plugin # libmpeg # vm/ # win32/ => PLATDIR # misc/ => MISCDIR (location of this makefile) # plugins/ # vm/ # src => SRCDIR # plugins/ # vm/ => VMDIR # plugins.ext # plugins.int # # ############################################################################# # Default commands AR = ar rc CP = cp RM = rm # Note: AWK is only necessary for building gnu-interp.c AWK = gawk ############################################################################# # Default locations # ifdef SRCDIR ROOTDIR := $(SRCDIR)/.. else ROOTDIR := $(CURDIR) SRCDIR := $(ROOTDIR)/src endif PLATDIR := $(ROOTDIR)/platforms/win32 CROSSDIR := $(ROOTDIR)/platforms/Cross MISCDIR := $(PLATDIR)/misc BLDDIR := $(ROOTDIR)/build OBJDIR := $(BLDDIR) VMDIR := $(SRCDIR)/vm THISFILE := $(MISCDIR)/Makefile vpath %.o $(OBJDIR) vpath %.exe $(BLDDIR) xx := $(warning ROOTDIR=$(ROOTDIR) MISCDIR=$(MISCDIR) PLATDIR=$(PLATDIR) SRCDIR=$(SRCDIR) BLDDIR=$(BLDDIR)) # DirectX 7.0 SDK DXDIR ?= c:/dx7sdk DXINC := $(DXDIR)/include ############################################################################# # Definitions of plugins # include $(SRCDIR)/plugins.ext include $(SRCDIR)/plugins.int INTERNAL_LIBS = $(addsuffix .lib, $(INTERNAL_PLUGINS)) EXTERNAL_LIBS = $(addsuffix .dll, $(EXTERNAL_PLUGINS)) Mpeg3Plugin_DIR := $(CROSSDIR)/plugins/Mpeg3Plugin ############################################################################# # Default targets # VM = $(BLDDIR)/Squeak.exe ############################################################################# # VM definitions # VMDEF= $(BLDDIR)/Squeak.def VMEXP= $(BLDDIR)/Squeak.exp VMLIB= $(BLDDIR)/Squeak.lib VMRES= $(BLDDIR)/Squeak.res VMDEFIN = $(MISCDIR)/Squeak.def.in ############################################################################# # Generic VM source file definitions # VMSRC= $(notdir $(wildcard $(VMDIR)/*.c)) $(VMDIR)/gnu-interp.c VMOBJ:= $(VMSRC:.c=.o) VMOBJ:= $(filter-out interp.o sqFilePrims.o, $(VMOBJ)) LIBSRC = $(wildcard *.c) LIBOBJ = $(LIBSRC:.c=.o) .PRECIOUS: $(VMDIR)/gnu-interp.c #BBCopy-i386.cc ############################################################################# # Plugin (DLL) file definitions # # DLLDIR is set through makefile invokation DLLDIR = $(SRCDIR)/plugins DLLOBJ = $(notdir $(subst .c,.o, $(wildcard $(DLLDIR)/*.c))) \ $(notdir $(subst .cc,.o, $(wildcard $(DLLDIR)/*.cc))) \ $(notdir $(subst .ccg,.o, $(wildcard $(DLLDIR)/*.ccg))) # DLLOBJ = $(DLLSRC:.c=.o) $(DLLSRC:.cc=.o) DLLOBJ := $(filter-out sqMac% sqUnix% %-ppc.o, $(DLLOBJ)) ############################################################################# # What object files do we need? # ALLOBJ= $(VMOBJ) ############################################################################# # Where go the intermediate files? # VMOUTDIR= $(BLDDIR) PLUGINOUTDIR= $(BLDDIR) ############################################################################# # And where to look for files? # vpath %.c $(SRCDIR) $(VMDIR) $(VMOUTDIR) $(PLUGINOUTDIR) ############################################################################# # C compiler settings (for egcs-1.1.2) # CC= gcc CXX= g++ CFLAGS= -g -mpentium -mwindows -O3 -fomit-frame-pointer -funroll-loops -fschedule-insns2 CXXFLAGS= $(CFLAGS) -felide-constructors WFLAGS= DEFS= -DWIN32_FILE_SUPPORT -DNO_STD_FILE_SUPPORT -DNDEBUG -DLSB_FIRST -DX86 $(XDEFS) #-DUSE_DIB_SECTIONS #-DPROFILE XDEFS= -DSQUEAK_BUILTIN_PLUGIN INCS= -I. -I$(SRCDIR) -I$(VMDIR) -I$(DXINC) $(XINC) MD= mkdir ############################################################################# # Linker settings # # Note: I had to use 'gcc' instead of 'ld' to prevent unresolved symbols # The switch '-mwindows' gives us a GUI app instead of a console app. # LD= gcc LDFLAGS= -mwindows STDLIBS= -lddraw -ldinput -lopengl32 -lwsock32 -lcomdlg32 -lole32 -lwinmm -luser32 -lgdi32 -lkernel32 CRTLIB = -lcrtdll LIBS= $(STDLIBS) $(CRTLIB) ############################################################################# # DLL settings # # Note: DLLTOOL/DLLWRAP does the work for everything related to plugins # DLLTOOL= dlltool DLLWRAP= dllwrap ############################################################################# # RC settings # # Note: RC compiles the .rc files into linkable .o files # !!!WARNING!!! windres can break if you have MacAfee VShield running!!! # RC= windres RCFLAGS= --include-dir $(SRCDIR)/misc .SUFFIXES: .SUFFIXES: .ccg .cc .c .o .s .i .rc .res .cg .hg .ccg all: $(BLDDIR) $(VMDIR)/gnu-interp.c $(VM) $(EXTERNAL_LIBS) $(BLDDIR): mkdir $(BLDDIR) ############################################################################# # Compiling Squeak itself # # Mpeg3Plugin.o sqOpenGLRenderer.o sqWin32FilePrims.o $(VM): $(ALLOBJ) $(INTERNAL_LIBS) $(VMEXP) resource.o $(LD) $(LDFLAGS) -o $(VMOUTDIR)/$(VM) $(addprefix $(VMOUTDIR)/,$(ALLOBJ)) $(VMOUTDIR)/$(VMEXP) $(VMOUTDIR)/resource.o $(addprefix $(VMOUTDIR)/,$(INTERNAL_LIBS)) $(LIBS) strip --strip-all $(VMOUTDIR)/$(VM) ############################################################################# # The exports for named primitives from Squeak (required by VM) # $(VMDEF) $(VMEXP) $(VMLIB): $(ALLOBJ) $(DLLTOOL) --input-def $(VMDEFIN) --output-def $(VMOUTDIR)/$(VMDEF) --output-exp $(VMOUTDIR)/$(VMEXP) --output-lib $(VMOUTDIR)/$(VMLIB) $(addprefix $(VMOUTDIR)/,$(ALLOBJ)) ############################################################################# # Building plugins DLL: $(DLLOBJ) makelib: $(LIBOBJ) $(AR) $(LIB) $(LIBOBJ) $(RM) $(LIBOBJ) makedll: $(LIBOBJ) $(DLLTOOL) \ --output-def $(OBJDIR)/$(LIB).def \ --output-exp $(OBJDIR)/$(LIB).exp \ --output-lib $(OBJDIR)/$(LIB).lib \ $(LIBOBJ) $(DLLWRAP) -mwindows \ -def $(OBJDIR)/$(LIB).def \ -o $(OBJDIR)/$(LIB).dll \ $(LIBS) \ $(OBJDIR)/$(LIB).exp \ $(LIBOBJ) strip --strip-all $(OBJDIR)/$(LIB).dll -$(RM) -f $(LIBOBJ) $(LIB).lib $(LIB).exp $(LIB).def Mpeg3Plugin.lib: @$(MAKE) -C $(DLLDIR)/Mpeg3Plugin -f Makefile.win32 XDEFS=-DSQUEAK_BUILTIN_PLUGIN makelib $(CP) $(DLLDIR)/Mpeg3Plugin/Mpeg3Plugin.lib release/Mpeg3Plugin.lib -$(RM) $(DLLDIR)/Mpeg3Plugin/Mpeg3Plugin.lib Mpeg3Plugin.dll: @$(MAKE) -C $(DLLDIR)/Mpeg3Plugin -f Makefile.win32 makedll $(CP) $(DLLDIR)/Mpeg3Plugin/Mpeg3Plugin.dll release/Mpeg3Plugin.dll -$(RM) $(DLLDIR)/Mpeg3Plugin/Mpeg3Plugin.dll %.lib: @$(MAKE) -C $(DLLDIR)/% -f Makefile.win32 XDEFS=-DSQUEAK_BUILTIN_PLUGIN makelib $(CP) $(DLLDIR)/%/Mpeg3Plugin.lib release/Mpeg3Plugin.lib -$(RM) $(DLLDIR)/%/Mpeg3Plugin.lib %.dll: @$(MAKE) -C $(DLLDIR)/% -f Makefile.win32 makedll $(CP) $(DLLDIR)/%/Mpeg3Plugin.dll release/Mpeg3Plugin.dll -$(RM) $(DLLDIR)/%/Mpeg3Plugin.dll %.lib: @$(MAKE) -C $(DLLDIR)/$* -f $(THISFILE) SRCDIR=../../ LIB=$*.lib OBJDIR=. XDEFS=-DSQUEAK_BUILTIN_PLUGIN makelib $(CP) $(DLLDIR)/$*/$*.lib release/$*.lib -$(RM) $(DLLDIR)/$*/$*.lib %.dll: @$(MAKE) -C $(DLLDIR)/$* -f $(THISFILE) SRCDIR=../../ LIB=$* OBJDIR=. XDEFS=-DNIX makedll $(CP) $(DLLDIR)/$*/$*.dll release/$*.dll -$(RM) $(DLLDIR)/$*/$*.dll ############################################################################# # Rules for automated builds # Mpeg%.o: $(CC) -o $(VMOUTDIR)/$@ $(CFLAGS) -I$(Mpeg3Plugin_DIR) -I$(DLLDIR)/Mpeg3Plugin -I$(Mpeg3Plugin_DIR)/audio -I$(Mpeg3Plugin_DIR)/video $(INCS) $(DEFS) -c $< .c.o: $(CC) -o $(OBJDIR)/$@ $(CFLAGS) $(INCS) $(DEFS) -c $< .cc.o: $(CXX) -o $(OBJDIR)/$@ $(CXXFLAGS) $(INCS) $(DEFS) -c $< .c.s: $(CC) -S -o $@ -fverbose-asm -Wa,ah $(CFLAGS) $(INCS) $(DEFS) -c $< .cc.s: $(CXX) -S -o $@ -fverbose-asm -Wa,ah $(CXXFLAGS) $(INCS) $(DEFS) -c $< .c.i: $(CC) -E -o $@ $(CFLAGS) $(INCS) $(DEFS) -c $< gnu-%.c: %.c $(AWK) -f $(MISCDIR)/gnuify $< > $@ .rc.res: $(RC) $(RCFLAGS) -i $< -o $(OBJDIR)/$@ resource.o: $(VMRES) $(RC) $(RCFLAGS) -i $(OBJDIR)/$< -o $(OBJDIR)/$@ .cg.c: $(CCG) -n -o $@ $< .hg.h: $(CCG) -n -o $@ $< .ccg.cc: $(CCG) -n -o $@ $< ############################################################################# # Extra specific dependencies # sqNamedPrims.o: sqNamedPrims.c sqNamedPrims.h Mpeg3Plugin.o: Mpeg3Plugin.c $(VMRES): $(MISCDIR)/Squeak.rc $(RC) $(RCFLAGS) -i $< -o $(OBJDIR)/$@ ############################################################################# # sync-ing sqNamedPrims.h with plugins.int # MAKEPRIMS=util/makeprims.exe $(MAKEPRIMS): util/makeprims.c gcc -o $(MAKEPRIMS) util/makeprims.c sqNamedPrims.h: $(SRCDIR)/plugins.int $(MAKEPRIMS) $(MAKEPRIMS) vm\\sqNamedPrims.h $(INTERNAL_PLUGINS) |