--- imach/src/Makefile	2014/02/10 21:31:16	1.32
+++ imach/src/Makefile	2015/09/03 07:14:15	1.66
@@ -1,15 +1,38 @@
-VERSION=0.98nR
-COPYRIGHT=Copyright (C)  2002-2015 INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121)
-IMACHSETUPVERSION=1
+#Version has to be set in ../CMakeLists.txt too.
+VERSION=0.98q5
+# DRIVEG is for VirtualBox Windows 64bit 
+DRIVEG=g:
+#DIRG is the corresponding build directory for Virtual Windows
+DIRG=\imach\cvs\imach\build
+COPYRIGHT=Copyright (C)  2002-2015 INED-EUROREVES-Institut de longevite-Japan Society for the Promotion of Science (Grant-in-Aid for Scientific Research 25293121) - Intel Software 2015
+IMACHSETUPVERSION=icl
+# This is for Windows only
+#IMACHSETUPVERSION=mvc
 
+#       Linux
 # make _linux=1 imachopt
 # make _linux=1 imach
+# cpack -D CPACK_RPM_PACKAGE_DEBUG=1 -D CPACK_RPM_SPEC_INSTALL_POST="/bin/true" -G RPM
+# make _linux32onosx=1 imachopt
+# make _linux64onosx=1 imachopt
 
-# make _macosx=1 imach
+#       OS/X
 # make _macosx=1 imachdmg
+# make _intel64onosx=1 imachopt
+# make _intel32onosx=1 imachopt
+# make _intelUNBonosx=1 imachdmg # Not implemented (not useful)
+# make _macosx=1 imach
+# make _macosx=1 imachopt
 #  valgrind  --dsymutil=yes --leak-check=full --show-leak-kinds=all --track-origins=yes ~/Documents/imachcvs/imach/src/imach-1.129cvsmac radlc-1.129.imach
 
 #        Windows
+# make _windowsonosx=1 imachICL-setup (touch setup.iss.in) #binary should have been compiled on Windows with Intel
+# make _windowsonosx=1 imachMVC-setup (touch setup.iss.in) #binary should have been compiled on Windows with cl
+# make _windowsonosx=1 imachMVC-noreg-setup
+#
+#        Windows cross-compiled mw64
+# make _mw64onsox=1 imachcyg-setup
+#
 # make _windows=1 imachcyg
 # make _windows=1 imachcyg-setup (touch setup.iss.in)
 # make _windows=1 imachcyg-noreg-setup
@@ -17,24 +40,37 @@ IMACHSETUPVERSION=1
 # make _windowsonlinux=1 imachcyg-setup (touch setup.iss.in)
 # make _windowsonlinux=1 imachcyg-noreg-setup
 #
-# make _windowsonosx=1 imachcyg-setup (touch setup.iss.in)
-# make _windowsonosx=1 imachcyg-noreg-setup
+# make _windowscl=1 imachclopt
+
 #
 # sortie dans Output/setup.exe
 # ln -s /cygdrive/c/Program\ Files/Inno\ Setup\ 4/Compil32.exe /usr/local/bin/Compil32
 ##SETUPCOMP=  "C:\Program Files\Inno Setup 3\Compil32.exe"
-
+#TESTFILE=$$HOME/Documents/Recherches/REVES/SAITO/Tokyo2014/adlc-test-mac/adecode-1.142c.imach
+#TESTFILE=$(HOME)/Documents/Recherches/REVES/carol/carol-june2014/educadlmwt24.imach
+#TESTFILE=$(HOME)/Documents/Recherches/REVES/Biaspar/biaspar-wopowell.imach
+#TESTFILE=$(HOME)/Documents/Recherches/REVES/Biaspar/rbiaspar-098p.imach
+#TESTFILE=$(HOME)/Documents/Recherches/REVES/Aaron/brouard/results/COVARAITE_94/rmypar24pis1cov1-age.imach
+TESTFILE=$(HOME)/Documents/Recherches/REVES/Flavia/ADL0w_V2c.imach
+#TESTFILE=$(HOME)/Documents/Recherches/REVES/SAITO/Tokyo2014/adlc-test-mac/adecode-1.142c.imach
+#TESTFILE=$(HOME)/Documents/Recherches/REVES/SAITO/Tokyo2014/adlc_test_magei4/radlc_often.imach
 #CC= gcc -v
 CC=$(GCC)
 GCC= gcc
 
 ifdef _macosx
 # Mac OS/X version
