Changes to the MSVC build process and flags (M. Haggag)

This commit is contained in:
jjgarcia 2008-09-17 08:00:12 +00:00
parent 30282ef0e0
commit 46512ecc79
5 changed files with 55 additions and 46 deletions

View file

@ -59,12 +59,7 @@ TAR_DIR = %CD%\ecl-$(ECL_VERSION)
#
CC = cl
MFLAGS = /MD
CFLAGS = /EHsc /DGC_DLL /nologo
LIBS = eclgc.lib eclgmp.lib user32.lib ws2_32.lib shell32.lib
LDFLAGS = /link /nologo /nodefaultlib:libcmt /nodefaultlib:libcmtd /nodefaultlib:libc /nodefaultlib:libd
SHARED_LDFLAGS = /LD
GCFLAGS = nodebug=1
RM = del
RMDIR = rmdir /Q /S
MKDIR = mkdir
@ -74,6 +69,48 @@ MV = move /Y
MSDEV = msdev
MKNSI = makensis.exe
# ==================== Flags ====================
#
# Configuration-specific (Debug/Release) options
#
!if "$(ECL_DEBUG)" != ""
CFLAGS_OPTIMIZE = /Od
CFLAGS_CONFIG = /Zi /D_DEBUG /MDd $(CFLAGS_OPTIMIZE)
LDFLAGS_CONFIG = /debug /nodefaultlib:msvcrt.lib
SHARED_LDFLAGS = /LDd
GCFLAGS =
!else
CFLAGS_OPTIMIZE = /O2
CFLAGS_CONFIG = /DNDEBUG /MD $(CFLAGS_OPTIMIZE)
LDFLAGS_CONFIG = /nodefaultlib:msvcrtd.lib
SHARED_LDFLAGS = /LD
GCFLAGS = nodebug=1
!endif
CFLAGS = /EHsc /DGC_DLL /nologo /D_CRT_SECURE_NO_DEPRECATE $(CFLAGS_CONFIG)
LDFLAGS = /link /nologo /verbose:lib /nodefaultlib:libcmt /nodefaultlib:libcmtd /nodefaultlib:libc /nodefaultlib:libcd $(LDFLAGS_CONFIG)
# Additional configuration for thread support
#
!if "$(ECL_THREADS)" == ""
ENV_EXPORT = cl_env,DATA
!else
ENV_EXPORT = ecl_process_env
CFLAGS = $(CFLAGS) /DECL_THREADS
DEF = ecl-threads.def
!endif
# Additional configuration for Unicode support
#
!if "$(ECL_UNICODE)" != ""
CFLAGS = $(CFLAGS) /DECL_UNICODE
!endif
!MESSAGE C++ compiler flags: $(CFLAGS)
!MESSAGE C++ linker flags: $(LDFLAGS)
# ==================== Where To Install Things ====================
# The default location for installation. Everything is placed in
@ -103,32 +140,6 @@ LIBRARIES =
TARGETS = ecl2$(EXE)
DEF = ecl.def
# Enable debug information
#
!if "$(ECL_DEBUG)" != ""
CFLAGS = /Z7 $(CFLAGS)
LDFLAGS = /Z7 $(LDFLAGS)
SHARED_LDFLAGS = /LDd
#MFLAGS = -MDd
GCFLAGS =
!endif
# Additional configuration for thread support
#
!if "$(ECL_THREADS)" == ""
ENV_EXPORT = cl_env,DATA
!else
ENV_EXPORT = ecl_process_env
CFLAGS = $(CFLAGS) -DECL_THREADS
DEF = ecl-threads.def
!endif
# Additional configuration for Unicode support
#
!if "$(ECL_UNICODE)" != ""
CFLAGS = $(CFLAGS) -DECL_UNICODE
!endif
# Additional modules
#
ECL_MODULES =
@ -162,11 +173,8 @@ ECL_MODULES = $(ECL_MODULES) profile
ECL_FEATURES = (cons :wants-profile $(ECL_FEATURES))
!endif
!MESSAGE $(ECL_MODULES)
!MESSAGE $(ECL_FEATURES)
CFLAGS = $(MFLAGS) $(CFLAGS)
LDFLAGS = $(MFLAGS) $(LDFLAGS)
!MESSAGE ECL Modules: $(ECL_MODULES)
!MESSAGE ECL Features: $(ECL_FEATURES)
# Build rules
#
@ -248,6 +256,7 @@ cmp/load.lsp: $(srcdir)/cmp/load.lsp.in
cmp/cmpdefs.lsp: $(srcdir)/cmp/cmpdefs.lsp Makefile
c\cut "@ECL_CC@" "$(CC)" \
"@CFLAGS@" "$(CFLAGS)" \
"@CFLAGS_OPTIMIZE@" "$(CFLAGS_OPTIMIZE)" \
"@ECL_CFLAGS@" "" \
"@CPPFLAGS@" "" \
"@LDRPATH@" "" \
@ -290,7 +299,7 @@ eclmin.lib: eclgmp.lib eclgc.lib lsp/config.lsp
cd ..
eclgc.lib:
cd gc
$(MAKE) $(GCFLAGS) ECL_THREADS=$(ECL_THREADS) "MFLAGS=$(MFLAGS)" gc.lib
$(MAKE) $(GCFLAGS) ECL_THREADS=$(ECL_THREADS) "CFLAGS_CONFIG=$(CFLAGS_CONFIG)" gc.lib
$(CP) gc.lib ..\eclgc.lib
cd ..
if not exist ecl\gc $(MKDIR) ecl\gc
@ -301,7 +310,7 @@ eclgc.lib:
do $(CP) $(srcdir)\gc\include\%h ecl\gc\%h
eclgmp.lib:
cd gmp
$(MAKE) "MPN_TYPE = $(GMP_TYPE)" "MFLAGS = $(MFLAGS)"
$(MAKE) "MPN_TYPE = $(GMP_TYPE)" "CFLAGS_CONFIG=$(CFLAGS_CONFIG)"
$(CP) gmp.lib ..\eclgmp.lib
$(CP) gmp.h ..\ecl\gmp.h
cd ..

View file

@ -17,17 +17,15 @@ THREADS_OBJ=
THREADS_FLAGS= -DGC_DLL -DGC_BUILD
!endif
MFLAGS = /MD
OBJS= alloc.obj reclaim.obj allchblk.obj misc.obj mach_dep.obj os_dep.obj mark_rts.obj headers.obj mark.obj obj_map.obj blacklst.obj finalize.obj new_hblk.obj dbg_mlc.obj malloc.obj stubborn.obj dyn_load.obj typd_mlc.obj ptr_chck.obj gc_cpp.obj mallocx.obj $(THREADS_OBJ)
all: gc.lib
{$(srcdir)}.c{}.obj:
$(cc) $(MFLAGS) $(cdebug) $(cflags) $(cvars) -I$(srcdir)\include -DSILENT -DALL_INTERIOR_POINTERS -D__STDC__ -DGC_DLL -DGC_BUILD -DLARGE_CONFIG $(THREADS_FLAGS) $< /Fo$*.obj
$(cc) $(cflags) $(CFLAGS_CONFIG) -I$(srcdir)\include -DSILENT -DALL_INTERIOR_POINTERS -D__STDC__ -DGC_DLL -DGC_BUILD -DLARGE_CONFIG $(THREADS_FLAGS) $< /Fo$*.obj
{$(srcdir)\tests}.c{tests}.obj:
$(cc) $(MFLAGS) $(cdebug) $(cflags) $(cvars) -I$(srcdir)\include -DSILENT -DALL_INTERIOR_POINTERS -D__STDC__ -DGC_DLL -DGC_BUILD -DLARGE_CONFIG $(THREADS_FLAGS) $< /Fo$*.obj
$(cc) $(cflags) $(CFLAGS_CONFIG) -I$(srcdir)\include -DSILENT -DALL_INTERIOR_POINTERS -D__STDC__ -DGC_DLL -DGC_BUILD -DLARGE_CONFIG $(THREADS_FLAGS) $< /Fo$*.obj
#.c.obj:
# $(cc) $(cdebug) $(cflags) $(cvars) -Iinclude -DSILENT -DALL_INTERIOR_POINTERS -D__STDC__ -DGC_NOT_DLL -DGC_BUILD $*.c /Fo$*.obj

View file

@ -408,8 +408,7 @@ mpn_p4.lib: msvc-build $(MPN_P4_OBJS)
gmp.lib: mpn_$(MPN_TYPE).lib $(GMP_ALL_OBJS)
link -lib /NOLOGO /OUT:$@ *.obj mpf\*.obj mpz\*.obj mpq\*.obj $(PRINTF_OBJS) $(SCANF_OBJS) mpn_$(MPN_TYPE).lib
MFLAGS = /MD
CFLAGS = /nologo $(MFLAGS) /W3 /EHsc /I "." /I $(srcdir) /I "$(srcdir)\mpn\generic" /D "WIN32" /D "NDEBUG" /D "_LIB" /D "_WIN32" /D "_MBCS"
CFLAGS = $(CFLAGS_CONFIG) /nologo /W3 /EHsc /I "." /I $(srcdir) /I "$(srcdir)\mpn\generic" /D "WIN32" /D "_LIB" /D "_WIN32" /D "_MBCS"
{.\mpn\generic}.c{.\mpn\generic}.obj:
cl -c $(CFLAGS) /Fo$@ $?
@ -490,4 +489,4 @@ clean:
-erase config.h
-erase gmp.h
-erase msvc-build
-erase *.exe *.manifest
-erase *.exe *.manifest

View file

@ -42,6 +42,9 @@ ECL 8.9.0:
- New configuration flag, --without-fpe, to disable floating point exception
code in platforms that have buggy implementations of feenableexcept().
- Changes in the build process of the Microsoft Visual C++ port contributed
by Muhammad Haggag.
* Bugs fixed:
- The optimizer for COERCE might enter an infinite loop for certain

View file

@ -441,7 +441,7 @@ coprocessor).")
(defvar *cc-flags* "@CPPFLAGS@ @CFLAGS@ @ECL_CFLAGS@")
(defvar *cc-optimize* #-msvc "-O"
#+msvc "-O2")
#+msvc "@CFLAGS_OPTIMIZE@")
(defvar *ld-format* #-msvc "~A -o ~S -L~S ~{~S ~} ~@?"
#+msvc "~A -Fe~S~* ~{~S ~} ~@?")