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:
&#149; 3 signs your SCM is hindering your productivity
&#149; Requirements for releasing software faster
&#149; 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

Reply via email to