| #!/usr/bin/env python3 |
| # |
| # Copyright 2024 - The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the', help="License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an', help="AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| from pathlib import Path |
| import platform |
| |
| from tasks.task import Task |
| from utils import (CMAKE, WINDOWS_TMP_OBJS_PATH, move_contents, run) |
| |
| |
| class CompileInstallTask(Task): |
| |
| def __init__(self, args, env): |
| super().__init__("CompileInstall") |
| self.out = Path(args.out_dir) |
| self.env = env |
| |
| def do_run(self): |
| # Strip for non-Windows builds |
| target = "install" |
| if platform.system() != "Windows": |
| target += "/strip" |
| |
| # Build |
| if platform.system() == "Windows": |
| try: |
| # Use mkdir() with parents=True and exist_ok=True |
| WINDOWS_TMP_OBJS_PATH.mkdir(parents=True, exist_ok=True) |
| print( |
| f"Directory '{WINDOWS_TMP_OBJS_PATH}' ensured (created or already" |
| " exists)." |
| ) |
| |
| except OSError as e: |
| # Catch potential OS errors (like permission issues) |
| print(f"Error creating directory '{WINDOWS_TMP_OBJS_PATH}': {e}") |
| run( |
| [CMAKE, "--build", WINDOWS_TMP_OBJS_PATH, "--target", target], |
| self.env, |
| "bld", |
| ) |
| move_contents( |
| WINDOWS_TMP_OBJS_PATH, |
| self.out, |
| ) |
| else: |
| run( |
| [CMAKE, "--build", self.out, "--target", target], |
| self.env, |
| "bld", |
| ) |
| return True |