11#############################################################################
2- # Common Makefile for Win32 VM using MSVC, e.g. 2017 Community, and gnu make
2+ # Common Makefile for Win64 VM using MSVC, e.g. 2017 Community, and gnu make
33# Copyright (c) 2020 3D Immersive Collaboration Consulting, LLC
44#
55# Do make init to allow make -n to function.
@@ -20,6 +20,7 @@ VM?=Squeak
2020VM_NAME?=$(VM)
2121CONFIGURATION=product
2222THREADING=single
23+ export VM VM_NAME CONFIGURATION
2324
2425# Is this a Croquet VM (defaults to OGL instead of D3D)?
2526CROQUET:=-DCROQUET
4748endif
4849
4950PLUGINSRCDIR:= ../../src
51+ export PLUGINSRCDIR
5052OBJDIR:= $(BUILD)/vm
5153
5254PLATDIR:=../../platforms
55+ export PLATDIR
5356CROSSDIR:=$(PLATDIR)/Cross/vm
5457TPDIR:=$(PLATDIR)/Cross/third-party
58+ export TPDIR
5559WIN32DIR:=$(PLATDIR)/win32/vm
5660WIN32PLUGINSDIR:=$(PLATDIR)/win32/plugins
5761WIN32MISCDIR:=$(PLATDIR)/win32/misc
@@ -88,6 +92,7 @@ DLLS:= $(addprefix $(OBJDIR)/, $(addsuffix .dll, $(EXTERNAL_PLUGINS)))
8892
8993ifdef BIT_IDENTICAL_FLOATING_POINT
9094LIBS:=$(BUILD)/fdlibm/libm.a $(LIBS)
95+ export BIT_IDENTICAL_FLOATING_POINT
9196endif
9297
9398#############################################################################
@@ -117,8 +122,8 @@ VMRES:= $(VM).res
117122VMDEFIN:=$(VM).def.in
118123BTOBJ:= $(OBJDIR)/btext.o
119124ETOBJ:= $(OBJDIR)/etext.o
120- JMPASM:=_setjmp-x86 .asm
121- JMPOBJ:=$(OBJDIR)/_setjmp-x86 .o
125+ JMPASM:=_setjmp-x64 .asm
126+ JMPOBJ:=$(OBJDIR)/_setjmp-x64 .o
122127
123128.PRECIOUS: mkNamedPrims.exe
124129
@@ -223,13 +228,11 @@ $(VMEXE): $(OBJDIR) $(THIRDPARTYLIBS) $(VMOBJ) $(LIBS) resource.o $(BTOBJ) $(ETO
223228 $(CC) $(DASH_O)$(OBJDIR)/version.o $(CFLAGS) $(INCLUDES) $(DEFS) -D'TZ="$(TZ)"' -c $(WIN32DIR)/version.c
224229 $(LD) $(LDFLAGS) -OUT:$(VMEXE) -MAP:$(VMMAP) \
225230 $(BTOBJ) $(VMOBJ) $(JMPOBJ) $(OBJDIR)/resource.o $(filter-out $(call ignore), $(LIBS)) $(STDLIBS) $(ETOBJ)
226- $(NM) --numeric-sort --defined-only -f bsd $(VMEXE) >$(VMMAP).bsd
227231
228232$(CONSOLEVMEXE): $(VMOBJ) $(LIBS) resource.o $(BTOBJ) $(ETOBJ) $(JMPOBJ)
229233 $(CC) $(DASH_O)$(OBJDIR)/version.o $(CFLAGS) $(INCLUDES) $(DEFS) -D'TZ="$(TZ)"' -c $(WIN32DIR)/version.c
230234 $(LD) $(CONSOLELDFLAGS) -OUT:$(CONSOLEVMEXE) -MAP:$(CONSOLEVMMAP) \
231235 $(BTOBJ) $(VMOBJ) $(JMPOBJ) $(OBJDIR)/resource.o $(filter-out $(call ignore), $(LIBS)) $(STDLIBS) $(ETOBJ)
232- $(NM) --numeric-sort --defined-only -f bsd $(CONSOLEVMEXE) >$(CONSOLEVMMAP).bsd
233236
234237$(OBJDIR):
235238 @-$(MKDIR) $(BUILD)
@@ -262,23 +265,18 @@ $(OBJDIR)/%.lib: $(call plugin-makefile,$(*F))
262265 $(RM) -f $(BUILD)/vm/$(*F).ignore
263266 $(MAKE) $(MFLAGS) $(SUBMFLAGS) -I../common BUILD=$(BUILD) \
264267 -f $(call plugin-makefile,$(*F)) \
265- "VM=$(VM)" "VM_NAME=$(VM_NAME)" INTERNAL_PLUGIN=1 TPDIR=$(TPDIR) \
266- CONFIGURATION=$(CONFIGURATION) ARCH=$(ARCH) TOOLPREFIX=$(TOOLPREFIX) \
267- PLATDIR=$(PLATDIR) PLUGINSRCDIR=$(PLUGINSRCDIR) VMSRCDIR=$(VMSRCDIR) \
268- THIRDPARTYOUTDIR=$(THIRDPARTYOUTDIR) \
269- COGDEFS="$(COGDEFS) -DSQUEAK_BUILTIN_PLUGIN=$(*F)" LIBNAME=$(*F) $(OBJDIR)/$(*F).lib
268+ LIBNAME=$(*F) INTERNAL_PLUGIN=1 VMSRCDIR=$(VMSRCDIR) \
269+ COGDEFS="$(COGDEFS) -DSQUEAK_BUILTIN_PLUGIN=$(*F)" $(OBJDIR)/$(*F).lib
270270
271271# External plugin. Build as dll and copy to vm dir ($(OBJDIR)).
272272$(OBJDIR)/%.dll: $(call plugin-makefile,$(*F))
273273 @-$(MKDIR) $(BUILD)/$(*F)
274274 $(RM) -f $(BUILD)/$(*F).ignore
275275 $(MAKE) $(MFLAGS) $(SUBMFLAGS) -I../common BUILD=$(BUILD) \
276276 -f $(call plugin-makefile,$(*F)) \
277- "VM=$(VM)" "VM_NAME=$(VM_NAME)" EXTERNAL_PLUGIN=1 TPDIR=$(TPDIR) \
278- CONFIGURATION=$(CONFIGURATION) ARCH=$(ARCH) TOOLPREFIX=$(TOOLPREFIX) \
279- PLATDIR=$(PLATDIR) PLUGINSRCDIR=$(PLUGINSRCDIR) VMSRCDIR=$(VMSRCDIR) \
280- THIRDPARTYOUTDIR=$(THIRDPARTYOUTDIR) JMPOBJ=$(JMPOBJ) \
281- COGDEFS="$(COGDEFS) -DSQUEAK_EXTERNAL_PLUGIN=$(*F)" LIBNAME=$(*F) VMLIB=$(VMLIB) $(OBJDIR)/$(*F).dll
277+ LIBNAME=$(*F) EXTERNAL_PLUGIN=1 VMSRCDIR=$(VMSRCDIR) \
278+ JMPOBJ=$(JMPOBJ) VMLIB=$(VMLIB) \
279+ COGDEFS="$(COGDEFS) -DSQUEAK_EXTERNAL_PLUGIN=$(*F)" $(OBJDIR)/$(*F).dll
282280
283281$(BUILD)/fdlibm/libm.a:
284282 @-mkdir -p $(@D)
@@ -297,7 +295,7 @@ $(VMRES): $(VM).rc
297295 $(CP) $(VM).exe.manifest $(OBJDIR)/$(VM)Console.exe.manifest
298296
299297resource.o: $(VMRES)
300- $(CVTRES) /MACHINE:X86 /OUT:$(OBJDIR)/resource.o $(OBJDIR)/$(VMRES)
298+ $(CVTRES) /MACHINE:$(ARCH) /OUT:$(OBJDIR)/resource.o $(OBJDIR)/$(VMRES)
301299
302300#############################################################################
303301# Extra specific dependencies
0 commit comments