If 'nmake RELEASE=1' is run, then release compiler and linker flags should be used.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jordan Justen <[email protected]> --- Makefile | 12 +++++++++--- Source/C/Makefile | 10 ++++++++-- Source/C/Makefiles/NmakeSubdirs.bat | 9 ++++++++- Source/C/Makefiles/ms.app | 5 +++++ Source/C/Makefiles/ms.common | 5 +++++ 5 files changed, 35 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 294c532..c15af75 100644 --- a/Makefile +++ b/Makefile @@ -15,14 +15,20 @@ SUBDIRS = Source\C Source\Python all: c python +!IFDEF RELEASE +BUILD_TYPE = RELEASE +!ELSE +BUILD_TYPE = +!ENDIF + c : - @Source\C\Makefiles\NmakeSubdirs.bat all Source\C + @Source\C\Makefiles\NmakeSubdirs.bat all $(BUILD_TYPE) Source\C python: - @Source\C\Makefiles\NmakeSubdirs.bat all Source\Python + @Source\C\Makefiles\NmakeSubdirs.bat all $(BUILD_TYPE) Source\Python subdirs: $(SUBDIRS) - @Source\C\Makefiles\NmakeSubdirs.bat all $** + @Source\C\Makefiles\NmakeSubdirs.bat all $(BUILD_TYPE) $** .PHONY: clean clean: diff --git a/Source/C/Makefile b/Source/C/Makefile index 789e06f..bf3cfb4 100644 --- a/Source/C/Makefile +++ b/Source/C/Makefile @@ -35,13 +35,19 @@ APPLICATIONS = \ all: libs apps install +!IFDEF RELEASE +BUILD_TYPE = RELEASE +!ELSE +BUILD_TYPE = +!ENDIF + libs: $(LIBRARIES) @echo. @echo ###################### @echo # Build libraries @echo ###################### @if not exist $(LIB_PATH) mkdir $(LIB_PATH) - @Makefiles\NmakeSubdirs.bat all $** + @Makefiles\NmakeSubdirs.bat all $(BUILD_TYPE) $** apps: $(APPLICATIONS) @echo. @@ -49,7 +55,7 @@ apps: $(APPLICATIONS) @echo # Build executables @echo ###################### @if not exist $(BIN_PATH) mkdir $(BIN_PATH) - @Makefiles\NmakeSubdirs.bat all $** + @Makefiles\NmakeSubdirs.bat all $(BUILD_TYPE) $** install: $(LIB_PATH) $(BIN_PATH) @echo. diff --git a/Source/C/Makefiles/NmakeSubdirs.bat b/Source/C/Makefiles/NmakeSubdirs.bat index fac89bd..d33e1ff 100755 --- a/Source/C/Makefiles/NmakeSubdirs.bat +++ b/Source/C/Makefiles/NmakeSubdirs.bat @@ -15,12 +15,19 @@ setlocal SET NMAKE_COMMAND=%1 SHIFT +if x%1 == xRELEASE ( + SET BUILD_TYPE=RELEASE= + SHIFT +) else ( + SET BUILD_TYPE= +) + :loop if "%1"=="" goto success ECHO Building %1 pushd %1 -nmake %NMAKE_COMMAND% +nmake %BUILD_TYPE% %NMAKE_COMMAND% if ERRORLEVEL 1 goto error ECHO %1 built successfully (%NMAKE_COMMAND%) ECHO. diff --git a/Source/C/Makefiles/ms.app b/Source/C/Makefiles/ms.app index 8595724..fb49957 100644 --- a/Source/C/Makefiles/ms.app +++ b/Source/C/Makefiles/ms.app @@ -16,7 +16,12 @@ APPLICATION = $(BIN_PATH)\$(APPNAME).exe all: $(APPLICATION) LD_FLAGS = /incremental:no /nodefaultlib:libc.lib + +!IFDEF RELEASE +LD_FLAGS = /release /opt:ref,icf /merge:.rdata=.text $(LD_FLAGS) +!ELSE LD_FLAGS = /debug $(LD_FLAGS) +!ENDIF $(APPLICATION) : $(OBJECTS) -@if not exist $(BIN_PATH) mkdir $(BIN_PATH) diff --git a/Source/C/Makefiles/ms.common b/Source/C/Makefiles/ms.common index 0749f93..039d33a 100644 --- a/Source/C/Makefiles/ms.common +++ b/Source/C/Makefiles/ms.common @@ -56,7 +56,12 @@ LINKER = $(LD) INC = -I . -I $(SOURCE_PATH)\Include -I $(ARCH_INCLUDE) -I $(SOURCE_PATH)\Common $(INC) C_CPP_FLAGS = /nologo /c /Zi /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE + +!IFDEF RELEASE +C_CPP_FLAGS = $(C_CPP_FLAGS) /O1 /GS- /Oi- /MT +!ELSE C_CPP_FLAGS = $(C_CPP_FLAGS) /Od /RTC1 /MTd /D _DEBUG +!ENDIF CFLAGS = $(CFLAGS) $(C_CPP_FLAGS) /W4 /WX CPPFLAGS = $(CPPFLAGS) $(C_CPP_FLAGS) /EHsc -- 1.9.2 ------------------------------------------------------------------------------ Is your legacy SCM system holding you back? Join Perforce May 7 to find out: • 3 signs your SCM is hindering your productivity • Requirements for releasing software faster • Expert tips and advice for migrating your SCM now http://p.sf.net/sfu/perforce _______________________________________________ edk2-buildtools-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-buildtools-devel
