Hi, Jean,
Here you go (for generating the Octave wrapper):
-DCOOLPROP_OCTAVE_MODULE=ON -DOCTAVE_OCTINTERP_LIBRARY:LIST="octinterp;octave" -DOCTAVE_OCTAVE_LIBRARY:LIST=octave -DCMAKE_CXX_STANDARD=11
(not sure if the last define is up-to-date). You would also need the latest SWIG (>= 4.1~) for Octave (>= 8~). Beware you need -DCOOLPROP_STATIC_LIBRARY=ON for the static library to link against − because compiling against the shared one results in the OCT file symbol(s) missing, or at least I have not figured how to deal with it (perhaps, not, if static linking would work). I had to "bring back to life" the 'wrappers/Octave' folder with `_OctaveBuilder_Linux.m` and `Example.m` − that was done by reverting the corresponding commit(s) found in the git history − again, not sure if that was indeed necessary but for me just to see it in the source tree back again (I had to modify it lightly to account for the path(s) out of the $DEB_HOST_MULTIARCH directory I'm building in and also blindly had replaced the Octave's `unlink` with equal (?) `delete` due to strange "unlink not found", but not yet thoroughly tested):
```octave
cd ../../CoolProp
include_string = '-I../../include/ -I../../src'
system('rm -f *_wrap.cpp')
system('swig -octave -c++ -o CoolProp_wrap.cpp -I../../include/ -I../../src ../../src/CoolProp.i')
main_files = glob('*.cpp');
files=[main_files];
o_files = ''
cpp_files = ''
for i=1:size(files)(1)
file = files{i,1};
o_file = strrep(file,'.cpp','.o');
o_files = [o_files, ' ', o_file];
cpp_files = [cpp_files, ' ',file];
eval(['mkoctfile -v -c ', include_string,' -o ',o_file,' ',file])
end
eval(['mkoctfile -v -lgomp ', include_string,' -o CoolProp.oct ',o_files])
% Clean up - remove the object files
for i=1:size(files)(1)
file = files{i,1};
o_file = strrep(file,'.cpp','.o');
delete(o_file);
disp(['deleting the file ',o_file]);
end
delete('CoolProp_wrap.o')
delete('CoolProp_wrap.cpp')
system('mv CoolProp.oct ../wrappers/Octave')
```
Hi, Ian,
The following is my shortlist of compiled (or yet not) wrappers:
```text
- Enable building the wide range of wrappers by default: Android, Java, CSharp (SMath[Studio]), Octave (>= 8~), LibreOffice (<< 7.5~), R, etc (#TODO)
#DONE: Lua, [Microsoft] Excel, R, Rust, JavaScript [Re: Emscripten (>= 3~)]
#TODO: Engineering Equation Solver (EES), iOS (iPhone), FORTRAN, Fluent, Julia, Delphi [& Lazarus], LabVIEW, MATLAB, Maple (since 2016), MathCAD [Prime] (>= 15), Mathematica, Modelica, PHP (>= 7~), SciLab,
VB.NET #SWIG: Chicken, D, Go, Guile (>= 2.0~), Lisp S-Expressions, MzScheme/Racket, OCaml, Perl (>= 5~), Pike, Ruby, Tcl8, XML
```
in particular I would propose the following changes to the Android wrapper:
```diff
--- coolprop-6.5.0~git20230613.orig/wrappers/Android/Application.mk
+++ coolprop-6.5.0~git20230613/wrappers/Android/Application.mk
@@ -2,3 +2,9 @@ APP_STL := c++_static
APP_CPPFLAGS += -fexceptions
LOCAL_LDLIBS += -latomic
LIBCXX_FORCE_REBUILD := true
+
+BIONIC_PATH := /usr/lib/android-sdk/ndk-bundle/bionic
+
+APP_ABI := armeabi-v7a
+APP_PLATFORM := android-19
+APP_BUILD_SCRITP := Android.mk
```
and note the following dependencies under Debian / Ubuntu due to $LIBCXX_FORCE_REBUILD:
# google-android-ndk-installer <!nowrapper !noandroid> | android-framework-25c <!nowrapper !noandroid>,
# google-android-toolchain-llvm-project-installer <!nowrapper !noandroid>,
# google-android-bionic-installer <!nowrapper !noandroid>,
-DCOOLPROP_ANDROID_MODULE=ON -DNDK_PATH:FILEPATH="/usr/lib/android-sdk/ndk-bundle"
for Android 4.1 (KitKat) ARMv7 API 19 for NDK Release 25c − that is, the last support-providing.
two latter DEB packages were custom made to add/reflect upon the `bionic` and `toolchain/llvm-project/libcxx` [bind-mounted over `sources/cxx-stl/llvm-libc++`] folder(s) under the $NDK_ROOT/PATH which were missing from the first one (readily available or easily made).
Please, note (if relevant) there's no longer `liboctave-dev` Debian package in the wild but `octave-dev` swallowing the former (sorry if cannot follow-up further, life where I am is demanding).
Thank you for your wonderful `CoolProp.i` SWIG library which has made all this fantastic features auto-magically enabling!
Best,
V.L.