Generate mconfig.h file with selected variables from mconfig.
authorDavin McCall <davmac@davmac.org>
Tue, 15 May 2018 20:36:03 +0000 (21:36 +0100)
committerDavin McCall <davmac@davmac.org>
Mon, 21 May 2018 17:29:45 +0000 (18:29 +0100)
mconfig
src/Makefile
src/mconfig-gen.cc [new file with mode: 0644]

diff --git a/mconfig b/mconfig
index 12b64a0397ccd2f7fbe7f51137f6332f8402c83e..3aca79d24f4b7dd1b78ef8025b80b19e82a1a984 100644 (file)
--- a/mconfig
+++ b/mconfig
@@ -2,6 +2,7 @@
 
 SBINDIR=/sbin
 MANDIR=/usr/share/man
+SYSCONTROLSOCKET=/dev/dinitctl
 
 
 # General build options. Uncomment the options appropriate for your system.
index cf7887d29e1b6424203c5e5f6b84a550ad3381ee..701afb92004a85041edac0d495341edb8e76df9b 100644 (file)
@@ -11,7 +11,14 @@ objects = $(dinit_objects) dinitctl.o shutdown.o
 
 all: dinit dinitctl $(SHUTDOWN)
 
-dinit: $(dinit_objects)
+mconfig.h: mconfig-gen
+       ./mconfig-gen > mconfig.h
+
+mconfig-gen: mconfig-gen.cc ../mconfig
+       $(CXX) $(CXXOPTS) -o mconfig-gen mconfig-gen.cc $(LDFLAGS) -DSBINDIR=$(SBINDIR) \
+               -DSYSCONTROLSOCKET=$(SYSCONTROLSOCKET)
+
+dinit: mconfig.h $(dinit_objects)
        $(CXX) -o dinit $(dinit_objects) $(LDFLAGS)
 
 dinitctl: dinitctl.o
@@ -35,7 +42,8 @@ endif
 
 clean:
        rm -f *.o *.d
-       rm -f dinit dinitctl shutdown
+       rm -f dinit dinitctl shutdown mconfig-gen
+       rm -f mconfig.h
        $(MAKE) -C tests clean
 
 -include $(objects:.o=.d)
diff --git a/src/mconfig-gen.cc b/src/mconfig-gen.cc
new file mode 100644 (file)
index 0000000..0da3d84
--- /dev/null
@@ -0,0 +1,18 @@
+#include <iostream>
+
+#define STR2(arg) #arg
+#define STR(arg)  STR2(arg)
+
+static std::string stringify(std::string a)
+{
+    return std::string("\"") + a + "\"";
+}
+
+int main(int argc, char **argv)
+{
+    using namespace std;
+    cout << "// This file is auto-generated by mconfig-gen.cc." << endl;
+    cout << "const static char SYSCONTROLSOCKET[] =" << stringify(STR(SYSCONTROLSOCKET)) << ";" << endl;
+    cout << "const static char SBINDIR[] = " << stringify(STR(SBINDIR)) << ";" << endl;
+    return 0;
+}