kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

hosted.c (4646B)


      1 #include "os/hosted_internal.h"
      2 
      3 static int hosted_resolve_windows_mingw(const KitOsHostedRequest* req,
      4                                         const KitOsHostedDirs* dirs,
      5                                         KitOsHostedPlan* plan) {
      6   if (dirs->nlibdirs == 0) {
      7     kit_os_hosted_errf(req->host, req->host_user, req->tool,
      8                        "Windows hosted profile requires --sysroot or "
      9                        "KIT_SYSROOT");
     10     return 1;
     11   }
     12   plan->profile_name = "windows-mingw-ucrt";
     13   if (kit_os_hosted_add_incdirs(plan, req->host, req->host_user, dirs) != 0) {
     14     kit_os_hosted_errf(req->host, req->host_user, req->tool, "out of memory");
     15     return 1;
     16   }
     17   if (!req->link_inputs) return 0;
     18   if (kit_os_hosted_add_required_search(
     19           plan->before, &plan->nbefore, KIT_OS_HOSTED_MAX_BEFORE, req, dirs,
     20           "crt2.o", KIT_OS_HOSTED_INPUT_OBJECT) != 0 ||
     21       kit_os_hosted_add_required_search(
     22           plan->before, &plan->nbefore, KIT_OS_HOSTED_MAX_BEFORE, req, dirs,
     23           "crtbegin.o", KIT_OS_HOSTED_INPUT_OBJECT) != 0)
     24     return 1;
     25   if (kit_os_hosted_add_required_search(
     26           plan->after, &plan->nafter, KIT_OS_HOSTED_MAX_AFTER, req, dirs,
     27           "libmingw32.a", KIT_OS_HOSTED_INPUT_ARCHIVE) != 0 ||
     28       kit_os_hosted_add_required_search(
     29           plan->after, &plan->nafter, KIT_OS_HOSTED_MAX_AFTER, req, dirs,
     30           "libmoldname.a", KIT_OS_HOSTED_INPUT_ARCHIVE) != 0 ||
     31       kit_os_hosted_add_required_search(
     32           plan->after, &plan->nafter, KIT_OS_HOSTED_MAX_AFTER, req, dirs,
     33           "libmingwex.a", KIT_OS_HOSTED_INPUT_ARCHIVE) != 0 ||
     34       kit_os_hosted_add_required_search(
     35           plan->after, &plan->nafter, KIT_OS_HOSTED_MAX_AFTER, req, dirs,
     36           "libwinpthread.a", KIT_OS_HOSTED_INPUT_ARCHIVE) != 0 ||
     37       kit_os_hosted_add_required_search(
     38           plan->after, &plan->nafter, KIT_OS_HOSTED_MAX_AFTER, req, dirs,
     39           "libucrt.a", KIT_OS_HOSTED_INPUT_ARCHIVE) != 0 ||
     40       kit_os_hosted_add_required_search(
     41           plan->after, &plan->nafter, KIT_OS_HOSTED_MAX_AFTER, req, dirs,
     42           "libadvapi32.a", KIT_OS_HOSTED_INPUT_ARCHIVE) != 0 ||
     43       kit_os_hosted_add_required_search(
     44           plan->after, &plan->nafter, KIT_OS_HOSTED_MAX_AFTER, req, dirs,
     45           "libshell32.a", KIT_OS_HOSTED_INPUT_ARCHIVE) != 0 ||
     46       kit_os_hosted_add_required_search(
     47           plan->after, &plan->nafter, KIT_OS_HOSTED_MAX_AFTER, req, dirs,
     48           "libuser32.a", KIT_OS_HOSTED_INPUT_ARCHIVE) != 0 ||
     49       kit_os_hosted_add_required_search(
     50           plan->after, &plan->nafter, KIT_OS_HOSTED_MAX_AFTER, req, dirs,
     51           "libkernel32.a", KIT_OS_HOSTED_INPUT_ARCHIVE) != 0 ||
     52       kit_os_hosted_add_required_search(
     53           plan->after, &plan->nafter, KIT_OS_HOSTED_MAX_AFTER, req, dirs,
     54           "libmingw32.a", KIT_OS_HOSTED_INPUT_ARCHIVE) != 0 ||
     55       kit_os_hosted_add_required_search(
     56           plan->after, &plan->nafter, KIT_OS_HOSTED_MAX_AFTER, req, dirs,
     57           "libmoldname.a", KIT_OS_HOSTED_INPUT_ARCHIVE) != 0 ||
     58       kit_os_hosted_add_required_search(
     59           plan->after, &plan->nafter, KIT_OS_HOSTED_MAX_AFTER, req, dirs,
     60           "libmingwex.a", KIT_OS_HOSTED_INPUT_ARCHIVE) != 0 ||
     61       kit_os_hosted_add_required_search(
     62           plan->after, &plan->nafter, KIT_OS_HOSTED_MAX_AFTER, req, dirs,
     63           "libwinpthread.a", KIT_OS_HOSTED_INPUT_ARCHIVE) != 0 ||
     64       kit_os_hosted_add_required_search(
     65           plan->after, &plan->nafter, KIT_OS_HOSTED_MAX_AFTER, req, dirs,
     66           "libucrt.a", KIT_OS_HOSTED_INPUT_ARCHIVE) != 0 ||
     67       kit_os_hosted_add_required_search(
     68           plan->after, &plan->nafter, KIT_OS_HOSTED_MAX_AFTER, req, dirs,
     69           "libkernel32.a", KIT_OS_HOSTED_INPUT_ARCHIVE) != 0)
     70     return 1;
     71   if (kit_os_hosted_add_required_search(
     72           plan->final, &plan->nfinal, KIT_OS_HOSTED_MAX_FINAL, req, dirs,
     73           "crtend.o", KIT_OS_HOSTED_INPUT_OBJECT) != 0)
     74     return 1;
     75   return 0;
     76 }
     77 
     78 static int hosted_sysroot_layout_windows(KitOsHostedDirs* dirs,
     79                                          KitTargetSpec target,
     80                                          const char* sysroot) {
     81   (void)target;
     82   if (kit_os_hosted_dirs_add_inc_join(dirs, sysroot, "include") != 0 ||
     83       kit_os_hosted_dirs_add_lib_join(dirs, sysroot, "lib") != 0 ||
     84       kit_os_hosted_dirs_add_lib_join(dirs, sysroot, "lib/windows") != 0)
     85     return 1;
     86   return 0;
     87 }
     88 
     89 const KitOsHostedOps kit_os_windows_hosted_ops = {
     90     .obj = KIT_OBJ_COFF,
     91     .default_profile = 1,
     92     .needs_sysroot_libdir = 1,
     93     .resolve = hosted_resolve_windows_mingw,
     94     .sysroot_layout = hosted_sysroot_layout_windows,
     95 };