-LFLAGS= -g -lm -DUNIX
-CFLAGS= -g -DUNIX
-LFLAGSOPT= -O3 -lm -DUNIX
-CFLAGSOPT= -O3 -DUNIX
+LFLAGS= -g -lm 
+#CFLAGS= -g -DDEBUG 
+CFLAGS= -g 
+LFLAGSOPT= -O3 -lm 
+CFLAGSOPT= -O3 
+CP= cp
+CROSSCOMPILATION= -DCROSS=0
 UNIX2DOS= echo "Unix2dos " 
+DSYMUTIL= dsymutil
+STRIP= strip
+BINVERSION=OSX
 # Don'know how to launch imach098.pmsp in batch to create package file imach098Panther.pkg
 # ./createdmg.sh imach imach098panther ./imach098Panther
 # ./createdmg.sh imach imach098leopard ./imach098Leopard
@@ -53,6 +89,7 @@ LFLAGSOPT= -O3 -mno-cygwin
 CFLAGSOPT= -O3 -mno-cygwin
 UNIX2DOS= unix2dos
 CP= copy
+BINVERSION=CYGWIN
 #SETUPCOMP= Compil32 
 ##SETUPCOMP=start /wait "C:\Program\ Files\\Compil32.exe"
 # cygwin SETUPCOMP=  "C:\Program Files\Inno Setup 4\Compil32.exe"
@@ -65,34 +102,135 @@ LFLAGS= -g
 CFLAGS= -g
 LFLAGSOPT= -O3 -lm
 CFLAGSOPT= -O3
+CROSSCOMPILATION= -DCROSS=1
 CP= cp
 UNIX2DOS= unix2dos
 SETUPCOMP= wine "C:////Program Files////Inno Setup 4////Compil32.exe"
+BINVERSION=WINDOWSonLINUX
 endif
 
 ifdef _windowsonosx
