; Processor-independent options for Darwin.

; Copyright (C) 2005-2018 Free Software Foundation, Inc.
;
; This file is part of GCC.
;
; GCC is free software; you can redistribute it and/or modify it under
; the terms of the GNU General Public License as published by the Free
; Software Foundation; either version 3, or (at your option) any later
; version.
;
; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
; WARRANTY; without even the implied warranty of MERCHANTABILITY or
; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
; for more details.
;
; You should have received a copy of the GNU General Public License
; along with GCC; see the file COPYING3.  If not see
; <http://www.gnu.org/licenses/>.

; Various linker options have a -Z added so that they can get to specs
; processing without interference.  Note that an option name with a
; prefix that matches another option name, that also takes an
; argument, being mapped to a -Z linker option, needs to be modified
; so the prefix is different, otherwise a '*' after the shorter option
; will match with the longer one.

all_load
Driver Alias(Zall_load)

allowable_client
Driver Separate Alias(Zallowable_client)

arch
Driver RejectNegative Separate

arch_errors_fatal
Driver Alias(Zarch_errors_fatal)

asm_macosx_version_min=
Driver RejectNegative Joined

bind_at_load
Driver Alias(Zbind_at_load)

bundle
Driver Alias(Zbundle)

bundle_loader
Driver Separate Alias(Zbundle_loader)

dead_strip
Driver Alias(Zdead_strip)

dependency-file
C ObjC C++ ObjC++ Separate Alias(MF) MissingArgError(missing filename after %qs)

dylib_file
Driver Separate Alias(Zdylib_file)

dylinker
Driver

dynamic
Driver Alias(Zdynamic)

dynamiclib
Driver Alias(Zdynamiclib)

exported_symbols_list
Driver Separate Alias(Zexported_symbols_list)

filelist
Driver RejectNegative Separate

findirect-virtual-calls
Driver RejectNegative

flat_namespace
Driver RejectNegative Alias(Zflat_namespace)

force_cpusubtype_ALL
Driver RejectNegative Alias(Zforce_cpusubtype_ALL)

force_flat_namespace
Driver RejectNegative Alias(Zforce_flat_namespace)

framework
Driver RejectNegative Separate

fterminated-vtables
Driver RejectNegative

gfull
Driver RejectNegative

gused
Driver RejectNegative

headerpad_max_install_names
Driver

image_base
Driver Separate Alias(Zimage_base)

init
Driver Separate Alias(Zinit)

install_name
Driver Separate Alias(Zinstall_name)

keep_private_externs
Driver

mconstant-cfstrings
Target Report Var(darwin_constant_cfstrings) Init(1)
Generate compile-time CFString objects.

multi_module
Driver RejectNegative Alias(Zmulti_module)

multiply_defined
Driver RejectNegative Separate Alias(Zmultiply_defined)

multiply_defined_unused
Driver RejectNegative Separate Alias(Zmultiplydefinedunused)

no_dead_strip_inits_and_terms
Driver Alias(Zno_dead_strip_inits_and_terms)

nofixprebinding
Driver

nomultidefs
Driver

noprebind
Driver

noseglinkedit
Driver

object
Driver

prebind
Driver

prebind_all_twolevel_modules
Driver

preload
Driver

private_bundle
Driver

pthread
Driver

rdynamic
Driver

seg_addr_table
Driver Separate Alias(Zseg_addr_table)

seg_addr_table_filename
Driver Separate Alias(Zfn_seg_addr_table_filename)

segaddr
Driver Separate Args(2) Alias(Zsegaddr)

seglinkedit
Driver

segs_read_only_addr
Driver Separate Alias(Zsegs_read_only_addr)

segs_read_write_addr
Driver Separate Alias(Zsegs_read_write_addr)

single_module
Driver Alias(Zsingle_module)

twolevel_namespace
Driver

twolevel_namespace_hints
Driver

umbrella
Driver Separate Alias(Zumbrella)

