Commit c560ae86 authored by wolfgang's avatar wolfgang
Browse files

[project @ 2005-01-31 05:27:14 by wolfgang]

Reorganise handling of -fPIC flags passed to C compiler.
The flags expected by gcc differ only slightly per platform
(basically depending whether you are on a Mac or not), we don't need
separate cases for every processor.

TODO: Display an error message for platforms where -fPIC -fvia-C is not
      supported.
parent d121c0cf
......@@ -13,6 +13,7 @@ module DriverFlags (
addCmdlineHCInclude,
buildStaticHscOpts,
machdepCCOpts,
picCCOpts,
processArgs, OptKind(..), -- for DriverMkDepend only
) where
......@@ -711,23 +712,33 @@ machdepCCOpts dflags
-- Disable Apple's precompiling preprocessor. It's a great thing
-- for "normal" programs, but it doesn't support register variable
-- declarations.
= return ( [], ["-no-cpp-precomp"] )
#else
= return ( [], [] )
#endif
picCCOpts dflags
#if darwin_TARGET_OS
-- Apple prefers to do things the other way round.
-- PIC is on by default.
-- -mdynamic-no-pic:
-- Turn off PIC code generation to save space and time.
-- Turn off PIC code generation.
-- -fno-common:
-- Don't generate "common" symbols - these are unwanted
-- in dynamic libraries.
= if opt_PIC
then return ( ["-no-cpp-precomp", "-fno-common"],
["-fno-common"] )
else return ( ["-no-cpp-precomp", "-mdynamic-no-pic"],
["-mdynamic-no-pic"] )
#elif powerpc_TARGET_ARCH
| opt_PIC
= return ( ["-fPIC"], ["-fPIC"] )
| otherwise
= return ( [], [] )
| opt_PIC
= return ["-fno-common"]
| otherwise
= return ["-mdynamic-no-pic"]
#elif mingw32_TARGET_OS
-- no -fPIC for Windows
= return []
#else
| opt_PIC
= return ["-fPIC"]
| otherwise
= return []
#endif
-----------------------------------------------------------------------------
......
......@@ -765,6 +765,7 @@ runPhase cc_phase todo dflags basename suff input_fn get_output_fn maybe_loc
(cmdline_include_paths ++ pkg_include_dirs)
(md_c_flags, md_regd_c_flags) <- machdepCCOpts dflags
pic_c_flags <- picCCOpts dflags
let verb = getVerbFlag dflags
......@@ -795,6 +796,7 @@ runPhase cc_phase todo dflags basename suff input_fn get_output_fn maybe_loc
]
++ map SysTools.Option (
md_c_flags
++ pic_c_flags
++ (if hcc && mangle
then md_regd_c_flags
else [])
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment