Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 0 additions & 26 deletions messenger/get_messenger_dir.py

This file was deleted.

161 changes: 96 additions & 65 deletions messenger/make.py
Original file line number Diff line number Diff line change
@@ -1,71 +1,102 @@
#!/usr/bin/python
from __future__ import print_function
import os
from get_messenger_dir import get_messenger_dir
import subprocess
import platform
import sys
import shlex
import shutil
import subprocess


def get_messenger_dir():
# Check the system platform first
splatform = sys.platform

if splatform.startswith('linux'):
messenger_dir = 'mexa64'
elif splatform.startswith('darwin'):
messenger_dir = 'mexmaci64'
elif splatform.startswith('win32'):
if splatform == "win32":
# We have a win64 messenger, so we need to figure out if this is 32
# or 64 bit Windows:
if not platform.machine().endswith('64'):
raise ValueError("pymatbridge does not work on win32")

# We further need to differniate 32 from 64 bit:
maxint = sys.maxsize
if maxint == 9223372036854775807:
messenger_dir = 'mexw64'
elif maxint == 2147483647:
messenger_dir = 'mexw32'
return messenger_dir


def get_config():
messenger_dir = get_messenger_dir()
with open(os.path.join(messenger_dir, 'local.cfg')) as fid:
lines = fid.readlines()

cfg = {}
for line in lines:
if '=' not in line:
continue
name, path = line.split('=')
cfg[name.lower()] = path.strip() or '.'
return cfg


def do_build(make_cmd, messenger_exe):
print('Building %s...' % messenger_exe)
print(make_cmd)
messenger_dir = get_messenger_dir()
subprocess.check_output(shlex.split(make_cmd))

messenger_loc = os.path.join(messenger_dir, messenger_exe)

shutil.move(messenger_exe, messenger_loc)

if os.path.exists('messenger.o'):
os.remove('messenger.o')


def build_octave():
paths = "-L%(octave_lib)s -I%(octave_inc)s -L%(zmq_lib)s -I%(zmq_inc)s"
paths = paths % get_config()
make_cmd = "mkoctfile --mex %s -lzmq ./src/messenger.c" % paths
do_build(make_cmd, 'messenger.mex')


def build_matlab():
cfg = get_config()
matlab_bin = cfg['matlab_bin']
# Get the extension
if sys.platform == 'win32':
extcmd = '"%s\\mexext.bat"' % matlab_bin
else:
extcmd = matlab_bin + "/mexext"

check_extension = subprocess.Popen(extcmd, stdout=subprocess.PIPE)
extension = check_extension.stdout.read()
extension = extension.decode('utf-8').rstrip('\r\n')

# Build the mex file
if sys.platform == 'win32':
mex = matlab_bin + "\\mex.bat"
else:
mex = matlab_bin + "/mex"
paths = "-L%(zmq_lib)s -I%(zmq_inc)s" % cfg
make_cmd = '%s -O %s -lzmq ./src/messenger.c' % (mex, paths)
do_build(make_cmd, 'messenger.%s' % extension)

messenger_dir, splatform = get_messenger_dir()

# Open the configure file and start parsing
with open(os.path.join(messenger_dir, 'local.cfg'), 'r') as config:
for line in config:
try:
line = line.decode('utf-8')

# python3
except:
pass

path = line.split('=')

if path[0] == "MATLAB_BIN":
print("Searching for Matlab bin folder in local.cfg ...")
matlab_bin = path[1].rstrip('\r\n')
if matlab_bin == "":
raise ValueError("Could not find Matlab bin folder. Please add it to local.cfg")
print("Matlab found in " + matlab_bin)

elif path[0] == "HEADER_PATH":
print("Searching for zmq.h in local.cfg ...")
header_path = path[1].rstrip('\r\n')
if header_path == "":
raise ValueError("Could not find zmq.h. Please add its path to local.cfg")
print("zmq.h found in " + header_path)