-GCC=/usr/local/i386-mingw32-4.3.0/bin/i386-mingw32-gcc
-# w64 outputs bigger executables
+#GCC=/usr/local/i386-mingw32-4.3.0/bin/i386-mingw32-gcc
+#GCC=/usr/local/cross-tools/bin/i686-w64-mingw32-gcc
+GCC=/usr/local/gcc-4.8.0-qt-4.8.4-for-mingw32/win32-gcc/bin/i586-mingw32-gcc-4.8.0
+STRIP=/usr/local/gcc-4.8.0-qt-4.8.4-for-mingw32/win32-gcc/bin/i586-mingw32-strip
+LFLAGS= -g
+CFLAGS= -g
+LFLAGSOPT= -O3 -s
+CFLAGSOPT= -O3
+CROSSCOMPILATION= -DCROSS=1
+UNIX2DOS= unix2dos
+SETUPCOMP= ~/bin/InnoSetup5Playonmac
+CP= cp
+BINVERSION=WIN32onOSX
+endif
+
+ifdef _mw64onosx
+GCC=/usr/local/mingw-w64-bin_i686-darwin_20130622/bin/x86_64-w64-mingw32-gcc-4.9.0
+STRIP=/usr/local/mingw-w64-bin_i686-darwin_20130622/bin/x86_64-w64-mingw32-strip
+LFLAGS= -g
+CFLAGS= -g
+LFLAGSOPT= -O3 -lm -s
+CFLAGSOPT= -O3
+CROSSCOMPILATION= -DCROSS=1
+UNIX2DOS= unix2dos
+SETUPCOMP= ~/bin/InnoSetup5Playonmac
+CP= cp
+BINVERSION=w64-mingw32-x86-64-bin
+endif
+
+ifdef _windowscl
+rem "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvas32.bat"
+endif
+
+# make _intel64onosx=1 imachopt
+#source /opt/intel/bin/iccvars.sh intel64
+ifdef _intel64onosx
+GCC=/opt/intel/bin/icc
+CFLAGS= -m64 -g -std=c99
+LFLAGS= -g -m64
+#CFLAGSOPT= -O3 -m64 -g -std=c99 -no-prec-div idem
+#CFLAGSOPT= -O3 -m64 -g -std=c99 -xSSSE3_ATOM 402
+CFLAGSOPT= -O3 -m64 -g -std=c99
+CROSSCOMPILATION= -DCROSS=0
+IGNORE :=$(shell bash -c "source /opt/intel/bin/iccvars.sh intel64; env | sed 's/=/:=/' | sed 's/^/export /' > makeenv")
+include makeenv
+#lipo -create -arch i386 HelloWorld_32 -arch x86_64 HelloWorld_64 -output HelloWorld
+LFLAGSOPT= -O3 -m64
+UNIX2DOS= unix2dos
+SETUPCOMP= ~/bin/InnoSetup5Playonmac
+CP= cp
+BINVERSION=osx-intel-x86-64-bin
+#imach_64$(VERSION)
+#
+endif
+
+ifdef _intel32onosx
+GCC=/opt/intel/bin/icc
+CFLAGS= -m32 -g -std=c99
+LFLAGS= -g -m32
+CFLAGSOPT= -O3 -m32 -g -std=c99
+CROSSCOMPILATION= -DCROSS=0
+IGNORE :=$(shell bash -c "source /opt/intel/bin/iccvars.sh ia32; env | sed 's/=/:=/' | sed 's/^/export /' > makeenv")
+include makeenv
+#lipo -create -arch i386 HelloWorld_32 -arch x86_64 HelloWorld_64 -output HelloWorld
+#lipo -create -arch i386 imach_32$(VERSION) -arch x86_64 imach_64$(VERSION) -output imach$(VERSION)
+LFLAGSOPT= -O3 -m32
+UNIX2DOS= unix2dos
+SETUPCOMP= ~/bin/InnoSetup5Playonmac
+CP= cp
+BINVERSION=osx-intel-ia32-bin
+endif
+
+ifdef _linux64onosx
+GCC=/usr/localold/gcc-4.8.1-for-linux64/bin/x86_64-pc-linux-gcc
+STRIP=/usr/localold/gcc-4.8.1-for-linux64/bin/x86_64-pc-linux-strip
+LFLAGS= -g
+CFLAGS= -g
+CROSSCOMPILATION= -DCROSS=1
+LFLAGSOPT= -O3 -lm -s
+CFLAGSOPT= -O3
+TAR= /sw/bin/gnutar
+UNIX2DOS= unix2dos
+SETUPCOMP= ~/bin/InnoSetup5Playonmac
+CP= cp
+BINVERSION=linux-x86-64-bin
+endif
+
+ifdef _linux32onosx
+#GCC=/usr/local/i386-mingw32-4.3.0/bin/i386-mingw32-gcc
 #GCC=/usr/local/cross-tools/bin/i686-w64-mingw32-gcc
+GCC=/usr/localold/gcc-4.8.1-for-linux32/bin/i586-pc-linux-gcc
+STRIP=/usr/localold/gcc-4.8.1-for-linux32/bin/i586-pc-linux-strip
 LFLAGS= -g
 CFLAGS= -g
-LFLAGSOPT= -O3
+LFLAGSOPT= -O3 -s -lm
 CFLAGSOPT= -O3
+CROSSCOMPILATION= -DCROSS=1
+TAR= /sw/bin/gnutar
 UNIX2DOS= unix2dos
 SETUPCOMP= ~/bin/InnoSetup5Playonmac
 CP= cp
+BINVERSION=linux-i586-bin
 endif
 
 ifdef _linux
 #CFLAGS= -g -DUNIX -DDEBUGHESS
-CFLAGS= -g -DUNIX
-LFLAGS= -g -lm 
+#CFLAGS= -g -DDEBUG -DFIXMNBRAK
+#CFLAGS= -g -DDEBUG 
+CFLAGS= -g
+LFLAGS= -g -lm
 IGSL= -I/usr/include/gsl
 LGSL= -lgsl -lgslcblas
-CFLAGSOPT= -O3 -DUNIX
-LFLAGSOPT= -O3 -lm
+INLOPT= -I/usr/local/include
+LNLOPT= -lm -L/usr/local/lib -lnlopt
+CFLAGSOPT= -O3 -g
+LFLAGSOPT= -O3 -g -lm
+CROSSCOMPILATION= -DCROSS=0
 UNIX2DOS= unix2dos
 SETUPCOMP= wine "C:////Program Files////Inno Setup 4////Compil32.exe"
