2021-06-19 15:29:01 +02:00
|
|
|
# The last version with Windows XP support is 3.13, we want to keep that
|
2021-10-23 14:09:55 +02:00
|
|
|
cmake_minimum_required (VERSION 3.10)
|
2021-11-03 07:18:35 +01:00
|
|
|
project (logdiag VERSION 0.3.0 DESCRIPTION "Schematic editor" LANGUAGES C)
|
2010-09-13 19:24:53 +02:00
|
|
|
|
|
|
|
# Options
|
2021-10-29 00:22:43 +02:00
|
|
|
option (OPTION_CLANG_TIDY "Enable use of clang-tidy" OFF)
|
2021-10-24 16:43:34 +02:00
|
|
|
option (OPTION_NOINSTALL "For developers only--work without installing" OFF)
|
|
|
|
option (OPTION_GTKDOC "For developers only--enable use of gtk-doc" OFF)
|
2015-01-21 20:25:59 +01:00
|
|
|
option (BUILD_TESTING "Build tests" OFF)
|
2012-08-31 15:23:02 +02:00
|
|
|
|
2011-02-07 18:03:15 +01:00
|
|
|
# Project information
|
2018-06-27 05:06:02 +02:00
|
|
|
set (project_URL "https://git.janouch.name/p/logdiag")
|
2011-02-07 18:03:15 +01:00
|
|
|
|
2010-09-13 19:24:53 +02:00
|
|
|
# For custom modules
|
2015-01-21 20:30:11 +01:00
|
|
|
set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
|
2010-09-13 19:24:53 +02:00
|
|
|
|
2011-01-22 13:13:05 +01:00
|
|
|
# Automatic retrieval of dependencies
|
2010-09-13 19:24:53 +02:00
|
|
|
if (WIN32)
|
2015-01-21 20:30:11 +01:00
|
|
|
set (WIN32_DEPENDS_PATH ${PROJECT_SOURCE_DIR}/win32-depends)
|
2011-01-22 13:13:05 +01:00
|
|
|
list (APPEND CMAKE_PREFIX_PATH ${WIN32_DEPENDS_PATH})
|
|
|
|
list (APPEND CMAKE_INCLUDE_PATH ${WIN32_DEPENDS_PATH}/lib)
|
2021-10-22 00:08:58 +02:00
|
|
|
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mms-bitfields")
|
2011-01-22 13:13:05 +01:00
|
|
|
|
2012-10-13 19:07:56 +02:00
|
|
|
if (CMAKE_CROSSCOMPILING)
|
|
|
|
list (APPEND CMAKE_FIND_ROOT_PATH ${WIN32_DEPENDS_PATH})
|
2021-10-29 04:56:56 +02:00
|
|
|
endif ()
|
2012-10-13 19:07:56 +02:00
|
|
|
|
2018-06-25 02:02:26 +02:00
|
|
|
set (PKG_CONFIG_USE_CMAKE_PREFIX_PATH FALSE)
|
|
|
|
# Seems like there is a regression setting this to two paths in one,
|
|
|
|
# setting the path manually
|
|
|
|
set (ENV{PKG_CONFIG_PATH} "${WIN32_DEPENDS_PATH}/lib/pkgconfig")
|
2021-10-29 04:56:56 +02:00
|
|
|
endif ()
|
2010-09-13 19:24:53 +02:00
|
|
|
|
2011-01-22 17:13:56 +01:00
|
|
|
# Generate icons
|
|
|
|
find_program (CONVERT_EXECUTABLE convert)
|
|
|
|
mark_as_advanced (CONVERT_EXECUTABLE)
|
|
|
|
|
|
|
|
if (CONVERT_EXECUTABLE AND NOT WIN32)
|
2015-01-21 20:30:11 +01:00
|
|
|
set (icon_base ${PROJECT_SOURCE_DIR}/share/icons/hicolor)
|
2011-01-22 17:13:56 +01:00
|
|
|
set (icon_svg ${icon_base}/scalable/apps/logdiag.svg)
|
|
|
|
set (icon_size_list 16x16 32x32 48x48)
|
|
|
|
|
|
|
|
set (icon_png_list)
|
2011-01-23 13:26:00 +01:00
|
|
|
set (icon_symbolic_list)
|
2011-01-22 17:13:56 +01:00
|
|
|
foreach (icon_size ${icon_size_list})
|
|
|
|
set (icon_png_path ${icon_base}/${icon_size}/apps)
|
|
|
|
set (icon_png ${icon_png_path}/logdiag.png)
|
|
|
|
list (APPEND icon_png_list ${icon_png})
|
2015-01-21 20:30:11 +01:00
|
|
|
set (icon_symbolic ${PROJECT_NAME}_icons_${icon_size})
|
2011-01-23 13:26:00 +01:00
|
|
|
list (APPEND icon_symbolic_list ${icon_symbolic})
|
2011-01-22 17:13:56 +01:00
|
|
|
|
2011-01-23 13:26:00 +01:00
|
|
|
add_custom_command (OUTPUT ${icon_symbolic}
|
2011-01-22 17:13:56 +01:00
|
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${icon_png_path}
|
|
|
|
COMMAND ${CONVERT_EXECUTABLE} -background none
|
|
|
|
-resize ${icon_size} ${icon_svg} ${icon_png}
|
2011-01-23 13:26:00 +01:00
|
|
|
DEPENDS ${icon_svg} VERBATIM)
|
|
|
|
set_source_files_properties (${icon_symbolic}
|
|
|
|
PROPERTIES SYMBOLIC TRUE)
|
2021-10-29 04:56:56 +02:00
|
|
|
endforeach ()
|
2011-01-22 17:13:56 +01:00
|
|
|
|
2015-01-21 20:30:11 +01:00
|
|
|
set (icon_ico ${PROJECT_SOURCE_DIR}/share/logdiag.ico)
|
|
|
|
add_custom_target (${PROJECT_NAME}_icons
|
2012-01-29 19:59:56 +01:00
|
|
|
DEPENDS ${icon_symbolic_list}
|
2011-01-22 17:13:56 +01:00
|
|
|
COMMAND ${CONVERT_EXECUTABLE} ${icon_png_list} ${icon_ico}
|
2011-01-23 13:26:00 +01:00
|
|
|
COMMENT "Generating logdiag.ico" VERBATIM)
|
2021-10-29 04:56:56 +02:00
|
|
|
endif ()
|
2011-01-22 17:13:56 +01:00
|
|
|
|
2010-12-18 15:39:50 +01:00
|
|
|
# Dependencies
|
2015-01-18 22:48:03 +01:00
|
|
|
find_package (PkgConfig REQUIRED)
|
2016-03-15 22:12:14 +01:00
|
|
|
pkg_check_modules (GTK3 REQUIRED gtk+-3.0 json-glib-1.0)
|
2021-11-02 16:25:48 +01:00
|
|
|
link_directories (${GTK3_LIBRARY_DIRS})
|
2018-06-25 02:13:16 +02:00
|
|
|
|
|
|
|
if (NOT WIN32)
|
|
|
|
pkg_search_module (Lua REQUIRED lua>=5.2 lua5.3 lua-5.3 lua5.2 lua-5.2)
|
2021-11-02 16:25:48 +01:00
|
|
|
link_directories (${Lua_LIBRARY_DIRS})
|
2021-10-29 04:56:56 +02:00
|
|
|
else ()
|
2018-06-25 02:13:16 +02:00
|
|
|
# For whatever reason this now seems to be required
|
|
|
|
set (LUA_INCLUDE_DIR "${WIN32_DEPENDS_PATH}/include")
|
|
|
|
|
|
|
|
find_package (Lua REQUIRED)
|
|
|
|
if (LUA_VERSION_STRING VERSION_LESS "5.2")
|
|
|
|
message (FATAL_ERROR "Lua 5.2 not found")
|
2021-10-29 04:56:56 +02:00
|
|
|
endif ()
|
2018-06-25 02:13:16 +02:00
|
|
|
set (Lua_LIBRARIES ${LUA_LIBRARIES})
|
|
|
|
set (Lua_INCLUDE_DIRS ${LUA_INCLUDE_DIR})
|
2021-10-29 04:56:56 +02:00
|
|
|
endif ()
|
2015-01-20 23:21:49 +01:00
|
|
|
|
2010-09-13 19:24:53 +02:00
|
|
|
# Localization
|
2011-02-12 02:07:39 +01:00
|
|
|
find_package (Gettext REQUIRED)
|
2015-01-21 20:30:11 +01:00
|
|
|
file (GLOB project_PO_FILES ${PROJECT_SOURCE_DIR}/po/*.po)
|
2011-02-12 02:07:39 +01:00
|
|
|
GETTEXT_CREATE_TRANSLATIONS (
|
2015-01-21 20:30:11 +01:00
|
|
|
${PROJECT_SOURCE_DIR}/po/${PROJECT_NAME}.pot
|
2011-02-12 02:07:39 +01:00
|
|
|
ALL ${project_PO_FILES})
|
|
|
|
|
|
|
|
foreach (file ${project_PO_FILES})
|
|
|
|
get_filename_component (translation "${file}" NAME_WE)
|
|
|
|
list (APPEND project_TRANSLATIONS "${translation}")
|
2021-10-29 04:56:56 +02:00
|
|
|
endforeach ()
|
2010-09-13 19:24:53 +02:00
|
|
|
|
|
|
|
# Project source files
|
2011-01-10 16:49:13 +01:00
|
|
|
set (liblogdiag_SOURCES
|
2021-11-01 10:08:03 +01:00
|
|
|
${PROJECT_BINARY_DIR}/ld-marshal.c
|
2011-01-10 16:49:13 +01:00
|
|
|
liblogdiag/ld-types.c
|
2011-01-31 21:58:41 +01:00
|
|
|
liblogdiag/ld-undo-action.c
|
2011-01-10 16:49:13 +01:00
|
|
|
liblogdiag/ld-diagram.c
|
|
|
|
liblogdiag/ld-diagram-object.c
|
|
|
|
liblogdiag/ld-diagram-symbol.c
|
2011-02-02 17:22:34 +01:00
|
|
|
liblogdiag/ld-diagram-connection.c
|
2011-02-16 07:50:07 +01:00
|
|
|
liblogdiag/ld-diagram-view.c
|
2011-01-10 16:49:13 +01:00
|
|
|
liblogdiag/ld-library.c
|
2012-08-30 00:54:38 +02:00
|
|
|
liblogdiag/ld-category-view.c
|
2012-10-08 09:11:32 +02:00
|
|
|
liblogdiag/ld-category-tree-view.c
|
2012-09-05 19:39:22 +02:00
|
|
|
liblogdiag/ld-category-symbol-view.c
|
2012-08-29 18:44:47 +02:00
|
|
|
liblogdiag/ld-category.c
|
2011-01-10 16:49:13 +01:00
|
|
|
liblogdiag/ld-symbol.c
|
|
|
|
liblogdiag/ld-lua.c
|
|
|
|
liblogdiag/ld-lua-symbol.c)
|
|
|
|
set (liblogdiag_HEADERS
|
2021-11-01 10:08:03 +01:00
|
|
|
${PROJECT_BINARY_DIR}/ld-marshal.h
|
2015-01-21 20:30:11 +01:00
|
|
|
${PROJECT_BINARY_DIR}/config.h
|
2011-01-10 16:49:13 +01:00
|
|
|
liblogdiag/liblogdiag.h
|
|
|
|
liblogdiag/ld-types.h
|
2011-01-31 21:58:41 +01:00
|
|
|
liblogdiag/ld-undo-action.h
|
2011-01-10 16:49:13 +01:00
|
|
|
liblogdiag/ld-diagram.h
|
|
|
|
liblogdiag/ld-diagram-object.h
|
|
|
|
liblogdiag/ld-diagram-symbol.h
|
2011-02-02 17:22:34 +01:00
|
|
|
liblogdiag/ld-diagram-connection.h
|
2011-02-16 07:50:07 +01:00
|
|
|
liblogdiag/ld-diagram-view.h
|
2011-01-10 16:49:13 +01:00
|
|
|
liblogdiag/ld-library.h
|
2012-08-30 00:54:38 +02:00
|
|
|
liblogdiag/ld-category-view.h
|
2012-10-08 09:11:32 +02:00
|
|
|
liblogdiag/ld-category-tree-view.h
|
2012-09-05 19:39:22 +02:00
|
|
|
liblogdiag/ld-category-symbol-view.h
|
2012-08-29 18:44:47 +02:00
|
|
|
liblogdiag/ld-category.h
|
2011-01-10 16:49:13 +01:00
|
|
|
liblogdiag/ld-symbol.h
|
|
|
|
liblogdiag/ld-lua.h
|
|
|
|
liblogdiag/ld-lua-private.h
|
|
|
|
liblogdiag/ld-lua-symbol.h
|
|
|
|
liblogdiag/ld-lua-symbol-private.h)
|
|
|
|
|
2011-02-03 00:03:08 +01:00
|
|
|
set (logdiag_TESTS
|
2011-02-05 19:47:07 +01:00
|
|
|
point-array
|
|
|
|
diagram)
|
2011-02-03 00:03:08 +01:00
|
|
|
|
2010-09-13 19:24:53 +02:00
|
|
|
set (logdiag_SOURCES
|
2021-11-01 10:53:03 +01:00
|
|
|
${PROJECT_BINARY_DIR}/gresource.c
|
2010-09-17 19:03:03 +02:00
|
|
|
src/ld-window-main.c
|
2011-01-10 16:49:13 +01:00
|
|
|
src/logdiag.c)
|
2010-09-13 19:24:53 +02:00
|
|
|
set (logdiag_HEADERS
|
2011-01-10 16:49:13 +01:00
|
|
|
${liblogdiag_HEADERS}
|
|
|
|
src/ld-window-main.h)
|
2010-09-13 19:24:53 +02:00
|
|
|
|
2021-10-28 05:18:03 +02:00
|
|
|
# Resource compilation for Windows
|
2011-01-22 17:13:56 +01:00
|
|
|
if (WIN32)
|
2021-10-28 05:18:03 +02:00
|
|
|
# The file isn't scanned for dependencies, but they will only rarely change
|
|
|
|
list (APPEND logdiag_SOURCES share/logdiag.rc)
|
2021-10-29 04:56:56 +02:00
|
|
|
endif ()
|
2011-01-22 17:13:56 +01:00
|
|
|
|
2010-09-18 19:47:33 +02:00
|
|
|
# Generate marshallers
|
2021-11-01 10:08:03 +01:00
|
|
|
function (glib_genmarshal listfile prefix)
|
2021-11-01 10:34:28 +01:00
|
|
|
find_program (GLIB_GENMARSHAL_EXECUTABLE glib-genmarshal)
|
|
|
|
if (NOT GLIB_GENMARSHAL_EXECUTABLE)
|
|
|
|
message (FATAL_ERROR "glib-genmarshal not found")
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
get_filename_component (_basename "${listfile}" NAME_WE)
|
|
|
|
set (_command_base ${GLIB_GENMARSHAL_EXECUTABLE} --prefix ${prefix}
|
2021-11-01 10:08:03 +01:00
|
|
|
"${listfile}")
|
2011-01-27 18:56:41 +01:00
|
|
|
|
2021-11-01 10:34:28 +01:00
|
|
|
add_custom_command (OUTPUT ${_basename}.c ${_basename}.h
|
|
|
|
COMMAND ${_command_base} --body > ${_basename}.c
|
|
|
|
COMMAND ${_command_base} --header > ${_basename}.h
|
2021-11-01 10:08:03 +01:00
|
|
|
DEPENDS "${listfile}"
|
|
|
|
COMMENT "Generating marshallers source files" VERBATIM)
|
2021-10-29 04:56:56 +02:00
|
|
|
endfunction ()
|
2010-09-18 19:47:33 +02:00
|
|
|
|
2021-11-01 10:08:03 +01:00
|
|
|
glib_genmarshal (${PROJECT_SOURCE_DIR}/liblogdiag/ld-marshal.list ld_marshal)
|
2010-09-18 19:47:33 +02:00
|
|
|
|
2021-11-01 10:53:03 +01:00
|
|
|
# Generate resources
|
|
|
|
function (glib_compile_resources xml target)
|
|
|
|
find_program (GLIB_COMPILE_RESOURCES_EXECUTABLE glib-compile-resources)
|
|
|
|
if (NOT GLIB_COMPILE_RESOURCES_EXECUTABLE)
|
|
|
|
message (FATAL_ERROR "glib-compile-resources not found")
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
# glib-compile-resources reads paths relative to its working directory
|
|
|
|
get_filename_component (_xml_path "${xml}" PATH)
|
|
|
|
|
|
|
|
# On Windows, the final Makefile may contain:
|
|
|
|
# cd e:\abc && ...
|
|
|
|
# That won't actually change the directory. We have to do:
|
|
|
|
# cd e:\abc && e: && ...
|
|
|
|
set (_prefix)
|
|
|
|
if (WIN32 AND "${_xml_path}" MATCHES "^.:[/\\\\]")
|
|
|
|
string (SUBSTRING "${_xml_path}" 0 2 _xml_drive)
|
|
|
|
set (_prefix ${_xml_drive} &&)
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
# VERBATIM would cause problems, so it is not used here
|
|
|
|
add_custom_command (OUTPUT ${target}
|
|
|
|
COMMAND ${_prefix} ${GLIB_COMPILE_RESOURCES_EXECUTABLE}
|
|
|
|
--generate-source --target ${target} "${xml}" DEPENDS "${xml}"
|
|
|
|
WORKING_DIRECTORY "${_xml_path}" COMMENT "Compiling resources")
|
|
|
|
|
|
|
|
execute_process (COMMAND ${GLIB_COMPILE_RESOURCES_EXECUTABLE}
|
|
|
|
--generate-dependencies "${xml}"
|
|
|
|
WORKING_DIRECTORY "${_xml_path}" OUTPUT_VARIABLE _deps)
|
|
|
|
string (REPLACE "\n" ";" _deps "${_deps}")
|
|
|
|
foreach (_dep ${_deps})
|
|
|
|
set_property (SOURCE "${target}"
|
|
|
|
APPEND PROPERTY OBJECT_DEPENDS "${_xml_path}/${_dep}")
|
|
|
|
endforeach ()
|
|
|
|
|
|
|
|
configure_file ("${xml}" glib-compile-resources.stamp COPYONLY)
|
|
|
|
endfunction ()
|
|
|
|
|
|
|
|
glib_compile_resources (${PROJECT_SOURCE_DIR}/share/logdiag.gresource.xml
|
|
|
|
${PROJECT_BINARY_DIR}/gresource.c)
|
|
|
|
|
2021-11-01 10:34:28 +01:00
|
|
|
# Generate a configure file
|
|
|
|
add_definitions (-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_36)
|
|
|
|
add_definitions (-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_36)
|
|
|
|
configure_file (config.h.in ${PROJECT_BINARY_DIR}/config.h)
|
|
|
|
|
|
|
|
include_directories (${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR}
|
|
|
|
${GTK3_INCLUDE_DIRS} ${Lua_INCLUDE_DIRS})
|
2016-03-20 15:39:57 +01:00
|
|
|
set (logdiag_LIBS ${GTK3_LIBRARIES} ${Lua_LIBRARIES} m)
|
2011-01-10 16:49:13 +01:00
|
|
|
|
2011-02-12 02:07:39 +01:00
|
|
|
if (WIN32)
|
2021-10-31 03:50:04 +01:00
|
|
|
find_package (Intl REQUIRED)
|
|
|
|
list (APPEND logdiag_LIBS ${Intl_LIBRARIES} shell32)
|
2021-10-29 04:56:56 +02:00
|
|
|
endif ()
|
2011-02-12 02:07:39 +01:00
|
|
|
|
2011-01-10 16:49:13 +01:00
|
|
|
# Build the library
|
|
|
|
add_library (liblogdiag STATIC ${liblogdiag_SOURCES} ${liblogdiag_HEADERS})
|
|
|
|
set_target_properties (liblogdiag PROPERTIES OUTPUT_NAME logdiag)
|
|
|
|
|
|
|
|
# Build the executable
|
2011-01-22 13:13:05 +01:00
|
|
|
add_executable (logdiag WIN32 ${logdiag_SOURCES} ${logdiag_HEADERS})
|
2015-02-08 16:30:07 +01:00
|
|
|
target_link_libraries (logdiag liblogdiag ${logdiag_LIBS})
|
2010-09-13 19:24:53 +02:00
|
|
|
|
2021-11-01 07:40:32 +01:00
|
|
|
# GSettings
|
|
|
|
find_program (GLIB_COMPILE_SCHEMAS_EXECUTABLE glib-compile-schemas)
|
|
|
|
if (NOT GLIB_COMPILE_SCHEMAS_EXECUTABLE)
|
|
|
|
message (FATAL_ERROR "glib-compile-schemas not found")
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
set (GSETTINGS_DIR "${PROJECT_SOURCE_DIR}/share")
|
|
|
|
set (GSETTINGS_SCHEMAS "${GSETTINGS_DIR}/org.logdiag.gschema.xml")
|
|
|
|
|
|
|
|
if (OPTION_NOINSTALL)
|
|
|
|
set (GSETTINGS_COMPILED_SCHEMA "${PROJECT_BINARY_DIR}/gschemas.compiled")
|
|
|
|
add_custom_command (OUTPUT "${GSETTINGS_COMPILED_SCHEMA}"
|
|
|
|
COMMAND ${GLIB_COMPILE_SCHEMAS_EXECUTABLE}
|
|
|
|
"--targetdir=${PROJECT_BINARY_DIR}" "${GSETTINGS_DIR}"
|
|
|
|
DEPENDS "${GSETTINGS_SCHEMAS}"
|
|
|
|
COMMENT "Compiling GSettings schema files" VERBATIM)
|
|
|
|
add_custom_target (${PROJECT_NAME}-gschema ALL
|
|
|
|
DEPENDS "${GSETTINGS_COMPILED_SCHEMA}")
|
|
|
|
endif ()
|
|
|
|
|
2011-02-03 00:03:08 +01:00
|
|
|
# Testing
|
|
|
|
if (BUILD_TESTING)
|
|
|
|
enable_testing ()
|
|
|
|
|
2021-11-01 07:40:32 +01:00
|
|
|
add_test (NAME test-gschema-${PROJECT_NAME}
|
|
|
|
COMMAND ${GLIB_COMPILE_SCHEMAS_EXECUTABLE} --dry-run "${GSETTINGS_DIR}")
|
|
|
|
|
2011-02-03 00:03:08 +01:00
|
|
|
foreach (name ${logdiag_TESTS})
|
|
|
|
add_executable (test-${name} tests/${name}.c)
|
|
|
|
target_link_libraries (test-${name} liblogdiag ${logdiag_LIBS})
|
2021-10-22 15:04:24 +02:00
|
|
|
add_test (NAME test-${name} COMMAND test-${name})
|
|
|
|
list (APPEND logdiag_TEST_TARGETS test-${name})
|
2021-10-29 04:56:56 +02:00
|
|
|
endforeach ()
|
2021-10-22 15:04:24 +02:00
|
|
|
if (WIN32 AND NOT CMAKE_CROSSCOMPILING)
|
|
|
|
set_tests_properties (${logdiag_TEST_TARGETS}
|
|
|
|
PROPERTIES ENVIRONMENT "PATH=${WIN32_DEPENDS_PATH}/bin")
|
|
|
|
endif ()
|
2021-10-29 04:56:56 +02:00
|
|
|
endif ()
|
2011-02-03 00:03:08 +01:00
|
|
|
|
2010-12-18 15:39:50 +01:00
|
|
|
# Generate documentation
|
2021-10-26 20:11:23 +02:00
|
|
|
if (OPTION_GTKDOC)
|
|
|
|
find_package (GtkDoc 1.25 REQUIRED)
|
|
|
|
set (project_DOC_DIR "${PROJECT_BINARY_DIR}/liblogdiag")
|
|
|
|
|
2021-10-24 15:11:52 +02:00
|
|
|
# Extracted LDFLAGS didn't contain -l in CMake 3.21.3 and gtk-doc 1.33.2,
|
|
|
|
# pass them explicitly and work around insanity; CMake still exits with
|
|
|
|
# an error and gtk-doc produces empty HTML documentation
|
|
|
|
string (REGEX REPLACE "(;)([^-])" "\\1-l\\2" xldflags "${logdiag_LIBS}")
|
|
|
|
set_target_properties (liblogdiag PROPERTIES LINK_LIBRARIES "")
|
|
|
|
|
|
|
|
# The "official" module wants an XML file I don't want to give it
|
|
|
|
file (WRITE ${PROJECT_BINARY_DIR}/liblogdiag-docs-dummy.xml "<book/>")
|
|
|
|
|
|
|
|
# XXX: not our bug but xml/gtkdocentities.ent cannot be passed
|
|
|
|
# XXX: this causes `make clean` to remove the entire build directory,
|
|
|
|
# because it marks CMAKE_CURRENT_BINARY_DIR as an output
|
2018-06-24 23:19:12 +02:00
|
|
|
gtk_doc_add_module (liblogdiag
|
|
|
|
SOURCE ${PROJECT_SOURCE_DIR}/liblogdiag
|
2021-10-24 15:11:52 +02:00
|
|
|
SUFFIXES c h LDFLAGS "-l${xldflags}"
|
|
|
|
XML ${PROJECT_BINARY_DIR}/liblogdiag-docs-dummy.xml
|
2018-06-24 23:19:12 +02:00
|
|
|
LIBRARIES liblogdiag)
|
|
|
|
endif ()
|
2010-12-18 15:39:50 +01:00
|
|
|
|
2012-02-08 20:57:51 +01:00
|
|
|
find_package (CppCheck)
|
|
|
|
GENERATE_CPPCHECK (SOURCES liblogdiag src tests ENABLE_IDS all
|
2015-01-21 20:30:11 +01:00
|
|
|
TARGET_NAME ${PROJECT_NAME}_cppcheck INCLUDES ${PROJECT_BINARY_DIR})
|
2012-02-08 20:57:51 +01:00
|
|
|
|
2021-10-29 00:22:43 +02:00
|
|
|
# Various clang-based diagnostics, loads of fake positives and spam
|
|
|
|
if (OPTION_CLANG_TIDY)
|
|
|
|
set (clang_tidy_checks
|
|
|
|
clang-analyzer-* bugprone-* misc-* readability-* performance-*
|
|
|
|
-bugprone-reserved-identifier # GObject
|
|
|
|
-performance-no-int-to-ptr # GObject
|
|
|
|
-bugprone-narrowing-conversions
|
|
|
|
-bugprone-macro-parentheses # too coarse-grained
|
|
|
|
-readability-braces-around-statements # fine by me
|
|
|
|
-readability-isolate-declaration # fine by me
|
|
|
|
-readability-magic-numbers # too coarse-grained
|
|
|
|
-misc-unused-parameters) # fine by me
|
|
|
|
|
|
|
|
string (REPLACE ";" "," clang_tidy_checks "${clang_tidy_checks}")
|
|
|
|
set (clang_tidy_config "{
|
|
|
|
Checks: '${clang_tidy_checks}',
|
|
|
|
CheckOptions: [{
|
|
|
|
key: readability-function-cognitive-complexity.Threshold,
|
|
|
|
value: '30'
|
|
|
|
}]}")
|
|
|
|
|
|
|
|
string (REPLACE "\n" " " clang_tidy_config "${clang_tidy_config}")
|
|
|
|
|
|
|
|
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
set (clang_tidy_sources ${liblogdiag_SOURCES} ${logdiag_SOURCES})
|
|
|
|
add_custom_target (${PROJECT_NAME}_clang_tidy
|
|
|
|
COMMAND clang-tidy --quiet -p ${PROJECT_BINARY_DIR}
|
|
|
|
"--config=${clang_tidy_config}" ${clang_tidy_sources}
|
|
|
|
| sh -c "cat 1>&2"
|
|
|
|
DEPENDS ${clang_tidy_sources} VERBATIM
|
|
|
|
USES_TERMINAL WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
|
|
|
endif ()
|
2013-04-13 18:06:43 +02:00
|
|
|
|
2010-09-13 19:24:53 +02:00
|
|
|
# Installation
|
2011-01-22 13:13:05 +01:00
|
|
|
if (WIN32)
|
|
|
|
install (TARGETS logdiag DESTINATION .)
|
|
|
|
install (DIRECTORY
|
|
|
|
${WIN32_DEPENDS_PATH}/bin/
|
|
|
|
DESTINATION .
|
2021-10-25 22:59:34 +02:00
|
|
|
FILES_MATCHING PATTERN "*.dll" PATTERN "gspawn-*-helper.exe")
|
2011-01-22 13:13:05 +01:00
|
|
|
install (DIRECTORY
|
|
|
|
${WIN32_DEPENDS_PATH}/etc/
|
|
|
|
DESTINATION etc)
|
|
|
|
install (DIRECTORY
|
|
|
|
${WIN32_DEPENDS_PATH}/lib/gdk-pixbuf-2.0
|
2021-10-21 19:16:01 +02:00
|
|
|
DESTINATION lib
|
|
|
|
FILES_MATCHING PATTERN "*" PATTERN "*.a" EXCLUDE)
|
2015-01-28 00:16:41 +01:00
|
|
|
install (DIRECTORY
|
|
|
|
${WIN32_DEPENDS_PATH}/share/glib-2.0/schemas
|
|
|
|
DESTINATION share/glib-2.0
|
|
|
|
FILES_MATCHING PATTERN "org.gtk.Settings.*")
|
2011-02-12 02:07:39 +01:00
|
|
|
|
2021-10-21 19:16:01 +02:00
|
|
|
install (DIRECTORY
|
|
|
|
${WIN32_DEPENDS_PATH}/share/icons/Adwaita
|
|
|
|
DESTINATION share/icons OPTIONAL)
|
2018-06-25 03:05:52 +02:00
|
|
|
install (FILES
|
|
|
|
${WIN32_DEPENDS_PATH}/share/icons/hicolor/index.theme
|
|
|
|
DESTINATION share/icons/hicolor)
|
|
|
|
install (DIRECTORY share/icons DESTINATION share)
|
|
|
|
|
2011-02-12 02:07:39 +01:00
|
|
|
# Avoid partial translations
|
|
|
|
file (GLOB locales ${WIN32_DEPENDS_PATH}/share/locale/*)
|
|
|
|
foreach (locale ${locales})
|
|
|
|
get_filename_component (translation ${locale} NAME)
|
|
|
|
list (FIND project_TRANSLATIONS ${translation} translation_found)
|
|
|
|
if (translation_found GREATER -1)
|
|
|
|
install (DIRECTORY
|
|
|
|
${WIN32_DEPENDS_PATH}/share/locale/${translation}
|
|
|
|
DESTINATION share/locale)
|
2021-10-29 04:56:56 +02:00
|
|
|
endif ()
|
|
|
|
endforeach ()
|
2021-10-23 14:09:55 +02:00
|
|
|
|
|
|
|
install (SCRIPT Win32Cleanup.cmake)
|
2021-10-29 04:56:56 +02:00
|
|
|
else ()
|
2011-01-22 13:13:05 +01:00
|
|
|
install (TARGETS logdiag DESTINATION bin)
|
2010-12-18 15:39:50 +01:00
|
|
|
install (FILES share/logdiag.desktop DESTINATION share/applications)
|
2011-01-30 15:29:19 +01:00
|
|
|
install (FILES share/logdiag.xml DESTINATION share/mime/packages)
|
2011-01-16 16:46:48 +01:00
|
|
|
install (DIRECTORY share/icons DESTINATION share)
|
2011-02-04 19:47:10 +01:00
|
|
|
# Don't install the documentation yet as we don't install any library
|
|
|
|
# install (DIRECTORY "${project_DOC_DIR}/html/"
|
2015-01-21 20:30:11 +01:00
|
|
|
# DESTINATION share/gtk-doc/html/${PROJECT_NAME})
|
|
|
|
install (FILES LICENSE NEWS DESTINATION share/doc/${PROJECT_NAME})
|
2021-10-29 04:56:56 +02:00
|
|
|
endif ()
|
2010-09-13 19:24:53 +02:00
|
|
|
|
2021-10-24 23:58:52 +02:00
|
|
|
install (DIRECTORY docs/user-guide DESTINATION share/doc/${PROJECT_NAME})
|
2021-11-01 10:53:03 +01:00
|
|
|
install (DIRECTORY share/library DESTINATION share/${PROJECT_NAME})
|
2021-10-22 15:04:24 +02:00
|
|
|
install (FILES ${GSETTINGS_SCHEMAS} DESTINATION share/glib-2.0/schemas)
|
2021-10-23 16:29:48 +02:00
|
|
|
install (CODE " # DESTDIR is not in use on Windows (WIN32 is only native here!)
|
2015-01-28 00:16:41 +01:00
|
|
|
if (WIN32 OR \"\$ENV{DESTDIR}\" STREQUAL \"\")
|
2021-10-22 15:04:24 +02:00
|
|
|
execute_process (COMMAND \"${GLIB_COMPILE_SCHEMAS_EXECUTABLE}\"
|
2015-01-28 00:16:41 +01:00
|
|
|
\"\${CMAKE_INSTALL_PREFIX}/share/glib-2.0/schemas\")
|
2021-10-23 16:29:48 +02:00
|
|
|
endif ()")
|
2015-01-28 00:16:41 +01:00
|
|
|
|
2010-09-13 19:24:53 +02:00
|
|
|
# CPack
|
2020-09-28 04:49:03 +02:00
|
|
|
set (CPACK_PACKAGE_VENDOR "Premysl Eric Janouch")
|
|
|
|
set (CPACK_PACKAGE_CONTACT "Přemysl Eric Janouch <p@janouch.name>")
|
2015-01-21 20:30:11 +01:00
|
|
|
set (CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE")
|
2021-10-22 15:04:24 +02:00
|
|
|
set (CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
|
2011-01-22 19:48:30 +01:00
|
|
|
|
|
|
|
if (WIN32)
|
|
|
|
set (CPACK_GENERATOR "NSIS;ZIP")
|
2021-10-29 04:56:56 +02:00
|
|
|
else ()
|
2011-01-22 19:48:30 +01:00
|
|
|
set (CPACK_GENERATOR "TGZ;ZIP")
|
2011-04-21 14:43:40 +02:00
|
|
|
set (CPACK_SET_DESTDIR TRUE)
|
2021-10-29 04:56:56 +02:00
|
|
|
endif ()
|
2011-02-07 19:20:53 +01:00
|
|
|
|
2010-09-13 19:24:53 +02:00
|
|
|
set (CPACK_PACKAGE_FILE_NAME
|
2021-10-22 15:04:24 +02:00
|
|
|
"${PROJECT_NAME}-${PROJECT_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
|
|
|
set (CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME} ${CPACK_PACKAGE_VERSION}")
|
|
|
|
|
|
|
|
# XXX: It is still possible to install multiple copies, making commands collide.
|
|
|
|
set (CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
|
|
|
|
set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${PROJECT_NAME}")
|
2011-02-04 17:21:27 +01:00
|
|
|
|
2015-01-21 20:30:11 +01:00
|
|
|
set (CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/share\\\\header.bmp")
|
2011-01-22 19:48:30 +01:00
|
|
|
set (CPACK_NSIS_INSTALLED_ICON_NAME "logdiag.exe")
|
2021-10-27 21:39:23 +02:00
|
|
|
set (CPACK_NSIS_URL_INFO_ABOUT "${project_URL}")
|
|
|
|
set (CPACK_NSIS_HELP_LINK "${project_URL}")
|
|
|
|
# Or CPACK_NSIS_EXECUTABLES_DIRECTORY needs to be changed from "bin"
|
|
|
|
set (CPACK_NSIS_MENU_LINKS "logdiag.exe" ${PROJECT_NAME})
|
2021-10-23 16:29:48 +02:00
|
|
|
set (CPACK_NSIS_EXTRA_INSTALL_COMMANDS [[
|
2011-02-13 17:51:56 +01:00
|
|
|
WriteRegStr HKCR '.ldd' '' 'logdiag.Diagram'
|
|
|
|
WriteRegStr HKCR 'logdiag.Diagram' '' 'logdiag Diagram'
|
2021-10-23 16:29:48 +02:00
|
|
|
WriteRegStr HKCR 'logdiag.Diagram\\shell\\open\\command' '' '\"$INSTDIR\\logdiag.exe\" \"%1\"'
|
|
|
|
WriteRegStr HKCR 'logdiag.Diagram\\shell\\edit\\command' '' '\"$INSTDIR\\logdiag.exe\" \"%1\"'
|
|
|
|
System::Call 'shell32::SHChangeNotify(i,i,i,i) (0x08000000, 0x1000, 0, 0)'
|
|
|
|
]])
|
|
|
|
set (CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS [[
|
2011-02-13 17:51:56 +01:00
|
|
|
DeleteRegKey HKCR 'logdiag.Diagram'
|
2021-10-23 16:29:48 +02:00
|
|
|
System::Call 'shell32::SHChangeNotify(i,i,i,i) (0x08000000, 0x1000, 0, 0)'
|
|
|
|
]])
|
2011-01-22 19:48:30 +01:00
|
|
|
|
2011-02-07 19:20:53 +01:00
|
|
|
set (CPACK_DEBIAN_PACKAGE_DEPENDS
|
2015-01-20 23:23:03 +01:00
|
|
|
"libgtk3.0-0 (>= 3.8), libjson-glib-1.0-0 (>= 0.10.4), liblua5.2-0")
|
2011-02-07 19:20:53 +01:00
|
|
|
set (CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS
|
2015-01-20 23:23:03 +01:00
|
|
|
"libgtk3.0-dev (>= 3.8), libjson-glib-dev (>= 0.10.4), liblua5.2-0-dev")
|
2011-02-04 17:21:27 +01:00
|
|
|
set (CPACK_DEBIAN_PACKAGE_SECTION "Electronics")
|
2011-02-07 18:03:15 +01:00
|
|
|
set (CPACK_DEBIAN_PACKAGE_HOMEPAGE "${project_URL}")
|
2011-02-04 17:21:27 +01:00
|
|
|
|
2015-02-09 20:28:03 +01:00
|
|
|
set (CPACK_RPM_PACKAGE_REQUIRES "gtk3 >= 3.8, json-glib >= 0.10.4, lua = 5.2")
|
2011-02-07 17:53:31 +01:00
|
|
|
set (CPACK_RPM_PACKAGE_GROUP "Graphics")
|
2016-03-15 22:17:47 +01:00
|
|
|
set (CPACK_RPM_PACKAGE_LICENSE "ISC")
|
2011-02-07 18:03:15 +01:00
|
|
|
set (CPACK_RPM_PACKAGE_URL "${project_URL}")
|
2011-02-07 17:53:31 +01:00
|
|
|
|
2010-09-13 19:24:53 +02:00
|
|
|
set (CPACK_SOURCE_GENERATOR "TGZ;ZIP")
|
2021-11-01 10:08:03 +01:00
|
|
|
set (CPACK_SOURCE_IGNORE_FILES "/\\\\.git;/build;/CMakeLists.txt.user;/win32-depends")
|
2021-10-22 15:04:24 +02:00
|
|
|
set (CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}")
|
2010-09-13 19:24:53 +02:00
|
|
|
|
|
|
|
include (CPack)
|