aboutsummaryrefslogtreecommitdiff
path: root/cmake/tuklib_common.cmake
diff options
context:
space:
mode:
authorLasse Collin <lasse.collin@tukaani.org>2020-03-11 13:05:29 +0200
committerLasse Collin <lasse.collin@tukaani.org>2020-03-11 13:05:29 +0200
commit1acc48794364606c9091cae6fa56db75a1325114 (patch)
tree724c726a04570ff3c5ecbf6066cc00170c3841a7 /cmake/tuklib_common.cmake
parentBuild: Add support for --no-po4a option to autogen.sh. (diff)
downloadxz-1acc48794364606c9091cae6fa56db75a1325114.tar.xz
Build: Add very limited experimental CMake support.
This version matches CMake files in the master branch (commit 265daa873c0d871f5f23f9b56e133a6f20045a0a) except that this omits two source files that aren't in v5.2 and in the beginning of CMakeLists.txt the first paragraph in the comment is slightly different to point out possible issues in building shared liblzma.
Diffstat (limited to 'cmake/tuklib_common.cmake')
-rw-r--r--cmake/tuklib_common.cmake49
1 files changed, 49 insertions, 0 deletions
diff --git a/cmake/tuklib_common.cmake b/cmake/tuklib_common.cmake
new file mode 100644
index 00000000..088a3cb1
--- /dev/null
+++ b/cmake/tuklib_common.cmake
@@ -0,0 +1,49 @@
+#
+# tuklib_common.cmake - common functions and macros for tuklib_*.cmake files
+#
+# Author: Lasse Collin
+#
+# This file has been put into the public domain.
+# You can do whatever you want with this file.
+#
+
+function(tuklib_add_definitions TARGET_OR_ALL DEFINITIONS)
+ # DEFINITIONS may be an empty string/list but it's fine here. There is
+ # no need to quote ${DEFINITIONS} as empty arguments are fine here.
+ if(TARGET_OR_ALL STREQUAL "ALL")
+ add_compile_definitions(${DEFINITIONS})
+ else()
+ target_compile_definitions("${TARGET_OR_ALL}" PRIVATE ${DEFINITIONS})
+ endif()
+endfunction()
+
+function(tuklib_add_definition_if TARGET_OR_ALL VAR)
+ if(${VAR})
+ tuklib_add_definitions("${TARGET_OR_ALL}" "${VAR}")
+ endif()
+endfunction()
+
+# This is an over-simplified version of AC_USE_SYSTEM_EXTENSIONS in Autoconf
+# or gl_USE_SYSTEM_EXTENSIONS in gnulib.
+macro(tuklib_use_system_extensions TARGET_OR_ALL)
+ if(NOT WIN32)
+ # FIXME? The Solaris-specific __EXTENSIONS__ should be conditional
+ # even on Solaris. See gnulib: git log m4/extensions.m4.
+ # FIXME? gnulib and autoconf.git has lots of new stuff.
+ tuklib_add_definitions("${TARGET_OR_ALL}"
+ _GNU_SOURCE
+ __EXTENSIONS__
+ _POSIX_PTHREAD_SEMANTICS
+ _TANDEM_SOURCE
+ _ALL_SOURCE
+ )
+
+ list(APPEND CMAKE_REQUIRED_DEFINITIONS
+ -D_GNU_SOURCE
+ -D__EXTENSIONS__
+ -D_POSIX_PTHREAD_SEMANTICS
+ -D_TANDEM_SOURCE
+ -D_ALL_SOURCE
+ )
+ endif()
+endmacro()