Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemathinc
GitHub Repository: sagemathinc/wapython
Path: blob/main/core/build/Makefile-vars
1067 views
# This is a Makefile of common definitions that is used by other packages that
# involve building upstream code from source.

# The directory containing the package where the makefile is run, e.g., core/bzip2
CWD:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))

# The directory containing all of the packages.
PACKAGES = ${CWD}/..

# Where the upstream sources are cached
UPSTREAM = ${CWD}/../../upstream/sources

# Binaries useful for building, e.g., node, zig, cowasm
BIN = ${CWD}/../../bin



# Include the BIN directory at front of path.
# See https://stackoverflow.com/questions/8941110/how-i-could-add-dir-to-path-in-makefile
export PATH := $(BIN):$(PATH)
export SHELL := env PATH='$(PATH)' /bin/bash

# Where sources, e.g., patches, customizations, new code, etc., are stored for this build.
SRC = ${CWD}/src

# Temporary path where we do the build.  These files can always be deleted without impacting
# the artifact in dist.
BUILD = ${CWD}/build
BUILD_NATIVE = ${BUILD}/native
BUILD_WASM = ${BUILD}/wasm

# Where we put the result of the build, e.g., --prefix=${DIST_WASM}
DIST = ${CWD}/dist
DIST_NATIVE = ${DIST}/native
DIST_WASM = ${DIST}/wasm

UNAME_S := $(shell uname -s)
UNAME_M := $(shell uname -m)


# This target below also works around a zig bug -- the native build fails
# with "ld.lld: error: undefined symbol: fcntl64".
# See https://github.com/ziglang/zig/issues/5882 and https://github.com/ziglang/zig/issues/9485
# NOTE: we use musl instead of gnu.2.31, since musl works on CoCalc (a massive messy huge Linux
# environment), wheras gnu.2.31 only worked on several minimal linux envs.  Plus it's pretty cool
# that we can use musl and it works!

ifeq ($(UNAME_S),Linux)
    # On Linux we explicitly always build for musl
    # See https://github.com/ziglang/zig/issues/12797
	ZIG_NATIVE_CFLAGS="--target=$(UNAME_M)-linux-musl"
	ZIG_NATIVE_CFLAGS_GNU="--target=$(UNAME_M)-linux-gnu.2.31"
else
    ZIG_NATIVE_CFLAGS=""
    ZIG_NATIVE_CFLAGS_GNU=""
endif