#\r
-# Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
# Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
#\r
# This program and the accompanying materials\r
\r
DEFINE MSFT_ASLPP_FLAGS = /nologo /E /C /FIAutoGen.h\r
DEFINE MSFT_ASLCC_FLAGS = /nologo /c /FIAutoGen.h /TC /Dmain=ReferenceAcpiTable\r
-DEFINE MSFT_ASLDLINK_FLAGS = /NODEFAULTLIB /ENTRY:ReferenceAcpiTable /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER\r
+DEFINE MSFT_ASLDLINK_FLAGS = /NODEFAULTLIB /ENTRY:ReferenceAcpiTable /SUBSYSTEM:CONSOLE\r
\r
DEFINE ICC_WIN_ASLPP_FLAGS = /nologo /E /C /FIAutoGen.h\r
DEFINE ICC_WIN_ASLCC_FLAGS = /nologo /c /FIAutoGen.h /TC /Dmain=ReferenceAcpiTable\r
-DEFINE ICC_WIN_ASLDLINK_FLAGS = /NODEFAULTLIB /ENTRY:ReferenceAcpiTable /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /NODEFAULTLIB:libmmt /NODEFAULTLIB:libirc\r
+DEFINE ICC_WIN_ASLDLINK_FLAGS = /NODEFAULTLIB /ENTRY:ReferenceAcpiTable /SUBSYSTEM:CONSOLE /NODEFAULTLIB:libmmt /NODEFAULTLIB:libirc\r
\r
DEFINE IPHONE_TOOLS = /Developer/Platforms/iPhoneOS.platform/Developer\r
DEFINE RVCT31_TOOLS_PATH = c:/Program Files/ARM/RVCT/Programs/3.1/569/win_32-pentium\r
DEFINE SOURCERY_TOOLS = c:/Program Files/CodeSourcery/Sourcery G++ Lite/bin\r
DEFINE SOURCERY_CYGWIN_TOOLS = /cygdrive/c/Program Files/CodeSourcery/Sourcery G++ Lite/bin\r
\r
+#\r
+# Change to the location clang was built\r
+#\r
+DEFINE CLANG_BIN = /usr/bin/\r
+\r
####################################################################################\r
#\r
# format: TARGET_TOOLCHAIN_ARCH_COMMANDTYPE_ATTRIBUTE = <string>\r
DEFINE GCC44_ALL_CC_FLAGS = -g -fshort-wchar -fno-stack-protector -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -Wno-array-bounds -ffunction-sections -fdata-sections -c -include AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings\r
DEFINE GCC44_IA32_CC_FLAGS = DEF(GCC44_ALL_CC_FLAGS) -m32 -malign-double -D EFI32\r
DEFINE GCC44_X64_CC_FLAGS = DEF(GCC44_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -DNO_BUILTIN_VA_FUNCS -mno-red-zone -Wno-address -mcmodel=large\r
-DEFINE GCC44_IA32_X64_DLINK_COMMON = -nostdlib -n -q --gc-sections\r
+DEFINE GCC44_IA32_X64_DLINK_COMMON = -nostdlib -n -q --gc-sections --script=$(EDK_TOOLS_PATH)/Scripts/gcc4.4-ld-script\r
DEFINE GCC44_IA32_X64_ASLDLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_COMMON) --entry ReferenceAcpiTable -u ReferenceAcpiTable\r
DEFINE GCC44_IA32_X64_DLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_COMMON) --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map\r
-DEFINE GCC44_X64_DLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_FLAGS) -melf_x86_64 --oformat=elf64-x86-64 --script=$(EDK_TOOLS_PATH)/Scripts/gcc4.4-ld-script\r
+DEFINE GCC44_X64_DLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_FLAGS) -melf_x86_64 --oformat=elf64-x86-64\r
DEFINE GCC44_ASM_FLAGS = DEF(GCC_ASM_FLAGS)\r
\r
DEFINE GCC45_IA32_CC_FLAGS = DEF(GCC44_IA32_CC_FLAGS)\r
##################\r
# GCC44 IA32 definitions\r
##################\r
+*_GCC44_IA32_OBJCOPY_PATH = DEF(GCC44_IA32_PREFIX)objcopy\r
*_GCC44_IA32_CC_PATH = DEF(GCC44_IA32_PREFIX)gcc\r
*_GCC44_IA32_SLINK_PATH = DEF(GCC44_IA32_PREFIX)ar\r
*_GCC44_IA32_DLINK_PATH = DEF(GCC44_IA32_PREFIX)ld\r
*_GCC44_IA32_CC_FLAGS = DEF(GCC44_IA32_CC_FLAGS) -Os\r
*_GCC44_IA32_DLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_FLAGS) -m elf_i386 --oformat=elf32-i386\r
*_GCC44_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)\r
+*_GCC44_IA32_OBJCOPY_FLAGS = \r
\r
##################\r
# GCC44 X64 definitions\r
##################\r
+*_GCC44_X64_OBJCOPY_PATH = DEF(GCC44_X64_PREFIX)objcopy\r
*_GCC44_X64_CC_PATH = DEF(GCC44_X64_PREFIX)gcc\r
*_GCC44_X64_SLINK_PATH = DEF(GCC44_X64_PREFIX)ar\r
*_GCC44_X64_DLINK_PATH = DEF(GCC44_X64_PREFIX)ld\r
*_GCC44_X64_CC_FLAGS = DEF(GCC44_X64_CC_FLAGS)\r
*_GCC44_X64_DLINK_FLAGS = DEF(GCC44_X64_DLINK_FLAGS)\r
*_GCC44_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)\r
-\r
+*_GCC44_X64_OBJCOPY_FLAGS = \r
\r
####################################################################################\r
#\r
##################\r
# GCC45 IA32 definitions\r
##################\r
+*_GCC45_IA32_OBJCOPY_PATH = DEF(GCC45_IA32_PREFIX)objcopy\r
*_GCC45_IA32_CC_PATH = DEF(GCC45_IA32_PREFIX)gcc\r
*_GCC45_IA32_SLINK_PATH = DEF(GCC45_IA32_PREFIX)ar\r
*_GCC45_IA32_DLINK_PATH = DEF(GCC45_IA32_PREFIX)ld\r
*_GCC45_IA32_CC_FLAGS = DEF(GCC45_IA32_CC_FLAGS) -Os\r
*_GCC45_IA32_DLINK_FLAGS = DEF(GCC45_IA32_X64_DLINK_FLAGS) -m elf_i386 --oformat=elf32-i386\r
*_GCC45_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)\r
+*_GCC45_IA32_OBJCOPY_FLAGS = \r
\r
##################\r
# GCC45 X64 definitions\r
##################\r
+*_GCC45_X64_OBJCOPY_PATH = DEF(GCC45_X64_PREFIX)objcopy\r
*_GCC45_X64_CC_PATH = DEF(GCC45_X64_PREFIX)gcc\r
*_GCC45_X64_SLINK_PATH = DEF(GCC45_X64_PREFIX)ar\r
*_GCC45_X64_DLINK_PATH = DEF(GCC45_X64_PREFIX)ld\r
*_GCC45_X64_CC_FLAGS = DEF(GCC45_X64_CC_FLAGS)\r
*_GCC45_X64_DLINK_FLAGS = DEF(GCC45_X64_DLINK_FLAGS)\r
*_GCC45_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)\r
-\r
+*_GCC45_X64_OBJCOPY_FLAGS = \r
\r
####################################################################################\r
#\r
RELEASE_XCODE32_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -mthumb-interwork -Oz -mabi=aapcs -mapcs -fno-short-enums -save-temps -combine -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -fomit-frame-pointer -c -include AutoGen.h -fno-stack-protector\r
\r
\r
+####################################################################################\r
+#\r
+# Clang Support for building on Mac OS X\r
+#\r
+####################################################################################\r
+# CLANG - clang that produce Mach-O with EFI x86_64 ABI\r
+*_XCLANG_*_*_FAMILY = GCC\r
+*_XCLANG_*_*_BUILDRULEFAMILY = XCODE\r
+\r
+*_XCLANG_*_ASL_PATH = /usr/bin/iasl\r
+\r
+*_XCLANG_*_MAKE_PATH = make\r
+*_XCLANG_*_DSYMUTIL_PATH = /usr/bin/dsymutil\r
+\r
+ *_*_*_MTOC_PATH = /usr/local/bin/mtoc\r
+\r
+ DEBUG_XCLANG_*_MTOC_FLAGS = -align 0x20 -d $(DEBUG_DIR)/$(MODULE_NAME).dll\r
+RELEASE_XCLANG_*_MTOC_FLAGS = -align 0x20\r
+\r
+\r
+*_XCLANG_*_CC_PATH = DEF(CLANG_BIN)clang\r
+*_XCLANG_*_SLINK_PATH = libtool\r
+*_XCLANG_*_DLINK_PATH = ld\r
+*_XCLANG_*_ASM_PATH = as\r
+*_XCLANG_*_PP_PATH = DEF(CLANG_BIN)clang\r
+*_XCLANG_*_VFRPP_PATH = DEF(CLANG_BIN)clang\r
+*_XCLANG_*_ASL_PATH = iasl\r
+*_XCLANG_*_ASLCC_PATH = DEF(CLANG_BIN)clang\r
+*_XCLANG_*_ASLPP_PATH = DEF(CLANG_BIN)clang\r
+*_XCLANG_*_ASLDLINK_PATH = ld\r
+\r
+####################\r
+# IA-32 definitions\r
+####################\r
+ DEBUG_XCLANG_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map\r
+RELEASE_XCLANG_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x220 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map\r
+*_XCLANG_IA32_SLINK_FLAGS = -static -o\r
+ DEBUG_XCLANG_IA32_ASM_FLAGS = -arch i386 -g\r
+RELEASE_XCLANG_IA32_ASM_FLAGS = -arch i386 \r
+\r
+\r
+ DEBUG_XCLANG_IA32_CC_FLAGS = -arch i386 -c -g -O0 -Wall -Werror -include AutoGen.h -fno-stack-protector -fno-builtin -fshort-wchar -mdynamic-no-pic -mno-sse -mno-mmx -Wno-empty-body -Wno-pointer-sign -Wno-unused-function -Wno-unused-value -Wno-missing-braces -Wno-tautological-compare -Wreturn-type -Wno-unused-variable \r
+RELEASE_XCLANG_IA32_CC_FLAGS = -arch i386 -c -Os -Wall -Werror -include AutoGen.h -fno-stack-protector -fno-builtin -fshort-wchar -mdynamic-no-pic -mno-sse -mno-mmx -Wno-empty-body -Wno-pointer-sign -Wno-unused-function -Wno-unused-value -Wno-missing-braces -Wno-tautological-compare -Wreturn-type -Wno-unused-variable \r
+\r
+\r
+##################\r
+# X64 definitions\r
+##################\r
+ DEBUG_XCLANG_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map\r
+RELEASE_XCLANG_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x220 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map\r
+*_XCLANG_X64_SLINK_FLAGS = -static -o\r
+ DEBUG_XCLANG_X64_ASM_FLAGS = -arch x86_64 -g\r
+RELEASE_XCLANG_X64_ASM_FLAGS = -arch x86_64 \r
+*_XCLANG_*_PP_FLAGS = -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h \r
+*_XCLANG_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE -include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h \r
+\r
+\r
+ DEBUG_XCLANG_X64_CC_FLAGS = -ccc-host-triple x86_64-pc-win32-macho -c -g -O0 -Wall -Werror -include AutoGen.h -fno-stack-protector -fno-builtin -fshort-wchar -mdynamic-no-pic -mno-sse -mno-mmx -Wno-empty-body -Wno-pointer-sign -Wno-unused-function -Wno-unused-value -Wno-missing-braces -Wno-tautological-compare -Wreturn-type -Wno-unused-variable \r
+RELEASE_XCLANG_X64_CC_FLAGS = -ccc-host-triple x86_64-pc-win32-macho -c -Os -Wall -Werror -include AutoGen.h -fno-stack-protector -fno-builtin -fshort-wchar -mdynamic-no-pic -mno-sse -mno-mmx -Wno-empty-body -Wno-pointer-sign -Wno-unused-function -Wno-unused-value -Wno-missing-braces -Wno-tautological-compare -Wreturn-type -Wno-unused-variable \r
+*_XCLANG_*_ASLCC_FLAGS = -x c -save-temps -g -O0 -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -c -include AutoGen.h -mdynamic-no-pic\r
+*_XCLANG_*_ASLDLINK_FLAGS = -e _main -preload -segalign 0x20 -pie -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map\r
+*_XCLANG_*_ASLPP_FLAGS = -x c -E \r
+*_XCLANG_*_ASL_FLAGS =\r
+\r
+\r
####################################################################################\r
#\r
# ARM Tools\r
*_ARMGCC_ARM_VFRPP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h\r
\r
*_ARMGCC_ARM_SLINK_FLAGS = -rc\r
-*_ARMGCC_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) --oformat=elf32-littlearm -nostdlib -u $(IMAGE_ENTRY_POINT) -e $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map\r
-#\r
-# Had to remove --emit-relocs to get compile working. Images don't work correctly (linked at 0, no relocations)\r
-# --emit-relocs\r
-#\r
+*_ARMGCC_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) --oformat=elf32-littlearm --emit-relocs -nostdlib -u $(IMAGE_ENTRY_POINT) -e $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map\r
\r
- DEBUG_ARMGCC_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -mfpu=fpa -mlittle-endian -g -O2 -mabi=aapcs -mapcs -fno-short-enums -save-temps -combine -fsigned-char -fshort-wchar -fno-strict-aliasing -ffunction-sections -fdata-sections -Wall -Werror -Wno-missing-braces -fomit-frame-pointer -c -include AutoGen.h\r
-RELEASE_ARMGCC_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -mfpu=fpa -mlittle-endian -O2 -mabi=aapcs -mapcs -fno-short-enums -save-temps -combine -fsigned-char -fshort-wchar -fno-strict-aliasing -ffunction-sections -fdata-sections -Wall -Werror -Wno-missing-braces -fomit-frame-pointer -c -include AutoGen.h\r
+ DEBUG_ARMGCC_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -mlittle-endian -g -O0 -mabi=aapcs -mapcs -fno-short-enums -save-temps -combine -fsigned-char -fshort-wchar -fno-strict-aliasing -ffunction-sections -fdata-sections -Wall -Werror -Wno-missing-braces -fomit-frame-pointer -c -include AutoGen.h\r
+RELEASE_ARMGCC_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -mlittle-endian -Os -mabi=aapcs -mapcs -fno-short-enums -save-temps -combine -fsigned-char -fshort-wchar -fno-strict-aliasing -ffunction-sections -fdata-sections -Wall -Werror -Wno-missing-braces -fomit-frame-pointer -c -include AutoGen.h\r
\r
#################\r
# ASM 16 linker defintions\r
# Asl Compiler definitions\r
##################\r
*_*_*_ASLCC_FLAGS = /nologo /c /FIAutoGen.h /TC /Dmain=ReferenceAcpiTable\r
-*_*_*_ASLDLINK_FLAGS = /NODEFAULTLIB /ENTRY:ReferenceAcpiTable /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER\r
+*_*_*_ASLDLINK_FLAGS = /NODEFAULTLIB /ENTRY:ReferenceAcpiTable /SUBSYSTEM:CONSOLE\r
*_*_*_ASLPP_FLAGS = /nologo /EP /C\r
*_*_*_ASL_FLAGS =\r
\r