diff --git a/Makefile b/Makefile index 90cfc7cc2..1d8c1f456 100644 --- a/Makefile +++ b/Makefile @@ -1075,7 +1075,7 @@ partialclean:: ifeq "$(UNIX_OR_WIN32)" "unix" .PHONY: checkstack checkstack: - if $(MKEXE) -o tools/checkstack$(EXE) tools/checkstack.c; \ + if $(MKEXE) $(OUTPUTEXE)tools/checkstack$(EXE) tools/checkstack.c; \ then tools/checkstack$(EXE); \ else :; \ fi diff --git a/asmrun/Makefile b/asmrun/Makefile index a328082a9..1fc64f5c5 100644 --- a/asmrun/Makefile +++ b/asmrun/Makefile @@ -48,12 +48,10 @@ CPPFLAGS += -DSYS_$(SYSTEM) $(IFLEXDIR) $(LIBUNWIND_INCLUDE_FLAGS) ifeq "$(TOOLCHAIN)" "msvc" DFLAGS = $(CFLAGS) -DDEBUG PFLAGS=$(CFLAGS) -DPROFILING $(NATIVECCPROFOPTS) -OUTPUTOBJ = -Fo ASMOBJS=$(ARCH)nt.$(O) else DFLAGS = $(CFLAGS) -g -DDEBUG PFLAGS=$(CFLAGS) -pg -DPROFILING $(NATIVECCPROFOPTS) -OUTPUTOBJ = -o ASMOBJS=$(ARCH).$(O) endif diff --git a/byterun/Makefile b/byterun/Makefile index be0aaf0d4..379851aa7 100644 --- a/byterun/Makefile +++ b/byterun/Makefile @@ -61,11 +61,6 @@ ifneq "$(CCOMPTYPE)" "msvc" DFLAGS += -g endif -ifeq "$(CCOMPTYPE)" "msvc" -OUTPUTOBJ=-Fo -else -OUTPUTOBJ=-o -endif DBGO=d.$(O) ifeq "$(UNIX_OR_WIN32)" "win32" diff --git a/config/Makefile.mingw b/config/Makefile.mingw index 5c5310f74..567db0ac9 100644 --- a/config/Makefile.mingw +++ b/config/Makefile.mingw @@ -59,8 +59,10 @@ A=a S=s SO=s.o EXE=.exe +OUTPUTEXE=-o EXT_DLL=.dll EXT_OBJ=.$(O) +OUTPUTOBJ=-o EXT_LIB=.$(A) EXT_ASM=.$(S) MANEXT=1 @@ -109,9 +111,6 @@ CPPFLAGS = -DCAML_NAME_SPACE OCAMLC_CFLAGS = -O -mms-bitfields BYTECCDBGCOMPOPTS=-g -### Flag to use to rename object files. (for debug version.) -NAME_OBJ_FLAG=-o - LDFLAGS= ### Libraries needed @@ -143,7 +142,7 @@ MKEXEDEBUGFLAG=-g MKMAINDLL=$(FLEXLINK) -maindll ### Native command to build ocamlrun.exe without flexlink -MKEXE_BOOT=$(CC) $(CFLAGS) -o $(1) $(2) +MKEXE_BOOT=$(CC) $(CFLAGS) $(OUTPUTEXE)$(1) $(2) ### How to build a static library MKLIB=rm -f $(1); $(TOOLPREF)ar rc $(1) $(2); $(RANLIB) $(1) diff --git a/config/Makefile.mingw64 b/config/Makefile.mingw64 index af6fc7d7b..bedb99cba 100644 --- a/config/Makefile.mingw64 +++ b/config/Makefile.mingw64 @@ -59,8 +59,10 @@ A=a S=s SO=s.o EXE=.exe +OUTPUTEXE=-o EXT_DLL=.dll EXT_OBJ=.$(O) +OUTPUTOBJ=-o EXT_LIB=.$(A) EXT_ASM=.$(S) MANEXT=1 @@ -110,9 +112,6 @@ OCAMLC_CFLAGS = -O -mms-bitfields BYTECCDBGCOMPOPTS=-g -### Flag to use to rename object files. (for debug version.) -NAME_OBJ_FLAG=-o - LDFLAGS= ### Libraries needed @@ -144,7 +143,7 @@ MKEXEDEBUGFLAG=-g MKMAINDLL=$(FLEXLINK) -maindll ### Native command to build ocamlrun.exe without flexlink -MKEXE_BOOT=$(CC) $(CFLAGS) -o $(1) $(2) +MKEXE_BOOT=$(CC) $(CFLAGS) $(OUTPUTEXE)$(1) $(2) ### How to build a static library MKLIB=rm -f $(1); $(TOOLPREF)ar rc $(1) $(2); $(RANLIB) $(1) diff --git a/config/Makefile.msvc b/config/Makefile.msvc index f1a74b6ca..741935586 100644 --- a/config/Makefile.msvc +++ b/config/Makefile.msvc @@ -54,8 +54,10 @@ A=lib S=asm SO=s.obj EXE=.exe +OUTPUTEXE=-Fe EXT_DLL=.dll EXT_OBJ=.$(O) +OUTPUTOBJ=-Fo EXT_LIB=.$(A) EXT_ASM=.$(S) MANEXT=1 @@ -104,9 +106,6 @@ OCAMLC_CFLAGS = -nologo -O2 -Gy- -MD OCAMLC_CPPFLAGS = -D_CRT_SECURE_NO_DEPRECATE BYTECCDBGCOMPOPTS=-Zi -### Flag to use to rename object files. (for debug version.) -NAME_OBJ_FLAG=-Fo - LDFLAGS= ### Libraries needed @@ -141,7 +140,7 @@ MKMAINDLL=$(FLEXLINK) -maindll MERGEMANIFESTEXE=test ! -f $(1).manifest \ || mt -nologo -outputresource:$(1) -manifest $(1).manifest \ && rm -f $(1).manifest -MKEXE_BOOT=$(CC) $(CFLAGS) /Fe$(1) $(2) /link /subsystem:console \ +MKEXE_BOOT=$(CC) $(CFLAGS) $(OUTPUTEXE)$(1) $(2) /link /subsystem:console \ && ($(MERGEMANIFESTEXE)) ### How to build a static library diff --git a/config/Makefile.msvc64 b/config/Makefile.msvc64 index b602057c2..a15d2ff29 100644 --- a/config/Makefile.msvc64 +++ b/config/Makefile.msvc64 @@ -54,8 +54,10 @@ A=lib S=asm SO=s.obj EXE=.exe +OUTPUTEXE=-Fe EXT_DLL=.dll EXT_OBJ=.$(O) +OUTPUTOBJ=-Fo EXT_LIB=.$(A) EXT_ASM=.$(S) MANEXT=1 @@ -104,9 +106,6 @@ OCAMLC_CPPFLAGS = -D_CRT_SECURE_NO_DEPRECATE BYTECCDBGCOMPOPTS=-Zi -### Flag to use to rename object files. (for debug version.) -NAME_OBJ_FLAG=-Fo - LDFLAGS= ### Libraries needed @@ -143,7 +142,7 @@ MKMAINDLL=$(FLEXLINK) -maindll MERGEMANIFESTEXE=test ! -f $(1).manifest \ || mt -nologo -outputresource:$(1) -manifest $(1).manifest \ && rm -f $(1).manifest -MKEXE_BOOT=$(CC) $(CFLAGS) /Fe$(1) $(2) /link /subsystem:console \ +MKEXE_BOOT=$(CC) $(CFLAGS) $(OUTPUTEXE)$(1) $(2) /link /subsystem:console \ && ($(MERGEMANIFESTEXE)) ### How to build a static library diff --git a/configure b/configure index f7ae20283..b0462b92b 100755 --- a/configure +++ b/configure @@ -1972,6 +1972,7 @@ echo "BYTECCLIBS=$cclibs $dllib $curseslibs $pthread_link \ $instrumented_runtime_libs" >> Makefile echo "RPATH=$rpath" >> Makefile echo "EXE=$exe" >> Makefile +echo "OUTPUTEXE=-o" >> Makefile echo "SUPPORTS_SHARED_LIBRARIES=$shared_libraries_supported" >> Makefile echo "SHAREDCCCOMPOPTS=$sharedcccompopts" >> Makefile echo "MKSHAREDLIBRPATH=$mksharedlibrpath" >> Makefile @@ -2007,6 +2008,7 @@ echo "O=o" >> Makefile echo "A=a" >> Makefile echo "SO=$SO" >> Makefile echo "EXT_OBJ=.o" >> Makefile +echo "OUTPUTOBJ=-o" >> Makefile echo "EXT_ASM=.s" >> Makefile echo "EXT_LIB=.a" >> Makefile echo "EXT_DLL=.$SO" >> Makefile diff --git a/otherlibs/Makefile b/otherlibs/Makefile index 0e2813c95..0958d0c06 100644 --- a/otherlibs/Makefile +++ b/otherlibs/Makefile @@ -113,4 +113,4 @@ clean:: partialclean $(CAMLOPT) -c $(COMPFLAGS) $(OPTCOMPFLAGS) $< .c.$(O): - $(CC) -c $(CFLAGS) $(CPPFLAGS) $< + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(OUTPUTOBJ)$@ $< diff --git a/otherlibs/bigarray/Makefile b/otherlibs/bigarray/Makefile index 0903a8d5f..2094ad2f4 100644 --- a/otherlibs/bigarray/Makefile +++ b/otherlibs/bigarray/Makefile @@ -22,9 +22,9 @@ CAMLOBJS=bigarray.cmo include ../Makefile mmap.$(O): ../$(UNIXLIB)/mmap.c - $(CC) -c $(CFLAGS) $(CPPFLAGS) $< + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(OUTPUTOBJ)$@ $< mmap_ba.$(O): ../unix/mmap_ba.c - $(CC) -c $(CFLAGS) $(CPPFLAGS) $< + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(OUTPUTOBJ)$@ $< .PHONY: depend diff --git a/otherlibs/systhreads/Makefile b/otherlibs/systhreads/Makefile index ad8109d85..7e3d5aaf0 100644 --- a/otherlibs/systhreads/Makefile +++ b/otherlibs/systhreads/Makefile @@ -95,10 +95,6 @@ $(LIBNAME).cmxa: $(THREADS_NCOBJS) # The following lines produce two object files st_stubs_b.$(O) and # st_stubs_n.$(O) from the same source file st_stubs.c (it is compiled # twice, each time with different options). -# Since the source and object file have a different basename, the name of -# the object file to produce must be given to the C compiler. -# For gcc this is done with the -ofoo.$(O) option. -# For msvc it's the /Fofoo.$(O) option. ifeq "$(TOOLCHAIN)" "msvc" CCOUTPUT=/Fo @@ -108,13 +104,13 @@ endif st_stubs_b.$(O): st_stubs.c $(HEADER) $(CC) -c $(CFLAGS) $(CPPFLAGS) -I$(ROOTDIR)/byterun \ - $(SHAREDCCCOMPOPTS) $(CCOUTPUT)$@ $< + $(SHAREDCCCOMPOPTS) $(OUTPUTOBJ)$@ $< st_stubs_n.$(O): st_stubs.c $(HEADER) $(CC) $(CFLAGS) $(CPPFLAGS) -I$(ROOTDIR)/asmrun -I$(ROOTDIR)/byterun \ $(SHAREDCCCOMPOPTS) -DNATIVE_CODE \ -DTARGET_$(ARCH) -DMODEL_$(MODEL) -DSYS_$(SYSTEM) \ - $(CCOUTPUT)$@ -c $< + $(OUTPUTOBJ)$@ -c $< partialclean: rm -f *.cm* diff --git a/stdlib/Makefile b/stdlib/Makefile index 48d158c07..1a7263cce 100644 --- a/stdlib/Makefile +++ b/stdlib/Makefile @@ -140,12 +140,12 @@ $(CAMLHEADERS): for suff in '' d i; do \ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) \ -DRUNTIME_NAME='"$(BINDIR)/ocamlrun'$$suff'"' \ - header.c -o tmpheader$(EXE) && \ + header.c $(OUTPUTEXE)tmpheader$(EXE) && \ strip tmpheader$(EXE) && \ mv tmpheader$(EXE) camlheader$$suff && \ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) \ -DRUNTIME_NAME='"$(TARGET_BINDIR)/ocamlrun'$$suff'"' \ - header.c -o tmpheader$(EXE) && \ + header.c $(OUTPUTEXE)tmpheader$(EXE) && \ strip tmpheader$(EXE) && \ mv tmpheader$(EXE) target_camlheader$$suff; \ done && \ @@ -156,25 +156,25 @@ else # Windows # TODO: see whether there is a way to further merge the rules below # with those above -camlheader target_camlheader camlheader_ur: +camlheader target_camlheader camlheader_ur: headernt.c $(CC) -c $(CFLAGS) $(CPPFLAGS) -I../byterun \ - -DRUNTIME_NAME='"ocamlrun"' headernt.c + -DRUNTIME_NAME='"ocamlrun"' $(OUTPUTOBJ)headernt.$(O) $< $(MKEXE) -o tmpheader.exe headernt.$(O) $(EXTRALIBS) rm -f camlheader.exe mv tmpheader.exe camlheader cp camlheader target_camlheader cp camlheader camlheader_ur -camlheaderd target_camlheaderd: +camlheaderd target_camlheaderd: headernt.c $(CC) -c $(CFLAGS) $(CPPFLAGS) -I../byterun \ - -DRUNTIME_NAME='"ocamlrund"' headernt.c + -DRUNTIME_NAME='"ocamlrund"' $(OUTPUTOBJ)headernt.$(O) $< $(MKEXE) -o tmpheader.exe headernt.$(O) $(EXTRALIBS) mv tmpheader.exe camlheaderd cp camlheaderd target_camlheaderd -camlheaderi: +camlheaderi: headernt.c $(CC) -c $(CFLAGS) $(CPPFLAGS) -I../byterun \ - -DRUNTIME_NAME='"ocamlruni"' headernt.c + -DRUNTIME_NAME='"ocamlruni"' $(OUTPUTOBJ)headernt.$(O) $(MKEXE) -o tmpheader.exe headernt.$(O) $(EXTRALIBS) mv tmpheader.exe camlheaderi diff --git a/tools/Makefile b/tools/Makefile index 8c99b0495..fbc873f5c 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -306,15 +306,8 @@ else DEF_SYMBOL_PREFIX = '-Dsymbol_prefix=""' endif -ifeq "$(CCOMPTYPE)" "msvc" -CCOUT = -Fe -else -EMPTY = -CCOUT = -o $(EMPTY) -endif - objinfo_helper$(EXE): objinfo_helper.c ../config/s.h - $(CC) $(CFLAGS) $(CPPFLAGS) $(CCOUT)objinfo_helper$(EXE) \ + $(CC) $(CFLAGS) $(CPPFLAGS) $(OUTPUTEXE)$@ \ $(DEF_SYMBOL_PREFIX) $(LIBBFD_INCLUDE) $< $(LIBBFD_LINK) OBJINFO=../compilerlibs/ocamlcommon.cma \ diff --git a/yacc/Makefile b/yacc/Makefile index fbdf2ab57..6678c9361 100644 --- a/yacc/Makefile +++ b/yacc/Makefile @@ -51,4 +51,4 @@ warshall.$(O): defs.h # also works for .obj files. %.$(O): %.c - $(CC) -c $(CFLAGS) $(CPPFLAGS) $< + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(OUTPUTOBJ)$@ $<