* [Buildroot] [PATCH 1/2] toolchain-external: add basic fortran support @ 2016-03-17 23:40 Benjamin Kamath 2016-03-17 23:40 ` [Buildroot] [PATCH 2/2] package: add lapack Benjamin Kamath 2016-03-18 7:10 ` [Buildroot] [PATCH 1/2] toolchain-external: add basic fortran support Samuel Martin 0 siblings, 2 replies; 6+ messages in thread From: Benjamin Kamath @ 2016-03-17 23:40 UTC (permalink / raw) To: buildroot From: Benjamin Kamath <bkamath@spaceflight.com> Add the necessary support to allow an external toolchain to supply a fortran compiler. This mostly amounts to a toolchain configuration option that sets BR2_INSTALL_LIBFORTRAN, and then various hooks to pass along flags, as well as run-time libraries. Additionally, gfortran needs to be invoked through the toolchain-wrapper, not just symlinked to $(TARGET_FC)gfortran. Signed-off-by: Benjamin Kamath <bkamath@spaceflight.com> --- package/Makefile.in | 9 +++++++++ package/gcc/gcc-final/gcc-final.mk | 4 ++-- package/pkg-cmake.mk | 6 ++++++ support/misc/toolchainfile.cmake.in | 2 ++ toolchain/helpers.mk | 13 +++++++++++++ toolchain/toolchain-common.in | 3 +++ toolchain/toolchain-external/Config.in | 12 ++++++++++++ toolchain/toolchain-external/toolchain-external.mk | 10 +++++++++- 8 files changed, 56 insertions(+), 3 deletions(-) diff --git a/package/Makefile.in b/package/Makefile.in index dd595e2..125406f 100644 --- a/package/Makefile.in +++ b/package/Makefile.in @@ -138,6 +138,7 @@ endif TARGET_CPPFLAGS += -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 TARGET_CFLAGS = $(TARGET_CPPFLAGS) $(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) TARGET_CXXFLAGS = $(TARGET_CFLAGS) +TARGET_FCFLAGS = $(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) TARGET_LDFLAGS = $(call qstrip,$(BR2_TARGET_LDFLAGS)) ifeq ($(BR2_BINFMT_FLAT),y) @@ -145,28 +146,35 @@ TARGET_CFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt=-s$($(PKG)_FL -Wl$(comma)-elf2flt) TARGET_CXXFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),\ -Wl$(comma)-elf2flt) +TARGET_FCFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),\ + -Wl$(comma)-elf2flt) TARGET_LDFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),-elf2flt) endif ifeq ($(BR2_BINFMT_FLAT_SHARED),y) TARGET_LDFLAGS += -mid-shared-library -mshared-library-id=0 TARGET_CFLAGS += -mid-shared-library -mshared-library-id=0 +TARGET_FCFLAGS += -mid-shared-library -mshared-library-id=0 TARGET_CXXFLAGS += -mid-shared-library -mshared-library-id=0 endif ifeq ($(BR2_BINFMT_FLAT_SEP_DATA),y) TARGET_LDFLAGS += -msep-data TARGET_CFLAGS += -msep-data +TARGET_FCFLAGS += -msep-data TARGET_CXXFLAGS += -msep-data endif ifeq ($(BR2_SSP_REGULAR),y) TARGET_CFLAGS += -fstack-protector +TARGET_FCFLAGS += -fstack-protector TARGET_CXXFLAGS += -fstack-protector else ifeq ($(BR2_SSP_STRONG),y) TARGET_CFLAGS += -fstack-protector-strong +TARGET_FCFLAGS += -fstack-protector-strong TARGET_CXXFLAGS += -fstack-protector-strong else ifeq ($(BR2_SSP_ALL),y) TARGET_CFLAGS += -fstack-protector-all +TARGET_FCFLAGS += -fstack-protector-all TARGET_CXXFLAGS += -fstack-protector-all endif @@ -378,6 +386,7 @@ ifeq ($(BR2_STATIC_LIBS),y) SHARED_STATIC_LIBS_OPTS = --enable-static --disable-shared TARGET_CFLAGS += -static TARGET_CXXFLAGS += -static +TARGET_FCFLAGS += -static TARGET_LDFLAGS += -static else ifeq ($(BR2_SHARED_LIBS),y) SHARED_STATIC_LIBS_OPTS = --disable-static --enable-shared diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk index 69fdc0c..87480c7 100644 --- a/package/gcc/gcc-final/gcc-final.mk +++ b/package/gcc/gcc-final/gcc-final.mk @@ -54,7 +54,7 @@ endef # Languages supported by the cross-compiler GCC_FINAL_CROSS_LANGUAGES-y = c GCC_FINAL_CROSS_LANGUAGES-$(BR2_INSTALL_LIBSTDCPP) += c++ -GCC_FINAL_CROSS_LANGUAGES-$(BR2_TOOLCHAIN_BUILDROOT_FORTRAN) += fortran +GCC_FINAL_CROSS_LANGUAGES-$(BR2_INSTALL_LIBFORTRAN) += fortran GCC_FINAL_CROSS_LANGUAGES = $(subst $(space),$(comma),$(GCC_FINAL_CROSS_LANGUAGES-y)) HOST_GCC_FINAL_CONF_OPTS = \ @@ -152,7 +152,7 @@ ifeq ($(BR2_INSTALL_LIBSTDCPP),y) HOST_GCC_FINAL_USR_LIBS += libstdc++ endif -ifeq ($(BR2_TOOLCHAIN_BUILDROOT_FORTRAN),y) +ifeq ($(BR2_INSTALL_LIBFORTRAN),y) HOST_GCC_FINAL_USR_LIBS += libgfortran endif diff --git a/package/pkg-cmake.mk b/package/pkg-cmake.mk index 81dcfcc..a93709e 100644 --- a/package/pkg-cmake.mk +++ b/package/pkg-cmake.mk @@ -31,6 +31,8 @@ CMAKE_HOST_C_COMPILER = $(HOSTCC) CMAKE_HOST_CXX_COMPILER = $(HOSTCXX) endif +CMAKE_HOST_Fortran_COMPILER ?= $(HOSTFC) + ifneq ($(QUIET),) CMAKE_QUIET = -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_INSTALL_MESSAGE=NEVER endif @@ -119,10 +121,12 @@ define $(2)_CONFIGURE_CMDS -DCMAKE_INSTALL_PREFIX="$$(HOST_DIR)/usr" \ -DCMAKE_C_FLAGS="$$(HOST_CFLAGS)" \ -DCMAKE_CXX_FLAGS="$$(HOST_CXXFLAGS)" \ + -DCMAKE_FC_FLAGS="$$(HOST_FCFLAGS)" \ -DCMAKE_EXE_LINKER_FLAGS="$$(HOST_LDFLAGS)" \ -DCMAKE_ASM_COMPILER="$$(HOSTAS)" \ -DCMAKE_C_COMPILER="$$(CMAKE_HOST_C_COMPILER)" \ -DCMAKE_CXX_COMPILER="$$(CMAKE_HOST_CXX_COMPILER)" \ + -DCMAKE_Fortran_COMPILER="$$(CMAKE_HOST_Fortran_COMPILER)" \ $(if $$(CMAKE_HOST_C_COMPILER_ARG1),\ -DCMAKE_C_COMPILER_ARG1="$$(CMAKE_HOST_C_COMPILER_ARG1)" \ -DCMAKE_CXX_COMPILER_ARG1="$$(CMAKE_HOST_CXX_COMPILER_ARG1)" \ @@ -243,9 +247,11 @@ $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake: -e 's#@@STAGING_SUBDIR@@#$(call qstrip,$(STAGING_SUBDIR))#' \ -e 's#@@TARGET_CFLAGS@@#$(call qstrip,$(TARGET_CFLAGS))#' \ -e 's#@@TARGET_CXXFLAGS@@#$(call qstrip,$(TARGET_CXXFLAGS))#' \ + -e 's:@@TARGET_FCFLAGS@@:$(call qstrip,$(TARGET_FCFLAGS)):' \ -e 's#@@TARGET_LDFLAGS@@#$(call qstrip,$(TARGET_LDFLAGS))#' \ -e 's#@@TARGET_CC@@#$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_CC)))#' \ -e 's#@@TARGET_CXX@@#$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_CXX)))#' \ + -e 's:@@TARGET_FC@@:$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_FC))):' \ -e 's#@@CMAKE_SYSTEM_PROCESSOR@@#$(call qstrip,$(CMAKE_SYSTEM_PROCESSOR))#' \ $(TOPDIR)/support/misc/toolchainfile.cmake.in \ > $@ diff --git a/support/misc/toolchainfile.cmake.in b/support/misc/toolchainfile.cmake.in index 5cf381e..4112604 100644 --- a/support/misc/toolchainfile.cmake.in +++ b/support/misc/toolchainfile.cmake.in @@ -15,6 +15,7 @@ set(CMAKE_SYSTEM_PROCESSOR @@CMAKE_SYSTEM_PROCESSOR@@) set(CMAKE_C_FLAGS "@@TARGET_CFLAGS@@ ${CMAKE_C_FLAGS}" CACHE STRING "Buildroot CFLAGS") set(CMAKE_CXX_FLAGS "@@TARGET_CXXFLAGS@@ ${CMAKE_CXX_FLAGS}" CACHE STRING "Buildroot CXXFLAGS") +set(CMAKE_Fortran_FLAGS "@@TARGET_FCFLAGS@@ ${CMAKE_Fortran_FLAGS}" CACHE STRING "Buildroot FCFLAGS") set(CMAKE_EXE_LINKER_FLAGS "@@TARGET_LDFLAGS@@ ${CMAKE_EXE_LINKER_FLAGS}" CACHE STRING "Buildroot LDFLAGS") set(CMAKE_INSTALL_SO_NO_EXE 0) @@ -29,3 +30,4 @@ set(ENV{PKG_CONFIG_SYSROOT_DIR} "${RELOCATED_HOST_DIR}/@@STAGING_SUBDIR@@") # This toolchain file can be used both inside and outside Buildroot. set(CMAKE_C_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_CC@@") set(CMAKE_CXX_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_CXX@@") +set(CMAKE_Fortran_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_FC@@") diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk index ee878e8..196f295 100644 --- a/toolchain/helpers.mk +++ b/toolchain/helpers.mk @@ -382,6 +382,19 @@ check_cplusplus = \ fi # +# Check that the external toolchain supports Fortran +# +# $1: cross-gfortran path +# +check_fortran = \ + __CROSS_FC=$(strip $1) ; \ + $${__CROSS_FC} -v > /dev/null 2>&1 ; \ + if test $$? -ne 0 ; then \ + echo "Fortran support is selected but is not available in external toolchain" ; \ + exit 1 ; \ + fi + +# # Check that the cross-compiler given in the configuration exists # # $1: cross-gcc path diff --git a/toolchain/toolchain-common.in b/toolchain/toolchain-common.in index 46970a6..1d7afa7 100644 --- a/toolchain/toolchain-common.in +++ b/toolchain/toolchain-common.in @@ -17,6 +17,9 @@ config BR2_ENABLE_LOCALE config BR2_INSTALL_LIBSTDCPP bool +config BR2_INSTALL_LIBFORTRAN + bool + config BR2_TOOLCHAIN_HAS_THREADS bool diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in index ff759a0..64027ff 100644 --- a/toolchain/toolchain-external/Config.in +++ b/toolchain/toolchain-external/Config.in @@ -24,6 +24,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_INSTALL_LIBFORTRAN select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 help @@ -46,6 +47,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_INSTALL_LIBFORTRAN select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 select BR2_TOOLCHAIN_GCC_AT_LEAST_5 help @@ -68,6 +70,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_INSTALL_LIBFORTRAN select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 help @@ -90,6 +93,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB select BR2_TOOLCHAIN_EXTERNAL_GLIBC select BR2_TOOLCHAIN_HAS_NATIVE_RPC select BR2_INSTALL_LIBSTDCPP + select BR2_INSTALL_LIBFORTRAN select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 select BR2_TOOLCHAIN_GCC_AT_LEAST_5 help @@ -1047,6 +1051,14 @@ config BR2_TOOLCHAIN_EXTERNAL_CXX support. If you don't know, leave the default value, Buildroot will tell you if it's correct or not. +config BR2_TOOLCHAIN_EXTERNAL_FORTRAN + bool "Toolchain has Fortran support?" + select BR2_INSTALL_LIBFORTRAN + help + Select this option if your external toolchain has Fortran + support. If you don't know, leave the default value, + Buildroot will tell you if it's correct or not. + config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS string "Extra toolchain libraries to be copied to target" help diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk index 37e1a2e..070d0cf 100644 --- a/toolchain/toolchain-external/toolchain-external.mk +++ b/toolchain/toolchain-external/toolchain-external.mk @@ -90,6 +90,10 @@ ifeq ($(BR2_INSTALL_LIBSTDCPP),y) USR_LIB_EXTERNAL_LIBS += libstdc++.so.* endif +ifeq ($(BR2_INSTALL_LIBFORTRAN),y) +USR_LIB_EXTERNAL_LIBS += libgfortran.so.* +endif + LIB_EXTERNAL_LIBS += $(call qstrip,$(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS)) # Details about sysroot directory selection. @@ -160,6 +164,7 @@ TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \ TOOLCHAIN_EXTERNAL_CROSS = $(TOOLCHAIN_EXTERNAL_BIN)/$(TOOLCHAIN_EXTERNAL_PREFIX)- TOOLCHAIN_EXTERNAL_CC = $(TOOLCHAIN_EXTERNAL_CROSS)gcc$(TOOLCHAIN_EXTERNAL_SUFFIX) TOOLCHAIN_EXTERNAL_CXX = $(TOOLCHAIN_EXTERNAL_CROSS)g++$(TOOLCHAIN_EXTERNAL_SUFFIX) +TOOLCHAIN_EXTERNAL_FC = $(TOOLCHAIN_EXTERNAL_CROSS)gfortran$(TOOLCHAIN_EXTERNAL_SUFFIX) TOOLCHAIN_EXTERNAL_READELF = $(TOOLCHAIN_EXTERNAL_CROSS)readelf$(TOOLCHAIN_EXTERNAL_SUFFIX) ifeq ($(filter $(HOST_DIR)/%,$(TOOLCHAIN_EXTERNAL_BIN)),) @@ -495,6 +500,9 @@ define TOOLCHAIN_EXTERNAL_CONFIGURE_CMDS if test "$(BR2_INSTALL_LIBSTDCPP)" = "y" ; then \ $(call check_cplusplus,$(TOOLCHAIN_EXTERNAL_CXX)) ; \ fi ; \ + if test "$(BR2_INSTALL_LIBFORTRAN)" = "y" ; then \ + $(call check_fortran,$(TOOLCHAIN_EXTERNAL_FC)) ; \ + fi ; \ if test "$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)" = "y" ; then \ $(call check_uclibc,$${SYSROOT_DIR}) ; \ elif test "$(BR2_TOOLCHAIN_EXTERNAL_MUSL)" = "y" ; then \ @@ -719,7 +727,7 @@ define TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER *-ar|*-ranlib|*-nm) \ ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \ ;; \ - *cc|*cc-*|*++|*++-*|*cpp) \ + *cc|*cc-*|*++|*++-*|*cpp|*fortran) \ ln -sf toolchain-wrapper $$base; \ ;; \ *gdb|*gdbtui) \ -- 2.5.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH 2/2] package: add lapack 2016-03-17 23:40 [Buildroot] [PATCH 1/2] toolchain-external: add basic fortran support Benjamin Kamath @ 2016-03-17 23:40 ` Benjamin Kamath 2016-03-18 5:23 ` Baruch Siach 2016-03-18 7:10 ` [Buildroot] [PATCH 1/2] toolchain-external: add basic fortran support Samuel Martin 1 sibling, 1 reply; 6+ messages in thread From: Benjamin Kamath @ 2016-03-17 23:40 UTC (permalink / raw) To: buildroot From: Benjamin Kamath <bkamath@spaceflight.com> lapack is a fortran-based linear algebra math library. Signed-off-by: Benjamin Kamath <bkamath@spaceflight.com> --- package/Config.in | 1 + package/lapack/0001-case-sensitive-paths.patch | 15 +++++++++++++++ package/lapack/Config.in | 18 ++++++++++++++++++ package/lapack/lapack.hash | 2 ++ package/lapack/lapack.mk | 24 ++++++++++++++++++++++++ 5 files changed, 60 insertions(+) create mode 100644 package/lapack/0001-case-sensitive-paths.patch create mode 100644 package/lapack/Config.in create mode 100644 package/lapack/lapack.hash create mode 100644 package/lapack/lapack.mk diff --git a/package/Config.in b/package/Config.in index 2401867..b5a5e39 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1198,6 +1198,7 @@ menu "Other" source "package/gmp/Config.in" source "package/gsl/Config.in" source "package/gtest/Config.in" + source "package/lapack/Config.in" source "package/libargtable2/Config.in" source "package/libatomic_ops/Config.in" source "package/libbsd/Config.in" diff --git a/package/lapack/0001-case-sensitive-paths.patch b/package/lapack/0001-case-sensitive-paths.patch new file mode 100644 index 0000000..e032d78 --- /dev/null +++ b/package/lapack/0001-case-sensitive-paths.patch @@ -0,0 +1,15 @@ +diff -rupN lapack-3.6.0/CBLAS/CMakeLists.txt lapack-3.6.0-old/CBLAS/CMakeLists.txt +--- lapack-3.6.0/CBLAS/CMakeLists.txt 2016-03-17 13:42:31.121248051 -0700 ++++ lapack-3.6.0-old/CBLAS/CMakeLists.txt 2016-03-17 13:41:37.819316904 -0700 +@@ -65,9 +65,9 @@ if(ALL_TARGETS) + list(GET ALL_TARGETS 0 _cblas_config_build_guard_target) + endif() + +-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMAKE/cblas-config-version.cmake.in ++configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/cblas-config-version.cmake.in + ${LAPACK_BINARY_DIR}/cblas-config-version.cmake @ONLY) +-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMAKE/cblas-config-build.cmake.in ++configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/cblas-config-build.cmake.in + ${LAPACK_BINARY_DIR}/cblas-config.cmake @ONLY) + + diff --git a/package/lapack/Config.in b/package/lapack/Config.in new file mode 100644 index 0000000..e5e1270 --- /dev/null +++ b/package/lapack/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LAPACK + bool "lapack/blas" + select BR2_TOOLCHAIN_BUILDROOT_FORTRAN + select BR2_INSTALL_LIBFORTRAN + # _fpu_control is used on PowerPC, but not available with + # uClibc + depends on !(BR2_powerpc && BR2_TOOLCHAIN_USES_UCLIBC) + help + LAPACK and BLAS FORTRAN implementation. + + http://www.netlib.org/lapack/ + +config BR2_PACKAGE_LAPACK_COMPLEX + bool "Complex/Complex16 support" + depends on BR2_PACKAGE_LAPACK + default y + help + Builds support for COMPLEX and COMPLEX16 data types. diff --git a/package/lapack/lapack.hash b/package/lapack/lapack.hash new file mode 100644 index 0000000..99d25b5 --- /dev/null +++ b/package/lapack/lapack.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 a9a0082c918fe14e377bbd570057616768dca76cbdc713457d8199aaa233ffc3 lapack-3.6.0.tgz diff --git a/package/lapack/lapack.mk b/package/lapack/lapack.mk new file mode 100644 index 0000000..fb91543 --- /dev/null +++ b/package/lapack/lapack.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# lapack +# +################################################################################ + +LAPACK_VERSION = 3.6.0 +LAPACK_SOURCE = lapack-$(LAPACK_VERSION).tgz +# This package provides 2 libraries: +# - libblas +# - liblapack +LAPACK_LICENSE = BSD-3c (libblas and liblapack) +LAPACK_LICENSE_FILES = LICENSE +LAPACK_SITE = http://www.netlib.org/lapack +LAPACK_INSTALL_STAGING = YES +LAPACK_CONF_OPTS = -DBUILD_SHARED_LIBS=on -DLAPACKE=on -DCBLAS=on + +ifeq ($(BR2_PACKAGE_LAPACK_COMPLEX),y) +LAPACK_CONF_OPTS += -DBUILD_COMPLEX=on -DBUILD_COMPLEX16=on +else +LAPACK_CONF_OPTS += -DBUILD_COMPLEX=off -DBUILD_COMPLEX16=off +endif + +$(eval $(cmake-package)) -- 2.5.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH 2/2] package: add lapack 2016-03-17 23:40 ` [Buildroot] [PATCH 2/2] package: add lapack Benjamin Kamath @ 2016-03-18 5:23 ` Baruch Siach 2016-03-18 19:17 ` Benjamin Kamath 0 siblings, 1 reply; 6+ messages in thread From: Baruch Siach @ 2016-03-18 5:23 UTC (permalink / raw) To: buildroot Hi Benjamin, On Thu, Mar 17, 2016 at 04:40:22PM -0700, Benjamin Kamath wrote: > diff --git a/package/lapack/0001-case-sensitive-paths.patch b/package/lapack/0001-case-sensitive-paths.patch > new file mode 100644 > index 0000000..e032d78 > --- /dev/null > +++ b/package/lapack/0001-case-sensitive-paths.patch > @@ -0,0 +1,15 @@ > +diff -rupN lapack-3.6.0/CBLAS/CMakeLists.txt lapack-3.6.0-old/CBLAS/CMakeLists.txt > +--- lapack-3.6.0/CBLAS/CMakeLists.txt 2016-03-17 13:42:31.121248051 -0700 > ++++ lapack-3.6.0-old/CBLAS/CMakeLists.txt 2016-03-17 13:41:37.819316904 -0700 > +@@ -65,9 +65,9 @@ if(ALL_TARGETS) > + list(GET ALL_TARGETS 0 _cblas_config_build_guard_target) > + endif() > + > +-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMAKE/cblas-config-version.cmake.in > ++configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/cblas-config-version.cmake.in > + ${LAPACK_BINARY_DIR}/cblas-config-version.cmake @ONLY) > +-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMAKE/cblas-config-build.cmake.in > ++configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/cblas-config-build.cmake.in > + ${LAPACK_BINARY_DIR}/cblas-config.cmake @ONLY) The patch needs a description and your sign-off. [snip] > diff --git a/package/lapack/lapack.mk b/package/lapack/lapack.mk > new file mode 100644 > index 0000000..fb91543 > --- /dev/null > +++ b/package/lapack/lapack.mk > @@ -0,0 +1,24 @@ > +################################################################################ > +# > +# lapack > +# > +################################################################################ > + > +LAPACK_VERSION = 3.6.0 > +LAPACK_SOURCE = lapack-$(LAPACK_VERSION).tgz > +# This package provides 2 libraries: > +# - libblas > +# - liblapack > +LAPACK_LICENSE = BSD-3c (libblas and liblapack) > +LAPACK_LICENSE_FILES = LICENSE > +LAPACK_SITE = http://www.netlib.org/lapack > +LAPACK_INSTALL_STAGING = YES > +LAPACK_CONF_OPTS = -DBUILD_SHARED_LIBS=on -DLAPACKE=on -DCBLAS=on The Buildroot cmake infrastructure sets BUILD_SHARED_LIBS automatically based on Buildroot config. If lapack does not support static build it should depend on !BR2_STATIC_LIBS in Config.in > +ifeq ($(BR2_PACKAGE_LAPACK_COMPLEX),y) > +LAPACK_CONF_OPTS += -DBUILD_COMPLEX=on -DBUILD_COMPLEX16=on > +else > +LAPACK_CONF_OPTS += -DBUILD_COMPLEX=off -DBUILD_COMPLEX16=off > +endif > + > +$(eval $(cmake-package)) baruch -- http://baruch.siach.name/blog/ ~. .~ Tk Open Systems =}------------------------------------------------ooO--U--Ooo------------{= - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il - ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH 2/2] package: add lapack 2016-03-18 5:23 ` Baruch Siach @ 2016-03-18 19:17 ` Benjamin Kamath 0 siblings, 0 replies; 6+ messages in thread From: Benjamin Kamath @ 2016-03-18 19:17 UTC (permalink / raw) To: buildroot Hey Baruch, On Thu, Mar 17, 2016 at 10:23 PM, Baruch Siach <baruch@tkos.co.il> wrote: > Hi Benjamin, > > On Thu, Mar 17, 2016 at 04:40:22PM -0700, Benjamin Kamath wrote: >> diff --git a/package/lapack/0001-case-sensitive-paths.patch b/package/lapack/0001-case-sensitive-paths.patch >> new file mode 100644 >> index 0000000..e032d78 >> --- /dev/null >> +++ b/package/lapack/0001-case-sensitive-paths.patch >> @@ -0,0 +1,15 @@ >> +diff -rupN lapack-3.6.0/CBLAS/CMakeLists.txt lapack-3.6.0-old/CBLAS/CMakeLists.txt >> +--- lapack-3.6.0/CBLAS/CMakeLists.txt 2016-03-17 13:42:31.121248051 -0700 >> ++++ lapack-3.6.0-old/CBLAS/CMakeLists.txt 2016-03-17 13:41:37.819316904 -0700 >> +@@ -65,9 +65,9 @@ if(ALL_TARGETS) >> + list(GET ALL_TARGETS 0 _cblas_config_build_guard_target) >> + endif() >> + >> +-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMAKE/cblas-config-version.cmake.in >> ++configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/cblas-config-version.cmake.in >> + ${LAPACK_BINARY_DIR}/cblas-config-version.cmake @ONLY) >> +-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMAKE/cblas-config-build.cmake.in >> ++configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/cblas-config-build.cmake.in >> + ${LAPACK_BINARY_DIR}/cblas-config.cmake @ONLY) > > The patch needs a description and your sign-off. > > [snip] Fixed > >> diff --git a/package/lapack/lapack.mk b/package/lapack/lapack.mk >> new file mode 100644 >> index 0000000..fb91543 >> --- /dev/null >> +++ b/package/lapack/lapack.mk >> @@ -0,0 +1,24 @@ >> +################################################################################ >> +# >> +# lapack >> +# >> +################################################################################ >> + >> +LAPACK_VERSION = 3.6.0 >> +LAPACK_SOURCE = lapack-$(LAPACK_VERSION).tgz >> +# This package provides 2 libraries: >> +# - libblas >> +# - liblapack >> +LAPACK_LICENSE = BSD-3c (libblas and liblapack) >> +LAPACK_LICENSE_FILES = LICENSE >> +LAPACK_SITE = http://www.netlib.org/lapack >> +LAPACK_INSTALL_STAGING = YES >> +LAPACK_CONF_OPTS = -DBUILD_SHARED_LIBS=on -DLAPACKE=on -DCBLAS=on > > The Buildroot cmake infrastructure sets BUILD_SHARED_LIBS automatically based > on Buildroot config. If lapack does not support static build it should depend > on !BR2_STATIC_LIBS in Config.in > >> +ifeq ($(BR2_PACKAGE_LAPACK_COMPLEX),y) >> +LAPACK_CONF_OPTS += -DBUILD_COMPLEX=on -DBUILD_COMPLEX16=on >> +else >> +LAPACK_CONF_OPTS += -DBUILD_COMPLEX=off -DBUILD_COMPLEX16=off >> +endif >> + >> +$(eval $(cmake-package)) > > baruch > > -- > http://baruch.siach.name/blog/ ~. .~ Tk Open Systems > =}------------------------------------------------ooO--U--Ooo------------{= > - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il - Fixed, and will upload another patch set. Thanks! -Ben ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH 1/2] toolchain-external: add basic fortran support 2016-03-17 23:40 [Buildroot] [PATCH 1/2] toolchain-external: add basic fortran support Benjamin Kamath 2016-03-17 23:40 ` [Buildroot] [PATCH 2/2] package: add lapack Benjamin Kamath @ 2016-03-18 7:10 ` Samuel Martin 2016-03-18 19:29 ` Benjamin Kamath 1 sibling, 1 reply; 6+ messages in thread From: Samuel Martin @ 2016-03-18 7:10 UTC (permalink / raw) To: buildroot Hi Benjamin, On Fri, Mar 18, 2016 at 12:40 AM, Benjamin Kamath <kamath.ben@gmail.com> wrote: > From: Benjamin Kamath <bkamath@spaceflight.com> > > Add the necessary support to allow an external toolchain > to supply a fortran compiler. This mostly amounts to a > toolchain configuration option that sets BR2_INSTALL_LIBFORTRAN, > and then various hooks to pass along flags, as well as > run-time libraries. > > Additionally, gfortran needs to be invoked through the > toolchain-wrapper, not just symlinked to $(TARGET_FC)gfortran. Great works! You may be interested in this work as well: https://github.com/tSed/buildroot/commits/sma/ext-toolchain-options more specifically: https://github.com/tSed/buildroot/commit/82b0c580ce934c969839ce5e5029700d9bbdaff6 https://github.com/tSed/buildroot/commit/3a0ef3799a976fbb8fcaa272cd8c86e0a2eaa4cf https://github.com/tSed/buildroot/commit/41a79c37bf7720b5a557a6caf054874817166d65 https://github.com/tSed/buildroot/commit/322fe0f571b163d23f0f1008703cbf1f3affe8fd https://github.com/tSed/buildroot/commit/3dd490a79cba8bffa8f5a05cb5ca44e98426aa46 https://github.com/tSed/buildroot/commit/708d6849f24b3009e3260713018affad874bea5f https://github.com/tSed/buildroot/commit/44243d7aa174a78000fd26342538660de1019c60 https://github.com/tSed/buildroot/commit/fcfb46274e9e9ec8ad2671ccadbe7b2bb433f2bd https://github.com/tSed/buildroot/commit/290a0326ac98298adc4c454c8f75cf9da58efe89 https://github.com/tSed/buildroot/commit/b575a3fe025de1c8a679a3f6c72fcfa166a9cd07 The above branch is still a WIP, but the fortran support should be here and working. (The WIP stuff being updating the external toolchain selection.) Compare to your series, from a first and quick glance, it seems you better handle fortran flags than I did. Few comments inlined (this is not a full in-deep review ;-]) > > Signed-off-by: Benjamin Kamath <bkamath@spaceflight.com> > --- > package/Makefile.in | 9 +++++++++ > package/gcc/gcc-final/gcc-final.mk | 4 ++-- > package/pkg-cmake.mk | 6 ++++++ > support/misc/toolchainfile.cmake.in | 2 ++ > toolchain/helpers.mk | 13 +++++++++++++ > toolchain/toolchain-common.in | 3 +++ > toolchain/toolchain-external/Config.in | 12 ++++++++++++ > toolchain/toolchain-external/toolchain-external.mk | 10 +++++++++- > 8 files changed, 56 insertions(+), 3 deletions(-) > > diff --git a/package/Makefile.in b/package/Makefile.in > index dd595e2..125406f 100644 > --- a/package/Makefile.in > +++ b/package/Makefile.in > @@ -138,6 +138,7 @@ endif > TARGET_CPPFLAGS += -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 > TARGET_CFLAGS = $(TARGET_CPPFLAGS) $(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) > TARGET_CXXFLAGS = $(TARGET_CFLAGS) > +TARGET_FCFLAGS = $(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) > TARGET_LDFLAGS = $(call qstrip,$(BR2_TARGET_LDFLAGS)) > > ifeq ($(BR2_BINFMT_FLAT),y) > @@ -145,28 +146,35 @@ TARGET_CFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt=-s$($(PKG)_FL > -Wl$(comma)-elf2flt) > TARGET_CXXFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),\ > -Wl$(comma)-elf2flt) > +TARGET_FCFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),\ > + -Wl$(comma)-elf2flt) > TARGET_LDFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),-elf2flt) > endif > > ifeq ($(BR2_BINFMT_FLAT_SHARED),y) > TARGET_LDFLAGS += -mid-shared-library -mshared-library-id=0 > TARGET_CFLAGS += -mid-shared-library -mshared-library-id=0 > +TARGET_FCFLAGS += -mid-shared-library -mshared-library-id=0 > TARGET_CXXFLAGS += -mid-shared-library -mshared-library-id=0 > endif > ifeq ($(BR2_BINFMT_FLAT_SEP_DATA),y) > TARGET_LDFLAGS += -msep-data > TARGET_CFLAGS += -msep-data > +TARGET_FCFLAGS += -msep-data > TARGET_CXXFLAGS += -msep-data > endif > > ifeq ($(BR2_SSP_REGULAR),y) > TARGET_CFLAGS += -fstack-protector > +TARGET_FCFLAGS += -fstack-protector > TARGET_CXXFLAGS += -fstack-protector > else ifeq ($(BR2_SSP_STRONG),y) > TARGET_CFLAGS += -fstack-protector-strong > +TARGET_FCFLAGS += -fstack-protector-strong > TARGET_CXXFLAGS += -fstack-protector-strong > else ifeq ($(BR2_SSP_ALL),y) > TARGET_CFLAGS += -fstack-protector-all > +TARGET_FCFLAGS += -fstack-protector-all > TARGET_CXXFLAGS += -fstack-protector-all > endif > > @@ -378,6 +386,7 @@ ifeq ($(BR2_STATIC_LIBS),y) > SHARED_STATIC_LIBS_OPTS = --enable-static --disable-shared > TARGET_CFLAGS += -static > TARGET_CXXFLAGS += -static > +TARGET_FCFLAGS += -static > TARGET_LDFLAGS += -static > else ifeq ($(BR2_SHARED_LIBS),y) > SHARED_STATIC_LIBS_OPTS = --disable-static --enable-shared > diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk > index 69fdc0c..87480c7 100644 > --- a/package/gcc/gcc-final/gcc-final.mk > +++ b/package/gcc/gcc-final/gcc-final.mk > @@ -54,7 +54,7 @@ endef > # Languages supported by the cross-compiler > GCC_FINAL_CROSS_LANGUAGES-y = c > GCC_FINAL_CROSS_LANGUAGES-$(BR2_INSTALL_LIBSTDCPP) += c++ > -GCC_FINAL_CROSS_LANGUAGES-$(BR2_TOOLCHAIN_BUILDROOT_FORTRAN) += fortran > +GCC_FINAL_CROSS_LANGUAGES-$(BR2_INSTALL_LIBFORTRAN) += fortran > GCC_FINAL_CROSS_LANGUAGES = $(subst $(space),$(comma),$(GCC_FINAL_CROSS_LANGUAGES-y)) > > HOST_GCC_FINAL_CONF_OPTS = \ > @@ -152,7 +152,7 @@ ifeq ($(BR2_INSTALL_LIBSTDCPP),y) > HOST_GCC_FINAL_USR_LIBS += libstdc++ > endif > > -ifeq ($(BR2_TOOLCHAIN_BUILDROOT_FORTRAN),y) > +ifeq ($(BR2_INSTALL_LIBFORTRAN),y) > HOST_GCC_FINAL_USR_LIBS += libgfortran > endif > > diff --git a/package/pkg-cmake.mk b/package/pkg-cmake.mk > index 81dcfcc..a93709e 100644 > --- a/package/pkg-cmake.mk > +++ b/package/pkg-cmake.mk > @@ -31,6 +31,8 @@ CMAKE_HOST_C_COMPILER = $(HOSTCC) > CMAKE_HOST_CXX_COMPILER = $(HOSTCXX) > endif > > +CMAKE_HOST_Fortran_COMPILER ?= $(HOSTFC) > + Is this needed? What for? AFAICS, there is no host-package requiring HOSTFC... > ifneq ($(QUIET),) > CMAKE_QUIET = -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_INSTALL_MESSAGE=NEVER > endif > @@ -119,10 +121,12 @@ define $(2)_CONFIGURE_CMDS > -DCMAKE_INSTALL_PREFIX="$$(HOST_DIR)/usr" \ > -DCMAKE_C_FLAGS="$$(HOST_CFLAGS)" \ > -DCMAKE_CXX_FLAGS="$$(HOST_CXXFLAGS)" \ > + -DCMAKE_FC_FLAGS="$$(HOST_FCFLAGS)" \ Why setting CMAKE_FC_FLAGS instead of CMAKE_Fortran_FLAGS? > -DCMAKE_EXE_LINKER_FLAGS="$$(HOST_LDFLAGS)" \ > -DCMAKE_ASM_COMPILER="$$(HOSTAS)" \ > -DCMAKE_C_COMPILER="$$(CMAKE_HOST_C_COMPILER)" \ > -DCMAKE_CXX_COMPILER="$$(CMAKE_HOST_CXX_COMPILER)" \ > + -DCMAKE_Fortran_COMPILER="$$(CMAKE_HOST_Fortran_COMPILER)" \ > $(if $$(CMAKE_HOST_C_COMPILER_ARG1),\ > -DCMAKE_C_COMPILER_ARG1="$$(CMAKE_HOST_C_COMPILER_ARG1)" \ > -DCMAKE_CXX_COMPILER_ARG1="$$(CMAKE_HOST_CXX_COMPILER_ARG1)" \ > @@ -243,9 +247,11 @@ $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake: > -e 's#@@STAGING_SUBDIR@@#$(call qstrip,$(STAGING_SUBDIR))#' \ > -e 's#@@TARGET_CFLAGS@@#$(call qstrip,$(TARGET_CFLAGS))#' \ > -e 's#@@TARGET_CXXFLAGS@@#$(call qstrip,$(TARGET_CXXFLAGS))#' \ > + -e 's:@@TARGET_FCFLAGS@@:$(call qstrip,$(TARGET_FCFLAGS)):' \ > -e 's#@@TARGET_LDFLAGS@@#$(call qstrip,$(TARGET_LDFLAGS))#' \ > -e 's#@@TARGET_CC@@#$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_CC)))#' \ > -e 's#@@TARGET_CXX@@#$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_CXX)))#' \ > + -e 's:@@TARGET_FC@@:$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_FC))):' \ > -e 's#@@CMAKE_SYSTEM_PROCESSOR@@#$(call qstrip,$(CMAKE_SYSTEM_PROCESSOR))#' \ > $(TOPDIR)/support/misc/toolchainfile.cmake.in \ > > $@ > diff --git a/support/misc/toolchainfile.cmake.in b/support/misc/toolchainfile.cmake.in > index 5cf381e..4112604 100644 > --- a/support/misc/toolchainfile.cmake.in > +++ b/support/misc/toolchainfile.cmake.in > @@ -15,6 +15,7 @@ set(CMAKE_SYSTEM_PROCESSOR @@CMAKE_SYSTEM_PROCESSOR@@) > > set(CMAKE_C_FLAGS "@@TARGET_CFLAGS@@ ${CMAKE_C_FLAGS}" CACHE STRING "Buildroot CFLAGS") > set(CMAKE_CXX_FLAGS "@@TARGET_CXXFLAGS@@ ${CMAKE_CXX_FLAGS}" CACHE STRING "Buildroot CXXFLAGS") > +set(CMAKE_Fortran_FLAGS "@@TARGET_FCFLAGS@@ ${CMAKE_Fortran_FLAGS}" CACHE STRING "Buildroot FCFLAGS") > set(CMAKE_EXE_LINKER_FLAGS "@@TARGET_LDFLAGS@@ ${CMAKE_EXE_LINKER_FLAGS}" CACHE STRING "Buildroot LDFLAGS") > set(CMAKE_INSTALL_SO_NO_EXE 0) > > @@ -29,3 +30,4 @@ set(ENV{PKG_CONFIG_SYSROOT_DIR} "${RELOCATED_HOST_DIR}/@@STAGING_SUBDIR@@") > # This toolchain file can be used both inside and outside Buildroot. > set(CMAKE_C_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_CC@@") > set(CMAKE_CXX_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_CXX@@") > +set(CMAKE_Fortran_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_FC@@") This will set (force to set) the fortran compile path in all configuration, even in those that do not have it... :-/ > diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk > index ee878e8..196f295 100644 > --- a/toolchain/helpers.mk > +++ b/toolchain/helpers.mk > @@ -382,6 +382,19 @@ check_cplusplus = \ > fi > > # > +# Check that the external toolchain supports Fortran > +# > +# $1: cross-gfortran path > +# > +check_fortran = \ > + __CROSS_FC=$(strip $1) ; \ > + $${__CROSS_FC} -v > /dev/null 2>&1 ; \ > + if test $$? -ne 0 ; then \ > + echo "Fortran support is selected but is not available in external toolchain" ; \ > + exit 1 ; \ > + fi > + > +# > # Check that the cross-compiler given in the configuration exists > # > # $1: cross-gcc path > diff --git a/toolchain/toolchain-common.in b/toolchain/toolchain-common.in > index 46970a6..1d7afa7 100644 > --- a/toolchain/toolchain-common.in > +++ b/toolchain/toolchain-common.in > @@ -17,6 +17,9 @@ config BR2_ENABLE_LOCALE > config BR2_INSTALL_LIBSTDCPP > bool > > +config BR2_INSTALL_LIBFORTRAN > + bool > + > config BR2_TOOLCHAIN_HAS_THREADS > bool > > diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in > index ff759a0..64027ff 100644 > --- a/toolchain/toolchain-external/Config.in > +++ b/toolchain/toolchain-external/Config.in > @@ -24,6 +24,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM > select BR2_TOOLCHAIN_EXTERNAL_GLIBC > select BR2_TOOLCHAIN_HAS_NATIVE_RPC > select BR2_INSTALL_LIBSTDCPP > + select BR2_INSTALL_LIBFORTRAN > select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 > select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 > help > @@ -46,6 +47,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM > select BR2_TOOLCHAIN_EXTERNAL_GLIBC > select BR2_TOOLCHAIN_HAS_NATIVE_RPC > select BR2_INSTALL_LIBSTDCPP > + select BR2_INSTALL_LIBFORTRAN > select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 > select BR2_TOOLCHAIN_GCC_AT_LEAST_5 > help > @@ -68,6 +70,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB > select BR2_TOOLCHAIN_EXTERNAL_GLIBC > select BR2_TOOLCHAIN_HAS_NATIVE_RPC > select BR2_INSTALL_LIBSTDCPP > + select BR2_INSTALL_LIBFORTRAN > select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 > select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 > help > @@ -90,6 +93,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB > select BR2_TOOLCHAIN_EXTERNAL_GLIBC > select BR2_TOOLCHAIN_HAS_NATIVE_RPC > select BR2_INSTALL_LIBSTDCPP > + select BR2_INSTALL_LIBFORTRAN > select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 > select BR2_TOOLCHAIN_GCC_AT_LEAST_5 > help > @@ -1047,6 +1051,14 @@ config BR2_TOOLCHAIN_EXTERNAL_CXX > support. If you don't know, leave the default value, > Buildroot will tell you if it's correct or not. > > +config BR2_TOOLCHAIN_EXTERNAL_FORTRAN > + bool "Toolchain has Fortran support?" > + select BR2_INSTALL_LIBFORTRAN > + help > + Select this option if your external toolchain has Fortran > + support. If you don't know, leave the default value, > + Buildroot will tell you if it's correct or not. > + > config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS > string "Extra toolchain libraries to be copied to target" > help > diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk > index 37e1a2e..070d0cf 100644 > --- a/toolchain/toolchain-external/toolchain-external.mk > +++ b/toolchain/toolchain-external/toolchain-external.mk > @@ -90,6 +90,10 @@ ifeq ($(BR2_INSTALL_LIBSTDCPP),y) > USR_LIB_EXTERNAL_LIBS += libstdc++.so.* > endif > > +ifeq ($(BR2_INSTALL_LIBFORTRAN),y) > +USR_LIB_EXTERNAL_LIBS += libgfortran.so.* > +endif > + > LIB_EXTERNAL_LIBS += $(call qstrip,$(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS)) > > # Details about sysroot directory selection. > @@ -160,6 +164,7 @@ TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \ > TOOLCHAIN_EXTERNAL_CROSS = $(TOOLCHAIN_EXTERNAL_BIN)/$(TOOLCHAIN_EXTERNAL_PREFIX)- > TOOLCHAIN_EXTERNAL_CC = $(TOOLCHAIN_EXTERNAL_CROSS)gcc$(TOOLCHAIN_EXTERNAL_SUFFIX) > TOOLCHAIN_EXTERNAL_CXX = $(TOOLCHAIN_EXTERNAL_CROSS)g++$(TOOLCHAIN_EXTERNAL_SUFFIX) > +TOOLCHAIN_EXTERNAL_FC = $(TOOLCHAIN_EXTERNAL_CROSS)gfortran$(TOOLCHAIN_EXTERNAL_SUFFIX) > TOOLCHAIN_EXTERNAL_READELF = $(TOOLCHAIN_EXTERNAL_CROSS)readelf$(TOOLCHAIN_EXTERNAL_SUFFIX) > > ifeq ($(filter $(HOST_DIR)/%,$(TOOLCHAIN_EXTERNAL_BIN)),) > @@ -495,6 +500,9 @@ define TOOLCHAIN_EXTERNAL_CONFIGURE_CMDS > if test "$(BR2_INSTALL_LIBSTDCPP)" = "y" ; then \ > $(call check_cplusplus,$(TOOLCHAIN_EXTERNAL_CXX)) ; \ > fi ; \ > + if test "$(BR2_INSTALL_LIBFORTRAN)" = "y" ; then \ > + $(call check_fortran,$(TOOLCHAIN_EXTERNAL_FC)) ; \ > + fi ; \ > if test "$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)" = "y" ; then \ > $(call check_uclibc,$${SYSROOT_DIR}) ; \ > elif test "$(BR2_TOOLCHAIN_EXTERNAL_MUSL)" = "y" ; then \ > @@ -719,7 +727,7 @@ define TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER > *-ar|*-ranlib|*-nm) \ > ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \ > ;; \ > - *cc|*cc-*|*++|*++-*|*cpp) \ > + *cc|*cc-*|*++|*++-*|*cpp|*fortran) \ > ln -sf toolchain-wrapper $$base; \ > ;; \ > *gdb|*gdbtui) \ > -- > 2.5.0 > > _______________________________________________ > buildroot mailing list > buildroot at busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot Regards, -- Samuel ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH 1/2] toolchain-external: add basic fortran support 2016-03-18 7:10 ` [Buildroot] [PATCH 1/2] toolchain-external: add basic fortran support Samuel Martin @ 2016-03-18 19:29 ` Benjamin Kamath 0 siblings, 0 replies; 6+ messages in thread From: Benjamin Kamath @ 2016-03-18 19:29 UTC (permalink / raw) To: buildroot Hey Samuel, On Fri, Mar 18, 2016 at 12:10 AM, Samuel Martin <s.martin49@gmail.com> wrote: > Hi Benjamin, > > On Fri, Mar 18, 2016 at 12:40 AM, Benjamin Kamath <kamath.ben@gmail.com> wrote: >> From: Benjamin Kamath <bkamath@spaceflight.com> >> >> Add the necessary support to allow an external toolchain >> to supply a fortran compiler. This mostly amounts to a >> toolchain configuration option that sets BR2_INSTALL_LIBFORTRAN, >> and then various hooks to pass along flags, as well as >> run-time libraries. >> >> Additionally, gfortran needs to be invoked through the >> toolchain-wrapper, not just symlinked to $(TARGET_FC)gfortran. > > Great works! > > You may be interested in this work as well: > https://github.com/tSed/buildroot/commits/sma/ext-toolchain-options > > more specifically: > https://github.com/tSed/buildroot/commit/82b0c580ce934c969839ce5e5029700d9bbdaff6 > https://github.com/tSed/buildroot/commit/3a0ef3799a976fbb8fcaa272cd8c86e0a2eaa4cf > https://github.com/tSed/buildroot/commit/41a79c37bf7720b5a557a6caf054874817166d65 > https://github.com/tSed/buildroot/commit/322fe0f571b163d23f0f1008703cbf1f3affe8fd > https://github.com/tSed/buildroot/commit/3dd490a79cba8bffa8f5a05cb5ca44e98426aa46 > https://github.com/tSed/buildroot/commit/708d6849f24b3009e3260713018affad874bea5f > https://github.com/tSed/buildroot/commit/44243d7aa174a78000fd26342538660de1019c60 > https://github.com/tSed/buildroot/commit/fcfb46274e9e9ec8ad2671ccadbe7b2bb433f2bd > https://github.com/tSed/buildroot/commit/290a0326ac98298adc4c454c8f75cf9da58efe89 > https://github.com/tSed/buildroot/commit/b575a3fe025de1c8a679a3f6c72fcfa166a9cd07 > > The above branch is still a WIP, but the fortran support should be > here and working. > (The WIP stuff being updating the external toolchain selection.) > Nice! I didn't find that before when I did a google search. Very cool/useful external toolchain feature tool! > Compare to your series, from a first and quick glance, it seems you > better handle fortran flags than I did. > > Few comments inlined (this is not a full in-deep review ;-]) > >> >> Signed-off-by: Benjamin Kamath <bkamath@spaceflight.com> >> --- >> package/Makefile.in | 9 +++++++++ >> package/gcc/gcc-final/gcc-final.mk | 4 ++-- >> package/pkg-cmake.mk | 6 ++++++ >> support/misc/toolchainfile.cmake.in | 2 ++ >> toolchain/helpers.mk | 13 +++++++++++++ >> toolchain/toolchain-common.in | 3 +++ >> toolchain/toolchain-external/Config.in | 12 ++++++++++++ >> toolchain/toolchain-external/toolchain-external.mk | 10 +++++++++- >> 8 files changed, 56 insertions(+), 3 deletions(-) >> >> diff --git a/package/Makefile.in b/package/Makefile.in >> index dd595e2..125406f 100644 >> --- a/package/Makefile.in >> +++ b/package/Makefile.in >> @@ -138,6 +138,7 @@ endif >> TARGET_CPPFLAGS += -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 >> TARGET_CFLAGS = $(TARGET_CPPFLAGS) $(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) >> TARGET_CXXFLAGS = $(TARGET_CFLAGS) >> +TARGET_FCFLAGS = $(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) >> TARGET_LDFLAGS = $(call qstrip,$(BR2_TARGET_LDFLAGS)) >> >> ifeq ($(BR2_BINFMT_FLAT),y) >> @@ -145,28 +146,35 @@ TARGET_CFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt=-s$($(PKG)_FL >> -Wl$(comma)-elf2flt) >> TARGET_CXXFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),\ >> -Wl$(comma)-elf2flt) >> +TARGET_FCFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),\ >> + -Wl$(comma)-elf2flt) >> TARGET_LDFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),-elf2flt) >> endif >> >> ifeq ($(BR2_BINFMT_FLAT_SHARED),y) >> TARGET_LDFLAGS += -mid-shared-library -mshared-library-id=0 >> TARGET_CFLAGS += -mid-shared-library -mshared-library-id=0 >> +TARGET_FCFLAGS += -mid-shared-library -mshared-library-id=0 >> TARGET_CXXFLAGS += -mid-shared-library -mshared-library-id=0 >> endif >> ifeq ($(BR2_BINFMT_FLAT_SEP_DATA),y) >> TARGET_LDFLAGS += -msep-data >> TARGET_CFLAGS += -msep-data >> +TARGET_FCFLAGS += -msep-data >> TARGET_CXXFLAGS += -msep-data >> endif >> >> ifeq ($(BR2_SSP_REGULAR),y) >> TARGET_CFLAGS += -fstack-protector >> +TARGET_FCFLAGS += -fstack-protector >> TARGET_CXXFLAGS += -fstack-protector >> else ifeq ($(BR2_SSP_STRONG),y) >> TARGET_CFLAGS += -fstack-protector-strong >> +TARGET_FCFLAGS += -fstack-protector-strong >> TARGET_CXXFLAGS += -fstack-protector-strong >> else ifeq ($(BR2_SSP_ALL),y) >> TARGET_CFLAGS += -fstack-protector-all >> +TARGET_FCFLAGS += -fstack-protector-all >> TARGET_CXXFLAGS += -fstack-protector-all >> endif >> >> @@ -378,6 +386,7 @@ ifeq ($(BR2_STATIC_LIBS),y) >> SHARED_STATIC_LIBS_OPTS = --enable-static --disable-shared >> TARGET_CFLAGS += -static >> TARGET_CXXFLAGS += -static >> +TARGET_FCFLAGS += -static >> TARGET_LDFLAGS += -static >> else ifeq ($(BR2_SHARED_LIBS),y) >> SHARED_STATIC_LIBS_OPTS = --disable-static --enable-shared >> diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk >> index 69fdc0c..87480c7 100644 >> --- a/package/gcc/gcc-final/gcc-final.mk >> +++ b/package/gcc/gcc-final/gcc-final.mk >> @@ -54,7 +54,7 @@ endef >> # Languages supported by the cross-compiler >> GCC_FINAL_CROSS_LANGUAGES-y = c >> GCC_FINAL_CROSS_LANGUAGES-$(BR2_INSTALL_LIBSTDCPP) += c++ >> -GCC_FINAL_CROSS_LANGUAGES-$(BR2_TOOLCHAIN_BUILDROOT_FORTRAN) += fortran >> +GCC_FINAL_CROSS_LANGUAGES-$(BR2_INSTALL_LIBFORTRAN) += fortran >> GCC_FINAL_CROSS_LANGUAGES = $(subst $(space),$(comma),$(GCC_FINAL_CROSS_LANGUAGES-y)) >> >> HOST_GCC_FINAL_CONF_OPTS = \ >> @@ -152,7 +152,7 @@ ifeq ($(BR2_INSTALL_LIBSTDCPP),y) >> HOST_GCC_FINAL_USR_LIBS += libstdc++ >> endif >> >> -ifeq ($(BR2_TOOLCHAIN_BUILDROOT_FORTRAN),y) >> +ifeq ($(BR2_INSTALL_LIBFORTRAN),y) >> HOST_GCC_FINAL_USR_LIBS += libgfortran >> endif >> >> diff --git a/package/pkg-cmake.mk b/package/pkg-cmake.mk >> index 81dcfcc..a93709e 100644 >> --- a/package/pkg-cmake.mk >> +++ b/package/pkg-cmake.mk >> @@ -31,6 +31,8 @@ CMAKE_HOST_C_COMPILER = $(HOSTCC) >> CMAKE_HOST_CXX_COMPILER = $(HOSTCXX) >> endif >> >> +CMAKE_HOST_Fortran_COMPILER ?= $(HOSTFC) >> + > > Is this needed? What for? > AFAICS, there is no host-package requiring HOSTFC... Good point, this can be added when something requires it, removed. > >> ifneq ($(QUIET),) >> CMAKE_QUIET = -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_INSTALL_MESSAGE=NEVER >> endif >> @@ -119,10 +121,12 @@ define $(2)_CONFIGURE_CMDS >> -DCMAKE_INSTALL_PREFIX="$$(HOST_DIR)/usr" \ >> -DCMAKE_C_FLAGS="$$(HOST_CFLAGS)" \ >> -DCMAKE_CXX_FLAGS="$$(HOST_CXXFLAGS)" \ >> + -DCMAKE_FC_FLAGS="$$(HOST_FCFLAGS)" \ > > Why setting CMAKE_FC_FLAGS instead of CMAKE_Fortran_FLAGS? Good catch, fixed. > >> -DCMAKE_EXE_LINKER_FLAGS="$$(HOST_LDFLAGS)" \ >> -DCMAKE_ASM_COMPILER="$$(HOSTAS)" \ >> -DCMAKE_C_COMPILER="$$(CMAKE_HOST_C_COMPILER)" \ >> -DCMAKE_CXX_COMPILER="$$(CMAKE_HOST_CXX_COMPILER)" \ >> + -DCMAKE_Fortran_COMPILER="$$(CMAKE_HOST_Fortran_COMPILER)" \ >> $(if $$(CMAKE_HOST_C_COMPILER_ARG1),\ >> -DCMAKE_C_COMPILER_ARG1="$$(CMAKE_HOST_C_COMPILER_ARG1)" \ >> -DCMAKE_CXX_COMPILER_ARG1="$$(CMAKE_HOST_CXX_COMPILER_ARG1)" \ >> @@ -243,9 +247,11 @@ $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake: >> -e 's#@@STAGING_SUBDIR@@#$(call qstrip,$(STAGING_SUBDIR))#' \ >> -e 's#@@TARGET_CFLAGS@@#$(call qstrip,$(TARGET_CFLAGS))#' \ >> -e 's#@@TARGET_CXXFLAGS@@#$(call qstrip,$(TARGET_CXXFLAGS))#' \ >> + -e 's:@@TARGET_FCFLAGS@@:$(call qstrip,$(TARGET_FCFLAGS)):' \ >> -e 's#@@TARGET_LDFLAGS@@#$(call qstrip,$(TARGET_LDFLAGS))#' \ >> -e 's#@@TARGET_CC@@#$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_CC)))#' \ >> -e 's#@@TARGET_CXX@@#$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_CXX)))#' \ >> + -e 's:@@TARGET_FC@@:$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_FC))):' \ >> -e 's#@@CMAKE_SYSTEM_PROCESSOR@@#$(call qstrip,$(CMAKE_SYSTEM_PROCESSOR))#' \ >> $(TOPDIR)/support/misc/toolchainfile.cmake.in \ >> > $@ >> diff --git a/support/misc/toolchainfile.cmake.in b/support/misc/toolchainfile.cmake.in >> index 5cf381e..4112604 100644 >> --- a/support/misc/toolchainfile.cmake.in >> +++ b/support/misc/toolchainfile.cmake.in >> @@ -15,6 +15,7 @@ set(CMAKE_SYSTEM_PROCESSOR @@CMAKE_SYSTEM_PROCESSOR@@) >> >> set(CMAKE_C_FLAGS "@@TARGET_CFLAGS@@ ${CMAKE_C_FLAGS}" CACHE STRING "Buildroot CFLAGS") >> set(CMAKE_CXX_FLAGS "@@TARGET_CXXFLAGS@@ ${CMAKE_CXX_FLAGS}" CACHE STRING "Buildroot CXXFLAGS") >> +set(CMAKE_Fortran_FLAGS "@@TARGET_FCFLAGS@@ ${CMAKE_Fortran_FLAGS}" CACHE STRING "Buildroot FCFLAGS") >> set(CMAKE_EXE_LINKER_FLAGS "@@TARGET_LDFLAGS@@ ${CMAKE_EXE_LINKER_FLAGS}" CACHE STRING "Buildroot LDFLAGS") >> set(CMAKE_INSTALL_SO_NO_EXE 0) >> >> @@ -29,3 +30,4 @@ set(ENV{PKG_CONFIG_SYSROOT_DIR} "${RELOCATED_HOST_DIR}/@@STAGING_SUBDIR@@") >> # This toolchain file can be used both inside and outside Buildroot. >> set(CMAKE_C_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_CC@@") >> set(CMAKE_CXX_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_CXX@@") >> +set(CMAKE_Fortran_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_FC@@") > > This will set (force to set) the fortran compile path in all > configuration, even in those that do not have it... :-/ Fixed by passing in the fortran support via sed and conditionally setting based on that. That said I'm new to CMake so other suggestions are welcome. > >> diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk >> index ee878e8..196f295 100644 >> --- a/toolchain/helpers.mk >> +++ b/toolchain/helpers.mk >> @@ -382,6 +382,19 @@ check_cplusplus = \ >> fi >> >> # >> +# Check that the external toolchain supports Fortran >> +# >> +# $1: cross-gfortran path >> +# >> +check_fortran = \ >> + __CROSS_FC=$(strip $1) ; \ >> + $${__CROSS_FC} -v > /dev/null 2>&1 ; \ >> + if test $$? -ne 0 ; then \ >> + echo "Fortran support is selected but is not available in external toolchain" ; \ >> + exit 1 ; \ >> + fi >> + >> +# >> # Check that the cross-compiler given in the configuration exists >> # >> # $1: cross-gcc path >> diff --git a/toolchain/toolchain-common.in b/toolchain/toolchain-common.in >> index 46970a6..1d7afa7 100644 >> --- a/toolchain/toolchain-common.in >> +++ b/toolchain/toolchain-common.in >> @@ -17,6 +17,9 @@ config BR2_ENABLE_LOCALE >> config BR2_INSTALL_LIBSTDCPP >> bool >> >> +config BR2_INSTALL_LIBFORTRAN >> + bool >> + >> config BR2_TOOLCHAIN_HAS_THREADS >> bool >> >> diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in >> index ff759a0..64027ff 100644 >> --- a/toolchain/toolchain-external/Config.in >> +++ b/toolchain/toolchain-external/Config.in >> @@ -24,6 +24,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM >> select BR2_TOOLCHAIN_EXTERNAL_GLIBC >> select BR2_TOOLCHAIN_HAS_NATIVE_RPC >> select BR2_INSTALL_LIBSTDCPP >> + select BR2_INSTALL_LIBFORTRAN >> select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 >> select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 >> help >> @@ -46,6 +47,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM >> select BR2_TOOLCHAIN_EXTERNAL_GLIBC >> select BR2_TOOLCHAIN_HAS_NATIVE_RPC >> select BR2_INSTALL_LIBSTDCPP >> + select BR2_INSTALL_LIBFORTRAN >> select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 >> select BR2_TOOLCHAIN_GCC_AT_LEAST_5 >> help >> @@ -68,6 +70,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB >> select BR2_TOOLCHAIN_EXTERNAL_GLIBC >> select BR2_TOOLCHAIN_HAS_NATIVE_RPC >> select BR2_INSTALL_LIBSTDCPP >> + select BR2_INSTALL_LIBFORTRAN >> select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 >> select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 >> help >> @@ -90,6 +93,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB >> select BR2_TOOLCHAIN_EXTERNAL_GLIBC >> select BR2_TOOLCHAIN_HAS_NATIVE_RPC >> select BR2_INSTALL_LIBSTDCPP >> + select BR2_INSTALL_LIBFORTRAN >> select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 >> select BR2_TOOLCHAIN_GCC_AT_LEAST_5 >> help >> @@ -1047,6 +1051,14 @@ config BR2_TOOLCHAIN_EXTERNAL_CXX >> support. If you don't know, leave the default value, >> Buildroot will tell you if it's correct or not. >> >> +config BR2_TOOLCHAIN_EXTERNAL_FORTRAN >> + bool "Toolchain has Fortran support?" >> + select BR2_INSTALL_LIBFORTRAN >> + help >> + Select this option if your external toolchain has Fortran >> + support. If you don't know, leave the default value, >> + Buildroot will tell you if it's correct or not. >> + >> config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS >> string "Extra toolchain libraries to be copied to target" >> help >> diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk >> index 37e1a2e..070d0cf 100644 >> --- a/toolchain/toolchain-external/toolchain-external.mk >> +++ b/toolchain/toolchain-external/toolchain-external.mk >> @@ -90,6 +90,10 @@ ifeq ($(BR2_INSTALL_LIBSTDCPP),y) >> USR_LIB_EXTERNAL_LIBS += libstdc++.so.* >> endif >> >> +ifeq ($(BR2_INSTALL_LIBFORTRAN),y) >> +USR_LIB_EXTERNAL_LIBS += libgfortran.so.* >> +endif >> + >> LIB_EXTERNAL_LIBS += $(call qstrip,$(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS)) >> >> # Details about sysroot directory selection. >> @@ -160,6 +164,7 @@ TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \ >> TOOLCHAIN_EXTERNAL_CROSS = $(TOOLCHAIN_EXTERNAL_BIN)/$(TOOLCHAIN_EXTERNAL_PREFIX)- >> TOOLCHAIN_EXTERNAL_CC = $(TOOLCHAIN_EXTERNAL_CROSS)gcc$(TOOLCHAIN_EXTERNAL_SUFFIX) >> TOOLCHAIN_EXTERNAL_CXX = $(TOOLCHAIN_EXTERNAL_CROSS)g++$(TOOLCHAIN_EXTERNAL_SUFFIX) >> +TOOLCHAIN_EXTERNAL_FC = $(TOOLCHAIN_EXTERNAL_CROSS)gfortran$(TOOLCHAIN_EXTERNAL_SUFFIX) >> TOOLCHAIN_EXTERNAL_READELF = $(TOOLCHAIN_EXTERNAL_CROSS)readelf$(TOOLCHAIN_EXTERNAL_SUFFIX) >> >> ifeq ($(filter $(HOST_DIR)/%,$(TOOLCHAIN_EXTERNAL_BIN)),) >> @@ -495,6 +500,9 @@ define TOOLCHAIN_EXTERNAL_CONFIGURE_CMDS >> if test "$(BR2_INSTALL_LIBSTDCPP)" = "y" ; then \ >> $(call check_cplusplus,$(TOOLCHAIN_EXTERNAL_CXX)) ; \ >> fi ; \ >> + if test "$(BR2_INSTALL_LIBFORTRAN)" = "y" ; then \ >> + $(call check_fortran,$(TOOLCHAIN_EXTERNAL_FC)) ; \ >> + fi ; \ >> if test "$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)" = "y" ; then \ >> $(call check_uclibc,$${SYSROOT_DIR}) ; \ >> elif test "$(BR2_TOOLCHAIN_EXTERNAL_MUSL)" = "y" ; then \ >> @@ -719,7 +727,7 @@ define TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER >> *-ar|*-ranlib|*-nm) \ >> ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \ >> ;; \ >> - *cc|*cc-*|*++|*++-*|*cpp) \ >> + *cc|*cc-*|*++|*++-*|*cpp|*fortran) \ >> ln -sf toolchain-wrapper $$base; \ >> ;; \ >> *gdb|*gdbtui) \ >> -- >> 2.5.0 >> >> _______________________________________________ >> buildroot mailing list >> buildroot at busybox.net >> http://lists.busybox.net/mailman/listinfo/buildroot > > Regards, > > -- > Samuel Fixed and uploading another patch set. Separated out changes to the gcc package (more buildroot toolchain related). Very interested in your branch, in terms of LTO support and the external toolchain helper script! Cheers, Ben ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-03-18 19:29 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-03-17 23:40 [Buildroot] [PATCH 1/2] toolchain-external: add basic fortran support Benjamin Kamath 2016-03-17 23:40 ` [Buildroot] [PATCH 2/2] package: add lapack Benjamin Kamath 2016-03-18 5:23 ` Baruch Siach 2016-03-18 19:17 ` Benjamin Kamath 2016-03-18 7:10 ` [Buildroot] [PATCH 1/2] toolchain-external: add basic fortran support Samuel Martin 2016-03-18 19:29 ` Benjamin Kamath
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox