Skip to content

Commit

Permalink
Merge Unix and Windows build systems in the asmrun directory
Browse files Browse the repository at this point in the history
Changes in make variables:

  - Removal of the SHARED make variable, which had the same
    semantics than SUPPORTS_SHARED_LIBRARIES, the later having values true
    and false while the former had values shared and noshared.
    (SHARED was not defined on Windows)
  - RUNTIMED now takes values true and false rather than runtimed and
    noruntimed
  • Loading branch information
shindere committed Nov 29, 2016
1 parent 9df8c63 commit 34fbd0f
Show file tree
Hide file tree
Showing 11 changed files with 140 additions and 239 deletions.
220 changes: 114 additions & 106 deletions asmrun/Makefile
Expand Up @@ -15,159 +15,167 @@

include ../config/Makefile

include Makefile.shared
LINKEDFILES=misc.c freelist.c major_gc.c minor_gc.c memory.c alloc.c array.c \
compare.c ints.c floats.c str.c io.c extern.c intern.c hash.c sys.c \
parsing.c gc_ctrl.c terminfo.c md5.c obj.c lexing.c printexc.c callback.c \
weak.c compact.c finalise.c meta.c custom.c main.c globroots.c \
$(UNIX_OR_WIN32).c dynlink.c signals.c debugger.c startup_aux.c backtrace.c

CC=$(NATIVECC)
FLAGS=-I../byterun -DNATIVE_CODE \
-DTARGET_$(ARCH) -DMODEL_$(MODEL) -DSYS_$(SYSTEM) $(IFLEXDIR) \
$(LIBUNWIND_INCLUDE_FLAGS)
#CFLAGS=$(FLAGS) -g -O0
CFLAGS=$(FLAGS) -g -O0 $(NATIVECCCOMPOPTS)
DFLAGS=$(FLAGS) -g -DDEBUG $(NATIVECCCOMPOPTS)
IFLAGS=$(FLAGS) -DCAML_INSTR
PFLAGS=$(FLAGS) -pg -DPROFILING $(NATIVECCPROFOPTS) $(NATIVECCCOMPOPTS)
PICFLAGS=$(FLAGS) $(SHAREDCCCOMPOPTS) $(NATIVECCCOMPOPTS)
INSTALL_LIBDIR=$(DESTDIR)$(LIBDIR)

ASMOBJS=$(ARCH).o
CC=$(NATIVECC)

OBJS=$(COBJS) $(ASMOBJS)
DOBJS=$(COBJS:.o=.d.o) $(ASMOBJS)
IOBJS=$(COBJS:.o=.i.o) $(ASMOBJS)
POBJS=$(COBJS:.o=.p.o) $(ASMOBJS:.o=.p.o)
PICOBJS=$(COBJS:.o=.pic.o) $(ASMOBJS:.o=.pic.o)
ifeq "$(TOOLCHAIN)" "msvc"
OUTPUTOBJ = -Fo
else
OUTPUTOBJ = -o
endif

ifeq "$(PROFILING)" "true"
PROFILINGTARGET = prof
ifeq "$(UNIX_OR_WIN32)" "win32"
LN = cp
else
PROFILINGTARGET = noprof
LN = ln -s
endif

all: libasmrun.a all-$(RUNTIMED) all-$(PROFILINGTARGET) all-$(SHARED)
FLAGS=\
-I../byterun $(IFLEXDIR) \
-DNATIVE_CODE -DTARGET_$(ARCH) -DMODEL_$(MODEL) -DSYS_$(SYSTEM) \
$(LIBUNWIND_INCLUDE_FLAGS) $(NATIVECCCOMPOPTS)

ifeq "$(RUNTIMEI)" "true"
all: libasmruni.a
endif
CFLAGS=$(FLAGS) -g -O0
DFLAGS=$(FLAGS) -g -DDEBUG
IFLAGS=$(FLAGS) -DCAML_INSTR
PFLAGS=$(FLAGS) -pg -DPROFILING $(NATIVECCPROFOPTS)
PICFLAGS=$(FLAGS) $(SHAREDCCCOMPOPTS)

