diff --git a/chc/cmdline/ParseManager.py b/chc/cmdline/ParseManager.py index 8472c50..9e1b9f0 100644 --- a/chc/cmdline/ParseManager.py +++ b/chc/cmdline/ParseManager.py @@ -102,7 +102,7 @@ def __init__( self._verbose = verbose # compile to 32 bit or 64 bit platform (default 64 bit) self._tgtplatform = tgtplatform - if not (self.tgtplatform in ["-m64", "-m32"]): + if not (self.tgtplatform in ["", "-m64", "-m32"]): print( "Warning: invalid target platform: " + self.tgtplatform @@ -252,8 +252,11 @@ def preprocess_file_with_cc( "-fno-inline", "-fno-builtin", "-E", - "-g", - self.tgtplatform, + "-g" + ] + if self.tgtplatform: + cmd.append(self.tgtplatform) + cmd += [ "-o", ifilename, cfilename, @@ -317,6 +320,8 @@ def get_platform_index(self, cmd: List[str]) -> int: return -1 def set_platform(self, cmd: List[str]) -> None: + if not self.tgtplatform: + return index = self.get_platform_index(cmd) if index >= 0: platform = cmd[index] diff --git a/chc/cmdline/c_file/cfileutil.py b/chc/cmdline/c_file/cfileutil.py index 0075824..025213f 100644 --- a/chc/cmdline/c_file/cfileutil.py +++ b/chc/cmdline/c_file/cfileutil.py @@ -121,6 +121,7 @@ def cfile_parse_file(args: argparse.Namespace) -> NoReturn: pcfilename: str = os.path.abspath(args.filename) opttgtpath: Optional[str] = args.tgtpath keep_system_includes: bool = args.keep_system_includes + tgtplatform: str = args.target_platform loglevel: str = args.loglevel logfilename: Optional[str] = args.logfilename logfilemode: str = args.logfilemode @@ -159,7 +160,11 @@ def cfile_parse_file(args: argparse.Namespace) -> NoReturn: chklogger.logger.info("Target path: %s", targetpath) parsemanager = ParseManager( - projectpath, projectname, targetpath, keep_system_includes=keep_system_includes) + projectpath, + projectname, + targetpath, + keep_system_includes=keep_system_includes, + tgtplatform=tgtplatform) parsemanager.remove_semantics() parsemanager.initialize_paths() diff --git a/chc/cmdline/c_project/cprojectutil.py b/chc/cmdline/c_project/cprojectutil.py index b268c25..00b3f24 100644 --- a/chc/cmdline/c_project/cprojectutil.py +++ b/chc/cmdline/c_project/cprojectutil.py @@ -118,6 +118,7 @@ def cproject_parse_project(args: argparse.Namespace) -> NoReturn: projectname: str = args.projectname opttgtpath: Optional[str] = args.tgtpath keep_system_includes: bool = args.keep_system_includes + tgtplatform: str = args.target_platform loglevel: str = args.loglevel logfilename: Optional[str] = args.logfilename logfilemode: str = args.logfilemode @@ -168,7 +169,8 @@ def cproject_parse_project(args: argparse.Namespace) -> NoReturn: projectpath, projectname, targetpath, - keep_system_includes=keep_system_includes) + keep_system_includes=keep_system_includes, + tgtplatform=tgtplatform) parsemanager.remove_semantics() parsemanager.initialize_paths() exitcode = parsemanager.parse_with_ccommands(compilecommands, copyfiles=True) diff --git a/chc/cmdline/chkc b/chc/cmdline/chkc index 5848e0c..52dd862 100755 --- a/chc/cmdline/chkc +++ b/chc/cmdline/chkc @@ -663,6 +663,10 @@ def parse() -> argparse.Namespace: "--keep-system-includes", action="store_true", help="do not filter out functions from files with absolute file names") + cfileparse.add_argument( + "--target-platform", + default="-m64", + help="target platform argument for build system") cfileparse.add_argument( "--loglevel", "-log", choices=UL.LogLevel.options(), @@ -1491,6 +1495,10 @@ def parse() -> argparse.Namespace: "--keep-system-includes", action="store_true", help="don't filter out functions from files with absolute filenames") + cprojectparse.add_argument( + "--target-platform", + default="-m64", + help="target platform argument for build system") cprojectparse.add_argument( "--loglevel", "-log", choices=UL.LogLevel.options(),