Skip to content

Commit

Permalink
Clean up CMake
Browse files Browse the repository at this point in the history
  • Loading branch information
lnjX committed Dec 29, 2022
1 parent d706274 commit bc23e5f
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 53 deletions.
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ set(CMAKE_AUTORCC ON)

include(GNUInstallDirs)

option(BUILD_SHARED "Build shared library" ON)
option(BUILD_TESTS "Build tests." ON)
option(BUILD_INTERNAL_TESTS "Build internal tests." OFF)
option(BUILD_DOCUMENTATION "Build API documentation." OFF)
Expand Down
102 changes: 49 additions & 53 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,6 @@

include(GenerateExportHeader)

option(BUILD_SHARED "Build SHARED library" ON)

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/base)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/client)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/server)

set(INSTALL_HEADER_FILES
# Base
base/QXmppArchiveIq.h
Expand Down Expand Up @@ -269,31 +263,6 @@ set(SOURCE_FILES
server/QXmppServerPlugin.cpp
)

if(BUILD_OMEMO)
# required to be used in QXmppMessage
set(SOURCE_FILES ${SOURCE_FILES} base/QXmppOmemoDataBase.cpp)
endif()

if(WITH_GSTREAMER)
find_package(GStreamer REQUIRED)
find_package(GLIB2 REQUIRED)
find_package(GObject REQUIRED)

set(INSTALL_HEADER_FILES
${INSTALL_HEADER_FILES}
client/QXmppCall.h
client/QXmppCallManager.h
client/QXmppCallStream.h
)

set(SOURCE_FILES
${SOURCE_FILES}
client/QXmppCall.cpp
client/QXmppCallManager.cpp
client/QXmppCallStream.cpp
)
endif()

if(BUILD_SHARED)
add_library(qxmpp SHARED ${SOURCE_FILES})
else()
Expand All @@ -306,33 +275,12 @@ set_target_properties(qxmpp PROPERTIES
EXPORT_NAME QXmpp
)

if(BUILD_SHARED)
set(QXMPP_BUILD_SHARED true)
else()
set(QXMPP_BUILD_SHARED false)
endif()

set(QXMPP_CUSTOM_EXPORT_CONTENT "
#define QXMPP_BUILD_SHARED ${QXMPP_BUILD_SHARED}
#define QXMPP_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}
#define QXMPP_VERSION_MINOR ${PROJECT_VERSION_MINOR}
#define QXMPP_VERSION_PATCH ${PROJECT_VERSION_PATCH}
")

generate_export_header(qxmpp
CUSTOM_CONTENT_FROM_VARIABLE QXMPP_CUSTOM_EXPORT_CONTENT
)

target_include_directories(qxmpp
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/base>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/client>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/server>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/base>
$<INSTALL_INTERFACE:include/qxmpp>
${GLIB2_INCLUDE_DIR}
${GOBJECT_INCLUDE_DIR}
${GSTREAMER_INCLUDE_DIRS}
PRIVATE
${CMAKE_CURRENT_BINARY_DIR}
)
Expand All @@ -345,21 +293,68 @@ target_link_libraries(qxmpp
)

if(WITH_GSTREAMER)
find_package(GStreamer REQUIRED)
find_package(GLIB2 REQUIRED)
find_package(GObject REQUIRED)

set(INSTALL_HEADER_FILES
${INSTALL_HEADER_FILES}
client/QXmppCall.h
client/QXmppCallManager.h
client/QXmppCallStream.h
)

target_sources(qxmpp
PRIVATE
client/QXmppCall.cpp
client/QXmppCallManager.cpp
client/QXmppCallStream.cpp
)

target_link_libraries(qxmpp
PRIVATE
${GLIB2_LIBRARIES}
${GOBJECT_LIBRARIES}
${GSTREAMER_LIBRARY}
)

target_include_directories(qxmpp
PRIVATE
${GLIB2_INCLUDE_DIR}
${GOBJECT_INCLUDE_DIR}
${GSTREAMER_INCLUDE_DIRS}
)
endif()

if(BUILD_OMEMO)
# required to be used in QXmppMessage
target_sources(qxmpp PRIVATE base/QXmppOmemoDataBase.cpp)
endif()

if(WITH_QCA)
target_sources(qxmpp PRIVATE client/QXmppEncryptedFileSharingProvider.cpp client/QXmppFileEncryption.cpp client/QcaInitializer.cpp)
set(INSTALL_HEADER_FILES ${INSTALL_HEADER_FILES} client/QXmppEncryptedFileSharingProvider.h)
target_link_libraries(qxmpp PRIVATE qca-qt${QT_VERSION_MAJOR})
target_compile_definitions(qxmpp PRIVATE -DWITH_QCA)
endif()

# qxmpp_export.h generation
if(BUILD_SHARED)
set(QXMPP_BUILD_SHARED true)
else()
set(QXMPP_BUILD_SHARED false)
endif()

set(QXMPP_CUSTOM_EXPORT_CONTENT "
#define QXMPP_BUILD_SHARED ${QXMPP_BUILD_SHARED}
#define QXMPP_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}
#define QXMPP_VERSION_MINOR ${PROJECT_VERSION_MINOR}
#define QXMPP_VERSION_PATCH ${PROJECT_VERSION_PATCH}
")

generate_export_header(qxmpp
CUSTOM_CONTENT_FROM_VARIABLE QXMPP_CUSTOM_EXPORT_CONTENT
)

install(
TARGETS qxmpp
DESTINATION "${CMAKE_INSTALL_LIBDIR}"
Expand All @@ -384,6 +379,7 @@ install(
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/qxmpp"
)

# submodules
if(BUILD_OMEMO)
add_subdirectory(omemo)
endif()

0 comments on commit bc23e5f

Please sign in to comment.