+BINVERSION=LINUXnative
+CP= cp
 endif
 
 SED= sed
@@ -100,13 +238,13 @@ PACKAGE=imach
 PROGRAM=IMaCh
 
 
-
 TMPSETUPSCRIPT=setup.iss
 TMPNOREGSETUPSCRIPT=noreg-setup.iss
 TMPSCRIPTIN=setup.iss.in
 APPLICATION=IMaCh
 APPNAME=$(APPLICATION)-$(VERSION)
-GNUPLOTVERSION=4.0
+APPCOMPILATIONMODE=$(IMACHSETUPVERSION)
+GNUPLOTVERSION=4.6
 LICENSE=Copying
 TMPSETUPEXE=imach-$(VERSION)-$(IMACHSETUPVERSION)-setup.exe
 TMPNOREGSETUPEXE=imach-$(VERSION)-$(IMACHSETUPVERSION)-noreg-setup.exe
@@ -118,6 +256,7 @@ setup.iss: setup.iss.in
 		s/@NOTINNOREG@//g; \
 		s/@NOREG@//g; \
 		s/@IMACHSETUPVERSION@/$(IMACHSETUPVERSION)/g; \
+		s/@APPCOMPILATIONMODE@/$(APPCOMPILATIONMODE)/g; \
 		s/@VERSION@/$(VERSION)/g; \
 		s/@GNUPLOTVERSION@/$(GNUPLOTVERSION)/g; \
 		s/@INFOBEFOREFILE@/$(INFOBEFOREFILE)/g; \
@@ -147,35 +286,131 @@ $(TMPNOREGSETUPSCRIPT): $(TMPSCRIPTIN)
 $(TMPSETUPEXE): $(TMPSETUPSCRIPT)
 	$(SETUPCOMP) /cc $(TMPSETUPSCRIPT)
 
-$(TMPNOREGSETUPEXE): $(TMPNOREGSETUPSCRIPT)
-	$(SETUPCOMP) /cc $(TMPNOREGSETUPSCRIPT)
+#$(TMPNOREGSETUPEXE): $(TMPNOREGSETUPSCRIPT)
+#	$(SETUPCOMP) /cc $(TMPNOREGSETUPSCRIPT)
 
 PARAM=mypar1
 
 imachcyg-setup: imachcygopt.exe setup.iss
+	touch setup.iss.in
 	$(CP) imachcygopt.exe imach.exe
+	$(CP) imachcygopt.exe imach$(VERSION)-$(BINVERSION).exe
 	$(SETUPCOMP) /cc setup.iss
 	cp Output/$(TMPSETUPEXE) imachcyg-setup
 
 # imachcyg-noreg-setup : imachcygopt imachcygopt.o setup.iss.in noreg-setup.iss $(TMPNOREGSETUPEXE)
 imachcyg-noreg-setup: imachcygopt.exe noreg-setup.iss
+	touch setup.iss.in
 	$(CP) imachcygopt.exe imach.exe
+	$(CP) imachcygopt.exe imach$(VERSION)-$(BINVERSION).exe
 	$(SETUPCOMP) /cc $(TMPNOREGSETUPSCRIPT)
 	cp Output/$(TMPNOREGSETUPEXE) imachcyg-noreg-setup
