121 lines
4.2 KiB
Plaintext
121 lines
4.2 KiB
Plaintext
############################################################################
|
|
# libs/libm/openlibm/Make.defs
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
# Licensed to the Apache Software Foundation (ASF) under one or more
|
|
# contributor license agreements. See the NOTICE file distributed with
|
|
# this work for additional information regarding copyright ownership. The
|
|
# ASF licenses this file to you under the Apache License, Version 2.0 (the
|
|
# "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 "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.
|
|
#
|
|
############################################################################
|
|
|
|
OPENLIBM_VERSION=0.8.1
|
|
|
|
ifeq ($(wildcard openlibm/openlibm/.git),)
|
|
openlibm-$(OPENLIBM_VERSION).zip:
|
|
$(call DOWNLOAD,https://github.com/JuliaMath/openlibm/archive/refs/tags,v$(OPENLIBM_VERSION).zip,openlibm.zip)
|
|
|
|
openlibm/openlibm: openlibm-$(OPENLIBM_VERSION).zip
|
|
$(Q) unzip -o openlibm.zip
|
|
$(Q) mv openlibm-$(OPENLIBM_VERSION) openlibm/openlibm
|
|
$(Q) patch -p0 < openlibm/0001-fix-build-float_t-error-float_t-has-not-been-declare.patch
|
|
$(Q) patch -p0 < openlibm/0002-add-math.h-and-complex.h-to-openlibm.patch
|
|
$(Q) patch -p0 < openlibm/0003-nuttx-openlibm-Fix-openlibm-M_PI-undeclared-error.patch
|
|
endif
|
|
|
|
distclean::
|
|
$(Q) $(DIRUNLINK) $(TOPDIR)/include/openlibm
|
|
ifeq ($(wildcard openlibm/openlibm/.git),)
|
|
$(call DELFILE, openlibm.zip)
|
|
$(call DELDIR, openlibm/openlibm)
|
|
endif
|
|
|
|
$(TOPDIR)/include/openlibm: openlibm/openlibm
|
|
$(Q) $(DIRLINK) $(CURDIR)/openlibm/openlibm/include $@
|
|
|
|
context:: $(TOPDIR)/include/openlibm
|
|
|
|
# OS-specific stuff
|
|
# Get ARCH, it is used to read source code file list form $(ARCH)/Make.files
|
|
ifeq ($(CONFIG_ARCH),sim)
|
|
ifeq ($(CONFIG_SIM_M32),y)
|
|
ARCH = i387
|
|
else ifeq ($(CONFIG_HOST_ARM64),y)
|
|
ARCH = aarch64
|
|
else ifeq ($(CONFIG_HOST_ARM),y)
|
|
ARCH = arm
|
|
else ifeq ($(CONFIG_HOST_X86),y)
|
|
ARCH = i387
|
|
else
|
|
ARCH = amd64
|
|
endif
|
|
else ifeq ($(CONFIG_ARCH),risc-v)
|
|
ARCH = riscv64
|
|
else ifeq ($(CONFIG_ARCH),arm)
|
|
ARCH = arm
|
|
else ifeq ($(CONFIG_ARCH),arm64)
|
|
ARCH = arm64
|
|
else ifeq ($(CONFIG_ARCH),x86)
|
|
ARCH = i387
|
|
else ifeq ($(CONFIG_ARCH),x86_64)
|
|
ARCH = amd64
|
|
else
|
|
ARCH = $(CONFIG_ARCH)
|
|
endif
|
|
|
|
# Get source code lits from Make.files,and append to variable SRCS
|
|
# (1) Override CUR_SRCS to xxx_SRCS(for example src_SRCS etc.), then in xxx/Make.files CUR_SRCS is changed to xxx_SRCS.
|
|
# (2) Include Make.files
|
|
# (3) Get variable xxx_SRCS from Make.files, and append it to variable SRCS
|
|
define INC_template
|
|
ifneq ($(wildcard $(1)/Make.files),)
|
|
override CUR_SRCS = $(2)_SRCS
|
|
include $(1)/Make.files
|
|
SRCS += $$($(2)_SRCS)
|
|
endif
|
|
endef
|
|
|
|
# Determines whether `long double` is the same as `double` on this arch.
|
|
# linux x86_64, for instance, `long double` is 80 bits wide, whereas on macOS aarch64,
|
|
# `long double` is the same as `double`.
|
|
ifneq ($(filter $(ARCH),i387 amd64),) # Add ld80 directory on x86 and x64
|
|
$(eval $(call INC_template,openlibm/openlibm/ld80))
|
|
VPATH += :openlibm/openlibm/ld80
|
|
else ifneq ($(filter $(ARCH),aarch64),) # Add ld128 directory on aarch64
|
|
$(eval $(call INC_template,openlibm/openlibm/ld128))
|
|
VPATH += :openlibm/openlibm/ld128
|
|
endif
|
|
|
|
$(eval $(call INC_template,openlibm/openlibm/src,src))
|
|
$(eval $(call INC_template,openlibm/openlibm/$(ARCH),$(ARCH)))
|
|
$(eval $(call INC_template,openlibm/openlibm/bsdsrc,bsdsrc))
|
|
|
|
VPATH += :openlibm/openlibm/src
|
|
VPATH += :openlibm/openlibm/$(ARCH)
|
|
VPATH += :openlibm/openlibm/bsdsrc
|
|
|
|
CFLAGS += ${INCDIR_PREFIX}openlibm/openlibm
|
|
CFLAGS += ${INCDIR_PREFIX}openlibm/openlibm/$(ARCH)
|
|
CFLAGS += ${INCDIR_PREFIX}openlibm/openlibm/src
|
|
|
|
AFLAGS += ${INCDIR_PREFIX}openlibm/openlibm
|
|
AFLAGS += ${INCDIR_PREFIX}openlibm/openlibm/$(ARCH)
|
|
AFLAGS += ${INCDIR_PREFIX}openlibm/openlibm/src
|
|
|
|
CSRCS := $(sort $(filter %.c,$(SRCS)))
|
|
ASRCS := $(sort $(filter %.S,$(SRCS)))
|
|
|
|
# CSRCS and ASRCS have the same name files, we use .S files,so remove them from CSRCS
|
|
CSRCS := $(filter-out $(patsubst %.S,%.c,$(ASRCS)),$(CSRCS))
|