I noticed that PUBLIC is refined a number of times[1]. This doesn't make much sense, does it? The definitions aren't always the same (some take into account SWIG while others don't). I'd suggest moving all these definitions to a central location (eg, public_csound.h), and have all files that need PUBLIC include this file. As a bonus track, maybe rename the macro to CSOUND_PUBLIC or something like that, to avoid colision with other projects. This is pretty simple, so I can do all this and prepare a patch[2], but I'd like input before doing it. [1] A quick grep shows these files: frontends/csladspa/csladspa.cpp H/csound.h interfaces/filebuilding.h interfaces/CsoundFile.hpp [2] Actually I already started a similar one: it includes support for gcc-based builds (ie: #define PUBLIC __attribute__((visibility("default"))) and compile with -fvisibility=hidden). -- Felipe Sateler