+# ICL compiler 64
+imachICL-build: imach.c
+	icl /GS /W3 /Zc:wchar_t /O2  /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "UNICODE" /Qipo /Zc:forScope  /MT imach.c 
+#/GS /W3 /Gy /Zc:wchar_t /Zi /O2 /Fd"x64\Release\vc120.pdb" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_LIB" /D "_UNICODE" /D "UNICODE" /Qipo /Zc:forScope /Oi /MT /Fa"x64\Release\" /EHsc /nologo /Fo"x64\Release\" /Qprof-dir "x64\Release\" /Fp"x64\Release\IMaCh-icl-x64-0.98q2.pch"
+#  /Users/nbrouard/Documents/imach/imach-gui/build/icl64/Release/imach.exe
+# both 32 and 64 executables should have been built on Windows with Intel compiler.
+imachICL-setup: ../build/icl64/Release/IMaCh-$(VERSION).exe ../build/icl32/Release/IMaCh-$(VERSION).exe setup.iss ../distributions/windows/mybuildicl64.bat ../distributions/windows/mybuildicl32.bat 
+	pwd
+	touch setup.iss.in
+	$(SETUPCOMP) /cc setup.iss
+	$(CP) Output/$(TMPSETUPEXE) imachICL-setup
+
+# imachICL64-setup: IMaCh-icl64-$(VERSION).exe setup.iss
+# 	pwd
+# 	$(CP) IMaCh-icl64-$(VERSION).exe imach.exe
+# 	$(SETUPCOMP) /cc setup.iss
+# 	$(CP) Output/$(TMPSETUPEXE) imachICL64-setup
+
+imachICL64-noreg-setup: IMaCh-icl64-$(VERSION).exe noreg-setup.iss
+	touch setup.iss.in
+	$(SETUPCOMP) /cc $(TMPNOREGSETUPSCRIPT)
+	$(CP) Output/$(TMPSETUPEXE) imachICL64-noreg-setup
+
+../build/icl64/Release/IMaCh-$(VERSION).exe: imach.c ../distributions/windows/mybuildicl64.bat
+	rm -rf ../build/icl64  && mkdir ../build/icl64
+	cp ../distributions/windows/mybuildicl64.bat ../build/icl64/
+	cd ../build/icl64
+	VBoxManage --nologo guestcontrol "Windows7-64" execute --image "C:\Windows\SysWOW64\cmd.exe" \
+	--username brouard  --verbose --wait-exit --wait-stdout  --wait-stderr -- "/c" "$(DRIVEG)$(DIRG)\icl64\mybuildicl64.bat" "$(VERSION)" "$(DRIVEG)" "$(DIRG)"
+
+../build/icl32/Release/IMaCh-$(VERSION).exe: imach.c ../distributions/windows/mybuildicl32.bat
+	rm -rf ../build/icl32 && mkdir -p ../build/icl32
+	cp ../distributions/windows/mybuildicl32.bat ../build/icl32/
+	cd ../build/icl32
+	VBoxManage --nologo guestcontrol "Windows7-64" execute --image "C:\Windows\SysWOW64\cmd.exe" \
+	--username brouard  --verbose --wait-exit --wait-stdout -- "/c" "$(DRIVEG)$(DIRG)\icl32\mybuildicl32.bat" "$(VERSION)" "$(DRIVEG)" "$(DIRG)"
+
+../build/vs32/Release/IMaCh-$(VERSION).exe: imach.c mybuildvs32.bat
+	rm -rf ../build/vs32 && mkdir -p ../build/vs32
+	cp mybuildvs32.bat ../build/vs32/
+	cd ../build/vs32
+	VBoxManage --nologo guestcontrol "Windows7-64" execute --image "C:\Windows\SysWOW64\cmd.exe" \
+	--username brouard  --verbose --wait-exit --wait-stdout -- "/c" "g:\imach\imach-gui\build\vs32\mybuildvs32.bat" "$(VERSION)"
+# C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K "g:\imach\imach-gui\build\icl32\mybuild.bat"
+#WORK	--username brouard  --verbose --wait-exit --wait-stdout -- "/c" "c:\users\brouard\mybuild.bat"
+#	--username brouard  --verbose --wait-exit --wait-stdout -- "/c" "g: && cd \imach\imach-gui\build\icl32 && mybuild.bat"
+#	--username brouard  --verbose --wait-exit --wait-stdout -- "/c" "g: && cd \imach\imach-gui\build\icl32-xp  &&" "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\VsDevCmd.bat" "&&" "C:\Program Files (x86)\Intel\Composer XE 2015\bin\ipsxe-comp-vars.bat" "ia32" "vs2013" "&&" "msbuild imach-0.98q3.vcxproj /t:Build /p:Configuration=Release"
+#	--username brouard --wait-exit --wait-stdout -- "/c" "g: && cd \imach\imach-gui\build\icl32-xp\ &&C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\Program Files (x86)\Intel\Composer XE 2015\bin\ipsxe-comp-vars.bat" ia32 vs2013"&& msbuild imach.vcxproj >c:\users\brouard\totog.txt"
+#		--username brouard --wait-exit --wait-stdout -- "/c" "g: && dir >c:\users\brouard\totog.txt"
+#C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\Program Files (x86)\Intel\Composer XE 2015\bin\ipsxe-comp-vars.bat" ia32 vs2013"
+#C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\Program Files (x86)\Intel\Composer XE 2015\bin\ipsxe-comp-vars.bat" intel64 vs2013"
+
+imachICL64-setup: ../build/icl64/Release/IMaCh-$(VERSION).exe setup.iss mybuildicl64.bat
+
+imachICL32-setup: ../build/icl32/Release/IMaCh-$(VERSION).exe setup.iss mybuildicl32.bat
+
+imachVS32-setup: ../build/vs32/Release/IMaCh-$(VERSION).exe setup.iss mybuildvs32.bat
+
+imachICL32-noreg-setup: IMaCh-icl32.exe noreg-setup.iss
+	touch setup.iss.in
+	$(CP) IMaCh-icl32.exe imach.exe
+	$(SETUPCOMP) /cc $(TMPNOREGSETUPSCRIPT)
+	$(CP) Output/$(TMPSETUPEXE) imachICL32-noreg-setup
+
+imachMVC-setup: imachMVC.exe setup.iss
+	touch setup.iss.in
+	$(CP) imachMVC.exe imach.exe
+	$(SETUPCOMP) /cc setup.iss
+	$(CP) Output/$(TMPSETUPEXE) imachMVC-setup
+
+# imachcyg-noreg-setup : imachcygopt imachcygopt.o setup.iss.in noreg-setup.iss $(TMPNOREGSETUPEXE)
+imachMVC-noreg-setup: imachMVC.exe noreg-setup.iss
+	touch setup.iss.in
+	$(CP) imachMVC.exe imach.exe
+	$(SETUPCOMP) /cc $(TMPNOREGSETUPSCRIPT)
+	$(CP) Output/$(TMPNOREGSETUPEXE) imachcyg-noreg-setup
 
 simach : simach.o 
 	$(CC) $(LFLAGS) $(LGSL) -o simach simach.o
 simach.o : simach.c 
 	$(CC) $(CFLAGS) -DGSL -c simach.c
 
