Skip to content

Commit e0d4f54

Browse files
committed
hunterized
1 parent 493b08d commit e0d4f54

45 files changed

Lines changed: 609 additions & 2217 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 5 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,6 @@
1-
# This file is used to ignore files which are generated
2-
# ----------------------------------------------------------------------------
3-
4-
*~
5-
*.autosave
6-
*.a
7-
*.core
8-
*.moc
9-
*.o
10-
*.obj
11-
*.orig
12-
*.rej
13-
*.so
14-
*.so.*
15-
*_pch.h.cpp
16-
*_resource.rc
17-
*.qm
18-
.#*
19-
*.*#
20-
core
21-
!core/
22-
tags
1+
*.dat
2+
.idea/
3+
*.swp
234
.DS_Store
24-
.directory
25-
*.debug
26-
Makefile*
27-
*.prl
28-
*.app
29-
moc_*.cpp
30-
ui_*.h
31-
qrc_*.cpp
32-
Thumbs.db
33-
*.res
34-
*.rc
35-
/.qmake.cache
36-
/.qmake.stash
37-
38-
# qtcreator generated files
39-
*.pro.user*
40-
41-
# xemacs temporary files
42-
*.flc
43-
44-
# Vim temporary files
45-
.*.swp
46-
47-
# Visual Studio generated files
48-
*.ib_pdb_index
49-
*.idb
50-
*.ilk
51-
*.pdb
52-
*.sln
53-
*.suo
54-
*.vcproj
55-
*vcproj.*.*.user
56-
*.ncb
57-
*.sdf
58-
*.opensdf
59-
*.vcxproj
60-
*vcxproj.*
61-
62-
# MinGW generated files
63-
*.Debug
64-
*.Release
65-
66-
# Python byte code
67-
*.pyc
68-
69-
# Binaries
70-
# --------
71-
*.dll
72-
*.exe
73-
5+
*build*/
6+
*install*/

CMakeLists.txt

Lines changed: 87 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,96 @@
1-
project(MARC-FS)
2-
cmake_minimum_required(VERSION 2.8)
3-
aux_source_directory(. SRC_LIST)
1+
cmake_minimum_required(VERSION 3.3)
2+
3+
include("cmake/HunterGate.cmake")
4+
HunterGate(
5+
URL "https://github.com/rusdevops/hunter/archive/v0.19.109.6.tar.gz"
6+
SHA1 "1d5ec3d14107ef4fd5ac40af1ab9aa82680fdbe3"
7+
)
8+
9+
set(MARC_VERSION_MAJOR 0)
10+
set(MARC_VERSION_MINOR 4)
11+
set(MARC_VERSION_PATCH 0)
12+
set(MARC_VERSION ${MARC_VERSION_MAJOR}.${MARC_VERSION_MINOR}.${MARC_VERSION_PATCH})
13+
14+
project(MARC VERSION ${MARC_VERSION})
415

5-
# C++ standard
616
set(CMAKE_CXX_STANDARD 14)
7-
MESSAGE(STATUS "Cmake system: " ${CMAKE_SYSTEM} )
8-
MESSAGE(STATUS "Cmake arch: " ${CMAKE_SYSTEM_PROCESSOR} )
9-
10-
# custom compile flags
11-
set(FUSE_REQUIRED_FLAGS "-D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=26")
12-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FUSE_REQUIRED_FLAGS}")
13-
14-
# modules
15-
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/CMakeModules")
16-
17-
# #
18-
# internal libs and packages #
19-
# #
20-
21-
# Curl C++ bindings
22-
ADD_SUBDIRECTORY(contrib/curlcpp EXCLUDE_FROM_ALL)
23-
INCLUDE_DIRECTORIES(${CURLCPP_SOURCE_DIR}/include)
24-
25-
# Googletest bindings
26-
ADD_SUBDIRECTORY(contrib/googletest/googletest EXCLUDE_FROM_ALL)
27-
INCLUDE_DIRECTORIES(${gtest_SOURCE_DIR}/include)
28-
29-
# #
30-
# external libs and packages #
31-
# #
32-
33-
# FUSE
34-
find_package(FUSE REQUIRED)
35-
if(NOT FUSE_FOUND)
36-
message(SEND_ERROR "Failed to find fuse")
37-
return()
38-
else()
39-
include_directories(${FUSE_INCLUDE_DIR})
40-
endif()
17+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
4118

42-
# JSONCPP
43-
find_package(JSONCPP REQUIRED)
44-
if (NOT JSONCPP_FOUND)
45-
message(SEND_ERROR "Failed to find jsoncpp")
46-
return()
47-
else()
48-
include_directories(${JSONCPP_INCLUDE_DIR})
49-
endif()
19+
option(BUILD_TESTS "Build tests" OFF)
5020