libasmrun.a: $(OBJS)
rm -f libasmrun.a
$(ARCMD) rc libasmrun.a $(OBJS)
$(RANLIB) libasmrun.a
ASPPFLAGS = -DSYS_$(SYSTEM)
ifeq "$(UNIX_OR_WIN32)" "unix"
ASPPFLAGS += -DMODEL_$(MODEL)
endif

all-noruntimed:
.PHONY: all-noruntimed
ifeq ($(TOOLCHAIN),msvc)
ASMOBJS=$(ARCH)nt.$(O)
else
ASMOBJS=$(ARCH).$(O)
endif

all-runtimed: libasmrund.a
.PHONY: all-runtimed
COBJS=startup_aux.$(O) startup.$(O) main.$(O) fail.$(O) \
roots.$(O) signals.$(O) signals_asm.$(O) misc.$(O) freelist.$(O) \
major_gc.$(O) minor_gc.$(O) memory.$(O) alloc.$(O) compare.$(O) \
ints.$(O) floats.$(O) str.$(O) array.$(O) io.$(O) extern.$(O) \
intern.$(O) hash.$(O) sys.$(O) parsing.$(O) gc_ctrl.$(O) \
terminfo.$(O) md5.$(O) obj.$(O) lexing.$(O) $(UNIX_OR_WIN32).$(O) \
printexc.$(O) callback.$(O) weak.$(O) compact.$(O) finalise.$(O) \
custom.$(O) globroots.$(O) backtrace_prim.$(O) backtrace.$(O) \
natdynlink.$(O) debugger.$(O) meta.$(O) dynlink.$(O) \
clambda_checks.$(O) spacetime.$(O) spacetime_snapshot.$(O) \
spacetime_offline.$(O)

libasmrund.a: $(DOBJS)
rm -f libasmrund.a
$(ARCMD) rc libasmrund.a $(DOBJS)
$(RANLIB) libasmrund.a
OBJS=$(COBJS) $(ASMOBJS)

libasmruni.a: $(IOBJS)
rm -f $@
$(ARCMD) rc $@ $^
$(RANLIB) $@
DOBJS=$(COBJS:.$(O)=.d.$(O)) $(ASMOBJS)
IOBJS=$(COBJS:.$(O)=.i.$(O)) $(ASMOBJS)
POBJS=$(COBJS:.$(O)=.p.$(O)) $(ASMOBJS:.$(O)=.p.$(O))
PICOBJS=$(COBJS:.$(O)=.pic.$(O)) $(ASMOBJS:.$(O)=.pic.$(O))

all-noprof:
TARGETS = libasmrun.$(A)

all-prof: libasmrunp.a
ifeq "$(RUNTIMED)" "true"
TARGETS += libasmrund.$(A)
endif

libasmrunp.a: $(POBJS)
rm -f libasmrunp.a
$(ARCMD) rc libasmrunp.a $(POBJS)
$(RANLIB) libasmrunp.a
ifeq "$(RUNTIMEI)" "true"
TARGETS += libasmruni.$(A)
endif

all-noshared:
ifeq "$(PROFILING)" "true"
TARGETS += libasmrunp.$(A)
endif

all-shared: libasmrun_pic.a libasmrun_shared.so
ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true"
TARGETS += libasmrun_pic.$(A) libasmrun_shared.$(SO)
endif

libasmrun_pic.a: $(PICOBJS)
rm -f libasmrun_pic.a
$(ARCMD) rc libasmrun_pic.a $(PICOBJS)
$(RANLIB) libasmrun_pic.a
.PHONY: all
all: $(TARGETS)

libasmrun_shared.so: $(PICOBJS)
$(MKDLL) -o libasmrun_shared.so $(PICOBJS) $(NATIVECCLIBS)
libasmrun.$(A): $(OBJS)
$(call MKLIB,$@, $^)