-imach : imach.o 
+imachtest: imachtest.o 
+	$(CC) $(LFLAGS) -o imachtest imachtest.o
+ifdef _macosx
+	$(DSYMUTIL) imachtest
+endif
+
+imach: imach.o 
 	$(CC) $(LFLAGS) -o imach imach.o
+ifdef _macosx
+	$(DSYMUTIL) imach
+endif
+
 imach.o : imach.c 
-	$(CC) $(CFLAGS) -DPOWELL -c imach.c
-imach-1.129cvsmac : imach-1.129cvsmac.o 
-	$(CC) $(LFLAGS) -o imach-1.129cvsmac imach-1.129cvsmac.o
-imach-1.129cvsmac.o : imach-1.129cvsmac.c 
-	$(CC) $(CFLAGS) -DPOWELL -c imach-1.129cvsmac.c
+	 $(CC) $(CFLAGS) $(CROSSCOMPILATION)  -c imach.c
+#	 $(CC) $(CFLAGS) $(CROSSCOMPILATION) -DDEBUGBRENT -c imach.c
+
+imachtest.o : imach.c 
+	 $(CC) $(CFLAGS) $(CROSSCOMPILATION) -DPOWELLORIGINAL -DNRCORIGINAL -DINFINITYORIGINAL -DDEBUGBRENT -o imachtest.o -c imach.c
+
+#	 $(CC) $(CFLAGS) $(CROSSCOMPILATION)  -DFIXMNBRAK -o imachtest.o -c imach.c
+
+# http://msdn.microsoft.com/en-us/library/abx4dbyh%28v=vs.100%29.aspx
+imachcl: imach.c
+	cl /O2 /MT /o imach.exe imach.c
 
 imach097b : imach097b.o 
 	$(CC) $(LFLAGS) -o imach097b imach097b.o
@@ -189,32 +424,102 @@ imachsimplified.o : imachsimplified.c
 	$(CC) $(CFLAGSOPT) -DPOWELL -c imachsimplified.c
 
 imachgsl : imachgsl.o 
-	$(CC) $(LFLAGS) $(LGSL) -o imachgsl imach.o
+	$(CC) -o imachgsl imach.o  $(LFLAGS) $(LGSL) 
 imachgsl.o : imach.c 
 	$(CC) $(CFLAGS) -DGSL $(IGSL) -c imach.c
 
