Skip to content

Commit

Permalink
Merge pull request #207 from libKriging/203-revert-disabled-pylibkrig…
Browse files Browse the repository at this point in the history
…ing-+-windows-in-ci

lfbgsb available for all arch and bindings
  • Loading branch information
hpwxf committed Jun 20, 2022
2 parents 634ccdc + 9d64e7e commit 2e12f7e
Show file tree
Hide file tree
Showing 12 changed files with 58 additions and 18 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,10 @@ jobs:
os: macOS-10.15
mode: Debug
enable_python: on
#- name: "Windows Debug"
# os: windows-2019
# mode: Debug
# enable_python: on
- name: "Windows Debug"
os: windows-2019
mode: Debug
enable_python: on
- name: "Octave Linux"
os: ubuntu-20.04
mode: Release
Expand Down
10 changes: 10 additions & 0 deletions .travis-ci/common/before_script.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,16 @@ if [[ "$DEBUG_CI" == "true" ]]; then
else
echo "No Fortran compiler command found"
fi

echo "------------------------------------"

if ( R CMD config FC >/dev/null 2>&1 ); then
FC=$(R CMD config FC | awk '{ print $1 }')
echo "R Fortran config: ${FC}"
${FC} --version 2>&1 | sed 's/^/ /'
else
echo "No R Fortran compiler command found"
fi

echo "------------------------------------"

Expand Down
11 changes: 11 additions & 0 deletions .travis-ci/linux-macos/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,21 @@ case "$COMPILER" in
;;
esac

if [[ -z ${CMAKE_Fortran_COMPILER} ]]; then
CMAKE_Fortran_COMPILER="$(R CMD config FC | awk '{ print $1 }')"
fi

if [[ -z ${Fortran_LINK_FLAGS} ]]; then
Fortran_LINK_FLAGS="$(R CMD config FLIBS)"
fi


mkdir -p ${BUILD_DIR:-build}
cd ${BUILD_DIR:-build}
cmake \
-G "Unix Makefiles" \
-DCMAKE_Fortran_COMPILER="${CMAKE_Fortran_COMPILER}" \
-DFortran_LINK_FLAGS="${Fortran_LINK_FLAGS}" \
-DCMAKE_BUILD_TYPE="${MODE}" \
-DENABLE_COVERAGE="${ENABLE_COVERAGE}" \
-DENABLE_MEMCHECK="${ENABLE_MEMCHECK}" \
Expand Down
12 changes: 11 additions & 1 deletion .travis-ci/windows/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,20 @@ export EXTRA_SYSTEM_LIBRARY_PATH=${HOME}/Miniconda3/Library/lib
# export EXTRA_SYSTEM_LIBRARY_PATH="C:/Program Files/MATLAB/R2022a/extern/lib/win64/microsoft"
# EXTRA_CMAKE_OPTIONS="${EXTRA_CMAKE_OPTIONS} -DBLAS_NAMES=libmwblas -DLAPACK_NAMES=libmwlapack"

if [[ -z ${CMAKE_Fortran_COMPILER} ]]; then
CMAKE_Fortran_COMPILER="$(R CMD config FC | awk '{ print $1 }')"
fi

if [[ -z ${Fortran_LINK_FLAGS} ]]; then
Fortran_LINK_FLAGS="$(R CMD config FLIBS)"
fi