51-
# JEMALLOC - optional
52-
find_package(JEMALLOC)
53-
if(JEMALLOC_FOUND)
54-
include_directories(${JEMALLOC_INCLUDE_DIRS})
55-
else()
56-
message(WARNING "jemalloc not found but highly recommended")
57-
endif()
21+
hunter_add_package(CURLCPP)
22+
find_package(CURLCPP CONFIG REQUIRED)
23+
24+
hunter_add_package(jsoncpp)
25+
find_package(jsoncpp CONFIG REQUIRED)
5826

59-
# first, run tests
60-
set(SRC_NO_MAIN ${SRC_LIST})
61-
list(REMOVE_ITEM SRC_NO_MAIN ./main.cpp)
62-
add_executable(apitest ${SRC_NO_MAIN} tests/apitest.cpp)
63-
target_link_libraries(apitest
64-
gtest_main
65-
curlcpp
66-
${JSONCPP_LIBRARIES}
67-
${FUSE_LIBRARIES})
68-
add_test(NAME rest_api_test COMMAND apitest)
69-
70-
# final binary
71-
add_executable(marcfs ${SRC_LIST})
72-
target_link_libraries(marcfs
73-
curlcpp
74-
pthread
75-
${JSONCPP_LIBRARIES}
76-
${FUSE_LIBRARIES}
27+
28+
file(GLOB ${PROJECT_NAME}_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/sources/*.cpp")
29+
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/)
30+
31+
add_library(libmarc ${${PROJECT_NAME}_SOURCES})
32+
set_target_properties(libmarc PROPERTIES PREFIX "")
33+
set_target_properties(libmarc PROPERTIES IMPORT_PREFIX "")
34+
35+
36+
target_link_libraries(libmarc jsoncpp_lib_static CURLCPP::libcurlcpp)
37+
38+
target_include_directories(libmarc PUBLIC
39+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
40+
$<INSTALL_INTERFACE:include>
7741
)
7842

79-
# optional libs
80-
if(JEMALLOC_FOUND)
81-
target_link_libraries(marcfs ${JEMALLOC_LIBRARIES})
43+
# Install
44+
45+
set(GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
46+
47+
set(CONFIG_INSTALL_DIR "lib/cmake/${PROJECT_NAME}")
48+
set(INCLUDE_INSTALL_DIR "include")
49+
50+
set(VERSION_CONFIG "${GENERATED_DIR}/${PROJECT_NAME}ConfigVersion.cmake")
51+
set(PROJECT_CONFIG "${GENERATED_DIR}/${PROJECT_NAME}Config.cmake")
52+
set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
53+
set(NAMESPACE "${PROJECT_NAME}::")
54+
55+
include(CMakePackageConfigHelpers)
56+
write_basic_package_version_file(
57+
"${VERSION_CONFIG}" COMPATIBILITY SameMajorVersion
58+
)
59+
60+
configure_package_config_file(
61+
"${PROJECT_SOURCE_DIR}/cmake/Config.cmake.in"
62+
"${PROJECT_CONFIG}"
63+
INSTALL_DESTINATION "${CONFIG_INSTALL_DIR}"
64+
)
65+
66+
install(TARGETS libmarc
67+
EXPORT "${TARGETS_EXPORT_NAME}"
68+
RUNTIME DESTINATION bin
69+
ARCHIVE DESTINATION lib
70+
LIBRARY DESTINATION lib
71+
)
72+
73+
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION include)
74+
75+
install(
76+
FILES "${PROJECT_CONFIG}" "${VERSION_CONFIG}"
77+
DESTINATION "${CONFIG_INSTALL_DIR}"
78+
)
79+
80+
install(EXPORT "${TARGETS_EXPORT_NAME}"
81+
NAMESPACE "${NAMESPACE}"
82+
DESTINATION "${CONFIG_INSTALL_DIR}"
83+
)
84+
85+
if(BUILD_TESTS)
86+
hunter_add_package(GTest)
87+
find_package(GTest CONFIG REQUIRED)
88+
enable_testing()
89+
file(GLOB ${PROJECT_NAME}_TEST_SOURCES tests/*.cpp)
90+
add_executable(check ${${PROJECT_NAME}_TEST_SOURCES})
91+
target_link_libraries(check libmarc GTest::main)
92+
add_test(NAME check COMMAND check)
8293
endif()
8394

84-
install(TARGETS marcfs RUNTIME DESTINATION bin)
95+
96+

CMakeModules/FindFUSE.cmake

Lines changed: 0 additions & 35 deletions
This file was deleted.

CMakeModules/FindJEMALLOC.cmake

Lines changed: 0 additions & 47 deletions
This file was deleted.

CMakeModules/FindJSONCPP.cmake

Lines changed: 0 additions & 64 deletions
This file was deleted.

0 commit comments

Comments
 (0)