+imachNEWUOAopt : imachNEWUOAopt.o 
+	$(CC) -o imachNEWUOAopt  imachNEWUOAopt.o  $(LFLAGS) -g $(LNLOPT) 
+imachNEWUOAopt.o : imach.c 
+	$(CC) $(CFLAGS) -g -DNLOPT $(INLOPT) -DNEWUOA -o  imachNEWUOAopt.o -c imach.c
+
+imachBOBYQAopt : imachBOBYQAopt.o 
+	$(CC) -o imachBOBYQAopt imachBOBYQAopt.o  $(LFLAGS) $(LNLOPT) 
+imachBOBYQAopt.o : imach.c 
+	$(CC) $(CFLAGS) -DNLOPT $(INLOPT) -DBOBYQA -o imachBOBYQAopt.o -c imach.c
+
+
 imachopt : imachopt.o 
 	$(CC) $(LFLAGSOPT) -o imachopt imachopt.o
 	ln -f imachopt imach
-imachopt.o : imach.c 
-	$(CC) $(CFLAGSOPT) -DPOWELL -o imachopt.o -c imach.c
-
-imachdmg : imachopt.o create-dmg
-	$(CC) $(LFLAGSOPT) -o imach imachopt.o
-	cp imach imach098Leopard/bin
-	./create-dmg --volname "IMaCh $(VERSION)" imach$(VERSION).dmg imach098Leopard
+	$(CP) imachopt Output/imachopt$(VERSION)-$(BINVERSION)
+	$(CP) -f imach ../bin
+ifdef _intel64onosx
+	$(CP) imachopt Output/imachopt$(VERSION)-$(BINVERSION)
+endif
+ifdef _macosx
+	$(STRIP) imach
+endif
+ifdef _linux32onosx
+	(cd .. && $(TAR) jcvf src/Output/imach-Linux-$(VERSION)-$(BINVERSION).tar.bz2 bin html/doc/biaspar.imach html/doc/data1.txt)
+endif
+ifdef _linux64onosx
+	(cd .. && $(TAR) jcvf src/Output/imach-Linux-$(VERSION)-$(BINVERSION).tar.bz2 bin html/doc/biaspar.imach html/doc/data1.txt)
+endif
 
+imachopt.o : imach.c
+	$(CC) $(CFLAGSOPT) $(CROSSCOMPILATION) -o imachopt.o -c imach.c
+#	$(CC) $(CFLAGSOPT) -DPOWELL -o imachopt.o -c imach.c
+
+imachUB : imach32 imach64
+	lipo -create -arch i386 imach_32 -arch x86_64 imach_64 -output imach$(VERSION)
+
+
+#imachdmg : imachopt.o create-dmg applet IMaChInfo.plist.in IMaChPkgInfo.in IMaCh.icns main.scpt.in IMaCh-ecrandemarrage.rsrc TXT.rtf
+#	$(CC) $(LFLAGSOPT) -o imach imachopt.o
+	#hdiutil detach /Volumes/IMaCh\ $(VERSION)
+imachdmg : imachopt.o ../distributions/osx/create-dmg ../distributions/osx/createdmg3.sh ../distributions/osx/applet ../distributions/osx/IMaChInfo.plist.in ../distributions/osx/IMaChPkgInfo.in ../distributions/osx/IMaCh.icns ../distributions/osx/main.scpt.in ../distributions/osx/IMaCh-ecrandemarrage.rsrc ../distributions/osx/TXT.rtf
+	pwd
+	(cd ../build && rm -r osx && mkdir osx && cd osx ;\
+	pwd ;\
+	cmake ../..;\
+	cmake --build . ; \
+	rm -rf imach$(VERSION).app;\
+	mkdir -p imach$(VERSION).app;\
+	mkdir -p imach$(VERSION).app/Contents;\
+	mkdir -p imach$(VERSION).app/Contents/MacOS;\
+	cp ../../distributions/osx/applet imach$(VERSION).app/Contents/MacOS;\
+	mkdir -p imach$(VERSION).app/Contents/Resources;\
+	mkdir -p imach$(VERSION).app/Contents/Resources/Scripts;\
+	mkdir -p imach$(VERSION).app/Contents/Resources/bin;\
+	mkdir -p imach$(VERSION).app/Contents/Resources/html;\
+	cp IMaCh-$(VERSION) imach$(VERSION).app/Contents/Resources/bin/imach;\
+	cp ../../distributions/osx/gnuplot_bin/gnuplot_2_6_5_OSX imach$(VERSION).app/Contents/Resources/bin/gnuplot;\
+	mkdir -p imach$(VERSION).app/Contents/Resources/description.rtfd;\
+	cp -p ../../distributions/osx/TXT.rtf imach$(VERSION).app/Contents/Resources/description.rtfd ;\
+	$(SED) -e "s/@VERSION@/$(VERSION)/g;" ../../distributions/osx/IMaChInfo.plist.in  >imach$(VERSION).app/Contents/Info.plist ;\
+	cp -p ../../distributions/osx/IMaChPkgInfo.in  imach$(VERSION).app/Contents/PkgInfo ;\
+	cp -p ../../distributions/osx/IMaCh.icns  imach$(VERSION).app/Contents/Resources/applet.icns ;\
+	cp -r -p ../../distributions/osx/main.scpt.in imach$(VERSION).app/Contents/Resources/Scripts/main.scpt ;\
+	cp ../../distributions/osx/IMaCH-ecrandemarrage.rsrc imach$(VERSION).app/Contents/Resources/applet.rsrc ;\
+	cp ../../html/doc/data1.txt  imach$(VERSION).app/Contents/Resources/html ;\
+	cp ../../html/doc/biaspar.log  imach$(VERSION).app/Contents/Resources/html ;\
+	cp ../../html/doc/biaspar.imach  imach$(VERSION).app/Contents/Resources/html ;\
+	rm -f imach$(VERSION).dmg ;\
+	pwd ;\
+	cp ../../distributions/osx/createdmg3.sh . ;\
+	cp ../../distributions/osx/Background.png .;\
+	pwd ;\
+	./createdmg3.sh  --volname "IMaCh $(VERSION)" imach$(VERSION).dmg imach$(VERSION) ;\
+	mv  imach$(VERSION).dmg ../../src/Output/ ;)
+#	./create-dmg --volname "IMaCh $(VERSION)" imach$(VERSION).dmg imach$(VERSION).app 
+#	./createdmg2.sh --volname "IMaCh $(VERSION)" imach$(VERSION).dmg imach$(VERSION)
+
+md5:
+	ls Output/* | xargs md5sum
+upload:
+	rsync -v Output/IMaCh-0.98q5-icl-setup.exe brouard@henry.ined.fr:/home/euroreves/html/imach/Download
+	rsync -v Output/imach0.98q5.dmg brouard@henry.ined.fr:/home/euroreves/html/imach/Download
+#	rsync -v Output/* brouard@henry.ined.fr:/home/euroreves/html/imach/Download
 
-imachcyg : imachcyg.o  strsep.o
-	$(CC) $(LFLAGS) -o imach imachcyg.o strsep.o
+imachcyg : imachcyg.o
+	$(CC) $(LFLAGS) -o imach imachcyg.o
 imachcyg.o : imach.c 
 	$(CC) $(CFLAGS)  -c -o imachcyg.o imach.c
-imachcygopt.exe : imachcygopt.o  strsep.o
-	$(CC) $(LFLAGSOPT) -o imachcygopt.exe imachcygopt.o strsep.o
+imachcygopt.exe : imachcygopt.o
+	$(CC) $(LFLAGSOPT) -o imachcygopt.exe imachcygopt.o
 imachcygopt.o : imach.c 
 	$(CC) $(CFLAGSOPT) -c -o imachcygopt.o imach.c
-strsep.o : strsep.c 
-	$(CC) $(CFLAGSOPT) -c -o strsep.o strsep.c
 
 imachw32.o : imach.c
 	i386-mingw32-gcc -c imach.c -o imachw32.o
@@ -222,6 +527,10 @@ imach.exe : imachw32.o
 	i386-mingw32-gcc  -mwindows -o imach.exe -lm imachw32.o
 	i386-mingw32-strip imach.exe
 
+valgrind-test :  imach $(TESTFILE) 
+	valgrind  --dsymutil=yes --leak-check=full --show-leak-kinds=all --track-origins=yes ./imach $(TESTFILE)
+test:  imach $(TESTFILE) 
+	gdb ./imach $(TESTFILE)
 
 $(PARAM).htm: imach $(PARAM).imach data1.txt
 	./imach $(PARAM).imach