1515###############################################################################
1616# CMake build rules for FastCDR #
1717###############################################################################
18- cmake_minimum_required (VERSION 3.10)
19-
20- set (IS_TOP_LEVEL TRUE )
21- if (PROJECT_SOURCE_DIR )
22- set (IS_TOP_LEVEL FALSE )
23- endif ()
18+ cmake_minimum_required (VERSION 3.16)
2419
2520# Set CMAKE_BUILD_TYPE to Release by default.
2621if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES )
@@ -31,58 +26,16 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
3126 set_property (CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo" )
3227endif ()
3328
34- ###############################################################################
35- # Version information #
36- ###############################################################################
37-
38- #If not set, copy over product version from configure.ac
39- file (STRINGS
40- configure.ac
41- LIB_MAJOR_VERSION_TMP
42- REGEX "^m4_define\\ (\\ [?version_major\\ ]?, *\\ [?[0-9]+\\ ]?\\ )"
43- )
44- file (STRINGS
45- configure.ac
46- LIB_MINOR_VERSION_TMP
47- REGEX "^m4_define\\ (\\ [?version_minor\\ ]?, *\\ [?[0-9]+\\ ]?\\ )"
48- )
49- file (STRINGS
50- configure.ac
51- LIB_PATCH_VERSION_TMP
52- REGEX "^m4_define\\ (\\ [?version_micro\\ ]?, *\\ [?[0-9]+\\ ]?\\ )"
53- )
54-
55- string (REGEX REPLACE "m4_define\\ (\\ [?version_major\\ ]?, *\\ [?([0-9]+)\\ ]?\\ )"
56- "\\ 1"
57- LIB_MAJOR_VERSION
58- ${LIB_MAJOR_VERSION_TMP}
59- )
60- string (REGEX REPLACE "m4_define\\ (\\ [?version_minor\\ ]?, *\\ [?([0-9]+)\\ ]?\\ )"
61- "\\ 1"
62- LIB_MINOR_VERSION
63- ${LIB_MINOR_VERSION_TMP}
64- )
65- string (REGEX REPLACE "m4_define\\ (\\ [?version_micro\\ ]?, *\\ [?([0-9]+)\\ ]?\\ )"
66- "\\ 1"
67- LIB_PATCH_VERSION
68- ${LIB_PATCH_VERSION_TMP}
69- )
70-
71- set (LIB_VERSION_STR "${LIB_MAJOR_VERSION} .${LIB_MINOR_VERSION} .${LIB_PATCH_VERSION} " )
29+ # Set BUILD_TESTING to OFF by default.
30+ if (NOT BUILD_TESTING)
31+ message (STATUS "Tests not compiled by default" )
32+ set (BUILD_TESTING OFF CACHE BOOL "Enable testing" FORCE)
33+ endif ()
7234
7335###############################################################################
7436# Project #
7537###############################################################################
76- if (CMAKE_VERSION VERSION_LESS 3.0)
77- project (fastcdr C CXX)
78- set (PROJECT_VERSION_MAJOR "${LIB_MAJOR_VERSION} " )
79- set (PROJECT_VERSION_MINOR "${LIB_MINOR_VERSION} " )
80- set (PROJECT_VERSION_PATCH "${LIB_PATCH_VERSION} " )
81- set (PROJECT_VERSION "${LIB_VERSION_STR} " )
82- else ()
83- cmake_policy (SET CMP0048 NEW)
84- project (fastcdr VERSION "${LIB_VERSION_STR} " LANGUAGES C CXX)
85- endif ()
38+ project (fastcdr VERSION 2.2.1 LANGUAGES CXX)
8639
8740set (PROJECT_NAME_STYLED "FastCDR" )
8841set (PROJECT_NAME_LARGE "Fast CDR" )
@@ -92,12 +45,19 @@ set(${PROJECT_NAME}_DESCRIPTION "eProsima ${PROJECT_NAME_LARGE} library provides
9245
9346message (STATUS "Configuring ${PROJECT_NAME_LARGE} " )
9447message (STATUS "Version: ${PROJECT_VERSION} " )
95- message (STATUS "To change the version modify the file configure.ac" )
9648
9749###############################################################################
98- # Generation of windows installers.
50+ # CCache on Windows on CI
9951###############################################################################
100- option (EPROSIMA_INSTALLER "Activate the creation of a build to create windows installers" OFF )
52+ if (MSVC AND CMAKE_CXX_COMPILER_LAUNCHER STREQUAL "ccache" )
53+ foreach (config DEBUG RELWITHDEBINFO)
54+ foreach (lang C CXX)
55+ set (flags_var "CMAKE_${lang} _FLAGS_${config} " )
56+ string (REPLACE "/Zi" "/Z7" ${flags_var} "${${flags_var} }" )
57+ set (${flags_var} "${${flags_var} }" )
58+ endforeach ()
59+ endforeach ()
60+ endif ()
10161
10262###############################################################################
10363# GCC colors if using CCache
@@ -116,22 +76,14 @@ endif()
11676# unless the library was explicitly added as a static library.
11777option (BUILD_SHARED_LIBS "Create shared libraries by default" ON )
11878
119- ###############################################################################
120- # Load external eProsima projects.
121- ###############################################################################
122-
123- option (EPROSIMA_BUILD "Activate internal building" OFF )
124-
125- if (EPROSIMA_INSTALLER)
126- set (EPROSIMA_BUILD ON )
127- endif ()
128-
12979###############################################################################
13080# Test system configuration
13181###############################################################################
13282include (${PROJECT_SOURCE_DIR} /cmake/common/check_configuration.cmake)
133- check_stdcxx()
134- check_compile_feature()
83+
84+ set (FORCE_CXX "11" CACHE STRING "C++ standard fulfillment selection" )
85+ check_stdcxx(${FORCE_CXX} )
86+
13587check_endianness()
13688check_type_sizes()
13789
@@ -166,34 +118,25 @@ else()
166118 set (DOC_DIR "${DATA_INSTALL_DIR} /doc" )
167119endif ()
168120set (DOC_INSTALL_DIR ${DOC_DIR} CACHE PATH "Installation directory for documentation" )
169- if (WIN32 AND EPROSIMA_INSTALLER AND IS_TOP_LEVEL)
170- set (LICENSE_INSTALL_DIR . CACHE PATH "Installation directory for licenses" )
171- else ()
172- set (LICENSE_INSTALL_DIR ${DATA_INSTALL_DIR} /${PROJECT_NAME} CACHE PATH "Installation directory for licenses" )
173- endif ()
121+ set (LICENSE_INSTALL_DIR ${DATA_INSTALL_DIR} /${PROJECT_NAME} CACHE PATH "Installation directory for licenses" )
174122
175123###############################################################################
176124# Compile library.
177125###############################################################################
178126add_subdirectory (src/cpp)
179127
180- ###############################################################################
181- # Testing options
182- ###############################################################################
183- option (EPROSIMA_BUILD_TESTS "Activate the building and execution unit tests and integral tests" OFF )
184-
185- if (EPROSIMA_BUILD AND NOT EPROSIMA_INSTALLER AND NOT EPROSIMA_INSTALLER_MINION)
186- set (EPROSIMA_BUILD_TESTS ON )
187- endif ()
188-
189128###############################################################################
190129# Testing
191130###############################################################################
192- if (EPROSIMA_BUILD_TESTS AND IS_TOP_LEVEL AND NOT EPROSIMA_INSTALLER)
193- enable_testing ()
194- include (CTest)
131+ enable_testing ()
132+ include (CTest)
195133
196- add_subdirectory (test )
134+ if (BUILD_TESTING)
135+ if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.22)
136+ add_subdirectory (test )
137+ else ()
138+ message (INFO "Tests are disabled because the version of CMake is less than 3.22" )
139+ endif ()
197140endif ()
198141
199142###############################################################################
@@ -202,11 +145,7 @@ endif()
202145# Add an option to toggle the generation of the API documentation.
203146option (BUILD_DOCUMENTATION "Use doxygen to create product documentation" OFF )
204147option (CHECK_DOCUMENTATION "Use doxygen to check code documentation" OFF )
205-
206- if (EPROSIMA_INSTALLER)
207- set (BUILD_DOCUMENTATION ON )
208- set (DOXYGEN_SHOULD_SKIP_THIS_PUBLIC "DOXYGEN_SHOULD_SKIP_THIS_PUBLIC" )
209- endif ()
148+ option (GENERATE_PDF_DOC "Use doxygen to generate API Reference PDF" OFF )
210149
211150if (CHECK_DOCUMENTATION)
212151 set (BUILD_DOCUMENTATION ON )
@@ -254,6 +193,11 @@ if(BUILD_DOCUMENTATION)
254193 else ()
255194 set (USE_DOT YES )
256195 endif ()
196+ if (GENERATE_PDF_DOC)
197+ set (GENERATE_LATEX YES )
198+ else ()
199+ set (GENERATE_LATEX NO )
200+ endif ()
257201 # Configure the template doxyfile for or specific project
258202 configure_file (doxyfile.in ${PROJECT_BINARY_DIR} /doxyfile @ONLY IMMEDIATE)
259203 # Add custom target to run doxygen when ever the project is build
@@ -264,6 +208,15 @@ if(BUILD_DOCUMENTATION)
264208
265209 add_dependencies (doxygen docdirs)
266210
211+ if (GENERATE_PDF_DOC)
212+ add_custom_target (make_pdf ALL
213+ COMMAND "make" "pdf"
214+ WORKING_DIRECTORY ${PROJECT_BINARY_DIR} /doxygen/latex
215+ COMMENT "Generating API reference PDF" VERBATIM )
216+
217+ add_dependencies (make_pdf doxygen)
218+ endif ()
219+
267220 ### README html ########################
268221
269222 if (WIN32 )
@@ -277,26 +230,10 @@ if(BUILD_DOCUMENTATION)
277230
278231 configure_file (doc /README.html.in ${README_LOCATION} /README.html @ONLY IMMEDIATE)
279232
280- ### ReadTheDocs ########################
281- # if(NOT CHECK_DOCUMENTATION)
282- # add_custom_target(readthedocs
283- # COMMAND "${WGET_EXE}" "https://media.readthedocs.org/htmlzip/eprosima-fast-cdr/v${PROJECT_VERSION}/eprosima-fast-cdr.zip"
284- # COMMAND "${UNZIP_EXE}" "eprosima-fast-cdr.zip" -d "${PROJECT_BINARY_DIR}/doc/"
285- # COMMAND ${CMAKE_COMMAND} -E remove_directory "${PROJECT_BINARY_DIR}/doc/manual"
286- # COMMAND ${CMAKE_COMMAND} -E rename "${PROJECT_BINARY_DIR}/doc/eprosima-fast-cdr-v${PROJECT_VERSION}" "${PROJECT_BINARY_DIR}/doc/manual"
287- # COMMAND ${CMAKE_COMMAND} -E remove "eprosima-fast-cdr.zip"
288- # )
289- #
290- # add_dependencies(readthedocs docdirs)
291- # endif()
292-
293233 add_custom_target (doc ALL
294234 COMMENT "Generated project documentation" VERBATIM )
295235
296236 add_dependencies (doc doxygen)
297- # if(NOT CHECK_DOCUMENTATION)
298- # add_dependencies(doc readthedocs)
299- # endif()
300237endif ()
301238
302239
@@ -308,9 +245,6 @@ install(FILES ${PROJECT_SOURCE_DIR}/LICENSE
308245 DESTINATION ${LICENSE_INSTALL_DIR}
309246 COMPONENT licenses
310247 )
311- set (CPACK_COMPONENT_LICENSES_HIDDEN 1)
312-
313- set (CPACK_COMPONENTS_ALL headers licenses)
314248
315249if (BUILD_DOCUMENTATION)
316250
@@ -325,35 +259,10 @@ if(BUILD_DOCUMENTATION)
325259 COMPONENT documentation
326260 )
327261
328- # if(NOT CHECK_DOCUMENTATION)
329- # install(DIRECTORY ${PROJECT_BINARY_DIR}/doc/manual
330- # DESTINATION ${DOC_INSTALL_DIR}
331- # COMPONENT documentation
332- # )
333- # endif()
334-
335- ### Documentation component
336- set (CPACK_COMPONENT_DOCUMENTATION_DISPLAY_NAME "Documentation" )
337- set (CPACK_COMPONENT_DOCUMENTATION_DESCRIPTION "eProsima ${PROJECT_NAME_LARGE} documentation" )
338-
339- set (CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} documentation)
340- endif ()
341-
342- if (MSVC OR MSVC_IDE )
343- if (EPROSIMA_INSTALLER)
344- set (CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL}
345- libraries_i86Win32VS2010
346- libraries_x64Win64VS2010
347- libraries_i86Win32VS2013
348- libraries_x64Win64VS2013
349- libraries_i86Win32VS2015
350- libraries_x64Win64VS2015
351- )
352- else ()
353- set (CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} libraries_${MSVC_ARCH} )
262+ if (GENERATE_PDF_DOC)
263+ install (FILES "${PROJECT_BINARY_DIR} /doxygen/latex/refman.pdf"
264+ DESTINATION ${DOC_INSTALL_DIR}
265+ RENAME fastcdr-${PROJECT_VERSION} -api-reference.pdf
266+ COMPONENT documentation)
354267 endif ()
355- else ()
356- set (CPACK_COMPONENTS_ALL ${CPACK_COMPONENTS_ALL} libraries)
357268endif ()
358-
359- include (${PROJECT_SOURCE_DIR} /cmake/packaging/eProsimaPackaging.cmake)
0 commit comments