44# Created 2006/10/20
55# Author: Sriram Rao (Kosmix Corp)
66#
7- # Copyright 2008-2017 Quantcast Corporation. All rights reserved.
7+ # Copyright 2008-2025 Quantcast Corporation. All rights reserved.
88# Copyright 2006 Kosmix Corp.
99#
1010# This file is part of Quantcast File System.
2222# permissions and limitations under the License.
2323
2424cmake_minimum_required (VERSION 2.8.4...10.0 FATAL_ERROR)
25- cmake_policy (VERSION ${CMAKE_MAJOR_VERSION} .${CMAKE_MINOR_VERSION} .${CMAKE_PATCH_VERSION} )
25+ cmake_policy (VERSION
26+ ${CMAKE_MAJOR_VERSION} .${CMAKE_MINOR_VERSION} .${CMAKE_PATCH_VERSION} )
2627
27- IF (NOT DEFINED KFS_DIR_PREFIX)
28- set (KFS_DIR_PREFIX ${CMAKE_SOURCE_DIR} )
29- ENDIF ( NOT DEFINED KFS_DIR_PREFIX )
28+ if (NOT DEFINED KFS_DIR_PREFIX)
29+ set (KFS_DIR_PREFIX ${CMAKE_SOURCE_DIR} )
30+ endif ( )
3031
31- project (QFS)
32+ project (QFS)
3233set (CMAKE_MODULE_PATH ${KFS_DIR_PREFIX} /cmake/Modules)
3334
34- IF (NOT DEFINED Boost_NO_BOOST_CMAKE)
35- IF (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 8 AND
36- 5 LESS ${CMAKE_PATCH_VERSION} )
35+ if (NOT DEFINED Boost_NO_BOOST_CMAKE)
36+ if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 8 AND
37+ 5 LESS ${CMAKE_PATCH_VERSION} )
3738 # Turn off by default with 2.8.5 < cmake < 2.9.0 to
3839 # work around cmake28 and boost libraries problem on centos 6.
3940 # Boost_NO_BOOST_CMAKE was introduced int cmake 2.8.6
4041 set (Boost_NO_BOOST_CMAKE ON )
41- ENDIF (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 8 AND
42- 5 LESS ${CMAKE_PATCH_VERSION} )
43- ENDIF (NOT DEFINED Boost_NO_BOOST_CMAKE)
42+ endif ()
43+ endif ()
4444
4545if (NOT DEFINED QFS_USE_STATIC_LIB_LINKAGE)
4646 set (QFS_USE_STATIC_LIB_LINKAGE ON )
@@ -53,9 +53,8 @@ endif()
5353set (Boost_USE_MULTITHREADED ON )
5454
5555# Require the packages we need to build
56- if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR
57- CYGWIN OR
58- CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" )
56+ if (CYGWIN OR
57+ CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" )
5958 find_package (Boost COMPONENTS regex system REQUIRED)
6059else ()
6160 find_package (Boost COMPONENTS regex REQUIRED)
@@ -67,46 +66,64 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
6766 set (CMAKE_INSTALL_RPATH @loader_path)
6867endif ()
6968
70- if (CYGWIN )
69+ if (CYGWIN )
7170 set (CMAKE_FIND_LIBRARY_PREFIXES ${CMAKE_FIND_LIBRARY_PREFIXES} "" )
72- set (CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES} ".dll.a" ".lib" )
71+ set (CMAKE_FIND_LIBRARY_SUFFIXES
72+ ${CMAKE_FIND_LIBRARY_SUFFIXES} ".dll.a" ".lib" )
73+
7374 # For now only for cygwin to get strptime, and gnu specific glob flags.
7475 add_definitions (-D_GNU_SOURCE)
7576endif ()
7677
77- if (QFS_OMIT_JNI)
78- message (STATUS "Not building QFS JNI" )
78+ if (QFS_OMIT_JNI)
79+ message (STATUS "Not building QFS JNI" )
7980else ()
8081 set (JAVA_AWT_LIBRARY NotNeeded)
8182 set (JAVA_JVM_LIBRARY NotNeeded)
8283 set (JAVA_AWT_INCLUDE_PATH NotNeeded)
8384 find_package (JNI REQUIRED)
8485endif ()
86+
8587find_package (Jerasure REQUIRED)
8688find_package (Krb5 REQUIRED krb5)
8789find_package (OpenSSL REQUIRED)
8890find_package (FUSE)
8991
9092add_definitions (-DBOOST_BIND_GLOBAL_PLACEHOLDERS)
93+
94+ # BOOST_SP_USE_QUICK_ALLOCATOR and BOOST_SP_USE_STD_ALLOCATOR are deprecated in
95+ # Boost 1.87 and later.
96+ if (Boost_MAJOR_VERSION LESS 1 OR
97+ (Boost_MAJOR_VERSION EQUAL 1 AND Boost_MINOR_VERSION LESS 87))
98+ add_definitions (-DBOOST_SP_USE_QUICK_ALLOCATOR)
99+ endif ()
100+
91101# Define various options based on the library configuration we use
92102if (KRB5_FLAVOR)
93103 add_definitions (-DKFS_KRB_USE_${KRB5_FLAVOR} )
94104endif ()
105+
95106if (KRB5_USE_KRB5H)
96107 add_definitions (-DKFS_KRB_USE_KRB5H)
97108endif ()
98- if ("${KRB5_FLAVOR} " STREQUAL "HEIMDAL" OR KRB5_HAS_krb5_get_init_creds_opt_set_out_ccache)
109+
110+ if ("${KRB5_FLAVOR} " STREQUAL "HEIMDAL" OR
111+ KRB5_HAS_krb5_get_init_creds_opt_set_out_ccache)
99112 add_definitions (-DKFS_KRB_USE_KRB5_GET_INIT_CREDS_OPT)
100113endif ()
114+
101115if (KRB5_HAS_krb5_unparse_name_flags_ext)
102116 add_definitions (-DKRB5_HAS_krb5_unparse_name_flags_ext)
103117endif ()
118+
104119if (KRB5_HAS_krb5_unparse_name_ext)
105120 add_definitions (-DKRB5_HAS_krb5_unparse_name_ext)
106121endif ()
122+
107123if (KRB5_HAS_krb5_free_keytab_entry_contents)
108124 add_definitions (-DKRB5_HAS_krb5_free_keytab_entry_contents)
109125endif ()
126+
110127if (KRB5_HAS_krb5_kt_free_entry)
111128 add_definitions (-DKRB5_HAS_krb5_kt_free_entry)
112129endif ()
@@ -125,38 +142,38 @@ endif()
125142
126143# Build with statically linked libraries; the value for this variable has to be
127144# defined here overwriting whatever is in the cache.
128- # When setto ON, we build with statically linked libraries; when off we
145+ # When set to ON, we build with statically linked libraries; when off we
129146# link with dynamically linked libs
147+ if (NOT DEFINED QFS_USE_STATIC_LIB_LINKAGE)
148+ set (QFS_USE_STATIC_LIB_LINKAGE TRUE )
149+ endif ()
130150
131- IF (NOT DEFINED QFS_USE_STATIC_LIB_LINKAGE)
132- set (QFS_USE_STATIC_LIB_LINKAGE TRUE )
133- ENDIF (NOT DEFINED QFS_USE_STATIC_LIB_LINKAGE)
151+ if (QFS_USE_STATIC_LIB_LINKAGE)
152+ message (STATUS "Build binaries with statically linked QFS libraries" )
153+ else ()
154+ message (STATUS "Build binaries with dynamically linked QFS libraries" )
155+ endif ()
134156
135- IF (QFS_USE_STATIC_LIB_LINKAGE)
136- message (STATUS "Build binaries with statically linked QFS libraries" )
137- ELSE (QFS_USE_STATIC_LIB_LINKAGE)
138- message (STATUS "Build binaries with dynamically linked QFS libraries" )
139- ENDIF (QFS_USE_STATIC_LIB_LINKAGE)
140- set (USE_STATIC_LIB_LINKAGE ${QFS_USE_STATIC_LIB_LINKAGE} CACHE BOOL
157+ set (USE_STATIC_LIB_LINKAGE ${QFS_USE_STATIC_LIB_LINKAGE} CACHE BOOL
141158 "Build binaries with statically linked libraries" FORCE)
142159
143160if (ENABLE_COVERAGE)
144161 message (STATUS "Enabling code coverage with gcov" )
145- set (CMAKE_CXX_FLAGS "-coverage" )
162+ set (CMAKE_CXX_FLAGS "-coverage" )
146163 set (CMAKE_C_FLAGS "-coverage" )
147164endif ()
148165
149166if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" )
150- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14" )
167+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14" )
151168endif ()
152169
153170if (ENABLE_PROFILING)
154171 message (STATUS "Enabling profiling with gprof" )
155- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg" )
156- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pg" )
172+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg" )
173+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pg" )
157174 set (CMAKE_SHAREDBoost_USE_MULTITHREADED_LINKER_FLAGS
158175 "${CMAKE_SHARED_LINKER_FLAGS} -pg" )
159- set (CMAKE_EXE_FLAGS "${CMAKE_EXE_FLAGS} -pg" )
176+ set (CMAKE_EXE_FLAGS "${CMAKE_EXE_FLAGS} -pg" )
160177endif ()
161178
162179# Change the line to Release to build release binaries
@@ -169,14 +186,14 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release")
169186 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D NDEBUG -g3" )
170187endif ()
171188
172- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -DBOOST_SP_USE_QUICK_ALLOCATOR " )
189+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall" )
173190string (TOUPPER KFS_OS_NAME_${CMAKE_SYSTEM_NAME} KFS_OS_NAME)
174- add_definitions (-D${KFS_OS_NAME} )
191+ add_definitions (-D${KFS_OS_NAME} )
175192
176- IF (ENABLE_IO_BUFFER_DEBUG)
193+ if (ENABLE_IO_BUFFER_DEBUG)
177194 add_definitions (-DDEBUG_IOBuffer)
178195 message (STATUS "Enabled IO buffer debug" )
179- ENDIF (ENABLE_IO_BUFFER_DEBUG )
196+ endif ( )
180197
181198if (DEFINED QFS_EXTRA_CXX_OPTIONS)
182199 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${QFS_EXTRA_CXX_OPTIONS} " )
@@ -195,11 +212,13 @@ if(FUSE_FOUND)
195212 message (STATUS "fuse definitions: ${FUSE_DEFINITIONS} " )
196213 message (STATUS "fuse version: ${FUSE_MAJOR_VERSION} .${FUSE_MINOR_VERSION} " )
197214 add_definitions (${FUSE_DEFINITIONS} )
215+
198216 if (${FUSE_MAJOR_VERSION} LESS 3)
199217 add_definitions (-D FUSE_USE_VERSION=26)
200218 else ()
201219 add_definitions (-D FUSE_USE_VERSION=30)
202220 endif ()
221+
203222 include_directories (${FUSE_INCLUDE_DIRS} )
204223else ()
205224 message (STATUS "Not building qfs_fuse" )
@@ -215,10 +234,11 @@ include_directories(
215234 ${JAVA_INCLUDE_PATH2}
216235)
217236
218- # get the subdirs we want
219- if (NOT QFS_OMIT_JNI)
237+ # Get the sub directories we want.
238+ if (NOT QFS_OMIT_JNI)
220239 add_subdirectory (${KFS_DIR_PREFIX} /src/cc/access src/cc/access)
221240endif ()
241+
222242add_subdirectory (${KFS_DIR_PREFIX} /src/cc/chunk src/cc/chunk)
223243add_subdirectory (${KFS_DIR_PREFIX} /src/cc/common src/cc/common)
224244add_subdirectory (${KFS_DIR_PREFIX} /src/cc/devtools src/cc/devtools)
@@ -242,7 +262,7 @@ if(FUSE_FOUND)
242262 add_subdirectory (${KFS_DIR_PREFIX} /src/cc/fuse src/cc/fuse)
243263endif ()
244264
245- add_custom_target (
265+ add_custom_target (
246266 rat ${KFS_DIR_PREFIX} /scripts/rat.sh ${KFS_DIR_PREFIX}
247267 COMMENT "Running license release audit tool (rat)"
248268 VERBATIM
0 commit comments