########## Variablendefinitionen ########### # Revision-Variablen # fuer Eigen-Entwickler: setze die folgenden Variablen per Hand, falls du nicht das # allgemeine Subversion-Repository des Projekts verwendest REVISIONS_NR := $(shell svn -R info| grep ^Revision| cut -f2 -d " " | sort | tail -1) REVISIONS_DATUM = $(shell svn log -r $(REVISIONS_NR) -q | grep -v "^---" | cut -d "|" -f 3) REPOSITORY_URL = https://svn.systemausfall.org/svn/cryptocd/trunk REVISIONS_SUFFIX = _r$(REVISIONS_NR) # Verzeichnisse ROOT_DIR := $(shell pwd) # hierhin sollten lokale Verzeichnisse verlinkt werden EXT_DIR = $(ROOT_DIR)/extern EXT_DIR_PROGS = $(EXT_DIR)/programme EXT_DIR_CHAOSRADIO = $(EXT_DIR)/chaosradio # Ablage der erstellten zip/iso-Dateien EXPORT_DIR = $(ROOT_DIR)/export # so beginnt das export-Verzeichnis EXPORT_PREFIX := cryptocd # wird an das export-Verzeichnis angehaengt - nur fuer "release" und "release_all" wichtig EXPORT_FILE_SUFFIX := undefiniert EXPORT_FILE = $(EXPORT_DIR)/$(EXPORT_PREFIX)$(REVISIONS_SUFFIX)$(EXPORT_FILE_SUFFIX) # Zwischenlagerung TMP_ROOT = $(ROOT_DIR)/tmp CCD_BUILD_DIR = $(TMP_ROOT)/$(EXPORT_PREFIX)$(REVISIONS_SUFFIX) # Verzeichnisse, die vorhanden sein muessen ERROR_DIRS = $(TMP_ROOT) $(EXT_DIR) $(EXPORT_DIR) $(EXT_DIR_PROGS) # Verzeichnisse, die vorhanden sein sollten WARNING_DIRS = $(EXT_DIR_CHAOSRADIO) # Aktionen ERZEUGE_TAR = tar cjhf $(EXPORT_FILE).tar.bz2 -C $(dir $(CCD_BUILD_DIR)) $(notdir $(CCD_BUILD_DIR)) ERZEUGE_ZIP = cd $(dir $(CCD_BUILD_DIR)); zip -9qr $(EXPORT_FILE).zip $(notdir $(CCD_BUILD_DIR)) ERZEUGE_ISO = mkisofs $(ISO_OPTS) -o $(EXPORT_FILE).iso $(CCD_BUILD_DIR) 2>&1 | $(EINRUECKEN) # Sonstiges # Optionen fuer mkisofs ISO_OPTS = -iso-level 3 -J -joliet-long -relaxed-filenames -f -r -V $(EXPORT_PREFIX)$(REVISIONS_SUFFIX) # Ausgabe-Filter zum Einruecken EINRUECKEN = sed 's/^/\t/' # Voreinstellung - wird nur fuer "make website" ueberschrieben LINE_STATUS = offline ####### Variablen, die vererbt werden sollen ########### export CCD_BUILD_DIR ########### Allgemeine targets ########### .PHONY : clean all documents check help website release release_big source export cd-template setze_releaseinfos verlinke_programme verlinke_chaosradio # nur ein Alias - damit doku das default-target ist (das erste im Makefile) all: doku help: @echo "allgemeine Targets:" @echo " help - diese Uebersicht" @echo " doku - das Doku-Verzeichnis erneuern" @echo " clean - unnoetige Dateien loeschen" @echo " check - Pruefung der Links" @echo @echo "Export-Targets:" @echo " source - die lyx-Quellen und Bilder" @echo " release - alles ausser Chaosradio" @echo " release_big - mit Chaosradio-Dateien" @echo " website - fuer die Webseite: mit Programmen, ohne Chaosradio" @echo " export - erstellt alle Export-Formen" clean: @echo $(ICH) -make -C documents clean -rm -r $(TMP_ROOT)/* 2>/dev/null check: make -C doku linkchecker -r 3 --intern='!^mailto:' --extern-strict-all start.html # pruefe, ob alle notwendigen/empfohlenen Verzeichnisse existieren verzeichnisstruktur: $(ERROR_DIRS) $(WARNING_DIRS) $(ERROR_DIRS): @if [ ! -e "$@" ] ; \ then echo -e "directory ($@) does not exist - it is required\n\tyou could symlink it or create this directory\n" ; \ false ; \ fi $(WARNING_DIRS): @[ ! -e "$@" ] && echo -e "directory ($@) does not exist - it is recommended\n\tyou could create a symlink or make this directory\n" ######## die Werkzeuge ######### cd-template: verzeichnisstruktur @rm -rf $(CCD_BUILD_DIR) @cp --remove-destination -r cd-template $(CCD_BUILD_DIR) @rm -rf `find $(CCD_BUILD_DIR) -type d -name ".svn"` doku: cd-template @echo "Aktualisiere das Doku-Verzeichnis ..." # aufgrund einer Seltsamkeit im doku-Makefile, muss es zweimal aufgerufen werden, # wenn der online- zum offline-Status geaendert wird (und umgekehrt) # die Dateien werden erst beim zweiten Durchlauf gebaut @make -C documents $(LINE_STATUS) @make -C documents $(LINE_STATUS) # Kopieren der Dateien ins das Abbild-Verzeichnis @make -C documents install setze_releaseinfos: cd-template # ein nutzloses Relikt, oder nur der falsche Dateiname? # @echo "Passe version.txt an ..." # sed -i 's/REVISIONS_PLATZHALTER/$(AKTUELLE_REVISION)/g; s/DATUMS_PLATZHALTER/$(REVISIONS_DATUM)/g' $(CCD_BUILD_DIR)/version.txt verlinke_programme: cd-template @echo "Erzeuge Links zu den Programmen ..." @ln -s "$(EXT_DIR_PROGS)" "$(CCD_BUILD_DIR)/programme" verlinke_chaosradio: cd-template @echo "Erzeuge Links zu den ChaosRadio-Dateien ..." @if [ -e "$(EXT_DIR_CHAOSRADIO)" ]; \ then ln -s "$(EXT_DIR_CHAOSRADIO)" "$(CCD_BUILD_DIR)/ausLese/chaosradio" ; \ else echo "keine ChaosRadio-Dateien gefunden ($(EXT_DIR_CHAOSRADIO))" >&2 ; \ false ;\ fi ####### die Ausgabe-Formate ########### website: LINE_STATUS=online website: EXPORT_FILE_SUFFIX := _website website: cd-template verlinke_programme @echo "Gruppen-Schreibrecht setzen (fuer eduforge) ..." @chmod -R g+rw $(TMP_ROOT) @echo "Erzeuge Archiv der online-Dateien ..." @$(ERZEUGE_TAR) source: EXPORT_FILE_SUFFIX := _src source: CCD_BUILD_DIR := $(CCD_BUILD_DIR)$(EXPORT_FILE_SUFFIX) source: @if [ ! -e "$(CCD_BUILD_DIR)" ] ;\ then echo "Exportiere die gewaehlte svn-Revision ($(REVISIONS_NR)) ..." ;\ svn export -r $(REVISIONS_NR) "$(REPOSITORY_URL)" "$(CCD_BUILD_DIR)" | $(EINRUECKEN) ;\ else echo "Verwende existierende lokale svn-Kopie" ;\ fi @echo "Erzeuge source-Archiv ..." @$(ERZEUGE_TAR) release: EXPORT_FILE_SUFFIX := _small release_big: EXPORT_FILE_SUFFIX := _all release_big: verlinke_chaosradio release release_big: doku verlinke_programme setze_releaseinfos @echo "Erzeuge zip-Archiv ..." @$(ERZEUGE_ZIP) @echo "Erzeuge iso-Image ..." @$(ERZEUGE_ISO) export-all: @echo "Erstelle die Web-Seite ..." @make website @echo "Erstelle kleine Release-Pakete ..." @make release @echo "Erstelle grosse Release-Pakete ..." @make release_all @echo "Erstelle das Quell-Paket ... " @make source