Changeset 575c056a1c46f037ab33366b4999eb8eb1a96cd5

Show
Ignore:
Timestamp:
06/02/05 14:47:30 (3 years ago)
Author:
Rémi Denis-Courmont <rem@videolan.org>
git-committer:
Rémi Denis-Courmont <rem@videolan.org> 1117716450 +0000
git-parent:

[cab6549141c59cb40ff9ec9e3c03ec72c65c60e9]

git-author:
Rémi Denis-Courmont <rem@videolan.org> 1117716450 +0000
Message:

Complete rewrite of vlc_symbols.h generation (closes #155)

New VLC_EXPORTs are now added at the end of module_symbols_t so that
offsets of other function pointers are preserved.

Deleted VLC_EXPORTs are replaced with dummy pointers for padding.

Of course, it doesn't solve the problem with changing shared structures
format :/ and it may cause SVN conflicts when multiple people changes
VLC_EXPORT. I doubt it can be avoided though.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • Makefile.am

    r9160790 r575c056  
    2424    src/extras/COPYING \ 
    2525    toolbox \ 
     26    vlc-api.pl \ 
    2627    vlc-config.in.in \ 
    2728    vlc.spec \ 
     
    4647BUILT_SOURCES += \ 
    4748    stamp-api \ 
    48     include/vlc_symbols.h \ 
    4949    src/misc/modules_builtin.h \ 
    50     src/misc/modules_plugin.h \ 
    5150    $(NULL) 
    5251 
     
    6463    $(NULL) 
    6564 
    66 noinst_HEADERS = $(HEADERS_include) $(HEADERS_include_built) 
     65noinst_HEADERS = $(HEADERS_include) 
    6766 
    6867HEADERS_include = \ 
     
    115114    include/vlc_spu.h \ 
    116115    include/vlc_stream.h \ 
     116    include/vlc_symbols.h \ 
    117117    include/vlc_threads_funcs.h \ 
    118118    include/vlc_threads.h \ 
     
    125125    $(NULL) 
    126126 
    127 HEADERS_include_built = \ 
    128     include/vlc_symbols.h \ 
    129     $(NULL) 
    130  
    131 # Common dependencies for these 3 files : Makefile vlc-config 
    132 # Real specific dependencies : 
    133  
    134 #include/vlc_symbols.h: $(HEADERS_include) 
    135 #src/misc/modules_plugin.h: src/misc/modules_plugin.h.in $(HEADERS_include) 
    136 #src/misc/modules_builtin.h: src/misc/modules_builtin.h.in vlc-config 
    137  
    138 include/vlc_symbols.h: 
     127src/misc/modules_builtin.h: Makefile src/misc/modules_builtin.h.in vlc-config 
    139128    srcdir=$(srcdir) $(srcdir)/toolbox --update-includes 
    140  
    141 # for some strange reasons (??) modules_plugin.h depends on vlc_symbols.h 
    142 # so we have to touch it :( 
    143 src/misc/modules_plugin.h: src/misc/modules_plugin.h.in 
    144     srcdir=$(srcdir) $(srcdir)/toolbox --update-includes 
    145     touch src/misc/modules_plugin.h 
    146  
    147 src/misc/modules_builtin.h: src/misc/modules_builtin.h.in 
    148     srcdir=$(srcdir) $(srcdir)/toolbox --update-includes 
     129    touch $@ 
    149130 
    150131# These dependencies are mandatory 
    151 $(SOURCES): include/vlc_symbols.h 
    152 $(SOURCES_libvlc): src/misc/modules_plugin.h src/misc/modules_builtin.h $(LIB_intl) 
     132$(SOURCES_libvlc): src/misc/modules_builtin.h $(LIB_intl) 
    153133 
    154134############################################################################### 
     
    286266 
    287267lib_libvlc_a_SOURCES = $(SOURCES_libvlc) 
    288 dist_lib_libvlc_a_SOURCES = src/misc/modules_plugin.h 
    289268lib_libvlc_a_CFLAGS = `$(VLC_CONFIG) --cflags vlc` 
    290269lib_libvlc_a_CXXFLAGS = `$(VLC_CONFIG) --cxxflags vlc` 
     
    940919    @if test ! -f $@; then printf "" > $@; fi 
    941920 
    942 stamp-api: Makefile $(HEADERS_include) vlc-config src/misc/modules_plugin.h.in src/misc/modules_builtin.h.in 
    943     srcdir=$(srcdir) $(srcdir)/toolbox --update-includes 
     921stamp-api: Makefile.in $(HEADERS_include) vlc-config vlc-api.pl src/misc/modules_builtin.h.in 
     922    cd $(srcdir) && cat $(HEADERS_include) | perl ./vlc-api.pl 
    944923    touch stamp-api 
    945924 
  • src/Makefile.am

    r8641281 r575c056  
    11DIST_SUBDIRS = interface playlist input audio_output video_output stream_output misc 
    2 EXTRA_DIST = misc/modules_builtin.h.in misc/modules_plugin.h.in 
     2EXTRA_DIST = misc/modules_builtin.h.in 
  • src/misc/modules.c

    rc0156dd r575c056  
    108108#include "vlc_image.h" 
    109109 
    110 #ifdef HAVE_DYNAMIC_PLUGINS 
    111 #   include "modules_plugin.h" 
    112 #endif 
    113  
    114110#if defined( _MSC_VER ) && defined( UNDER_CE ) 
    115111#    include "modules_builtin_evc.h" 
  • toolbox

    rced8838 r575c056  
    405405    builddir="`sed -ne 's/^top_builddir *= *//p' < Makefile`" 
    406406  fi 
    407   mkdir -p "${builddir}/include" 
    408  
    409   LIBVLC_HEADERS=`getfiles HEADERS_include` 
    410407  BUILTINS=`sed -ne 's/.*builtins *= *" *\([^"]*\)".*/\1/p' vlc-config` 
    411  
    412   file="${builddir}/include/vlc_symbols.h" 
    413  
    414   rm -f ${file}.in 
    415   echo '/* DO NOT EDIT THIS FILE! See Makefile.am */' >> ${file}.in 
    416   echo 'struct module_symbols_t {' >> ${file}.in 
    417   cat ${LIBVLC_HEADERS} | grep '^ *VLC_EXPORT.*;' | sed -e 's/VLC_EXPORT( *\([^,]*\), *\([^,]*\), *\(.*\));.*/    \1 (* \2_inner) \3;/' >> ${file}.in 
    418   echo '};' >> ${file}.in 
    419   echo '#ifdef __PLUGIN__' >> ${file}.in 
    420   cat ${LIBVLC_HEADERS} | grep '^ *VLC_EXPORT.*;' | sed -e 's/VLC_EXPORT( *\([^,]*\), *\([^,]*\), *\(.*\));.*/#   define \2 p_symbols->\2_inner/' >> ${file}.in 
    421   echo '#endif /* __PLUGIN__ */' >> ${file}.in 
    422   if diff >/dev/null 2>&1 ${file} ${file}.in 
    423   then 
    424     rm -f ${file}.in 
    425   else 
    426     echo "creating new ${file}" 
    427     mv -f ${file}.in ${file} 
    428   fi 
    429  
    430   file="${builddir}/src/misc/modules_plugin.h" 
    431  
    432   rm -f ${file}.tmp 
    433   sed -e 's#.*\$[I][d]:.*# * Automatically generated from '${file}'.in by bootstrap#' < ${srcdir}/src/misc/modules_plugin.h.in > ${file}.tmp 
    434   echo '#define STORE_SYMBOLS( p_symbols ) \' >> ${file}.tmp 
    435   cat ${LIBVLC_HEADERS} | grep '^ *VLC_EXPORT.*;' | sed -e 's/VLC_EXPORT( *\([^,]*\), *\([^,]*\), *\(.*\));.*/    (p_symbols)->\2_inner = \2; \\/' >> ${file}.tmp 
    436   echo '' >> ${file}.tmp 
    437   if diff >/dev/null 2>&1 ${file} ${file}.tmp 
    438   then 
    439     rm -f ${file}.tmp 
    440   else 
    441     echo "creating new ${file}" 
    442     mv -f ${file}.tmp ${file} 
    443   fi 
    444408 
    445409  file="${builddir}/src/misc/modules_builtin.h" 
  • vlc-config.in.in

    r9160790 r575c056  
    8686  top_builddir="${TOP_BUILDDIR}/" 
    8787fi 
    88 includes="${includes} -I${top_builddir}include
     88includes="${includes}
    8989cppflags="${includes}" 
    9090libs="-L@libdir@"