#
# **************************************************************
# *                  SIMUSOL PROYECT                           *
# *        makefile  simusol-make    libreria/ejecutable
# *                                                            *
# *   The extension was developed by                           *
# *   Diego.Saravia@gmail.com, 2016                            *
# *   and could be used in the same terms of the toolkit       *
# *   or every free license with copyleft needed.              *
# *   http://www.simusol.org                                   *
# **************************************************************
# needs nothing, all simusol needs it
#
#    Table is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    Table is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with Table.  If not, see <http://www.gnu.org/licenses/>.

SERVER=www.simusol.org

# this file is linked in projects:  SIMUSOLGRAL_make/PROJECTS_makes/SUB_makes ????





#USERNAME=$(shell whoami)
USERNAME=$USER
$(info USERNAME $(USERNAME))
homedir=$(shell getent passwd "$(USERNAME)" | cut -d: -f6 )
$(info HOMEDIR $(homedir))
PREFIX=/usr/local
ifeq (exists, $(shell test -d /usr/share/simusol  && echo exists ))
	                PREFIX=/usr
endif
DOT=/
DOC=doc/simpack
SHARE=/share
DESTDIR=
USERID=$(shell id -u)
$(info User Id is $(USERID))
ifeq ($(ASUSER),1)
		PREFIX=${HOME}
	        DOT=/.
	        DOC=simpack/docs
	        SHARE=
endif
$(info PREFIX $(PREFIX))
$(shell sudo install distro.sh $(PREFIX)/bin)
DISTRO=$(shell $(PREFIX)/bin/distro.sh)
$(info DISTRO $(DISTRO))


PREFIXSIM=${PREFIX}${SHARE}${DOT}simusol
PREFIXDIA=${PREFIX}${SHARE}${DOT}dia
PREFIXDOCS=${PREFIX}${SHARE}${DOT}${DOC}
PREFIXBIN=${PREFIX}/bin


#DIRDOC=simusol/simusolsite/downloads      #VIEJO
DIRDOC=simusol.org/public_html/downloads



VERSION := $(shell grep 'BASEVERSION' simusol-pack.summa| sed -e's/BASEVERSION=//')
$(info VERSION $(VERSION))

#EXGRP := $(shell cat /etc/group|grep ^www|awk -F: '{print $$1}' |head -n1)
#$(info GRP $(EXGRP)) 


webvhost=/etc/apache2/sites-enabled #ubuntu
SRV = /var
WEBDOC = /var/www
WEBCGI = /usr/lib/cgi-bin
USR=www-data
GRP=www-data

ifneq ($(DISTRO),DEBIAN)
 ifneq ($(DISTRO),UBUNTU)
        webvhost=/etc/apache2
	SRV = /usr/local
	WEBCGI = /usr/local/httpd/cgi-bin
	WEBDOC = /usr/local/httpd/htdocs
	USR=nobody
	GRP=nogroup
 endif
endif


ifeq ($(DISTRO),SUSE)
#SUSE
        webvhost=/etc/apache2/vhosts.d
	SRV = /srv
	WEBDOC = /srv/www/htdocs
	WEBCGI = /srv/www/cgi-bin
	USR=wwwrun
	GRP=www
endif




COMPILER         = -c++
COMPILER         = g++
COMPILERC        = gcc
#COMPILER        = -clang
OPTIMIZATION_OPT = -O1
AR               = ar
MAKE             = make
BASE_OPTIONS     = -pedantic-errors -Wall -Wextra -Werror -Wno-long-long # -pedantic -W   -Wmissing-prototypes -Wstrict-prototypes   -Wconversion -Wshadow -Wpointer-arith   -Wcast-qual -Wcast-align   -Wwrite-strings -Wnested-externs   -fshort-enums -fno-common -Dinline= -g -O2
BASE_OPTIONS     = -std=c99 -Wno-long-long 
# -ansi
OPTIONS          = $(BASE_OPTIONS) $(OPTIMIZATION_OPT)
LINKER_OPT       = -L/usr/lib -L/usr/local/lib -lstdc++ -lm
PERL_INC         =	`perl -e 'use Config; print $$Config{archlib};'`/CORE


