Antes de começarmos totalmente a programar o plugin, precisamos montar
os arquivos para a instalação do plugin. Para a instalação nós montaremos
2 arquivos essenciais:
Makefile.am e
configure.in.
Esquema dos arquivos de instalação:
No arquivo Makefile.am, nós escreveremos:
- o nome da biblioteca do plugin que será criada
- o diretório da biblioteca usada no plugin
- os arquivos com o código fonte
Exemplo de um Makefile.am:
lib_LTLIBRARIES = libvol.la
libdir = @XMMS_VISUALIZATION_PLUGIN_DIR@
AM_CFLAGS = -Wall @XMMS_CFLAGS@ @CFLAGS@ -I$(top_builddir) -I$(top_srcdir) \
@GTK_CFLAGS@ @SDL_CFLAGS@
LIBS = @XMMS_LIBS@ @SDL_LIBS@ @GL_LIBS@
libnobugs_la_LDFLAGS = -module -avoid-version
libnobugs_la_SOURCES = main.c
Na primeira linha do arquivo nós escrevemos o nome da biblioteca que será
criada:
lib_LTLIBRARIES = nomedabiblioteca
Na terceira linha, está o diretório onde a biblioteca a ser criada será
instalada:
libdir = onde_a_biblioteca_será_instalada
Na quinta linha é passada uma linha de comando para o compilador.
Na sétima linha está as bibliotecas que serão usadas para compilar o
programa:
LIBS = bibliotecas_que_serão_usadas
Na nona linha passamos ao compilador os arquivos que possuem todo o
código-fonte:
libnobugs_la_SOURCES = arquivo1.c arquivo2.c arquivo3.c
Próximo arquivo de instalação: configure.in
O arquivo configure.in conterá toda a informação que será passada quando
executarmos o comando "./configure". Exemplo de um arquivo
configure.in:
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.53)
AC_INIT(main.c)
AC_CANONICAL_TARGET([])
AM_INIT_AUTOMAKE(xmms-vivaolinux-teste-plugin, 0.1.0)
AM_CONFIG_HEADER(config.h)
AM_DISABLE_STATIC
AC_PROG_CC
AC_PROG_CPP
AM_PROG_CC_STDC
AC_HEADER_STDC
AC_PROG_INSTALL
AM_PROG_LIBTOOL
AC_PATH_X
AM_PATH_GLIB(1.2.2,,AC_MSG_ERROR([*** GLIB >= 1.2.2 nao esta instalada - por favor instale uma versao recente ***]))
AM_PATH_XMMS(1.2.4,,AC_MSG_ERROR([*** XMMS >= 1.2.4 nao esta instalada - por favor instale uma versao recente***]))
AM_PATH_GTK(1.2.2,,AC_MSG_ERROR([*** GTK+ >= 1.2.2 nao esta instalada - por favor instale uma versao recente***]),gthread)
AM_PATH_SDL(1.2.0,,AC_MSG_ERROR([*** SDL >= 1.2.0 nao esta instalada - por favor instale uma versao recente***]))
LIBS_save=$LIBS
LIBS="$LIBS $GTK_LIBS"
MATHLIB="-lm"
AC_PATH_X
AC_PATH_XTRA
if test x$have_x = xyes; then
CFLAGS="$CFLAGS $X_CFLAGS"
SYS_GL_LIBS="$X_LIBS -lGL -lGLU"
else
SYS_GL_LIBS="-lGL -lGLU"
fi
dnl Check for OpenGL
AC_MSG_CHECKING(for OpenGL support)
have_opengl=no
AC_TRY_COMPILE([
#include <GL/gl.h>
#include <GL/glu.h>
],[
],[
have_opengl=yes
])
AC_MSG_RESULT($have_opengl)
if test x$have_opengl = xyes; then
CFLAGS="$CFLAGS -DHAVE_OPENGL"
GL_LIBS="$SYS_GL_LIBS"
else
AC_MSG_ERROR(Nao foi possivel encontrar OpenGL instalada em sua máquina)
fi
AC_SUBST(GL_LIBS)
CPPFLAGS=$CPPFLAGS_save
LIBS=$LIBS_save
AC_OUTPUT(Makefile)
Na terceira linha indicamos os arquivos que serão compilados:
AC_INIT(arquivos_a_serem_compilados)
Na quinta linha damos um nome para o plugin e a sua versão:
AM_INIT_AUTOMAKE(nome_do_programa , versão_do_programa)
Da décima sétima à vigésima linha está uma checagem das bibliotecas
necessárias para compilar o programa, caso nao a encontre imprime um erro:
AM_PATH_GLIB(1.2.2,,AC_MSG_ERROR([*** GLIB >= 1.2.2 nao esta instalada - por favor instale uma versao recente ***]))
AM_PATH_XMMS(1.2.4,,AC_MSG_ERROR([*** XMMS >= 1.2.4 nao esta instalada - por favor instale uma versao recente***]))
AM_PATH_GTK(1.2.2,,AC_MSG_ERROR([*** GTK+ >= 1.2.2 nao esta instalada - por favor instale uma versao recente***]),gthread)
AM_PATH_SDL(1.2.0,,AC_MSG_ERROR([*** SDL >= 1.2.0 nao esta instalada - por favor instale uma versao recente***]))
Da trigésima quinta à quinquagésima primeira linha, começa uma procura
pelas bibliotecas do OpenGL, caso nao a encontre ele encerra o programa e
imprime um erro:
dnl Check for OpenGL
AC_MSG_CHECKING(for OpenGL support)
have_opengl=no
AC_TRY_COMPILE([
#include <GL/gl.h>
#include <GL/glu.h>
],[
],[
have_opengl=yes
])
AC_MSG_RESULT($have_opengl)
if test x$have_opengl = xyes; then
CFLAGS="$CFLAGS -DHAVE_OPENGL"
GL_LIBS="$SYS_GL_LIBS"
else
AC_MSG_ERROR(Nao foi possivel encontrar OpenGL instalada em sua máquina)
fi