Как организовать сборку проекта на Java но с кусками нативного кода?
Добрый день!
Занимаюсь сейчас своим опен-сорс проектом Octclipse (плагин к Eclipse IDE для Octave), но сообщества пока нет, так что задам вопрос здесь.
Суть проблемы:
Есть проект, в основном написанный на Java, но для некоторых важных фич (консоль, дебаг, графики) требующий С++-кода. Проект я хочу поддерживать на разных платформах(Linux, Window, Mac) и архитектурах(32,64). Также хочется иметь поддержку разных версий Octave(на данный момент — 3.2.4, 3.4.3, 3.6.0). Итого для каждой комбинации получается туча библиотек, собирать которые очень неудобно.
Вопрос:
Есть ли у вас какие-нибудь идеи, как это организовать без излишних сложностей? Ниже я приведу варианты, о которых я думал — хотелось бы услышать и их оценку. Мне важен не столько технический аспект, сколько архитектурный.
Доп. информация:
0. Нативный код не простой, а оформляется в виде плагинов к октейву(по-моему, необходимо это только в случае с графиками). Значит, собирается он не GCC, а октейвовской командой mkoctfile.
1. Сейчас нативный код собирается с помощью AutoTools и только в Linux.
2. Java-код собирается с помощью Maven 3 и Tycho (это всё же плагин к эклипсу)
Варианты (и моё к ним отношение):
— даём пользователям код, просим собрать перед использованием (отпугнет половину пользователей)
— немного извращаемся, таскаем код вместе с плагином, при первом запуске плагина пытаемся вызвать mkoctfile и собрать нужные подпроекты (тяжело, но, вроде, реализуемо)
— отдельно собирать и предлагать доп. пакеты для каждой платформы, версии и дистрибутива(очень трудоёмко в поддержке и некрасиво)
— собирать нативные подпроекты и складывать их в эклипсовские фрагменты (соответственно, пользователи сразу будут получать готовую к употреблению среду, но придется сохранять скомпилированные пакеты в репозитории)
Был ли у кого-нибудь опыт по поддержке чего-то подобного? Посоветуйте, пожалуйста, как быть?