# libblas3 swig

#EXT=$(shell perl -e 'use Config; print $Config{archlib};')
#/usr/lib/i386-linux-gnu/perl/5.20/CORE
#https://github.com/AlekSi/google-breakpad-mirror/blob/master/src/third_party/libdisasm/swig/perl/Makefile-swig


# PERL rules
#PERL_MOD	=	blib/arch/auto/$(BASE_NAME)/$(BASE_NAME).so
#PERL_SHADOW	=	$(BASE_NAME)_wrap.c
#PERL_SWIG	=	$(BASE_NAME).pl
#PERL_OBJ	=	$(BASE_NAME)_wrap.o
#PERL_CC_FLAGS	=	`perl -e 'use Config; print $$Config{ccflags};'
#$(GCC) $(CC_FLAGS) $(PERL_CC_FLAGS) -I$(PERL_INC) -o $@ $<


#sudo apt install libmodule-starter-perl
#module-starter --module=Simusol::GSL --module=Simusol::ExprTk --module=Simusol::Actions --module=Simusol::EqDiffs --module=Simusol::Definitions --module=Simusol::Parser --module=Simusol::Simul --module=Simusol::Topol --module=Simusol::Math   --distro=Simusol --dir=Simusol --eumm --author="Diego Saravia" --email="Diego.Saravia@gmail.com" --license=gpl3


DOWNLOAD=/tmp/down

$(DOWNLOAD)/check-0.10.0.tar.gz:
	mkdir -p $(DOWNLOAD)
	cd $(DOWNLOAD); wget https://github.com/libcheck/check/releases/download/0.10.0/check-0.10.0.tar.gz

$(DOWNLOAD)/check-0.10.0:  $(DOWNLOAD)/check-0.10.0.tar.gz
	cd $(DOWNLOAD); tar -zxvf check-0.10.0.tar.gz

/usr/local/lib/libcheck.a: $(DOWNLOAD)/check-0.10.0
	cd $(DOWNLOAD)/check-0.10.0; ./configure
	$(MAKE) -C $(DOWNLOAD)/check-0.10.0
	sudo $(MAKE) -C $(DOWNLOAD)/check-0.10.0 install
	sudo ldconfig
	rm -rf $(DOWNLOAD)/check-0.10.0     # YA NO por lib*.a. deja el directorio para que make sepa esta instalado


unzip libgsl-dev gsl-bin libgsl2 swig gnuplot-x11 gnuplot5:
	@if dpkg -s "$@"  2>&1 |grep "dpkg-query: package" |grep " is not installed"; then \
	  echo $@ NO esta instalado; \
	  export DEBIAN_FRONTEND=noninteractive ; sudo apt-get install $@; echo "";\
	else \
	  echo $@ SI esta instalado; \
	fi


$(DOWNLOAD)/exprtk.zip:
	mkdir -p $(DOWNLOAD)
	cd $(DOWNLOAD); wget http://www.partow.net/downloads/exprtk.zip
	touch $(DOWNLOAD)/exprtk.zip # unzip dates files in 1999!


$(DOWNLOAD)/exprtk.hpp: $(DOWNLOAD)/exprtk.zip 
	cd $(DOWNLOAD); unzip exprtk.zip
	mv  $(DOWNLOAD)/exprtk/exprtk.hpp $(DOWNLOAD)/exprtk.hpp 
	touch $(DOWNLOAD)/exprtk.hpp # unzip dates files in 1999!
	rm -rf $(DOWNLOAD)/exprtk


File/Slurp Cwd Module/Refresh:   # solo para modulos CPAN   no usar :: aca porque a make no le gusta
	export RSV=$$(echo $@ | sed -e 's/\//::/g'); \
	if perl -e "use $$RSV;"    2>&1 | grep "Can't locate"; then\
	  echo "$$RSV" NO esta instalado; \
	  sudo cpan -i "$$RSV";  \
	 else\
	  echo "$$RSV" SI esta instalado; \
	fi



