diff options
Diffstat (limited to 'BaseTools/Source/C/Makefiles')
| -rw-r--r-- | BaseTools/Source/C/Makefiles/NmakeSubdirs.bat | 80 | ||||
| -rw-r--r-- | BaseTools/Source/C/Makefiles/NmakeSubdirs.py | 332 | ||||
| -rw-r--r-- | BaseTools/Source/C/Makefiles/app.makefile | 44 | ||||
| -rw-r--r-- | BaseTools/Source/C/Makefiles/footer.makefile | 60 | ||||
| -rw-r--r-- | BaseTools/Source/C/Makefiles/header.makefile | 294 | ||||
| -rw-r--r-- | BaseTools/Source/C/Makefiles/lib.makefile | 28 | ||||
| -rw-r--r-- | BaseTools/Source/C/Makefiles/ms.app | 56 | ||||
| -rw-r--r-- | BaseTools/Source/C/Makefiles/ms.common | 140 | ||||
| -rw-r--r-- | BaseTools/Source/C/Makefiles/ms.lib | 50 | ||||
| -rw-r--r-- | BaseTools/Source/C/Makefiles/ms.rule | 40 |
10 files changed, 562 insertions, 562 deletions
diff --git a/BaseTools/Source/C/Makefiles/NmakeSubdirs.bat b/BaseTools/Source/C/Makefiles/NmakeSubdirs.bat index 2ea3cf8a5f..ad18128162 100644 --- a/BaseTools/Source/C/Makefiles/NmakeSubdirs.bat +++ b/BaseTools/Source/C/Makefiles/NmakeSubdirs.bat @@ -1,40 +1,40 @@ -@REM ## @file
-@REM # Makefile
-@REM #
-@REM # Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
-@REM # SPDX-License-Identifier: BSD-2-Clause-Patent
-@REM #
-
-@echo off
-setlocal
-set TOOL_ERROR=0
-SET NMAKE_COMMAND=%1
-SHIFT
-
-:loop
-if "%1"=="" goto success
-
-ECHO Building %1
-pushd %1
-nmake %NMAKE_COMMAND%
-if ERRORLEVEL 1 (
- set /A TOOL_ERROR= %TOOL_ERROR% + %ERRORLEVEL%
- goto error
-)
-ECHO %1 built successfully (%NMAKE_COMMAND%)
-ECHO.
-shift
-popd
-goto loop
-
-:success
-goto exit
-
-:error
-popd
-set /A TOOL_ERROR=%TOOL_ERROR%+%ERRORLEVEL%
-ECHO Error while making %1!
-VERIFY OTHER 2>NUL
-
-:exit
-exit /B %TOOL_ERROR%
+@REM ## @file +@REM # Makefile +@REM # +@REM # Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR> +@REM # SPDX-License-Identifier: BSD-2-Clause-Patent +@REM # + +@echo off +setlocal +set TOOL_ERROR=0 +SET NMAKE_COMMAND=%1 +SHIFT + +:loop +if "%1"=="" goto success + +ECHO Building %1 +pushd %1 +nmake %NMAKE_COMMAND% +if ERRORLEVEL 1 ( + set /A TOOL_ERROR= %TOOL_ERROR% + %ERRORLEVEL% + goto error +) +ECHO %1 built successfully (%NMAKE_COMMAND%) +ECHO. +shift +popd +goto loop + +:success +goto exit + +:error +popd +set /A TOOL_ERROR=%TOOL_ERROR%+%ERRORLEVEL% +ECHO Error while making %1! +VERIFY OTHER 2>NUL + +:exit +exit /B %TOOL_ERROR% diff --git a/BaseTools/Source/C/Makefiles/NmakeSubdirs.py b/BaseTools/Source/C/Makefiles/NmakeSubdirs.py index 7860c040af..6c64d2d0e9 100644 --- a/BaseTools/Source/C/Makefiles/NmakeSubdirs.py +++ b/BaseTools/Source/C/Makefiles/NmakeSubdirs.py @@ -1,166 +1,166 @@ -# @file NmakeSubdirs.py
-# This script support parallel build for nmake in windows environment.
-# It supports Python2.x and Python3.x both.
-#
-# Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-
-#
-# Import Modules
-#
-
-from __future__ import print_function
-import argparse
-import threading
-import time
-import os
-import subprocess
-import multiprocessing
-import copy
-import sys
-__prog__ = 'NmakeSubdirs'
-__version__ = '%s Version %s' % (__prog__, '0.10 ')
-__copyright__ = 'Copyright (c) 2018, Intel Corporation. All rights reserved.'
-__description__ = 'Replace for NmakeSubdirs.bat in windows ,support parallel build for nmake.\n'
-
-cpu_count = multiprocessing.cpu_count()
-output_lock = threading.Lock()
-def RunCommand(WorkDir=None, *Args, **kwargs):
- if WorkDir is None:
- WorkDir = os.curdir
- if "stderr" not in kwargs:
- kwargs["stderr"] = subprocess.STDOUT
- if "stdout" not in kwargs:
- kwargs["stdout"] = subprocess.PIPE
- p = subprocess.Popen(Args, cwd=WorkDir, stderr=kwargs["stderr"], stdout=kwargs["stdout"])
- stdout, stderr = p.communicate()
- message = ""
- if stdout is not None:
- message = stdout.decode(errors='ignore') #for compatibility in python 2 and 3
-
- if p.returncode != 0:
- raise RuntimeError("Error while execute command \'{0}\' in direcotry {1}\n{2}".format(" ".join(Args), WorkDir, message))
-
- output_lock.acquire(True)
- print("execute command \"{0}\" in directory {1}".format(" ".join(Args), WorkDir))
- try:
- print(message)
- except:
- pass
- output_lock.release()
-
- return p.returncode, stdout
-
-class TaskUnit(object):
- def __init__(self, func, args, kwargs):
- self.func = func
- self.args = args
- self.kwargs = kwargs
-
- def __eq__(self, other):
- return id(self).__eq__(id(other))
-
- def run(self):
- return self.func(*self.args, **self.kwargs)
-
- def __str__(self):
- para = list(self.args)
- para.extend("{0}={1}".format(k, v)for k, v in self.kwargs.items())
-
- return "{0}({1})".format(self.func.__name__, ",".join(para))
-
-class ThreadControl(object):
-
- def __init__(self, maxthread):
- self._processNum = maxthread
- self.pending = []
- self.running = []
- self.pendingLock = threading.Lock()
- self.runningLock = threading.Lock()
- self.error = False
- self.errorLock = threading.Lock()
- self.errorMsg = "errorMsg"
-
- def addTask(self, func, *args, **kwargs):
- self.pending.append(TaskUnit(func, args, kwargs))
-
- def waitComplete(self):
- self._schedule.join()
-
- def startSchedule(self):
- self._schedule = threading.Thread(target=self.Schedule)
- self._schedule.start()
-
- def Schedule(self):
- for i in range(self._processNum):
- task = threading.Thread(target=self.startTask)
- task.daemon = False
- self.running.append(task)
-
- self.runningLock.acquire(True)
- for thread in self.running:
- thread.start()
- self.runningLock.release()
-
- while len(self.running) > 0:
- time.sleep(0.1)
- if self.error:
- print("subprocess not exit successfully")
- print(self.errorMsg)
-
- def startTask(self):
- while True:
- if self.error:
- break
- self.pendingLock.acquire(True)
- if len(self.pending) == 0:
- self.pendingLock.release()
- break
- task = self.pending.pop(0)
- self.pendingLock.release()
- try:
- task.run()
- except RuntimeError as e:
- if self.error: break
- self.errorLock.acquire(True)
- self.error = True
- self.errorMsg = str(e)
- time.sleep(0.1)
- self.errorLock.release()
- break
-
- self.runningLock.acquire(True)
- self.running.remove(threading.current_thread())
- self.runningLock.release()
-
-def Run():
- curdir = os.path.abspath(os.curdir)
- if len(args.subdirs) == 1:
- args.jobs = 1
- if args.jobs == 1:
- try:
- for dir in args.subdirs:
- RunCommand(os.path.join(curdir, dir), "nmake", args.target, stdout=sys.stdout, stderr=subprocess.STDOUT)
- except RuntimeError:
- exit(1)
- else:
- controller = ThreadControl(args.jobs)
- for dir in args.subdirs:
- controller.addTask(RunCommand, os.path.join(curdir, dir), "nmake", args.target)
- controller.startSchedule()
- controller.waitComplete()
- if controller.error:
- exit(1)
-
-if __name__ == "__main__":
- parser = argparse.ArgumentParser(prog=__prog__, description=__description__ + __copyright__, conflict_handler='resolve')
-
- parser.add_argument("target", help="the target for nmake")
- parser.add_argument("subdirs", nargs="+", help="the relative dir path of makefile")
- parser.add_argument("--jobs", type=int, dest="jobs", default=cpu_count, help="thread number")
- parser.add_argument('--version', action='version', version=__version__)
- args = parser.parse_args()
- Run()
-
+# @file NmakeSubdirs.py +# This script support parallel build for nmake in windows environment. +# It supports Python2.x and Python3.x both. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +# +# Import Modules +# + +from __future__ import print_function +import argparse +import threading +import time +import os +import subprocess +import multiprocessing +import copy +import sys +__prog__ = 'NmakeSubdirs' +__version__ = '%s Version %s' % (__prog__, '0.10 ') +__copyright__ = 'Copyright (c) 2018, Intel Corporation. All rights reserved.' +__description__ = 'Replace for NmakeSubdirs.bat in windows ,support parallel build for nmake.\n' + +cpu_count = multiprocessing.cpu_count() +output_lock = threading.Lock() +def RunCommand(WorkDir=None, *Args, **kwargs): + if WorkDir is None: + WorkDir = os.curdir + if "stderr" not in kwargs: + kwargs["stderr"] = subprocess.STDOUT + if "stdout" not in kwargs: + kwargs["stdout"] = subprocess.PIPE + p = subprocess.Popen(Args, cwd=WorkDir, stderr=kwargs["stderr"], stdout=kwargs["stdout"]) + stdout, stderr = p.communicate() + message = "" + if stdout is not None: + message = stdout.decode(errors='ignore') #for compatibility in python 2 and 3 + + if p.returncode != 0: + raise RuntimeError("Error while execute command \'{0}\' in direcotry {1}\n{2}".format(" ".join(Args), WorkDir, message)) + + output_lock.acquire(True) + print("execute command \"{0}\" in directory {1}".format(" ".join(Args), WorkDir)) + try: + print(message) + except: + pass + output_lock.release() + + return p.returncode, stdout + +class TaskUnit(object): + def __init__(self, func, args, kwargs): + self.func = func + self.args = args + self.kwargs = kwargs + + def __eq__(self, other): + return id(self).__eq__(id(other)) + + def run(self): + return self.func(*self.args, **self.kwargs) + + def __str__(self): + para = list(self.args) + para.extend("{0}={1}".format(k, v)for k, v in self.kwargs.items()) + + return "{0}({1})".format(self.func.__name__, ",".join(para)) + +class ThreadControl(object): + + def __init__(self, maxthread): + self._processNum = maxthread + self.pending = [] + self.running = [] + self.pendingLock = threading.Lock() + self.runningLock = threading.Lock() + self.error = False + self.errorLock = threading.Lock() + self.errorMsg = "errorMsg" + + def addTask(self, func, *args, **kwargs): + self.pending.append(TaskUnit(func, args, kwargs)) + + def waitComplete(self): + self._schedule.join() + + def startSchedule(self): + self._schedule = threading.Thread(target=self.Schedule) + self._schedule.start() + + def Schedule(self): + for i in range(self._processNum): + task = threading.Thread(target=self.startTask) + task.daemon = False + self.running.append(task) + + self.runningLock.acquire(True) + for thread in self.running: + thread.start() + self.runningLock.release() + + while len(self.running) > 0: + time.sleep(0.1) + if self.error: + print("subprocess not exit successfully") + print(self.errorMsg) + + def startTask(self): + while True: + if self.error: + break + self.pendingLock.acquire(True) + if len(self.pending) == 0: + self.pendingLock.release() + break + task = self.pending.pop(0) + self.pendingLock.release() + try: + task.run() + except RuntimeError as e: + if self.error: break + self.errorLock.acquire(True) + self.error = True + self.errorMsg = str(e) + time.sleep(0.1) + self.errorLock.release() + break + + self.runningLock.acquire(True) + self.running.remove(threading.current_thread()) + self.runningLock.release() + +def Run(): + curdir = os.path.abspath(os.curdir) + if len(args.subdirs) == 1: + args.jobs = 1 + if args.jobs == 1: + try: + for dir in args.subdirs: + RunCommand(os.path.join(curdir, dir), "nmake", args.target, stdout=sys.stdout, stderr=subprocess.STDOUT) + except RuntimeError: + exit(1) + else: + controller = ThreadControl(args.jobs) + for dir in args.subdirs: + controller.addTask(RunCommand, os.path.join(curdir, dir), "nmake", args.target) + controller.startSchedule() + controller.waitComplete() + if controller.error: + exit(1) + +if __name__ == "__main__": + parser = argparse.ArgumentParser(prog=__prog__, description=__description__ + __copyright__, conflict_handler='resolve') + + parser.add_argument("target", help="the target for nmake") + parser.add_argument("subdirs", nargs="+", help="the relative dir path of makefile") + parser.add_argument("--jobs", type=int, dest="jobs", default=cpu_count, help="thread number") + parser.add_argument('--version', action='version', version=__version__) + args = parser.parse_args() + Run() + diff --git a/BaseTools/Source/C/Makefiles/app.makefile b/BaseTools/Source/C/Makefiles/app.makefile index 506343a6e0..426e0c3a29 100644 --- a/BaseTools/Source/C/Makefiles/app.makefile +++ b/BaseTools/Source/C/Makefiles/app.makefile @@ -1,22 +1,22 @@ -## @file
-# Makefiles
-#
-# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-
-MAKEROOT ?= ../..
-
-include $(MAKEROOT)/Makefiles/header.makefile
-
-APPLICATION = $(MAKEROOT)/bin/$(APPNAME)
-
-.PHONY:all
-all: $(MAKEROOT)/bin $(APPLICATION)
-
-$(APPLICATION): $(OBJECTS)
- $(LINKER) -o $(APPLICATION) $(LDFLAGS) $(OBJECTS) -L$(MAKEROOT)/libs $(LIBS)
-
-$(OBJECTS): $(MAKEROOT)/Include/Common/BuildVersion.h
-
-include $(MAKEROOT)/Makefiles/footer.makefile
+## @file +# Makefiles +# +# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR> +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +MAKEROOT ?= ../.. + +include $(MAKEROOT)/Makefiles/header.makefile + +APPLICATION = $(MAKEROOT)/bin/$(APPNAME) + +.PHONY:all +all: $(MAKEROOT)/bin $(APPLICATION) + +$(APPLICATION): $(OBJECTS) + $(LINKER) -o $(APPLICATION) $(LDFLAGS) $(OBJECTS) -L$(MAKEROOT)/libs $(LIBS) + +$(OBJECTS): $(MAKEROOT)/Include/Common/BuildVersion.h + +include $(MAKEROOT)/Makefiles/footer.makefile diff --git a/BaseTools/Source/C/Makefiles/footer.makefile b/BaseTools/Source/C/Makefiles/footer.makefile index 7546da8cf5..bd641593cb 100644 --- a/BaseTools/Source/C/Makefiles/footer.makefile +++ b/BaseTools/Source/C/Makefiles/footer.makefile @@ -1,30 +1,30 @@ -## @file
-# Makefile
-#
-# Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-
-DEPFILES = $(OBJECTS:%.o=%.d)
-
-$(MAKEROOT)/libs-$(HOST_ARCH):
- mkdir -p $(MAKEROOT)/libs-$(HOST_ARCH)
-
-.PHONY: install
-install: $(MAKEROOT)/libs-$(HOST_ARCH) $(LIBRARY)
- cp $(LIBRARY) $(MAKEROOT)/libs-$(HOST_ARCH)
-
-$(LIBRARY): $(OBJECTS)
- $(AR) crs $@ $^
-
-%.o : %.c
- $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
-
-%.o : %.cpp
- $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@
-
-.PHONY: clean
-clean:
- @rm -f $(OBJECTS) $(LIBRARY) $(DEPFILES)
-
--include $(DEPFILES)
+## @file +# Makefile +# +# Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR> +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +DEPFILES = $(OBJECTS:%.o=%.d) + +$(MAKEROOT)/libs-$(HOST_ARCH): + mkdir -p $(MAKEROOT)/libs-$(HOST_ARCH) + +.PHONY: install +install: $(MAKEROOT)/libs-$(HOST_ARCH) $(LIBRARY) + cp $(LIBRARY) $(MAKEROOT)/libs-$(HOST_ARCH) + +$(LIBRARY): $(OBJECTS) + $(AR) crs $@ $^ + +%.o : %.c + $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ + +%.o : %.cpp + $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@ + +.PHONY: clean +clean: + @rm -f $(OBJECTS) $(LIBRARY) $(DEPFILES) + +-include $(DEPFILES) diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile index d369908a09..b9727e2758 100644 --- a/BaseTools/Source/C/Makefiles/header.makefile +++ b/BaseTools/Source/C/Makefiles/header.makefile @@ -1,147 +1,147 @@ -## @file
-#
-# The makefile can be invoked with
-# HOST_ARCH = x86_64 or x64 for EM64T build
-# HOST_ARCH = ia32 or IA32 for IA32 build
-# HOST_ARCH = Arm or ARM for ARM build
-#
-# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-
-EDK2_PATH ?= $(MAKEROOT)/../../..
-
-ifndef HOST_ARCH
- #
- # If HOST_ARCH is not defined, then we use 'uname -m' to attempt
- # try to figure out the appropriate HOST_ARCH.
- #
- uname_m = $(shell uname -m)
- $(info Attempting to detect HOST_ARCH from 'uname -m': $(uname_m))
- ifneq (,$(strip $(filter $(uname_m), x86_64 amd64)))
- HOST_ARCH=X64
- endif
- ifeq ($(patsubst i%86,IA32,$(uname_m)),IA32)
- HOST_ARCH=IA32
- endif
- ifneq (,$(findstring aarch64,$(uname_m)))
- HOST_ARCH=AARCH64
- else ifneq (,$(findstring arm64,$(uname_m)))
- HOST_ARCH=AARCH64
- else ifneq (,$(findstring arm,$(uname_m)))
- HOST_ARCH=ARM
- endif
- ifneq (,$(findstring riscv64,$(uname_m)))
- HOST_ARCH=RISCV64
- endif
- ifneq (,$(findstring loongarch64,$(uname_m)))
- HOST_ARCH=LOONGARCH64
- endif
- ifndef HOST_ARCH
- $(info Could not detected HOST_ARCH from uname results)
- $(error HOST_ARCH is not defined!)
- endif
- $(info Detected HOST_ARCH of $(HOST_ARCH) using uname.)
-endif
-
-CYGWIN:=$(findstring CYGWIN, $(shell uname -s))
-LINUX:=$(findstring Linux, $(shell uname -s))
-DARWIN:=$(findstring Darwin, $(shell uname -s))
-CLANG:=$(shell $(CC) --version | grep clang)
-ifneq ($(CLANG),)
-CC ?= $(CLANG_BIN)clang
-CXX ?= $(CLANG_BIN)clang++
-AS ?= $(CLANG_BIN)clang
-AR ?= $(CLANG_BIN)llvm-ar
-LD ?= $(CLANG_BIN)llvm-ld
-else ifeq ($(origin CC),default)
-CC = gcc
-CXX = g++
-AS = gcc
-AR = ar
-LD = ld
-endif
-LINKER ?= $(CC)
-ifeq ($(HOST_ARCH), IA32)
-ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/Ia32/
-
-else ifeq ($(HOST_ARCH), X64)
-ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/X64/
-
-else ifeq ($(HOST_ARCH), ARM)
-ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/Arm/
-
-else ifeq ($(HOST_ARCH), AARCH64)
-ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/AArch64/
-
-else ifeq ($(HOST_ARCH), RISCV64)
-ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/RiscV64/
-
-else ifeq ($(HOST_ARCH), LOONGARCH64)
-ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/LoongArch64/
-
-else
-$(error Bad HOST_ARCH)
-endif
-
-INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKEROOT)/Include/ -I $(MAKEROOT)/Include/IndustryStandard -I $(MAKEROOT)/Common/ -I .. -I . $(ARCH_INCLUDE)
-INCLUDE += -I $(EDK2_PATH)/MdePkg/Include
-CPPFLAGS = $(INCLUDE)
-
-# keep EXTRA_OPTFLAGS last
-BUILD_OPTFLAGS = -O2 $(EXTRA_OPTFLAGS)
-
-ifeq ($(DARWIN),Darwin)
-# assume clang or clang compatible flags on OS X
-CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror \
--Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -g
-else
-ifneq ($(CLANG),)
-CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
--fno-delete-null-pointer-checks -Wall -Werror \
--Wno-deprecated-declarations -Wno-self-assign \
--Wno-unused-result -nostdlib -g
-else
-CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \
--fno-delete-null-pointer-checks -Wall -Werror \
--Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict \
--Wno-unused-result -nostdlib -g
-endif
-endif
-ifneq ($(CLANG),)
-LDFLAGS =
-CXXFLAGS = -Wno-deprecated-register -Wno-unused-result -std=c++14
-else
-LDFLAGS =
-CXXFLAGS = -Wno-unused-result
-endif
-ifeq ($(HOST_ARCH), IA32)
-#
-# Snow Leopard is a 32-bit and 64-bit environment. uname -m returns i386, but gcc defaults
-# to x86_64. So make sure tools match uname -m. You can manual have a 64-bit kernal on Snow Leopard
-# so only do this is uname -m returns i386.
-#
-ifeq ($(DARWIN),Darwin)
- CFLAGS += -arch i386
- CPPFLAGS += -arch i386
- LDFLAGS += -arch i386
-endif
-endif
-
-# keep BUILD_OPTFLAGS last
-CFLAGS += $(BUILD_OPTFLAGS)
-CXXFLAGS += $(BUILD_OPTFLAGS)
-
-# keep EXTRA_LDFLAGS last
-LDFLAGS += $(EXTRA_LDFLAGS)
-
-.PHONY: all
-.PHONY: install
-.PHONY: clean
-
-all:
-
-$(MAKEROOT)/libs:
- mkdir $(MAKEROOT)/libs
-
-$(MAKEROOT)/bin:
- mkdir $(MAKEROOT)/bin
+## @file +# +# The makefile can be invoked with +# HOST_ARCH = x86_64 or x64 for EM64T build +# HOST_ARCH = ia32 or IA32 for IA32 build +# HOST_ARCH = Arm or ARM for ARM build +# +# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR> +# SPDX-License-Identifier: BSD-2-Clause-Patent + +EDK2_PATH ?= $(MAKEROOT)/../../.. + +ifndef HOST_ARCH + # + # If HOST_ARCH is not defined, then we use 'uname -m' to attempt + # try to figure out the appropriate HOST_ARCH. + # + uname_m = $(shell uname -m) + $(info Attempting to detect HOST_ARCH from 'uname -m': $(uname_m)) + ifneq (,$(strip $(filter $(uname_m), x86_64 amd64))) + HOST_ARCH=X64 + endif + ifeq ($(patsubst i%86,IA32,$(uname_m)),IA32) + HOST_ARCH=IA32 + endif + ifneq (,$(findstring aarch64,$(uname_m))) + HOST_ARCH=AARCH64 + else ifneq (,$(findstring arm64,$(uname_m))) + HOST_ARCH=AARCH64 + else ifneq (,$(findstring arm,$(uname_m))) + HOST_ARCH=ARM + endif + ifneq (,$(findstring riscv64,$(uname_m))) + HOST_ARCH=RISCV64 + endif + ifneq (,$(findstring loongarch64,$(uname_m))) + HOST_ARCH=LOONGARCH64 + endif + ifndef HOST_ARCH + $(info Could not detected HOST_ARCH from uname results) + $(error HOST_ARCH is not defined!) + endif + $(info Detected HOST_ARCH of $(HOST_ARCH) using uname.) +endif + +CYGWIN:=$(findstring CYGWIN, $(shell uname -s)) +LINUX:=$(findstring Linux, $(shell uname -s)) +DARWIN:=$(findstring Darwin, $(shell uname -s)) +CLANG:=$(shell $(CC) --version | grep clang) +ifneq ($(CLANG),) +CC ?= $(CLANG_BIN)clang +CXX ?= $(CLANG_BIN)clang++ +AS ?= $(CLANG_BIN)clang +AR ?= $(CLANG_BIN)llvm-ar +LD ?= $(CLANG_BIN)llvm-ld +else ifeq ($(origin CC),default) +CC = gcc +CXX = g++ +AS = gcc +AR = ar +LD = ld +endif +LINKER ?= $(CC) +ifeq ($(HOST_ARCH), IA32) +ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/Ia32/ + +else ifeq ($(HOST_ARCH), X64) +ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/X64/ + +else ifeq ($(HOST_ARCH), ARM) +ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/Arm/ + +else ifeq ($(HOST_ARCH), AARCH64) +ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/AArch64/ + +else ifeq ($(HOST_ARCH), RISCV64) +ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/RiscV64/ + +else ifeq ($(HOST_ARCH), LOONGARCH64) +ARCH_INCLUDE = -I $(EDK2_PATH)/MdePkg/Include/LoongArch64/ + +else +$(error Bad HOST_ARCH) +endif + +INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKEROOT)/Include/ -I $(MAKEROOT)/Include/IndustryStandard -I $(MAKEROOT)/Common/ -I .. -I . $(ARCH_INCLUDE) +INCLUDE += -I $(EDK2_PATH)/MdePkg/Include +CPPFLAGS = $(INCLUDE) + +# keep EXTRA_OPTFLAGS last +BUILD_OPTFLAGS = -O2 $(EXTRA_OPTFLAGS) + +ifeq ($(DARWIN),Darwin) +# assume clang or clang compatible flags on OS X +CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -Wall -Werror \ +-Wno-deprecated-declarations -Wno-self-assign -Wno-unused-result -nostdlib -g +else +ifneq ($(CLANG),) +CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \ +-fno-delete-null-pointer-checks -Wall -Werror \ +-Wno-deprecated-declarations -Wno-self-assign \ +-Wno-unused-result -nostdlib -g +else +CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fwrapv \ +-fno-delete-null-pointer-checks -Wall -Werror \ +-Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict \ +-Wno-unused-result -nostdlib -g +endif +endif +ifneq ($(CLANG),) +LDFLAGS = +CXXFLAGS = -Wno-deprecated-register -Wno-unused-result -std=c++14 +else +LDFLAGS = +CXXFLAGS = -Wno-unused-result +endif +ifeq ($(HOST_ARCH), IA32) +# +# Snow Leopard is a 32-bit and 64-bit environment. uname -m returns i386, but gcc defaults +# to x86_64. So make sure tools match uname -m. You can manual have a 64-bit kernal on Snow Leopard +# so only do this is uname -m returns i386. +# +ifeq ($(DARWIN),Darwin) + CFLAGS += -arch i386 + CPPFLAGS += -arch i386 + LDFLAGS += -arch i386 +endif +endif + +# keep BUILD_OPTFLAGS last +CFLAGS += $(BUILD_OPTFLAGS) +CXXFLAGS += $(BUILD_OPTFLAGS) + +# keep EXTRA_LDFLAGS last +LDFLAGS += $(EXTRA_LDFLAGS) + +.PHONY: all +.PHONY: install +.PHONY: clean + +all: + +$(MAKEROOT)/libs: + mkdir $(MAKEROOT)/libs + +$(MAKEROOT)/bin: + mkdir $(MAKEROOT)/bin diff --git a/BaseTools/Source/C/Makefiles/lib.makefile b/BaseTools/Source/C/Makefiles/lib.makefile index 2577c15380..ea6bf24763 100644 --- a/BaseTools/Source/C/Makefiles/lib.makefile +++ b/BaseTools/Source/C/Makefiles/lib.makefile @@ -1,14 +1,14 @@ -## @file
-# Makefiles
-#
-# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-
-include $(MAKEROOT)/Makefiles/header.makefile
-
-LIBRARY = $(MAKEROOT)/libs/lib$(LIBNAME).a
-
-all: $(MAKEROOT)/libs $(LIBRARY)
-
-include $(MAKEROOT)/Makefiles/footer.makefile
+## @file +# Makefiles +# +# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR> +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +include $(MAKEROOT)/Makefiles/header.makefile + +LIBRARY = $(MAKEROOT)/libs/lib$(LIBNAME).a + +all: $(MAKEROOT)/libs $(LIBRARY) + +include $(MAKEROOT)/Makefiles/footer.makefile diff --git a/BaseTools/Source/C/Makefiles/ms.app b/BaseTools/Source/C/Makefiles/ms.app index aecae37396..46079129bc 100644 --- a/BaseTools/Source/C/Makefiles/ms.app +++ b/BaseTools/Source/C/Makefiles/ms.app @@ -1,28 +1,28 @@ -## @file
-# Makefile
-#
-# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-
-APPLICATION = $(BIN_PATH)\$(APPNAME).exe
-
-all: $(APPLICATION)
-
-$(APPLICATION) : $(OBJECTS)
- -@if not exist $(BIN_PATH) mkdir $(BIN_PATH)
- $(LD) /nologo /debug /OPT:REF /OPT:ICF=10 /incremental:no /nodefaultlib:libc.lib /out:$@ $(LIBS) $**
-
-$(OBJECTS) : $(SOURCE_PATH)\Include\Common\BuildVersion.h
-
-.PHONY:clean
-.PHONY:cleanall
-
-clean:
- del /f /q $(OBJECTS) *.pdb > nul
-
-cleanall:
- del /f /q $(OBJECTS) $(APPLICATION) *.pdb $(BIN_PATH)\$(APPNAME).pdb > nul
-
-!INCLUDE $(SOURCE_PATH)\Makefiles\ms.rule
-
+## @file +# Makefile +# +# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR> +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +APPLICATION = $(BIN_PATH)\$(APPNAME).exe + +all: $(APPLICATION) + +$(APPLICATION) : $(OBJECTS) + -@if not exist $(BIN_PATH) mkdir $(BIN_PATH) + $(LD) /nologo /debug /OPT:REF /OPT:ICF=10 /incremental:no /nodefaultlib:libc.lib /out:$@ $(LIBS) $** + +$(OBJECTS) : $(SOURCE_PATH)\Include\Common\BuildVersion.h + +.PHONY:clean +.PHONY:cleanall + +clean: + del /f /q $(OBJECTS) *.pdb > nul + +cleanall: + del /f /q $(OBJECTS) $(APPLICATION) *.pdb $(BIN_PATH)\$(APPNAME).pdb > nul + +!INCLUDE $(SOURCE_PATH)\Makefiles\ms.rule + diff --git a/BaseTools/Source/C/Makefiles/ms.common b/BaseTools/Source/C/Makefiles/ms.common index fe7a59c280..fb94837daf 100644 --- a/BaseTools/Source/C/Makefiles/ms.common +++ b/BaseTools/Source/C/Makefiles/ms.common @@ -1,70 +1,70 @@ -## @file
-# Makefile
-#
-# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-
-!IFNDEF EDK_TOOLS_PATH
-!ERROR "Please set your EDK_TOOLS_PATH!"
-!ENDIF
-
-!IFNDEF BASE_TOOLS_PATH
-!ERROR "BASE_TOOLS_PATH is not set! Please run build_tools.bat at first!"
-!ENDIF
-
-!IFNDEF HOST_ARCH
-HOST_ARCH = IA32
-!ENDIF
-
-!IFNDEF MAKEROOT
-MAKEROOT = $(SOURCE_PATH)
-!ENDIF
-
-!IFNDEF EDK2_PATH
-EDK2_PATH = $(MAKEROOT)\..\..\..
-!ENDIF
-
-MAKE = nmake -nologo
-
-# DOS del command doesn't support ":\\" in the file path, such as j:\\BaseTools. Convert ":\\" to ":\"
-BASE_TOOLS_PATH = $(BASE_TOOLS_PATH::\\=:\)
-EDK_TOOLS_PATH = $(EDK_TOOLS_PATH::\\=:\)
-
-SOURCE_PATH = $(BASE_TOOLS_PATH)\Source\C
-BIN_PATH = $(BASE_TOOLS_PATH)\Bin
-LIB_PATH = $(BASE_TOOLS_PATH)\Lib
-
-SYS_BIN_PATH=$(EDK_TOOLS_PATH)\Bin
-SYS_LIB_PATH=$(EDK_TOOLS_PATH)\Lib
-
-!IF "$(HOST_ARCH)"=="IA32"
-ARCH_INCLUDE = $(EDK2_PATH)\MdePkg\Include\Ia32
-BIN_PATH = $(BASE_TOOLS_PATH)\Bin\Win32
-LIB_PATH = $(BASE_TOOLS_PATH)\Lib\Win32
-SYS_BIN_PATH = $(EDK_TOOLS_PATH)\Bin\Win32
-SYS_LIB_PATH = $(EDK_TOOLS_PATH)\Lib\Win32
-
-!ELSEIF "$(HOST_ARCH)"=="X64"
-ARCH_INCLUDE = $(EDK2_PATH)\MdePkg\Include\X64
-BIN_PATH = $(BASE_TOOLS_PATH)\Bin\Win64
-LIB_PATH = $(BASE_TOOLS_PATH)\Lib\Win64
-SYS_BIN_PATH = $(EDK_TOOLS_PATH)\Bin\Win64
-SYS_LIB_PATH = $(EDK_TOOLS_PATH)\Lib\Win64
-
-!ELSE
-!ERROR "Bad HOST_ARCH"
-!ENDIF
-
-CC = cl.exe
-CXX = cl.exe
-AS = ml.exe
-AR = lib.exe
-LD = link.exe
-LINKER = $(LD)
-
-INC = $(INC) -I . -I $(SOURCE_PATH)\Include -I $(ARCH_INCLUDE) -I $(SOURCE_PATH)\Common
-INC = $(INC) -I $(EDK2_PATH)\MdePkg\Include
-
-CFLAGS = $(CFLAGS) /nologo /Z7 /c /O2 /MT /W4 /WX /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE
-CPPFLAGS = $(CPPFLAGS) /EHsc /nologo /Z7 /c /O2 /MT /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE
+## @file +# Makefile +# +# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR> +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +!IFNDEF EDK_TOOLS_PATH +!ERROR "Please set your EDK_TOOLS_PATH!" +!ENDIF + +!IFNDEF BASE_TOOLS_PATH +!ERROR "BASE_TOOLS_PATH is not set! Please run build_tools.bat at first!" +!ENDIF + +!IFNDEF HOST_ARCH +HOST_ARCH = IA32 +!ENDIF + +!IFNDEF MAKEROOT +MAKEROOT = $(SOURCE_PATH) +!ENDIF + +!IFNDEF EDK2_PATH +EDK2_PATH = $(MAKEROOT)\..\..\.. +!ENDIF + +MAKE = nmake -nologo + +# DOS del command doesn't support ":\\" in the file path, such as j:\\BaseTools. Convert ":\\" to ":\" +BASE_TOOLS_PATH = $(BASE_TOOLS_PATH::\\=:\) +EDK_TOOLS_PATH = $(EDK_TOOLS_PATH::\\=:\) + +SOURCE_PATH = $(BASE_TOOLS_PATH)\Source\C +BIN_PATH = $(BASE_TOOLS_PATH)\Bin +LIB_PATH = $(BASE_TOOLS_PATH)\Lib + +SYS_BIN_PATH=$(EDK_TOOLS_PATH)\Bin +SYS_LIB_PATH=$(EDK_TOOLS_PATH)\Lib + +!IF "$(HOST_ARCH)"=="IA32" +ARCH_INCLUDE = $(EDK2_PATH)\MdePkg\Include\Ia32 +BIN_PATH = $(BASE_TOOLS_PATH)\Bin\Win32 +LIB_PATH = $(BASE_TOOLS_PATH)\Lib\Win32 +SYS_BIN_PATH = $(EDK_TOOLS_PATH)\Bin\Win32 +SYS_LIB_PATH = $(EDK_TOOLS_PATH)\Lib\Win32 + +!ELSEIF "$(HOST_ARCH)"=="X64" +ARCH_INCLUDE = $(EDK2_PATH)\MdePkg\Include\X64 +BIN_PATH = $(BASE_TOOLS_PATH)\Bin\Win64 +LIB_PATH = $(BASE_TOOLS_PATH)\Lib\Win64 +SYS_BIN_PATH = $(EDK_TOOLS_PATH)\Bin\Win64 +SYS_LIB_PATH = $(EDK_TOOLS_PATH)\Lib\Win64 + +!ELSE +!ERROR "Bad HOST_ARCH" +!ENDIF + +CC = cl.exe +CXX = cl.exe +AS = ml.exe +AR = lib.exe +LD = link.exe +LINKER = $(LD) + +INC = $(INC) -I . -I $(SOURCE_PATH)\Include -I $(ARCH_INCLUDE) -I $(SOURCE_PATH)\Common +INC = $(INC) -I $(EDK2_PATH)\MdePkg\Include + +CFLAGS = $(CFLAGS) /nologo /Z7 /c /O2 /MT /W4 /WX /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE +CPPFLAGS = $(CPPFLAGS) /EHsc /nologo /Z7 /c /O2 /MT /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE diff --git a/BaseTools/Source/C/Makefiles/ms.lib b/BaseTools/Source/C/Makefiles/ms.lib index ebb516535c..6b61fa4782 100644 --- a/BaseTools/Source/C/Makefiles/ms.lib +++ b/BaseTools/Source/C/Makefiles/ms.lib @@ -1,25 +1,25 @@ -## @file
-#
-# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-
-!INCLUDE ..\Makefiles\ms.common
-
-LIBRARY = $(LIB_PATH)\$(LIBNAME).lib
-
-all: $(LIBRARY)
-
-$(LIBRARY) : $(OBJECTS)
- -@if not exist $(LIB_PATH) mkdir $(LIB_PATH)
- $(AR) /nologo /out:$@ $**
-
-.PHONY:clean
-clean:
- del /f /q $(OBJECTS) *.pdb > nul
-
-.PHONY:cleanall
-cleanall:
- del /f /q $(OBJECTS) $(LIBRARY) *.pdb > nul
-
-!INCLUDE ..\Makefiles\ms.rule
-
+## @file +# +# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR> +# SPDX-License-Identifier: BSD-2-Clause-Patent + +!INCLUDE ..\Makefiles\ms.common + +LIBRARY = $(LIB_PATH)\$(LIBNAME).lib + +all: $(LIBRARY) + +$(LIBRARY) : $(OBJECTS) + -@if not exist $(LIB_PATH) mkdir $(LIB_PATH) + $(AR) /nologo /out:$@ $** + +.PHONY:clean +clean: + del /f /q $(OBJECTS) *.pdb > nul + +.PHONY:cleanall +cleanall: + del /f /q $(OBJECTS) $(LIBRARY) *.pdb > nul + +!INCLUDE ..\Makefiles\ms.rule + diff --git a/BaseTools/Source/C/Makefiles/ms.rule b/BaseTools/Source/C/Makefiles/ms.rule index 7d53316c43..ba34eabde8 100644 --- a/BaseTools/Source/C/Makefiles/ms.rule +++ b/BaseTools/Source/C/Makefiles/ms.rule @@ -1,20 +1,20 @@ -## @file
-# Makefile
-#
-# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-
-#DEPFILES = $(OBJECTS:%.o=%.d)
-
-.c.obj :
- $(CC) -c $(CFLAGS) $(INC) $< -Fo$@
-
-.S.obj :
- $(AS) -c $(ASFLAGS) $< -Fo$@
-
-.cpp.obj :
- $(CXX) -c $(CPPFLAGS) $(INC) $< -Fo$@
-
-#-include $(DEPFILES)
-
+## @file +# Makefile +# +# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR> +# SPDX-License-Identifier: BSD-2-Clause-Patent +# + +#DEPFILES = $(OBJECTS:%.o=%.d) + +.c.obj : + $(CC) -c $(CFLAGS) $(INC) $< -Fo$@ + +.S.obj : + $(AS) -c $(ASFLAGS) $< -Fo$@ + +.cpp.obj : + $(CXX) -c $(CPPFLAGS) $(INC) $< -Fo$@ + +#-include $(DEPFILES) + |
