[PATCH ipmi-fru-parser] RFC: use cmake.

OpenBMC Patches openbmc-patches at stwcx.xyz
Fri Mar 4 09:30:13 AEDT 2016


From: Patrick Williams <patrick at stwcx.xyz>

There was a previous proposal to consider autotools (see
openbmc/ipmi-fru-parser#7).  This is an alternative implementation
using cmake.
---
 .gitignore        | 12 +++++++++
 CMakeLists.txt    | 30 ++++++++++++++++++++++
 Makefile          | 75 -------------------------------------------------------
 cmake/sdbus.cmake | 16 ++++++++++++
 4 files changed, 58 insertions(+), 75 deletions(-)
 create mode 100644 .gitignore
 create mode 100644 CMakeLists.txt
 delete mode 100644 Makefile
 create mode 100644 cmake/sdbus.cmake

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..727471a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,12 @@
+#### vi files ####
+*.swp
+#### --- vi --- ####
+
+#### CMAKE Files ####
+CMakeCache.txt
+CMakeFiles
+CMakeScripts
+Makefile
+cmake_install.cmake
+install_manifest.txt
+#### --- CMAKE --- ####
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..0a00985
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,30 @@
+cmake_minimum_required(VERSION 3.1)
+project(ipmi-fru-parser)
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
+set(CMAKE_CXX_STANDARD 14)
+set(CMAKE_CXX_STANDARD_REQUIRED on)
+
+include("cmake/sdbus.cmake")
+
+add_library(writefrudata SHARED
+    frup.c
+    writefrudata.C
+)
+target_link_libraries(writefrudata ${SYSTEMD_LIBRARY})
+install(TARGETS writefrudata LIBRARY DESTINATION lib/host-ipmid)
+
+add_library(strgfnhandler SHARED
+    strgfnhandler.C
+)
+target_link_libraries(strgfnhandler writefrudata)
+install(TARGETS strgfnhandler LIBRARY DESTINATION lib)
+
+add_executable(phosphor-read-eeprom
+    argument.C
+    readeeprom.C
+)
+target_link_libraries(phosphor-read-eeprom writefrudata)
+target_link_libraries(phosphor-read-eeprom ${SYSTEMD_LIBRARY})
+
+install(TARGETS phosphor-read-eeprom RUNTIME DESTINATION bin)
diff --git a/Makefile b/Makefile
deleted file mode 100644
index dc66a77..0000000
--- a/Makefile
+++ /dev/null
@@ -1,75 +0,0 @@
-LIBS += libwritefrudata.so 
-HOST_LIBS += libstrgfnhandler.so 
-libwritefrudata.so_OBJS  += frup.o writefrudata.o
-libstrgfnhandler.so_OBJS += strgfnhandler.o
-
-EXES += phosphor-read-eeprom
-
-phosphor-read-eeprom_OBJS  += readeeprom.o argument.o
-phosphor-read-eeprom_EXTRA_LIBS  += writefrudata
-libstrgfnhandler.so_EXTRA_LIBS  += writefrudata
-libwritefrudata.so_NEEDED  += libsystemd
-phosphor-read-eeprom_NEEDED  += libsystemd
-
-#### -----------------------------------------------------------------------####
-#                                                                              #
-##                       Compilare Regulas Sequi                              ##
-#                                                                              #
-#### -----------------------------------------------------------------------####
-OPTFLAGS ?= -O3 -g -pipe -G -K
-CFLAGS ?= $(OPTFLAGS)
-CXXFLAGS ?= $(OPTFLAGS)
-CFLAGS += -Wall -flto -fPIC
-CXXFLAGS += --std=gnu++14 -Wall -flto -fPIC
-
-__PKG_CONFIG = $(if $1,$(shell pkg-config $2 $1))
-__EXTRA_LIB_RESOLV = $(if $1,$1)
-
-define __BUILD_EXE
-$1 : $$($1_OBJS) | $$(LIBS) $$(HOST_LIBS) 
-		$$(LINK.cpp) -o $$@ $$^ $(call __EXTRA_LIB_RESOLV,$(addprefix -l,$($1_EXTRA_LIBS))) -L. $(call __PKG_CONFIG,$($1_NEEDED),--libs) 
-
-$(eval CXXFLAGS += $(call __PKG_CONFIG,$($1_NEEDED),--cflags))
-
-#include $$($1_OBJS:.o=.d)
-endef
-
-$(foreach exe,$(EXES),$(eval $(call __BUILD_EXE,$(exe))))
-
-define __BUILD_LIB
-$1 : $$($1_OBJS) | $$(addsuffix .so,$$(addprefix lib,$$($1_EXTRA_LIBS)))
-		$$(LINK.cpp) -fPIC -shared -o $$@ $$^ $(call __EXTRA_LIB_RESOLV,$(addprefix -l,$($1_EXTRA_LIBS))) -L. $(call __PKG_CONFIG,$($1_NEEDED),--libs) 
-
-$(eval CXXFLAGS += $(call __PKG_CONFIG,$($1_NEEDED),--cflags))
-
-#include $$($1_OBJS:.o=.d)
-endef
-
-$(foreach lib,$(LIBS),$(eval $(call __BUILD_LIB,$(lib))))
-$(foreach lib,$(HOST_LIBS),$(eval $(call __BUILD_LIB,$(lib))))
-
-.PHONY: clean
-clean:
-		$(RM) $(foreach exe,$(EXES),$(exe) $($(exe)_OBJS)) \
-			  $(foreach lib,$(LIBS),$(lib) $($(lib)_OBJS)) \
-			  $(foreach lib,$(HOST_LIBS),$(lib) $($(lib)_OBJS))
-
-DESTDIR ?= /
-BINDIR ?= /usr/bin
-LIBDIR ?= /usr/lib
-
-.PHONY: install
-install:
-		$(if $(EXES),\
-		install -m 0755 -d $(DESTDIR)$(BINDIR) && \
-		install -m 0755 $(EXES) $(DESTDIR)$(BINDIR) \
-		)
-		$(if $(LIBS),\
-		install -m 0755 -d $(DESTDIR)$(LIBDIR)/host-ipmid && \
-		install -m 0755 $(HOST_LIBS) $(DESTDIR)$(LIBDIR)/host-ipmid && \
-		install -m 0755 $(LIBS) $(DESTDIR)$(LIBDIR) \
-		)
-
-.DEFAULT_GOAL: all
-.PHONY: all
-all: $(EXES) $(LIBS)
diff --git a/cmake/sdbus.cmake b/cmake/sdbus.cmake
new file mode 100644
index 0000000..90806f3
--- /dev/null
+++ b/cmake/sdbus.cmake
@@ -0,0 +1,16 @@
+find_library(SYSTEMD_LIBRARY systemd)
+if(NOT SYSTEMD_LIBRARY)
+    message(FATAL_ERROR "Cannot find libsystemd.")
+endif(NOT SYSTEMD_LIBRARY)
+
+find_path(SYSTEMD_SDBUS_INCLUDE "systemd/sd-bus.h")
+if(NOT SYSTEMD_SDBUS_INCLUDE)
+    message(FATAL_ERROR "Cannot find sd-bus.h, libsystemd doesn't support?")
+endif(NOT SYSTEMD_SDBUS_INCLUDE)
+include_directories(${SYSTEMD_SDBUS_INCLUDE})
+
+INCLUDE (CheckLibraryExists)
+CHECK_LIBRARY_EXISTS(systemd sd_bus_open SYSTEMD_LIBRARY SYSTEMD_HAVE_SDBUS)
+if(NOT SYSTEMD_HAVE_SDBUS)
+    message(FATAL_ERROR "libsystemd doesn't support sdbus functions.")
+endif(NOT SYSTEMD_HAVE_SDBUS)
-- 
2.7.1




More information about the openbmc mailing list