mkdir -p ${BUILD_DIR:-build}
cd ${BUILD_DIR:-build}
cmake \
-DCMAKE_Fortran_COMPILER=$(command -v gfortran) \
-DCMAKE_Fortran_COMPILER="${CMAKE_Fortran_COMPILER}" \
-DFortran_LINK_FLAGS="${Fortran_LINK_FLAGS}" \
-DCMAKE_GENERATOR_PLATFORM=x64 \
-DEXTRA_SYSTEM_LIBRARY_PATH="${EXTRA_SYSTEM_LIBRARY_PATH}" \
-DENABLE_OCTAVE_BINDING=${ENABLE_OCTAVE_BINDING} \
Expand Down
4 changes: 3 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ project(libKriging
#------------------------------------------------------

enable_language(CXX)
enable_language(Fortran)

#------------------------------------------------------

Expand Down Expand Up @@ -170,6 +169,9 @@ include_directories(SYSTEM ${CMAKE_BINARY_DIR}/dependencies/optim/header_only_ve

add_library(blas ALIAS armadillo) # to use armadillo blas inside lbfgsb_cpp
add_subdirectory(dependencies/lbfgsb_cpp)
#set(lbfgsb_INSTALL_DIR "${CMAKE_BINARY_DIR}/lbfgsb-installed")
#set(lbfgsb_DIR "${lbfgsb_INSTALL_DIR}/lib/cmake/lbfgsb")
#find_package(lbfgsb CONFIG REQUIRED)

#------------------------------------------------------

Expand Down
4 changes: 2 additions & 2 deletions bindings/R/rlibkriging/src/Makevars
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,14 @@ else
LIB_SUFFIX=a
endif

ARMA_LIBS=$(shell ../../tools/ArmaLibsExtractor.sh)
EXTERNAL_LIBS=$(shell ../../tools/ExternalLibsExtractor.sh)

CXX_STD = CXX11

#PKG_CFLAGS=
PKG_CPPFLAGS=-I${LIBKRIGING_PATH}/include -include "libKriging/utils/lkalloc.hpp" -DARMA_ALIEN_MEM_ALLOC_FUNCTION=lkalloc::malloc -DARMA_ALIEN_MEM_FREE_FUNCTION=lkalloc::free
# https://stackoverflow.com/questions/49154506/understanding-makevars-for-linking-to-external-c-library-in-r-package
PKG_LIBS=-L${LIBKRIGING_PATH}/lib -lKriging -larmadillo -llbfgsb_cpp $(EXTRA_PKG_LIBS) $(ARMA_LIBS)
PKG_LIBS=-L${LIBKRIGING_PATH}/lib -lKriging -larmadillo -llbfgsb $(EXTRA_PKG_LIBS) $(EXTERNAL_LIBS)
MAKEFLAGS=-j$(nproc)

$(SHLIB): .check ${LIBKRIGING_PATH}/lib/libKriging.$(LIB_SUFFIX) ${LIBKRIGING_PATH}/lib/libarmadillo.$(LIB_SUFFIX)
Expand Down
4 changes: 2 additions & 2 deletions bindings/R/rlibkriging/src/Makevars.win
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ endif

PKG_CFLAGS=
PKG_CPPFLAGS=-I${LIBKRIGING_PATH}/include -include "libKriging/utils/lkalloc.hpp" -DARMA_ALIEN_MEM_ALLOC_FUNCTION=lkalloc::malloc -DARMA_ALIEN_MEM_FREE_FUNCTION=lkalloc::free
PKG_CXXFLAGS=-std=c++11
PKG_CXXFLAGS=-std=c++11
# https://stackoverflow.com/questions/49154506/understanding-makevars-for-linking-to-external-c-library-in-r-package
PKG_LIBS=-L${LIBKRIGING_PATH}/lib -lKriging -larmadillo -llbfgsb_cpp ${EXTRA_SYSTEM_LIBRARY_PATH}/openblas.lib $(EXTRA_PKG_LIBS)
PKG_LIBS=-L${LIBKRIGING_PATH}/lib -lKriging -larmadillo -llbfgsb ${EXTRA_SYSTEM_LIBRARY_PATH}/openblas.lib $(EXTRA_PKG_LIBS)

$(SHLIB): .check ${LIBKRIGING_PATH}/lib/libKriging.$(LIB_SUFFIX) ${LIBKRIGING_PATH}/lib/libarmadillo.$(LIB_SUFFIX)

Expand Down
13 changes: 11 additions & 2 deletions bindings/R/tools/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
cmake_minimum_required(VERSION 3.13)
project(armadillo_lib_extractor LANGUAGES NONE)

include(${LIBKRIGING_PATH}/share/Armadillo/CMake/ArmadilloLibraryDepends.cmake)
get_target_property(arma_libs armadillo INTERFACE_LINK_LIBRARIES)
list(JOIN arma_libs " " lib_str)
message(STATUS ARMA_LIBS=${lib_str})

include(${LIBKRIGING_PATH}/lib/cmake/lbfgsb/lbfgsbConfig.cmake)
get_target_property(lbfgsb_libs lbfgsb::lbfgsb INTERFACE_LINK_LIBRARIES)

#include(${LIBKRIGING_PATH}/lib/cmake/lbfgsb_cpp/lbfgsb_cppConfig.cmake)
#get_target_property(lbfgsb_cpp_libs lbfgsb_cpp::lbfgsb_cpp INTERFACE_LINK_LIBRARIES)

set(external_libs ${arma_libs} ${lbfgsb_libs} ${lbfgsb_cpp_libs})
list(JOIN external_libs " " lib_str)
message(STATUS EXTERNAL_LIBS=${lib_str})
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ if [[ ! -d "${LIBKRIGING_PATH}" ]]; then
fi

BASEDIR=$(dirname "$0")
BASEDIR=$(readlink -f "${BASEDIR}")
BASEDIR=$(cd "$BASEDIR" && pwd -P)

TMPDIR=$(mktemp -d)
ARMA_LIBS=$(cmake -DLIBKRIGING_PATH="${LIBKRIGING_PATH}" -B "${TMPDIR}" "${BASEDIR}" | sed -n -r -e 's/^-- ARMA_LIBS=(.*)$/\1/p')
ARMA_LIBS=$(cmake -DLIBKRIGING_PATH="${LIBKRIGING_PATH}" -B "${TMPDIR}" "${BASEDIR}" | sed -n -r -e 's/^-- EXTERNAL_LIBS=(.*)$/\1/p')
echo "${ARMA_LIBS}"
rm -fr "${TMPDIR}"
2 changes: 1 addition & 1 deletion src/lib/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ if (CXX_CLANG_TIDY)
CXX_CLANG_TIDY ${CXX_CLANG_TIDY})
endif ()

target_link_libraries(Kriging PUBLIC armadillo lbfgsb_cpp)
target_link_libraries(Kriging PUBLIC armadillo lbfgsb_cpp::lbfgsb_cpp)

# TODO check if this method is useful
# * https://atomheartother.github.io/c++/2018/07/12/CPPDynLib.html
Expand Down
2 changes: 0 additions & 2 deletions src/lib/include/libKriging/utils/data_from_arma_vec.hpp
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
#ifndef LIBKRIGING_SRC_LIB_INCLUDE_LIBKRIGING_UTILS_DATA_FROM_ARMA_VEC_HPP
#define LIBKRIGING_SRC_LIB_INCLUDE_LIBKRIGING_UTILS_DATA_FROM_ARMA_VEC_HPP

namespace std {
inline double* data(arma::vec& x) {
return x.memptr();
}
} // namespace std

#endif // LIBKRIGING_SRC_LIB_INCLUDE_LIBKRIGING_UTILS_DATA_FROM_ARMA_VEC_HPP

0 comments on commit 2e12f7e

Please sign in to comment.