-- Copyright (C) 2015 Michael Alan Dorman -- This file is not part of GNU Emacs. -- This program 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 of the License, or (at your option) any later -- version. -- This program 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 -- this program. If not, see . import Data.Version (Version (Version)) import Distribution.Simple.Utils (cabalVersion) import System.Environment (getArgs) data Mode = GHC | HLint define :: Mode -> String -> String define GHC def = "-D" ++ def define HLint def = "--cpp-define=" ++ def legacyFlags :: Mode -> [String] legacyFlags mode = [define mode "USE_COMPILER_ID"] isLegacyCabal :: Bool isLegacyCabal = cabalVersion < Version [1, 22] [] getMode :: [String] -> Mode getMode ("hlint":_) = HLint getMode _ = GHC main :: IO () main = do args <- getArgs mapM_ putStrLn (flags (getMode args)) where flags mode = if isLegacyCabal then legacyFlags mode else []