From 46512ecc79f6637ddf1d08a2a63a225fbfaa83f6 Mon Sep 17 00:00:00 2001 From: jjgarcia Date: Wed, 17 Sep 2008 08:00:12 +0000 Subject: [PATCH] Changes to the MSVC build process and flags (M. Haggag) --- msvc/Makefile | 85 +++++++++++++++++++++++++-------------------- msvc/gc/Makefile | 6 ++-- msvc/gmp/Makefile | 5 ++- src/CHANGELOG | 3 ++ src/cmp/cmpdefs.lsp | 2 +- 5 files changed, 55 insertions(+), 46 deletions(-) diff --git a/msvc/Makefile b/msvc/Makefile index f33261f1d..671667e17 100644 --- a/msvc/Makefile +++ b/msvc/Makefile @@ -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 .. diff --git a/msvc/gc/Makefile b/msvc/gc/Makefile index 9625f21ad..cbc8184b6 100644 --- a/msvc/gc/Makefile +++ b/msvc/gc/Makefile @@ -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 diff --git a/msvc/gmp/Makefile b/msvc/gmp/Makefile index 48aafbce6..bac73e8bf 100644 --- a/msvc/gmp/Makefile +++ b/msvc/gmp/Makefile @@ -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 \ No newline at end of file + -erase *.exe *.manifest diff --git a/src/CHANGELOG b/src/CHANGELOG index 7f02556a8..c3e42e54e 100644 --- a/src/CHANGELOG +++ b/src/CHANGELOG @@ -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 diff --git a/src/cmp/cmpdefs.lsp b/src/cmp/cmpdefs.lsp index 2e8b74e9e..42bdf3d88 100644 --- a/src/cmp/cmpdefs.lsp +++ b/src/cmp/cmpdefs.lsp @@ -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 ~} ~@?")