From a20e3267cdf79b01241ec09dc05f60f3190d28f7 Mon Sep 17 00:00:00 2001 From: Lorenzo Fontana Date: Tue, 18 Aug 2020 18:01:59 +0200 Subject: [PATCH] build: make sure lyaml is linked with the bundled libyaml Signed-off-by: Lorenzo Fontana --- .circleci/config.yml | 2 +- CMakeLists.txt | 6 ++---- cmake/modules/jq.cmake | 3 ++- cmake/modules/libyaml.cmake | 34 ++++++++++++++-------------------- 4 files changed, 19 insertions(+), 26 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index cbc3cfd3..c601dba9 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -75,7 +75,7 @@ jobs: command: apt update -y - run: name: Install dependencies - command: DEBIAN_FRONTEND=noninteractive apt install cmake build-essential clang llvm git linux-headers-generic libncurses-dev pkg-config autoconf libtool -y + command: DEBIAN_FRONTEND=noninteractive apt install cmake build-essential clang llvm git linux-headers-generic libncurses-dev pkg-config autoconf libtool libelf-dev -y - run: name: Prepare project command: | diff --git a/CMakeLists.txt b/CMakeLists.txt index 89f93f7b..29d73cd1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -166,16 +166,14 @@ include(libyaml) set(LYAML_SRC "${PROJECT_BINARY_DIR}/lyaml-prefix/src/lyaml/ext/yaml") set(LYAML_LIB "${LYAML_SRC}/.libs/yaml.a") message(STATUS "Using bundled lyaml in '${LYAML_SRC}'") -set(LYAML_DEPENDENCIES "") -list(APPEND LYAML_DEPENDENCIES "luajit") ExternalProject_Add( lyaml - DEPENDS ${LYAML_DEPENDENCIES} + DEPENDS luajit libyaml URL "https://github.com/gvvaughan/lyaml/archive/release-v6.0.tar.gz" URL_HASH "SHA256=9d7cf74d776999ff6f758c569d5202ff5da1f303c6f4229d3b41f71cd3a3e7a7" BUILD_COMMAND ${CMD_MAKE} BUILD_IN_SOURCE 1 - CONFIGURE_COMMAND ./configure --enable-static LIBS=-lyaml LUA_INCLUDE=-I${LUAJIT_INCLUDE} LUA=${LUAJIT_SRC}/luajit + CONFIGURE_COMMAND ./configure --enable-static CFLAGS=-I${LIBYAML_INSTALL_DIR}/include CPPFLAGS=-I${LIBYAML_INSTALL_DIR}/include LDFLAGS=-L${LIBYAML_INSTALL_DIR}/lib LIBS=-lyaml LUA=${LUAJIT_SRC}/luajit LUA_INCLUDE=-I${LUAJIT_INCLUDE} INSTALL_COMMAND sh -c "cp -R ${PROJECT_BINARY_DIR}/lyaml-prefix/src/lyaml/lib/* ${PROJECT_SOURCE_DIR}/userspace/engine/lua") diff --git a/cmake/modules/jq.cmake b/cmake/modules/jq.cmake index f4798476..a2463613 100644 --- a/cmake/modules/jq.cmake +++ b/cmake/modules/jq.cmake @@ -21,10 +21,11 @@ if (NOT USE_BUNDLED_DEPS) else () set(JQ_SRC "${PROJECT_BINARY_DIR}/jq-prefix/src/jq") message(STATUS "Using bundled jq in '${JQ_SRC}'") - set(JQ_INCLUDE "${JQ_SRC}") + set(JQ_INCLUDE "${JQ_SRC}/target/include") set(JQ_INSTALL_DIR "${JQ_SRC}/target") set(JQ_LIB "${JQ_INSTALL_DIR}/lib/libjq.a") set(ONIGURUMA_LIB "${JQ_INSTALL_DIR}/lib/libonig.a") + message(STATUS "Bundled jq: include: ${JQ_INCLUDE}, lib: ${JQ_LIB}") # Why we mirror jq here? # diff --git a/cmake/modules/libyaml.cmake b/cmake/modules/libyaml.cmake index 920a294d..a5ee843b 100644 --- a/cmake/modules/libyaml.cmake +++ b/cmake/modules/libyaml.cmake @@ -10,23 +10,17 @@ # "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. # -if(NOT USE_BUNDLED_DEPS) - find_library(LIBYAML_LIB NAMES libyaml.so) - if(LIBYAML_LIB) - message(STATUS "Found libyaml: lib: ${LIBYAML_LIB}") - else() - message(FATAL_ERROR "Couldn't find system libyaml") - endif() -else() - set(LIBYAML_SRC "${PROJECT_BINARY_DIR}/libyaml-prefix/src/libyaml") - message(STATUS "Using bundled libyaml in '${LIBYAML_SRC}'") - set(LIBYAML_LIB "${LIBYAML_SRC}/src/.libs/libyaml.a") - ExternalProject_Add( - libyaml - URL "https://github.com/yaml/libyaml/releases/download/0.2.5/yaml-0.2.5.tar.gz" - URL_HASH "SHA256=c642ae9b75fee120b2d96c712538bd2cf283228d2337df2cf2988e3c02678ef4" - CONFIGURE_COMMAND ./configure --enable-static=true --enable-shared=false - BUILD_COMMAND ${CMD_MAKE} - BUILD_IN_SOURCE 1 - INSTALL_COMMAND "") -endif() + +set(LIBYAML_SRC "${PROJECT_BINARY_DIR}/libyaml-prefix/src/libyaml") +set(LIBYAML_INSTALL_DIR "${LIBYAML_SRC}/target") +message(STATUS "Using bundled libyaml in '${LIBYAML_SRC}'") +set(LIBYAML_LIB "${LIBYAML_SRC}/src/.libs/libyaml.a") +ExternalProject_Add( +libyaml +URL "https://github.com/yaml/libyaml/releases/download/0.2.5/yaml-0.2.5.tar.gz" +URL_HASH "SHA256=c642ae9b75fee120b2d96c712538bd2cf283228d2337df2cf2988e3c02678ef4" +CONFIGURE_COMMAND ./configure --prefix=${LIBYAML_INSTALL_DIR} CFLAGS=-fPIC CPPFLAGS=-fPIC --enable-static=true --enable-shared=false +BUILD_COMMAND ${CMD_MAKE} +BUILD_IN_SOURCE 1 +INSTALL_COMMAND ${CMD_MAKE} install) +