From f01de0c15db38e541c9cdcffda2e8f13c215835c Mon Sep 17 00:00:00 2001 From: Zephyr Lykos Date: Wed, 13 Mar 2024 16:15:18 +0800 Subject: [PATCH 1/2] Add Autotools Signed-off-by: Zephyr Lykos --- .gitignore | 130 +++++++++++++++++++++++++++++++++++++++- Makefile => GNUmakefile | 0 Makefile.am | 38 ++++++++++++ configure.ac | 46 ++++++++++++++ libringbuf.pc.in | 11 ++++ 5 files changed, 224 insertions(+), 1 deletion(-) rename Makefile => GNUmakefile (100%) create mode 100644 Makefile.am create mode 100644 configure.ac create mode 100644 libringbuf.pc.in diff --git a/.gitignore b/.gitignore index 35a0414..4a884eb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,132 @@ .DS_Store *.o *~ -ringbuf-test +ringbuf-test* +*.gcno +*.gcda +*.gcov + +### Autotools ### +# http://www.gnu.org/software/automake + +Makefile.in +/ar-lib +/mdate-sh +/py-compile +/test-driver +/ylwrap +.deps/ +.libs/ +.dirstamp +stamp-vti + +# http://www.gnu.org/software/autoconf + +autom4te.cache +/autoscan.log +/autoscan-*.log +/aclocal.m4 +/compile +/config.cache +/config.guess +/config.h.in +/config.log +/config.status +/config.sub +/configure +/configure.scan +/depcomp +/install-sh +/missing +/stamp-h1 + +# https://www.gnu.org/software/libtool/ + +/ltmain.sh + +# http://www.gnu.org/software/texinfo + +/texinfo.tex + +# http://www.gnu.org/software/m4/ + +m4/libtool.m4 +m4/ltoptions.m4 +m4/ltsugar.m4 +m4/ltversion.m4 +m4/lt~obsolete.m4 + +libtool +libringbuf.pc +test-suite.log +*.log +*.trs + +# Generated Makefile +# (meta build system like autotools, +# can automatically generate from config.status script +# (which is called by configure script)) +Makefile + +### CMake ### +CMakeLists.txt.user +CMakeCache.txt +CMakeFiles +CMakeScripts +Testing +Makefile +cmake_install.cmake +install_manifest.txt +compile_commands.json +CTestTestfile.cmake +_deps +/build + +### CMake Patch ### +# External projects +*-prefix/ + +### C ### +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb diff --git a/Makefile b/GNUmakefile similarity index 100% rename from Makefile rename to GNUmakefile diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..9976102 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,38 @@ +## Process this file with automake to produce Makefile.in + +ACLOCAL_AMFLAGS = -I m4 +AUTOMAKE_OPTIONS = foreign +dist_doc_DATA = COPYING README.md +AM_CFLAGS = -Wall $(AX_CFLAGS) + +## -------------------------------------------------------------------- + +EXTRA_DIST = libringbuf.pc.in +pkgconfigdir = $(libdir)/pkgconfig +nodist_pkgconfig_DATA = libringbuf.pc + +## -------------------------------------------------------------------- + +#### libraries + +include_HEADERS = ringbuf.h + +lib_LTLIBRARIES = libringbuf.la +libringbuf_la_LDFLAGS = -version-info 0:0:0 +libringbuf_la_SOURCES = \ + ringbuf.c + +#page +#### test + +check_PROGRAMS = \ + ringbuf-test + +TESTS = $(check_PROGRAMS) + +ringbuf_test_LDADD = libringbuf.la + +installcheck-local: $(TEST) + @for f in $(TEST); do $(builddir)/$$f; done + +### end of file diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..c2eee52 --- /dev/null +++ b/configure.ac @@ -0,0 +1,46 @@ +dnl @configure_input@ +dnl + +AC_PREREQ([2.72]) +AC_INIT([c-ringbuf],[0.0.1],[],[ringbuf],[http://github.com/dhess/c-ringbuf]) + +AC_CONFIG_MACRO_DIRS([m4]) +AC_CANONICAL_BUILD +AC_CANONICAL_HOST +AC_CANONICAL_TARGET +AM_INIT_AUTOMAKE([foreign dist-xz no-dist-gzip]) +AM_MAINTAINER_MODE + +AM_PROG_AR +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PROG_MAKE_SET +AC_PROG_MKDIR_P + +LT_PREREQ([2.4]) +LT_INIT + +dnl This is the version stored in the pkg-config data file. +AC_SUBST([LIBRINGBUF_PKG_CONFIG_VERSION],[0.0.1]) + +dnl page +#### basic system inspection + +AC_LANG([C]) +AM_PROG_AS +AM_PROG_CC_C_O + +AC_CACHE_SAVE + +dnl page +#### finish + +AC_CONFIG_FILES([Makefile] + [libringbuf.pc]) +AC_OUTPUT + +### end of file +# Local Variables: +# mode: autoconf +# page-delimiter: "^dnl page" +# End: diff --git a/libringbuf.pc.in b/libringbuf.pc.in new file mode 100644 index 0000000..2be9450 --- /dev/null +++ b/libringbuf.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ + +includedir=@includedir@ +libdir=@libdir@ + +Name: @PACKAGE_NAME@ +Description: A ring buffer implemented in C +Version: @LIBRINGBUF_PKG_CONFIG_VERSION@ +Libs: -L${libdir} -lringbuf +Cflags: -I${includedir} From 33afa39e041e92286d1a8ffd2e60be8a35d8b7af Mon Sep 17 00:00:00 2001 From: Zephyr Lykos Date: Wed, 13 Mar 2024 18:21:41 +0800 Subject: [PATCH 2/2] Add CMake Signed-off-by: Zephyr Lykos --- CMakeLists.txt | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..283707b --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,47 @@ +cmake_minimum_required(VERSION 3.5) +project( + ringbuf + VERSION 0.0.1 + LANGUAGES C) + +set(CMAKE_C_STANDARD 99) +option(BUILD_SHARED_LIBS "Build using shared libraries" ON) + +include(GNUInstallDirs) + +add_library(${PROJECT_NAME} ringbuf.c ringbuf.h) +set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER ringbuf.h) +set_target_properties(${PROJECT_NAME} PROPERTIES VERSION "0.0.0") + +include(CTest) +if(BUILD_TESTING) + add_executable(${PROJECT_NAME}-test ringbuf-test.c) + target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) + + add_test(${PROJECT_NAME}_test ${PROJECT_NAME}-test) + set_tests_properties( + ${PROJECT_NAME}_test PROPERTIES PASS_REGULAR_EXPRESSION + "Test [0-9]+\\.\\.\\.pass\\.") +endif() + +block() +set(prefix ${CMAKE_INSTALL_PREFIX}) +set(exec_prefix ${CMAKE_INSTALL_PREFIX}) +set(includedir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}) +set(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}) +set(PACKAGE_NAME ${PROJECT_NAME}) +set(LIBRINGBUF_PKG_CONFIG_VERSION + ${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}.${${PROJECT_NAME}_VERSION_PATCH} +) +configure_file("libringbuf.pc.in" "libringbuf.pc" @ONLY) +install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/libringbuf.pc" + COMPONENT Devel + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") +endblock() + +install( + TARGETS ${PROJECT_NAME} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})