Skip to content

Commit

Permalink
cmake: adapt for building and packaging on Darwin (Mac)
Browse files Browse the repository at this point in the history
- adapt CMAKE PATH variables to be relative so that cpack works.
- removed osx Makefile packaging files
  • Loading branch information
pstorz committed Feb 11, 2019
1 parent 3db975f commit 30c092b
Show file tree
Hide file tree
Showing 33 changed files with 284 additions and 612 deletions.
77 changes: 25 additions & 52 deletions core/CMakeLists.txt
Expand Up @@ -20,6 +20,8 @@
cmake_minimum_required(VERSION 3.0)
project(bareos)

INCLUDE(GNUInstallDirs)

# switch on CXX 11 Support
#
if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
Expand All @@ -44,6 +46,7 @@ if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows")
include_directories(/usr/include)
endif()


set(CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}
${PROJECT_SOURCE_DIR}/../../SOURCES
Expand All @@ -55,16 +58,11 @@ SET(host ${CMAKE_SYSTEM})

SET(CMAKE_EXPORT_COMPILE_COMMANDS ON)





# enable "make check"
enable_testing()
set(CMAKE_CTEST_COMMAND ctest -V)
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND})


# run git-info to collect sourcecode info
file(MAKE_DIRECTORY build)
execute_process(
Expand All @@ -77,13 +75,17 @@ add_definitions(-DVERSION="${BAREOS_FULL_VERSION}")

INCLUDE(BareosLocalBuildDefinitions RESULT_VARIABLE BareosLocalBuildDefinitionsFile)

IF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(OPENSSL_ROOT_DIR /usr/local/opt/openssl)
set(Readline_ROOT_DIR /usr/local/opt/readline)
ENDIF()

INCLUDE(BareosFindAllLibraries)

IF (NOT ${OPENSSL_FOUND})
MESSAGE(FATAL_ERROR "FATAL ERROR: OpenSSL is required but was not found.")
ENDIF()


IF (coverage)
set(COVERAGE_COMPILER_FLAGS "-g -O0 --coverage -fprofile-arcs -ftest-coverage" CACHE INTERNAL "")
MESSAGE(STATUS "coverage requested, adding COVERAGE_COMPILER_FLAGS : ${COVERAGE_COMPILER_FLAGS}")
Expand Down Expand Up @@ -117,6 +119,15 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
link_libraries(intl)
endif()

IF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(HAVE_DARWIN_OS 1)
#set(CMAKE_INCLUDE_PATH "${OPENSSL_INCLUDE_DIR}:${CMAKE_INCLUDE_PATH}")
set(CMAKE_INCLUDE_PATH "/usr/local/opt/:${CMAKE_INCLUDE_PATH}")
link_directories(/usr/local/lib)
link_libraries(intl)
set(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}-${BAREOS_FULL_VERSION}")
ENDIF()

# hpux
if (${CMAKE_SYSTEM_NAME} MATCHES "HP-UX")
set(HAVE_HPUX_OS 1)
Expand All @@ -135,6 +146,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "AIX")
link_libraries(intl)
endif()


