act-cluster-lib/CMakeLists.txt

96 lines
2.6 KiB
CMake

#
# This file is part of the ACT library
#
# Copyright (c) 2024 Fabian Posch
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
cmake_minimum_required(VERSION 3.15)
project(
act_cluster
VERSION 0.0.1
DESCRIPTION "Library to interact with the ACT cluster system."
)
# Set the program version
add_compile_definitions(PROG_VERSION="0.0.1")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
add_compile_options(-Wall
-Wextra
-Wconversion-null
-Wmissing-declarations
-Woverlength-strings)
add_compile_options(
-Wpointer-arith
-Wunused-local-typedefs
-Wunused-result
-Wvarargs
-Wvla
-Wwrite-strings
-Wformat-security
-Wundef)
add_compile_options(-O2 -fPIC)
include_directories(./)
# Include shared act libraries
# We need this mostly for file elaboration ahead of cluster deployment
add_library(act-lib SHARED IMPORTED)
set_target_properties(act-lib PROPERTIES IMPORTED_LOCATION $ENV{ACT_HOME}/lib/libact.a)
add_library(act-common-lib SHARED IMPORTED)
set_target_properties(act-common-lib PROPERTIES IMPORTED_LOCATION $ENV{ACT_HOME}/lib/libvlsilib.a)
# ATTENTION
# The main library is defined in the CMakeLists.txt in the ./src folder.
# Set the output directory of dynamic libraries
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib)
set(CMAKE_INSTALL_PREFIX $ENV{ACT_HOME} CACHE PATH "installation path" FORCE)
add_subdirectory(src)
# Link the needed libraries into it
target_link_libraries(
${PROJECT_NAME}
act-lib
act-common-lib
)
# Add the Postgresql library
target_link_libraries(
${PROJECT_NAME}
-lpqxx -lpq
)
# specify install targets
install(
TARGETS ${PROJECT_NAME}
LIBRARY DESTINATION lib
)
# install the public headers
install(
DIRECTORY ${CMAKE_SOURCE_DIR}/include/
DESTINATION include/cluster
FILES_MATCHING PATTERN "*.h*"
)