INSTALL_LIBDIR=$(DESTDIR)$(LIBDIR)
libasmrund.$(A): $(DOBJS)
$(call MKLIB,$@, $^)

install::
cp libasmrun.a $(INSTALL_LIBDIR)/libasmrun.a
cd $(INSTALL_LIBDIR); $(RANLIB) libasmrun.a
.PHONY: install-default
libasmruni.$(A): $(IOBJS)
$(call MKLIB,$@, $^)

ifeq "$(RUNTIMED)" "runtimed"
install::
cp libasmrund.a $(INSTALL_LIBDIR)/libasmrund.a
cd $(INSTALL_LIBDIR); $(RANLIB) libasmrund.a
endif
libasmrunp.$(A): $(POBJS)
$(call MKLIB,$@, $^)

ifeq "$(RUNTIMEI)" "true"
install::
cp libasmruni.a $(INSTALL_LIBDIR)/libasmruni.a
cd $(INSTALL_LIBDIR); $(RANLIB) libasmruni.a
endif
libasmrun_pic.$(A): $(PICOBJS)
$(call MKLIB,$@, $^)

ifeq "$(PROFILING)" "true"
install::
cp libasmrunp.a $(INSTALL_LIBDIR)/libasmrunp.a
endif
libasmrun_shared.$(SO): $(PICOBJS)
$(MKDLL) -o $@ $^ $(NATIVECCLIBS)

ifeq "$(SHARED)" "shared"
install::
cp libasmrun_pic.a $(INSTALL_LIBDIR)/libasmrun_pic.a
cd $(INSTALL_LIBDIR); $(RANLIB) libasmrun_pic.a
cp libasmrun_shared.so $(INSTALL_LIBDIR)/libasmrun_shared.so
endif
.PHONY: install
install:
cp $(TARGETS) "$(INSTALL_LIBDIR)"

$(LINKEDFILES): %.c: ../byterun/%.c
ln -s ../byterun/$*.c $*.c
$(LN) $< $@
# $(LN) ../byterun/$*.c $*.c

clean::
rm -f $(LINKEDFILES)
%.d.$(O): %.c
$(CC) -c $(DFLAGS) $(OUTPUTOBJ)$@ $<

%.d.o: %.c
$(CC) -c $(DFLAGS) -o $@ $<
%.i.$(O) : %.c
$(CC) -c $(IFLAGS) $(OUTPUTOBJ)$@ $<

%.i.o : %.c
$(CC) -c $(IFLAGS) -o $@ $<
%.p.$(O): %.c
$(CC) -c $(PFLAGS) $(OUTPUTOBJ)$@ $<

%.p.o: %.c
$(CC) -c $(PFLAGS) -o $@ $<
%.pic.$(O): %.c
$(CC) -c $(PICFLAGS) $(OUTPUTOBJ)$@ $<

%.pic.o: %.c
$(CC) -c $(PICFLAGS) -o $@ $<
%.$(O): %.c
$(CC) $(CFLAGS) -c $<

%.o: %.S
$(ASPP) -DSYS_$(SYSTEM) -DMODEL_$(MODEL) -o $@ $< || \
$(ASPP) $(ASPPFLAGS) -o $@ $< || \
{ echo "If your assembler produced syntax errors, it is probably";\
echo "unhappy with the preprocessor. Check your assembler, or";\
echo "try producing $*.o by hand.";\
exit 2; }

%.p.o: %.S
$(ASPP) -DSYS_$(SYSTEM) -DMODEL_$(MODEL) $(ASPPPROFFLAGS) -o $@ $<
$(ASPP) $(ASPPFLAGS) $(ASPPPROFFLAGS) -o $@ $<

%.pic.o: %.S
$(ASPP) -DSYS_$(SYSTEM) -DMODEL_$(MODEL) $(SHAREDCCCOMPOPTS) -o $@ $<

%.o: %.s
$(ASPP) -DSYS_$(SYSTEM) -o $@ $<