unexported_symbols_list
Driver Separate Alias(Zunexported_symbols_list)

weak_reference_mismatches
Driver Separate Alias(Zweak_reference_mismatches)

whatsloaded
Driver

whyload
Driver

y
Driver Joined

Mach
Driver

Wnonportable-cfstrings
Target Report Var(darwin_warn_nonportable_cfstrings) Init(1) Warning
Warn if constant CFString objects contain non-portable characters.

; Use new-style pic stubs if this is true, x86 only so far.
matt-stubs
Target Report Var(darwin_macho_att_stub) Init(1)
Generate AT&T-style stubs for Mach-O.

mdynamic-no-pic
Target Common Report Mask(MACHO_DYNAMIC_NO_PIC)
Generate code suitable for executables (NOT shared libs).

mfix-and-continue
Target Report Var(darwin_fix_and_continue)
Generate code suitable for fast turn around debugging.

; The Init here is for the convenience of GCC developers, so that cc1
; and cc1plus don't crash if no -mmacosx-version-min is passed.  The
; driver will always pass a -mmacosx-version-min, so in normal use the
; Init is never used.
mmacosx-version-min=
Target Joined Report Var(darwin_macosx_version_min) Init(DEF_MIN_OSX_VERSION)
The earliest MacOS X version on which this program will run.

mone-byte-bool
Target RejectNegative Report Var(darwin_one_byte_bool)
Set sizeof(bool) to 1.

fapple-kext
Target Report C++ Var(flag_apple_kext)
Generate code for darwin loadable kernel extensions.

mkernel
Target Report Var(flag_mkernel)
Generate code for the kernel or loadable kernel extensions.

iframework
Target RejectNegative C ObjC C++ ObjC++ Joined Separate 
-iframework <dir>	Add <dir> to the end of the system framework include path.

X
Driver

Zall_load
Driver

Zallowable_client
Driver Separate

Zarch_errors_fatal
Driver

Zbind_at_load
Driver

Zbundle
Driver

Zbundle_loader
Driver Separate

Zdead_strip
Driver

Zdylib_file
Driver Separate

Zdynamic
Driver

Zdynamiclib
Driver

Zexported_symbols_list
Driver Separate

Zfn_seg_addr_table_filename
Driver Separate

Zflat_namespace
Driver

Zforce_cpusubtype_ALL
Driver

Zforce_flat_namespace
Driver

Zimage_base
Driver Separate

Zinit
Driver Separate

Zinstall_name
Driver Separate

Zmulti_module
Driver

Zmultiply_defined
Driver Separate

Zmultiplydefinedunused
Driver Separate

Zno_dead_strip_inits_and_terms
Driver

Zseg_addr_table
Driver Separate

Zsegaddr
Driver Separate Args(2)

Zsegs_read_only_addr
Driver Separate

Zsegs_read_write_addr
Driver Separate

Zsingle_module
Driver

Zumbrella
Driver Separate

Zunexported_symbols_list
Driver Separate

Zweak_reference_mismatches
Driver Separate

client_name
Driver Separate

compatibility_version
Driver Separate

current_version
Driver Separate

dylinker_install_name
Driver Separate

pagezero_size
Driver Separate

read_only_relocs
Driver Separate

sectalign
Driver Separate Args(3)

sectcreate
Driver Separate Args(3)

sectobjectsymbols
Driver Separate Args(2)

sectorder
Driver Separate Args(3)

seg1addr
Driver Separate

segcreate
Driver Separate Args(3)

segprot
Driver Separate Args(3)

segs_read_only_addr
Driver Separate

segs_read_write_addr
Driver Separate

sub_library
Driver Separate

sub_umbrella
Driver Separate

; Certain aspects of code-gen may be improved / adjusted if the version of ld64
; is sufficiently modern.
mtarget-linker
Target RejectNegative Joined Separate Report Var(darwin_target_linker) Init(LD64_VERSION)
The version of ld64 in use for this toolchain.

undefined
Driver Separate