if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
include_directories(
${PROJECT_SOURCE_DIR}/src/win32/include
Expand All @@ -161,6 +173,8 @@ else()
add_definitions("-D_FILE_OFFSET_BITS=64")
endif()

INCLUDE(FindIntl)

IF(developer)
add_definitions("-DDEVELOPER=1")
ENDIF()
Expand All @@ -175,18 +189,17 @@ endif()

INCLUDE(BareosFindPrograms)

INCLUDE(GNUInstallDirs)

INCLUDE(BareosSetVariableDefaults)

if (${CMAKE_SYSTEM_NAME} MATCHES "AIX")
SET(ENABLE_NLS 0)
endif()


INCLUDE(BareosGetDistInfo)

INCLUDE(BareosGenerateDebianInfo)

IF (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
add_definitions(-DWIN32_VSS -DMINGW64 -DHAVE_WIN32 -DHAVE_MINGW -D_WIN32_WINNT=${WINDOWS_VERSION})
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m${WINDOWS_BITS} -mwin32 -mthreads")
Expand All @@ -208,44 +221,27 @@ mark_as_advanced(INSTALL_LIB_DIR)


# RPATH settings (from https://cmake.org/Wiki/CMake_RPATH_handling)
# use, i.e. don')t skip the full RPATH for the build tree
SET(CMAKE_SKIP_BUILD_RPATH FALSE)

# when building, don't use the install RPATH already
# (but later on when installing)
#SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)

#SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR}")
#SET(CMAKE_INSTALL_RPATH "/${INSTALL_LIB_DIR}")
SET(CMAKE_INSTALL_RPATH "${libdir}")

# add the automatically determined parts of the RPATH
# which point to directories outside the build tree to the install RPATH
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)




#cmake_host_system_information(RESULT hostname QUERY HOSTNAME)
site_name(hostname)

set(dbdriver sqlite3)

#manual definitions
set (BAREOS "Bareos")
#set(CONFDIR \"${CMAKE_INSTALL_FULL_SYSCONFDIR}\")
set(LOCALEDIR \"${CMAKE_INSTALL_FULL_LOCALEDIR}\")



set(LOCALEDIR \"${CMAKE_INSTALL_LOCALEDIR}\")

set(HAVE_CRYPTO 1)

INCLUDE(BareosTypeSizes)



INCLUDE(TestBigEndian)
TEST_BIG_ENDIAN(IS_BIGENDIAN)
IF(IS_BIGENDIAN)
Expand All @@ -255,13 +251,9 @@ ELSE()
SET(HAVE_LITTLE_ENDIAN 1)
ENDIF()



MESSAGE( STATUS "VERSION: " ${CMAKE_MATCH_1} )

MESSAGE( STATUS "PROJECT_SOURCE_DIR: " ${PROJECT_SOURCE_DIR} )


# needed for check_include
set(CMAKE_REQUIRED_DEFINITIONS "-D_FILE_OFFSET_BITS=64")
INCLUDE(BareosCheckIncludes)
Expand All @@ -285,7 +277,6 @@ set(CMAKE_EXTRA_INCLUDE_FILES "sys/socket.h")
check_type_size("socklen_t" HAVE_SOCKLEN_T)
set(CMAKE_EXTRA_INCLUDE_FILES)


set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h)


Expand Down Expand Up @@ -474,25 +465,18 @@ if ("${PAM_FOUND}")
set(HAVE_PAM 1)
endif()


set(have_tls "${HAVE_TLS}" )
set(have_crypto "${HAVE_CRYPTO}" )
set(have_openssl "${HAVE_OPENSSL}" )
set(have_zlib "${ZLIB_FOUND}" )
set(have_fastlz "${HAVE_FASTLZLIB_H}" )




set(HAVE_CAPABILITY "${HAVE_CAPABILITY_H}" CACHE BOOL "compile with capability support")
if ("${HAVE_CAPABILITY}")
set(CAPABILITY_LIBS cap)
message( STATUS "CAPABILITY set")
endif()




set(ndmp "${ndmp}" )
set(lmdb "${lmdb}" )
set(build_client_only "${client-only}" )
Expand Down Expand Up @@ -521,7 +505,6 @@ if(${HAVE_RADOSSTRIPER_LIBRADOSSTRIPER_H})
set(have_ceph_rados_striper ${HAVE_CEPH_RADOS_STRIPER})
endif()


if(${HAVE_GLUSTERFS_API_GLFS_H})
set(HAVE_GLUSTERFS 1)
endif()
Expand All @@ -530,8 +513,6 @@ if (${HAVE_GLUSTERFS})
include_directories(/usr/include/glusterfs)
endif()



if (NOT HAVE_WIN32)
if (${ndmp})
set(HAVE_NDMP 1)
Expand All @@ -544,8 +525,6 @@ if (${lmdb})
set(LMDB_LIBS bareoslmdb)
endif()



# info what the config files need to be installed
##### PLUGINS ############
SET(PLUGINS python-ldap-conf.d)
Expand All @@ -561,7 +540,6 @@ LIST(APPEND PLUGINS gfapi-conf.d)
endif()

##### BACKENDS ####

IF(build_client_only)
SET(BACKENDS "")
ELSE()
Expand All @@ -578,8 +556,6 @@ ELSE()
endif()
ENDIF()



set(have_elasto "" )
set(support_systemd "" )
set(batch_insert_db_backends "" )
Expand All @@ -589,19 +565,15 @@ set(_PATH_BAREOS_BACKENDDIR \"${backenddir}\")
set(_PATH_BAREOS_PIDDIR \"${piddir}\")
set(_PATH_BAREOS_WORKINGDIR \"${workingdir}\")




IF(HAVE_WIN32)
INSTALL(DIRECTORY DESTINATION var/log)
ENDIF()

INSTALL(DIRECTORY DESTINATION ${logdir})

INSTALL(DIRECTORY DESTINATION ${workingdir})

INCLUDE(BareosConfigureFile)


add_subdirectory(scripts)
add_subdirectory(manpages)
add_subdirectory(platforms)
Expand Down Expand Up @@ -670,7 +642,7 @@ MESSAGE(" File Daemon Group: ${fd_group} ")
MESSAGE(" ")
MESSAGE(" Large file support: ${largefile_support}")
MESSAGE(" Bareos conio support: ${got_conio} ${CONS_LIBS} ")
MESSAGE(" readline support: ${got_readline} ${Readline_ROOT_DIR} ${Readline_INCLUDE_DIR} ${Readline_LIBRARY}
MESSAGE(" readline support: ${got_readline} ROOT_DIR:${Readline_ROOT_DIR} INCLUDE_DIR:${Readline_INCLUDE_DIR} LIBRARY:${Readline_LIBRARY}
")
MESSAGE(" TCP Wrappers support: ${WRAP_FOUND} ${WRAP_LIBRARIES} ${WRAP_INCLUDE_DIRS} ")
MESSAGE(" TLS support: ${have_tls} ")
Expand Down Expand Up @@ -707,6 +679,7 @@ MESSAGE(" Python support: ${PYTHONLIBS_FOUND} ${PYTHONLIBS_VERSI
MESSAGE(" systemd support: ${WITH_SYSTEMD} ${SYSTEMD_UNITDIR}")
MESSAGE(" Batch insert enabled: ${USE_BATCH_FILE_INSERT}")
MESSAGE(" gtest support: ${GTEST_FOUND} ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} ")
MESSAGE(" Intl support: ${Intl_FOUND} ${INTLINCLUDE_DIRS} ${INTL_LIBRARIES}")

MESSAGE(" Dynamic cats backends: ${dynamic-cats-backends} ${HAVE_DYNAMIC_CATS_BACKENDS} ")
MESSAGE(" Dynamic storage backends: ${dynamic-storage-backends} ${HAVE_DYNAMIC_SD_BACKENDS} ")
Expand Down
6 changes: 6 additions & 0 deletions core/cmake/BareosExtractVersionInfo.cmake
Expand Up @@ -31,6 +31,12 @@ ENDIF()
string(REGEX MATCH [0-9]+.[0-9]+.[0-9]+ BAREOS_NUMERIC_VERSION ${VERSION_STRING})
string(REGEX MATCH [0-9]+ SOVERSION ${VERSION_STRING})

string(REPLACE "." ";" VERSION_LIST ${BAREOS_NUMERIC_VERSION})
list(GET VERSION_LIST 0 BAREOS_VERSION_MAJOR)
list(GET VERSION_LIST 1 BAREOS_VERSION_MINOR)
list(GET VERSION_LIST 2 BAREOS_VERSION_PATCH)


MESSAGE("BAREOS_NUMERIC_VERSION is ${BAREOS_NUMERIC_VERSION}")
MESSAGE("BAREOS_FULL_VERSION is ${BAREOS_FULL_VERSION}")
MESSAGE("SOVERSION is ${SOVERSION}")
Expand Down
23 changes: 18 additions & 5 deletions core/cmake/BareosInstallConfigFiles.cmake
Expand Up @@ -21,9 +21,19 @@

MACRO(BareosInstallConfigFiles CONFDIR CONFIGBASEDIRECTORY PLUGINS BACKENDS SRC_DIR)

MESSAGE(STATUS "BareosInstallConfigFiles called with CONFDIR:${CONFDIR} CONFIGBASEDIRECTORY:${CONFIGBASEDIRECTORY} PLUGINS:${PLUGINS} BACKENDS:${BACKENDS} SRC_DIR:${SRC_DIR}")
MESSAGE(STATUS "BareosInstallConfigFiles called with CONFDIR:${CONFDIR} CONFIGBASEDIRECTORY:${CONFIGBASEDIRECTORY} PLUGINS:${PLUGINS} BACKENDS:${BACKENDS} SRC_DIR:${SRC_DIR}")
MESSAGE(STATUS "CPACK_PACKAGING_INSTALL_PREFIX: ${CPACK_PACKAGING_INSTALL_PREFIX}")
MESSAGE(STATUS "CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}")
MESSAGE(STATUS "DESTDIR: $ENV{DESTDIR}")

IF (IS_ABSOLUTE ${CONFDIR})
set (DESTCONFDIR "$ENV{DESTDIR}${CONFDIR}/${CONFIGBASEDIRECTORY}/")
ELSE()
set (DESTCONFDIR "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${CONFDIR}/${CONFIGBASEDIRECTORY}/")
ENDIF()



set (DESTCONFDIR "$ENV{DESTDIR}/${CONFDIR}/${CONFIGBASEDIRECTORY}/")
MESSAGE(STATUS "installing configuration ${CONFIGBASEDIRECTORY} resource files to ${DESTCONFDIR}")

MESSAGE(STATUS "globbing ${SRC_DIR}/src/defaultconfigs/${CONFIGBASEDIRECTORY}/*")
Expand All @@ -34,12 +44,15 @@ foreach(resdir ${resourcedirs})
foreach(configfile ${configfiles})
get_filename_component(fname ${configfile} NAME)
if (EXISTS ${DESTCONFDIR}/${resname}/${fname})
MESSAGE(STATUS "${resname}/${fname} as ${resname}/${fname}.new (keep existing)")
MESSAGE(STATUS "${DESTCONFDIR}/${resname}/${fname} exists")
MESSAGE(STATUS "rename ${configfile} to ${configfile}.new")
FILE (RENAME "${configfile}" "${configfile}.new")
FILE (COPY "${configfile}.new" DESTINATION "${DESTCONFDIR}/${resname}")

MESSAGE(STATUS "copy ${configfile}.new to ${DESTCONFDIR}/${resname}")
FILE (INSTALL "${configfile}.new" DESTINATION "${DESTCONFDIR}/${resname}")
FILE (RENAME "${configfile}.new" "${configfile}")
else()
MESSAGE(STATUS "${resname}/${fname} as ${resname}/${fname} (keep existing)")
MESSAGE(STATUS "${resname}/${fname} as ${resname}/${fname} (new installation)")
FILE (COPY "${configfile}" DESTINATION "${DESTCONFDIR}/${resname}")
endif()
endforeach()
Expand Down

0 comments on commit 30c092b

Please sign in to comment.