# Copyright (C) 1996,1997 Robert Hhne, see COPYING.RH for details 
# This file is part of RHIDE. 
ifeq ($(strip $(RHIDESRC)),)
export RHIDESRC:=$(subst \,/,$(shell cd))
endif

DJP=djp

srcdir=$(RHIDESRC)
VPATH=$(srcdir)
projects=gpr2mak rhide_ rhide
project=rhide
cfg_files=gpr2mak.gpr gpr2mak.mak rhide_.gpr rhide_.mak
update_files=gpr2mak.gpr gpr2mak.mak rhide_.gpr rhide_.mak rhide.gpr rhide.mak

rhideb=rhide$(FILE_VERSION)b
rhides=rhide$(FILE_VERSION)s
rhide=rhide$(DIR_VERSION)

po_files=\
	gpr2mak.cc idecolor.cc idedebug.cc idedefau.cc ideexter.cc \
	ideflags.cc ideforma.cc idegcc.cc idehelp.cc idehints.cc ideio.cc \
	idemain.cc idemak.cc idemenu.cc idemsg.cc ideopt.cc ideprj.cc \
	ideresou.cc idestatu.cc idestrm.cc ideutil.cc ideversi.cc openedit.cc \
	ideuser.cc idecomp.cc idespec.cc idesupp.cc idebug.cc

src_files=$(po_files) makefile common.mak readme.ide rhide.bin rhide.src \
	copying.rh copying wrong.c copyrite.c\
	gpr2mak.gpr rhide_.gpr rhide.gpr gpr2mak.mak rhide_.mak rhide.mak \
	rhide_ch.log edit_ch.log todo

subdirs=libide librhgdb libtvgdb libtvuti include doc libgdb tvision \
	gettext rhgdb debobj nodebobj po libinf tvdemo
my_subdirs=libide librhgdb libtvgdb include doc libgdb rhgdb po
po_subdirs=libide librhgdb libtvgdb libtvuti tvision rhgdb libinf tvdemo
obj_subdirs=gettext doc libide librhgdb libtvgdb libtvuti tvision rhgdb \
	libgdb debobj nodebobj po libinf tvdemo

install_subdirs=doc rhgdb

CFLAGS=-O2

programs=gpr2mak.exe idegc.exe rhgdb/rhgdb.exe

all: libgdb/libgdb.h $(programs)

idegc.exe rhgdb/rhgdb.exe: libgdb/libgdb.a

include $(RHIDESRC)/common.mak

# these are the targets, which cannot build with RHIDE

.PHONY: needed needed.po

needed: libgdb/libgdb.h libgdb/libgdb.a needed.po

needed.po:
	$(MAKE) -C po $(FLAGS_TO_PASS) needed

ifeq ($(libintl),)
libintl=$(top_dir)/gettext/intl/libintl.a
endif

gpr2mak.exe ide.exe rhide.exe: $(libintl)

gettext/intl/libintl.a:
	$(MAKE) -C gettext/intl $(FLAGS_TO_PASS) $(notdir $@)

libgdb/libgdb.a libgdb/libgdb.h:
	$(MAKE) -C libgdb $(FLAGS_TO_PASS) $(notdir $@)

rhgdb/rhgdb.exe:
	$(MAKE) -C rhgdb $(FLAGS_TO_PASS) $(notdir $@)

gpr2mak.exe: gpr2mak.mak
	$(MAKE) -f gpr2mak.mak $(FLAGS_TO_PASS) $@

ide.exe: rhide_.mak
	$(MAKE) -f rhide_.mak $(FLAGS_TO_PASS) $@

tmp.start:
	rm -rf tmp
#	mkdir -p tmp/src/$(rhide)
	mkdir -p tmp/contrib/$(rhide)/src
	mkdir -p tmp/manifest

