From abb9002e12775ac5c4764f09252650412409ce30 Mon Sep 17 00:00:00 2001 From: Vladimir Vukicevic Date: Sat, 18 Apr 2020 23:07:01 -0700 Subject: [PATCH] Make build work on Windows --- Makefile | 22 ++++++++++++++++++---- wasi-sdk.cmake | 14 ++++++++++---- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 8293c48..86e0419 100644 --- a/Makefile +++ b/Makefile @@ -3,10 +3,24 @@ ROOT_DIR=${CURDIR} LLVM_PROJ_DIR?=$(ROOT_DIR)/src/llvm-project + +# msys needs any /-prefixed arguments, or =/ containing, to turn into // +# because it tries to path-expand the / into the msys root. // escapes this. +SLASHY_SLASH= + +ifeq ($(OS),Windows_NT) +PREFIX?=c:/wasi-sdk +BASH?=bash -c +ifneq (x$(MSYSTEM),x) +SLASHY_SLASH=/ +endif +else PREFIX?=/opt/wasi-sdk +BASH?= +endif -CLANG_VERSION=$(shell ./llvm_version.sh $(LLVM_PROJ_DIR)) -VERSION:=$(shell ./version.sh) +CLANG_VERSION=$(shell $(BASH) ./llvm_version.sh $(LLVM_PROJ_DIR)) +VERSION:=$(shell $(BASH) ./version.sh) DEBUG_PREFIX_MAP=-fdebug-prefix-map=$(ROOT_DIR)=wasisdk://v$(VERSION) default: build @@ -109,7 +123,7 @@ build/libcxx.BUILT: build/llvm.BUILT build/compiler-rt.BUILT build/wasi-libc.BUI cd build/libcxx && cmake -G Ninja $(LIBCXX_CMAKE_FLAGS) \ -DCMAKE_C_FLAGS="$(DEBUG_PREFIX_MAP)" \ -DCMAKE_CXX_FLAGS="$(DEBUG_PREFIX_MAP)" \ - -DLIBCXX_LIBDIR_SUFFIX=/wasm32-wasi \ + -DLIBCXX_LIBDIR_SUFFIX=$(SLASHY_SLASH)/wasm32-wasi \ $(LLVM_PROJ_DIR)/libcxx ninja $(NINJA_FLAGS) -v -C build/libcxx # Do the install. @@ -147,7 +161,7 @@ build/libcxxabi.BUILT: build/libcxx.BUILT build/llvm.BUILT cd build/libcxxabi && cmake -G Ninja $(LIBCXXABI_CMAKE_FLAGS) \ -DCMAKE_C_FLAGS="$(DEBUG_PREFIX_MAP)" \ -DCMAKE_CXX_FLAGS="$(DEBUG_PREFIX_MAP)" \ - -DLIBCXXABI_LIBDIR_SUFFIX=/wasm32-wasi \ + -DLIBCXXABI_LIBDIR_SUFFIX=$(SLASHY_SLASH)/wasm32-wasi \ $(LLVM_PROJ_DIR)/libcxxabi ninja $(NINJA_FLAGS) -v -C build/libcxxabi # Do the install. diff --git a/wasi-sdk.cmake b/wasi-sdk.cmake index 37dd452..e8d41ee 100644 --- a/wasi-sdk.cmake +++ b/wasi-sdk.cmake @@ -8,10 +8,16 @@ set(CMAKE_SYSTEM_VERSION 1) set(CMAKE_SYSTEM_PROCESSOR wasm32) set(triple wasm32-wasi) -set(CMAKE_C_COMPILER ${WASI_SDK_PREFIX}/bin/clang) -set(CMAKE_CXX_COMPILER ${WASI_SDK_PREFIX}/bin/clang++) -set(CMAKE_AR ${WASI_SDK_PREFIX}/bin/llvm-ar CACHE STRING "wasi-sdk build") -set(CMAKE_RANLIB ${WASI_SDK_PREFIX}/bin/llvm-ranlib CACHE STRING "wasi-sdk build") +if(WIN32) + set(WASI_HOST_EXE_SUFFIX ".exe") +else() + set(WASI_HOST_EXE_SUFFIX "") +endif() + +set(CMAKE_C_COMPILER ${WASI_SDK_PREFIX}/bin/clang${WASI_HOST_EXE_SUFFIX}) +set(CMAKE_CXX_COMPILER ${WASI_SDK_PREFIX}/bin/clang++${WASI_HOST_EXE_SUFFIX}) +set(CMAKE_AR ${WASI_SDK_PREFIX}/bin/llvm-ar${WASI_HOST_EXE_SUFFIX} CACHE STRING "wasi-sdk build") +set(CMAKE_RANLIB ${WASI_SDK_PREFIX}/bin/llvm-ranlib${WASI_HOST_EXE_SUFFIX} CACHE STRING "wasi-sdk build") set(CMAKE_C_COMPILER_TARGET ${triple} CACHE STRING "wasi-sdk build") set(CMAKE_CXX_COMPILER_TARGET ${triple} CACHE STRING "wasi-sdk build") set(CMAKE_C_FLAGS "-v" CACHE STRING "wasi-sdk build")