summaryrefslogtreecommitdiff
path: root/asmrun
diff options
context:
space:
mode:
authorSébastien Hinderer <Sebastien.Hinderer@inria.fr>2016-12-20 16:54:20 +0100
committerDamien Doligez <damien.doligez@gmail.com>2016-12-20 16:54:20 +0100
commit68ad1bb9233d4d80a2364953eaaebcf58646d36c (patch)
tree5135406fb37692a51ecd791c4113fc9e771a83ad /asmrun
parentafbd5a389a5dd86f79d4a8182e984f19f5d69447 (diff)
downloadocaml-68ad1bb9233d4d80a2364953eaaebcf58646d36c.tar.gz
Merge Unix and Windows build systems in the asmrun directory (#941)
* Merge Unix and Windows build systems in the asmrun directory 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 * Do not use -O0 in asmrun's Makefile * Add /asmrun/win32.c to .gitignore * Build PIC libraries only under Unix This makes things closer to what they were before, since PIC objects were not built for Windows.
Diffstat (limited to 'asmrun')
-rw-r--r--asmrun/Makefile232
-rw-r--r--asmrun/Makefile.nt60
-rw-r--r--asmrun/Makefile.shared33
3 files changed, 129 insertions, 196 deletions
diff --git a/asmrun/Makefile b/asmrun/Makefile
index ccb0ee8d8a..dbab4142eb 100644
--- a/asmrun/Makefile
+++ b/asmrun/Makefile
@@ -15,159 +15,183 @@
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 afl.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)
-
-ASMOBJS=$(ARCH).o
+INSTALL_LIBDIR=$(DESTDIR)$(LIBDIR)
-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)
+CC=$(NATIVECC)
-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 \
+ -DNATIVE_CODE -DTARGET_$(ARCH)
-ifeq "$(RUNTIMEI)" "true"
-all: libasmruni.a
+ifeq "$(UNIX_OR_WIN32)" "unix"
+FLAGS += -DMODEL_$(MODEL)
+endif
+
+FLAGS += -DSYS_$(SYSTEM) \
+ $(NATIVECCCOMPOPTS) $(IFLEXDIR) \
+ $(LIBUNWIND_INCLUDE_FLAGS)
+
+ifeq "$(TOOLCHAIN)" "msvc"
+DFLAGS=$(FLAGS) -DDEBUG
+PFLAGS=$(FLAGS) -DPROFILING $(NATIVECCPROFOPTS)
+OUTPUTOBJ = -Fo
+ASMOBJS=$(ARCH)nt.$(O)
+else
+DFLAGS=$(FLAGS) -g -DDEBUG
+PFLAGS=$(FLAGS) -pg -DPROFILING $(NATIVECCPROFOPTS)
+OUTPUTOBJ = -o
+ASMOBJS=$(ARCH).$(O)
endif
-libasmrun.a: $(OBJS)
- rm -f libasmrun.a
- $(ARCMD) rc libasmrun.a $(OBJS)
- $(RANLIB) libasmrun.a
+IFLAGS=$(FLAGS) -DCAML_INSTR
+PICFLAGS=$(FLAGS) $(SHAREDCCCOMPOPTS)
-all-noruntimed:
-.PHONY: all-noruntimed
+ASPPFLAGS = -DSYS_$(SYSTEM)
+ifeq "$(UNIX_OR_WIN32)" "unix"
+ASPPFLAGS += -DMODEL_$(MODEL)
+CFLAGS=$(FLAGS) -g
+else
+CFLAGS=$(FLAGS)
+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) afl.$(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 "$(UNIX_OR_WIN32)" "unix"
+ifeq "$(SUPPORTS_SHARED_LIBRARIES)" "true"
+TARGETS += libasmrun_pic.$(A) libasmrun_shared.$(SO)
+endif
+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) $< $@
-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 $@ $<
+ $(ASPP) $(ASPPFLAGS) $(SHAREDCCCOMPOPTS) -o $@ $<
-%.o: %.s
- $(ASPP) -DSYS_$(SYSTEM) -o $@ $<
+%.obj: %.asm
+ $(ASM)$@ $<
-%.p.o: %.s
- $(ASPP) -DSYS_$(SYSTEM) $(ASPPPROFFLAGS) -o $@ $<
+%.pic.obj: %.asm
+ $(ASM)$@ $<
-%.pic.o: %.s
- $(ASPP) -DSYS_$(SYSTEM) $(SHAREDCCCOMPOPTS) -o $@ $<
+.PHONY: clean
+clean:
+ rm -f $(LINKEDFILES)
+ rm -f *.$(O) *.$(A) *.$(SO)
-clean::
- rm -f *.o *.a *.so *~
+.PHONY: distclean
+distclean: clean
+ rm -r *~
-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
diff --git a/asmrun/Makefile.nt b/asmrun/Makefile.nt
index ad077bd18d..ed9900bb9a 100644
--- a/asmrun/Makefile.nt
+++ b/asmrun/Makefile.nt
@@ -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
diff --git a/asmrun/Makefile.shared b/asmrun/Makefile.shared
deleted file mode 100644
index 625cb0ced0..0000000000
--- a/asmrun/Makefile.shared
+++ /dev/null
@@ -1,33 +0,0 @@
-#**************************************************************************
-#* *
-#* OCaml *
-#* *
-#* Xavier Leroy, projet Cristal, INRIA Rocquencourt *
-#* *
-#* Copyright 1999 Institut National de Recherche en Informatique et *
-#* en Automatique. *
-#* *
-#* All rights reserved. This file is distributed under the terms of *
-#* the GNU Lesser General Public License version 2.1, with the *
-#* special exception on linking described in the file LICENSE. *
-#* *
-#**************************************************************************
-
-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) afl.$(O)
-
-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 \
- afl.c