Introduce and use the OUTPUTEXE and OUTPUTOBJ build variables

master
Sébastien Hinderer 2017-03-19 10:50:25 +01:00
parent f2d5d60376
commit 3564aade19
14 changed files with 30 additions and 50 deletions

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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

2
configure vendored
View File

@ -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

View File

@ -113,4 +113,4 @@ clean:: partialclean
$(CAMLOPT) -c $(COMPFLAGS) $(OPTCOMPFLAGS) $<
.c.$(O):
$(CC) -c $(CFLAGS) $(CPPFLAGS) $<
$(CC) -c $(CFLAGS) $(CPPFLAGS) $(OUTPUTOBJ)$@ $<

View File

@ -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

View File

@ -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*

View File

@ -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

View File

@ -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 \

View File

@ -51,4 +51,4 @@ warshall.$(O): defs.h
# also works for .obj files.
%.$(O): %.c
$(CC) -c $(CFLAGS) $(CPPFLAGS) $<
$(CC) -c $(CFLAGS) $(CPPFLAGS) $(OUTPUTOBJ)$@ $<