elif path[0] == "LIB_PATH":
print("Searching for zmq library in local.cfg ...")
lib_path = path[1].rstrip('\r\n')
if lib_path == "":
raise ValueError("Could not find zmq library. Please add its path to local.cfg")

print("zmq library found in " + lib_path)



# Get the extension
if splatform == 'win32':
extcmd = '"' + matlab_bin + "\\mexext.bat" + '"'
else:
extcmd = matlab_bin + "/mexext"

check_extension = subprocess.Popen(extcmd, stdout = subprocess.PIPE)
extension = check_extension.stdout.read()
extension = extension.decode('utf-8').rstrip('\r\n')

print("Building messenger." + extension + " ...")

# Build the mex file
if splatform == 'win32':
mex = "\\mex.bat"
else:
mex = "/mex"
make_cmd = '"' + matlab_bin + mex + '"' + " -O -I" + header_path + " -L" + lib_path + " -lzmq ./src/messenger.c"
print(make_cmd)
os.system(make_cmd)

messenger_exe = 'messenger.%s'%extension
messenger_loc = os.path.join(messenger_dir, messenger_exe)

shutil.move(messenger_exe, messenger_loc)

if __name__ == '__main__':
usage = 'Please specify a valid make target (Matlab or Octave)'
if len(sys.argv) < 2:
print(usage)
elif sys.argv[1].lower() == 'matlab':
build_matlab()
elif sys.argv[1].lower() == 'octave':
build_octave()
else:
print(usage)
29 changes: 0 additions & 29 deletions messenger/make_octave.py

This file was deleted.

9 changes: 6 additions & 3 deletions messenger/mexa64/local.cfg
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
MATLAB_BIN=/white/local/matlab/r2012b/bin
HEADER_PATH=/home/haoxingz/zmq/include
LIB_PATH=/home/haoxingz/zmq/lib
MATLAB_BIN=/home/silvester/matlab2014b/bin/
OCTAVE_INC=/usr/include
OCTAVE_LIB=/usr/lib/x86_64-linux-gnu/
ZMQ_INC=
ZMQ_LIB=

4 changes: 0 additions & 4 deletions messenger/mexa64/local_octave.cfg

This file was deleted.

Binary file modified messenger/mexa64/messenger.mexa64
Binary file not shown.
6 changes: 4 additions & 2 deletions messenger/mexmaci64/local.cfg
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
MATLAB_BIN=/Applications/MATLAB_R2012b.app/bin
HEADER_PATH=/usr/include
LIB_PATH=/usr/local/lib
ZMQ_INC=/usr/include
ZMQ_LIB=/usr/lib/x86_64-linux-gnu/
OCTAVE_INC=
OCTAVE_LIB=
4 changes: 0 additions & 4 deletions messenger/mexmaci64/local_octave.cfg

This file was deleted.

6 changes: 4 additions & 2 deletions messenger/mexw64/local.cfg
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
MATLAB_BIN=/Applications/MATLAB_R2012a.app/bin
HEADER_PATH=/usr/include
LIB_PATH=/usr/local/lib
OCTAVE_INC="C:\Octave\Octave-3.8.2\include\octave-3.8.2\octave"
OCTAVE_LIB="C:\Octave\Octave-3.8.2\lib\octave\3.8.2"
ZMQ_INC="C:\zeromq-4.0.5\include"
ZMQ_LIB="C:\zeromq-4.0.5\src\.libs"
4 changes: 0 additions & 4 deletions messenger/mexw64/local_octave.cfg

This file was deleted.

4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@


# Find the messenger binary file(s) and copy it to /matlab folder.
from messenger.get_messenger_dir import get_messenger_dir
messenger_dir, splatform = get_messenger_dir()
from messenger.make import get_messenger_dir
messenger_dir = get_messenger_dir()

for f in glob.glob("./messenger/%s/messenger.*" % messenger_dir):
shutil.copy(f, "./pymatbridge/matlab")
Expand Down