%.p.o: %.s
$(ASPP) -DSYS_$(SYSTEM) $(ASPPPROFFLAGS) -o $@ $<
$(ASPP) $(ASPPFLAGS) $(SHAREDCCCOMPOPTS) -o $@ $<

%.pic.o: %.s
$(ASPP) -DSYS_$(SYSTEM) $(SHAREDCCCOMPOPTS) -o $@ $<
%.obj: %.asm
$(ASM) $@ $<

clean::
rm -f *.o *.a *.so *~
.PHONY: clean
clean:
rm -f $(LINKEDFILES)
rm -f *.$(O) *.$(A) *.$(SO) *~

depend: $(COBJS:.o=.c) ${LINKEDFILES}
ifneq "$(TOOLCHAIN)" "msvc"
.PHONY: depend
depend: $(COBJS:.$(O)=.c) $(LINKEDFILES)
$(CC) -MM $(FLAGS) *.c > .depend
$(CC) -MM $(FLAGS) -DPROFILING *.c | sed -e 's/\.o/.p.o/' >> .depend
$(CC) -MM $(FLAGS) -DDEBUG *.c | sed -e 's/\.o/.d.o/' >> .depend
$(CC) -MM $(FLAGS) -DCAML_INSTR *.c | sed -e 's/\.o/.i.o/' >> .depend
$(CC) -MM $(FLAGS) -DDEBUG *.c | sed -e 's/\.o/.d.o)/' >> .depend
$(CC) -MM $(FLAGS) -DCAML_INSTR *.c | sed -e 's/\.o/.i.o' >> .depend
endif

ifeq "$(UNIX_OR_WIN32)" "win32"
.depend.nt: .depend
sed -e 's/\.o/.$(O)/g' .depend > .depend.nt

include .depend.nt

else
include .depend
endif
60 changes: 1 addition & 59 deletions asmrun/Makefile.nt
Expand Up @@ -13,62 +13,4 @@
#* *
#**************************************************************************

include ../config/Makefile

include Makefile.shared

CC=$(NATIVECC)
CFLAGS=-I../byterun -DNATIVE_CODE -DTARGET_$(ARCH) -DSYS_$(SYSTEM) \
$(NATIVECCCOMPOPTS) $(IFLEXDIR)

ifeq ($(TOOLCHAIN),mingw)
ASMOBJS=$(ARCH).o
else
ASMOBJS=$(ARCH)nt.obj
endif

OBJS=$(COBJS) $(ASMOBJS)

all: libasmrun.$(A)

libasmrun.$(A): $(OBJS)
$(call MKLIB,libasmrun.$(A), $(OBJS))

i386nt.obj: i386nt.asm
$(ASM)i386nt.obj i386nt.asm

amd64nt.obj: amd64nt.asm
$(ASM)amd64nt.obj amd64nt.asm

i386.o: i386.S
$(ASPP) -DSYS_$(SYSTEM) i386.S

amd64.o: amd64.S
$(ASPP) -DSYS_$(SYSTEM) amd64.S

INSTALL_LIBDIR=$(DESTDIR)$(LIBDIR)

install:
cp libasmrun.$(A) "$(INSTALL_LIBDIR)"

$(LINKEDFILES): %.c: ../byterun/%.c
cp ../byterun/$*.c $*.c

# Need special compilation rule so as not to do -I../byterun
#win32.$(O): ../byterun/win32.c
# $(CC) -c $(NATIVECCCOMPOPTS) -DNATIVE_CODE $(IFLEXDIR) \
# ../byterun/win32.c

%.$(O): %.c
$(CC) $(CFLAGS) -c $<

clean::
rm -f $(LINKEDFILES)

clean::
rm -f *.$(O) *.$(A) *~

.depend.nt: .depend
sed -e 's/\.o/.$(O)/g' .depend > .depend.nt

include .depend.nt
include Makefile
32 changes: 0 additions & 32 deletions asmrun/Makefile.shared

This file was deleted.

0 comments on commit 34fbd0f

Please sign in to comment.