Merge branch 'android' of git.nikiroo.be:git/fanfix into android
[fanfix.git] / Makefile.base
index acc36d3aa9ed8a229426aadb357082d4fcfe7a03..586c38e377fa9b0016081361d1c3d336b57ab5f2 100644 (file)
@@ -5,6 +5,7 @@
 # - 1.1.0: add 'help', 'sjar'
 # - 1.2.0: add 'apk'
 # - 1.2.1: improve 'apk' and add 'android'
+# - 1.3.0: add 'man' for man(ual) pages
 
 # Required parameters (the commented out ones are supposed to be per project):
 
@@ -29,12 +30,12 @@ JAR = jar
 RJAR = java
 RJAR_FLAGS += -jar
 
-all: build jar
+all: build jar man
 
 help:
        @echo "Usual options:"
        @echo "=============="
-       @echo " make            : to build the jar file"
+       @echo " make            : to build the jar file and man pages IF possible"
        @echo " make help       : to get this help screen"
        @echo " make libs       : to update the libraries into src/"
        @echo " make build      : to update the binaries (not the jar)"
@@ -49,8 +50,10 @@ help:
        @echo " make install    : to install the application into $$PREFIX"
        @echo " make android    : to prepare the sources in android/ for Studio"
        @echo " make apk        : to compile the APK file"
+       @echo " make ifman      : to make the manual pages (if pandoc is found)"
+       @echo " make man        : to make the manual pages (requires pandoc)"
 
-.PHONY: all clean mrproper mrpropre build run jrun jar sjar resources test-resources install libs love apk android
+.PHONY: all clean mrproper mrpropre build run jrun jar sjar resources test-resources install libs love apk android ifman man
 
 bin:
        @mkdir -p bin
@@ -185,6 +188,9 @@ install:
        echo "#!/bin/sh" > "$(PREFIX)/bin/$(NAME)"
        echo "$(RJAR) $(RJAR_FLAGS) \"$(PREFIX)/lib/$(NAME).jar\" \"\$$@\"" >> "$(PREFIX)/bin/$(NAME)"
        chmod a+rx "$(PREFIX)/bin/$(NAME)"
+       if [ -e "man/man1/$(NAME).1" ]; then \
+               cp -r man/ "$(PREFIX)"/share/; \
+       fi
 
 android: android/app/src
 
@@ -201,14 +207,7 @@ android/app/src:
                ln -s ../../../../res .; \
                ln -s ../../../../src ./java; \
        )
-
-apk: libs ${NAME}.apk
-       @echo Building APK files...
-
-${NAME}.apk: ${NAME}-debug.apk
-
-${NAME}-debug.apk: android
-       @echo Starting gradlew assemble...
+       @echo Fixing configuration...
        @( \
                cd android/app/src/main/java; \
                excl="\\n";\
@@ -223,7 +222,17 @@ ${NAME}-debug.apk: android
                        | sed 's:\(applicationId "\)":\1${ID_FOR_ANDROID}":' \
                        | sed "s:\s*exclude '':$$excl:g" \
                > build.gradle; \
-               cd ../ ; \
+       )
+
+apk: libs ${NAME}.apk
+       @echo Building APK files...
+
+${NAME}.apk: ${NAME}-debug.apk
+
+${NAME}-debug.apk: android
+       @echo Starting gradlew assemble...
+       @( \
+               cd android/; \
                bash gradlew assemble && ( \
                        cd ..; \
                        cp android/app/build/outputs/apk/release/app-release-unsigned.apk ${NAME}.apk; \
@@ -235,3 +244,48 @@ ${NAME}-debug.apk: android
                ); \
        )
 
+ifman:
+       @if pandoc -v >/dev/null 2>&1; then \
+               make man; \
+       else \
+               echo "man pages not generated: "'`'"pandoc' required"; \
+       fi
+
+man: 
+       @echo Checking for possible manual pages...
+       @if [ -e README.md ]; then \
+               echo Sources found for man pages; \
+               if pandoc -v >/dev/null 2>&1; then \
+                       ls README*.md 2>/dev/null \
+                                       | grep 'README\(-..\|\)\.md' \
+                                       | while read man; do \
+                               echo "  Processing page $$lang..."; \
+                               lang="`echo "$$man" \
+                                       | sed 's:README\.md:en:' \
+                                       | sed 's:README-\(.*\)\.md:\1:'`"; \
+                               mkdir -p man/"$$lang"/man1; \
+                               ( \
+                                       echo ".TH \"${NAME}\" 1 `\
+                                               date +%Y-%m-%d\
+                                               ` \"version `cat VERSION`\""; \
+                                       echo; \
+                                       UNAME="`echo "${NAME}" \
+                                               | sed 's:\(.*\):\U\1:g'`"; \
+                                       ( \
+                                               cat "$$man" | head -n1 \
+       | sed 's:.*(README\(-fr\|\)\.md).*::g'; \
+                                               cat "$$man" | tail -n+2; \
+                                       ) | sed 's:^#\(#.*\):\1:g' \
+       | sed 's:^\(#.*\):\U\1:g;s:# *'"$$UNAME"':# NAME\n'"${NAME}"' \\- :g' \
+       | sed 's:--:——:g' \
+       | pandoc -f markdown -t man | sed 's:——:--:g' ; \
+                               ) > man/"$$lang"/man1/"${NAME}.1"; \
+                       done; \
+                       mkdir -p "man/man1"; \
+                       cp man/en/man1/"${NAME}".1 man/man1/; \
+               else \
+                       echo "man pages generation: pandoc required" >&2; \
+                       false; \
+               fi; \
+       fi;
+