copy.files:
#	$(MAKE) prefix=tmp/src/$(rhide) list_file=$(rhides).mft \
#	  list_prefix=src/$(rhide)/ copy_src_files
	-rm -f .../*.cpy
	$(MAKE) prefix=tmp/contrib/$(rhide)/src list_file=$(rhides).mft \
	  list_prefix=contrib/$(rhide)/src/ copy_src_files

mft.src:
	printf "%s\n" @$(rhides).mft \
	  manifest/$(rhides).mft manifest/$(rhides).ver \
	 | sort > tmp/manifest/$(rhides).mft

_VERSION=$(subst ",,$(subst \",,$(subst -DIDEVERSION=,,$(LOCAL_OPT))))

ver.src: ideversi.cc
	echo $(rhides) $(_VERSION) (sources) > tmp/manifest/$(rhides).ver

copyrite.exe: copyrite.c
	gcc -o $@ -s -O $<

mark.copyright: copyrite.exe
#	$< $(addsuffix /.../*,$(addprefix tmp/src/$(rhide)/,$(my_subdirs))) \
#	  $(addprefix tmp/src/$(rhide)/,$(src_files))
	$< $(addsuffix /.../*,$(addprefix tmp/contrib/$(rhide)/src/,$(my_subdirs))) \
	  $(addprefix tmp/contrib/$(rhide)/src/,$(src_files))

_languages.src: $(addsuffix .po,$(LANGUAGES))

languages.src languages:
	$(MAKE) -C po languages.src

distrib.src: languages.src update_srcdir tmp.start copy.files \
	     mft.src mark.copyright ver.src
	rm -f $(rhides).zip
	cd tmp
	zip -9r ../$(rhides) @manifest/$(rhides).mft
	cd ..

doc:
	$(MAKE) -C doc doc

%.ins: %.mo
	ginstall -d $(locale_dir)/$*/LC_MESSAGES
	ginstall $< $(locale_dir)/$*/LC_MESSAGES/$(PACKAGE).mo
	echo $(subst $(prefix)/,,$(locale_dir)/$*/LC_MESSAGES/$(PACKAGE).mo) \
	  >> languages.log

install.languages.start:
	rm -f languages.log

_install.languages: languages install.languages.start \
	  $(addsuffix .ins,$(LANGUAGES))

ifeq ($(word 2,$(subst :, ,$(prefix))),)
doc_prefix=../$(prefix)
else
doc_prefix=$(prefix)
endif

install.languages:
	$(MAKE) -C po install prefix=$(doc_prefix) logfile=../languages.log \
	  $(FLAGS_TO_PASS)

install.doc:
	$(MAKE) -C doc install prefix=$(doc_prefix) logfile=../doc.log \
	  $(FLAGS_TO_PASS)

install.rhgdb:
	$(MAKE) -C rhgdb install prefix=$(doc_prefix) logfile=../rhgdb.log \
	  $(FLAGS_TO_PASS)

install.programs: all install.rhgdb
	ginstall -d $(prefix)/bin
	ginstall -sb idegc.exe $(prefix)/bin/rhide.exe
	ginstall -sb gpr2mak.exe $(prefix)/bin/gpr2mak.exe

ifeq ($(strip $(logfile)),)
logfile=logfile
endif

ifeq ($(word 2,$(subst :, ,$(prefix))),)
key_prefix=../../$(prefix)
else
key_prefix=$(prefix)
endif

install.keyboard:
	$(MAKE) -C tvision/set logfile=../../editor.log \
	  install.cfg_files prefix=$(key_prefix)

install: install.programs install.languages install.doc install.keyboard
	ginstall $(srcdir)/rhide.bin $(prefix)
	ginstall $(srcdir)/readme.ide $(prefix)
	ginstall $(srcdir)/copying.rh $(prefix)
	ginstall $(srcdir)/copying $(prefix)
	echo bin/rhide.exe bin/gpr2mak.exe \
	  rhide.bin readme.ide copying.rh copying > $(logfile)
	ginstall -d $(prefix)/contrib/$(rhide)/src
	ginstall $(srcdir)/rhide_ch.log $(srcdir)/edit_ch.log \
	  $(prefix)/contrib/$(rhide)/src
	echo $(addprefix contrib/$(rhide)/src/,rhide_ch.log edit_ch.log) \
	  >> $(logfile)
	cat languages.log doc.log rhgdb.log editor.log >> $(logfile)
	rm -f languages.log doc.log rhgdb.log editor.log

manifest.bin:
	mkdir -p $(prefix)/manifest
	printf "%s\n" @$(logfile) manifest/$(rhideb).mft \
	  manifest/$(rhideb).ver \
	  | sort > $(prefix)/manifest/$(rhideb).mft
	
ver.bin: ideversi.cc
	echo $(rhideb) $(_VERSION) (binaries) \
	  > $(prefix)/manifest/$(rhideb).ver

manifest: manifest.bin ver.bin

distrib.bin_: install manifest

use_djp=yes

distrib.bin:
	rm -rf tmp
	$(MAKE) prefix=tmp distrib.bin_ logfile=rhide.log $(FLAGS_TO_PASS)
	rm -f $(rhideb).zip
ifeq ($(use_djp),yes)
	cd tmp/bin; $(DJP) *.exe; cd ../..
endif
	cd tmp; zip -9r ../$(rhideb).zip @manifest/$(rhideb).mft; cd ..

update_srcdir:
	$(MAKE) SUBDIR_TARGET=update__srcdir update__srcdir $(FLAGS_TO_PASS)