###############################################################
#  totaLCLEAN
#	rm -rf  check-0.10.0
#       rm -rf  ExprTk/exprtk
#	rm -f /tmp/${NAME}-${VERSION}/check-0.10.0.tar.gz   #HORRIBLE
#	rm -f /tmp/${NAME}-${VERSION}/ExprTk/exprtk.zip  #HORRIBLE


distcleanI: clean
	rm -f ../${NAME}_*.tar.gz

dist:   distcleanI   # I para que no choque con Makefile.PL
	echo DIST INC ${NAME}-${VERSION}
	rm -rf /tmp/${NAME}-${VERSION}
	mkdir  /tmp/${NAME}-${VERSION}
	cp -La . /tmp/${NAME}-${VERSION}  #usar link, ver tar
	cd /tmp; tar -zcvf $(CURDIR)/../${NAME}_${VERSION}.tar.gz ${NAME}-${VERSION}


VERRRRRRRRRRRRdist:   $(NAME)-$(VERSION).tar.gz

# sacar makefile.inc si sera un proyecto independiente
upload: dist   makefile.inc  # por Makefile.PL como no puedo agregar algo a all, lo pongo aca
	md5sum  ../${NAME}_${VERSION}.tar.gz>../${NAME}_${VERSION}.tar.gz.md5
	wget -O SP.md5 http://www.simusol.org/downloads/${NAME}_${VERSION}.tar.gz.md5; exit 0;
	DIF=`diff SP.md5  ../${NAME}_${VERSION}.tar.gz.md5` ;\
	rm -f diff SP.md5 ; \
	if test x"$$DIF" != x ; then \
	   echo "DIF= $$DIF"; \
	   scp ../${NAME}_${VERSION}.tar.gz.md5  ../${NAME}_${VERSION}.tar.gz www-data@simusol.org:/var/www/simusol.org/public_html/downloads ;\
	   ssh www-data@simusol.org "cd /var/www/simusol.org/public_html/downloads; rm -f ${NAME}_last.tar.gz; ln -s ${NAME}_${VERSION}.tar.gz ${NAME}_last.tar.gz; rm -f ${NAME}_last.tar.gz.md5; ln -s ${NAME}_${VERSION}.tar.gz.md5 ${NAME}_last.tar.gz.md5";\
	fi;
	rm -f *.md5; exit 0




upsimpacksrv: dist
	sudo install -d ${WEBDOC}/${DIRDOC}
	sudo install $(NAME)-$(VERSION).tar.gz ${WEBDOC}/
	sudo chown ${USR}:${GRP}  ${WEBDOC}/${DIRDOC}/$(NAME)-$(VERSION).tar.gz
	sudo rm -f  ${WEBDOC}/${DIRDOC}/$(NAME)-last.tar.gz
	sudo ln -s  ${WEBDOC}/${DIRDOC}/$(NAME)-$(BASEVERSION).tar.gz  ${WEBDOC}/${DIRDOC}/$(NAME)-last.tar.gz



#/srv/www/htdocs/simusol/simusolsite/downloads


###################################### only works in SUB_makes.  


/usr/local/lib/libsimusol_table.so: /usr/local/lib/libsimusol_table.so.1.0.1    #se recarga objetivo
	$(MAKE)  -C ../../table/src install

/usr/local/lib/libsimusol_gsl.so:                                              #se recarga objetivo
	$(MAKE)  -C ../../GSL/src  install

/usr/local/lib/libsimusol_exprtk.so:                                            #se recarga objetivo
	$(MAKE)  -C ../../ExprTk/src install

#../src/libsimusol_table.a:
#	$(MAKE) -C ../src



# solo se lo usa en table
../finddir/finddir.o: FORCE
	$(MAKE)  -C ../finddir

FORCE:


tonto: