Skip to content

Commit f3fbcda

Browse files
CMakeLists.txt: fix build with ninja
$ cmake -GNinja -B build/ && cmake --build build/ Results in this error: ninja: error: build.ninja:158: bad $-escape (literal $ must be written as $$) Replacing the $(MAKE) command with make gives us this new error: ninja: error: 'backtrace-prefix/lib/libbacktrace.a', needed by 'bin/fluent-bit', missing and no known rule to make it So fix that by properly defining the BUILD_BYPRODUCTS. (Also see https://cmake.org/cmake/help/latest/module/ExternalProject.html#build-step-options) Signed-off-by: Thomas Devoogdt <thomas@devoogdt.com>
1 parent 8aee285 commit f3fbcda

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

CMakeLists.txt

+20-6
Original file line numberDiff line numberDiff line change
@@ -938,6 +938,16 @@ else()
938938
set(AUTOCONF_HOST_OPT "--host=${GNU_HOST}")
939939
endif()
940940

941+
if(CMAKE_GENERATOR MATCHES "Ninja")
942+
if(FLB_SYSTEM_WINDOWS)
943+
MESSAGE(FATAL_ERROR "Building with Ninja is not supported on Windows")
944+
else()
945+
set(EXTERNAL_BUILD_TOOL "make")
946+
endif()
947+
else()
948+
set(EXTERNAL_BUILD_TOOL "$(MAKE)")
949+
endif()
950+
941951
# Memory Allocator
942952
# ================
943953
if(FLB_JEMALLOC AND ${CMAKE_SYSTEM_NAME} MATCHES "Linux")
@@ -953,15 +963,17 @@ if(FLB_JEMALLOC AND ${CMAKE_SYSTEM_NAME} MATCHES "Linux")
953963
message(STATUS "jemalloc configure: ${FLB_JEMALLOC_OPTIONS_LIST}")
954964

955965
# Link to Jemalloc as an external dependency
966+
set(FLB_LIBJEMALLOC_PATH "${CMAKE_CURRENT_BINARY_DIR}/lib/libjemalloc_pic.a")
956967
ExternalProject_Add(jemalloc
957968
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/jemalloc-5.3.0
958969
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/jemalloc-5.3.0/configure ${AUTOCONF_HOST_OPT} "${FLB_JEMALLOC_OPTIONS_LIST}" --prefix=<INSTALL_DIR>
959970
CFLAGS=-std=gnu99\ -Wall\ -pipe\ -g3\ -O3\ -funroll-loops
960-
BUILD_COMMAND $(MAKE)
971+
BUILD_COMMAND ${EXTERNAL_BUILD_TOOL}
972+
BUILD_BYPRODUCTS ${FLB_LIBJEMALLOC_PATH}
961973
INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/
962-
INSTALL_COMMAND $(MAKE) install_lib_static install_include)
974+
INSTALL_COMMAND ${EXTERNAL_BUILD_TOOL} install_lib_static install_include)
963975
add_library(libjemalloc STATIC IMPORTED GLOBAL)
964-
set_target_properties(libjemalloc PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/lib/libjemalloc_pic.a")
976+
set_target_properties(libjemalloc PROPERTIES IMPORTED_LOCATION ${FLB_LIBJEMALLOC_PATH})
965977
add_dependencies(libjemalloc jemalloc)
966978
include_directories("${CMAKE_BINARY_DIR}/include/")
967979
else()
@@ -979,14 +991,16 @@ if(FLB_BACKTRACE)
979991
else()
980992
set(DEPS_C_COMPILER "${CMAKE_C_COMPILER}")
981993
endif()
994+
set(FLB_LIBBACKTRACE_PATH "${CMAKE_CURRENT_BINARY_DIR}/backtrace-prefix/lib/libbacktrace.a")
982995
ExternalProject_Add(backtrace
983996
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/libbacktrace-8602fda/
984997
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/libbacktrace-8602fda/configure ${AUTOCONF_HOST_OPT} --prefix=<INSTALL_DIR> --enable-shared=no --enable-static=yes
985-
BUILD_COMMAND $(MAKE)
986-
INSTALL_COMMAND $(MAKE) DESTDIR= install
998+
BUILD_COMMAND ${EXTERNAL_BUILD_TOOL}
999+
BUILD_BYPRODUCTS ${FLB_LIBBACKTRACE_PATH}
1000+
INSTALL_COMMAND ${EXTERNAL_BUILD_TOOL} DESTDIR= install
9871001
)
9881002
add_library(libbacktrace STATIC IMPORTED GLOBAL)
989-
set_target_properties(libbacktrace PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/backtrace-prefix/lib/libbacktrace.a")
1003+
set_target_properties(libbacktrace PROPERTIES IMPORTED_LOCATION ${FLB_LIBBACKTRACE_PATH})
9901004
add_dependencies(libbacktrace backtrace)
9911005
include_directories("${CMAKE_CURRENT_BINARY_DIR}/backtrace-prefix/include/")
9921006
endif()

0 commit comments

Comments
 (0)