Changeset 162

Show
Ignore:
Timestamp:
05/24/08 13:57:46 (5 years ago)
Author:
comix
Message:

Added an experimental Sconstruct-based build system.

Location:
trunk
Files:
46 modified
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/Sconstruct

    r160 r162  
    1010import subprocess 
    1111import sys 
     12import glob 
     13 
     14def recursiveDirs(root) : 
     15        return filter( ( lambda a : a.rfind( ".svn") == -1 ),  [ a[0] for a in os.walk( root ) ] ) 
     16 
     17def unique( list ) : 
     18        return dict.fromkeys( list ).keys() 
     19 
     20def scanFiles(dir, accept=[ "*.cpp" ], reject=[] ) : 
     21        sources = [] 
     22        paths = recursiveDirs( dir ) 
     23        for path in paths: 
     24                for pattern in accept: 
     25                        sources += glob.glob( path + "/" + pattern ) 
     26        for pattern in reject: 
     27                sources = filter( ( lambda a : a.rfind( pattern ) == -1 ),  sources ) 
     28        return unique( sources ) 
     29 
     30def subdirsContaining( root, patterns ): 
     31        dirs = unique( map( os.path.dirname, scanFiles( root, patterns ) ) ) 
     32        dirs.sort() 
     33        return dirs 
     34 
     35 
     36 
     37def get_platform_flags(): 
     38        includes = [] 
     39        cppflags = "" 
     40        ldflags = "" 
     41 
     42        if sys.platform == "linux2" or sys.platform == "darwin": 
     43                if debug_build: 
     44                        cppflags += " -Wall -g2 -ggdb -O0" 
     45                else: 
     46                        cppflags += " -O3 -fomit-frame-pointer -funroll-loops" 
     47                        cppflags += " %s" % get_optimized_flags( target_cpu ) 
     48 
     49        includes.append( './' ) 
     50        includes.append( '3rdparty/install/include' ) 
     51 
     52        if sys.platform == 'linux2': 
     53                pass 
     54        elif sys.platform == 'darwin': 
     55                pass 
     56        else: 
     57                raise Exception( "Platform '%s' not supported" % sys.platform ) 
     58 
     59        return (includes, cppflags, ldflags) 
     60 
    1261 
    1362 
     
    4897 
    4998 
     99def get_hydrogen_lib(): 
     100        includes, cppflags, ldflags = get_platform_flags() 
     101 
     102        includes.append( "libs/hydrogen/include" ) 
     103 
     104        qt4ToolLocation='.' 
     105        env = Environment(tools=['default','qt4'], toolpath=[qt4ToolLocation], ENV=os.environ, CPPPATH = includes, CPPFLAGS = cppflags, CCFLAGS = "", LINKFLAGS=ldflags ) 
     106        env.EnableQt4Modules( ['QtCore', 'QtGui'], debug=False) 
     107        env.CacheDir( "scons_cache" ) 
     108 
     109 
     110        src = scanFiles( "libs/hydrogen", ['*.cpp', '*.cc', '*.c' ], [ 'moc_'] ) 
     111 
     112        static_lib = env.StaticLibrary(target = 'hydrogen', source = src ) 
     113        return static_lib 
     114 
     115 
     116def get_hydrogen_gui( lib_hydrogen ): 
     117        includes, cppflags, ldflags = get_platform_flags() 
     118 
     119        includes.append( "libs/hydrogen/include" ) 
     120        includes.append( "gui/src/UI" ) 
     121 
     122        qt4ToolLocation='.' 
     123        env = Environment(tools=['default','qt4'], toolpath=[qt4ToolLocation], ENV=os.environ, CPPPATH = includes, CPPFLAGS = cppflags, CCFLAGS = "", LINKFLAGS=ldflags ) 
     124        env.EnableQt4Modules( ['QtCore', 'QtGui', 'QtNetwork', 'QtXml' ], debug=False) 
     125        env.CacheDir( "scons_cache" ) 
     126 
     127        # rcc needs a -name flag because examples use identified resource files 
     128        def takebasename(file): 
     129                return os.path.splitext(os.path.basename(file))[0] 
     130 
     131 
     132        directory = "gui" 
     133 
     134        resources = [ env.Qrc( qrc, QT4_QRCFLAGS = '-name ' + takebasename( qrc ) ) for qrc in scanFiles(directory, ['*.qrc'] ) ] 
     135        interfaces = [ env.Uic4( uic ) for uic in scanFiles(directory, ['*.ui'] ) ] 
     136 
     137 
     138        src = scanFiles( directory, ['*.cpp', '*.cc', '*.c' ], [ 'moc_'] ) 
     139 
     140        env.Append( LIBS = lib_hydrogen ) 
     141        env.Append( LIBS = ["sndfile"] ) 
     142        env.Append( LIBS = ["tar"] ) 
     143 
     144        #app = env.Program(target = 'hydrogengui', source = src, LIBS = libs ) 
     145        app = env.Program(target = 'hydrogengui', source = src ) 
     146 
     147 
     148        env.Alias('programs', app) 
     149        env.Default('programs') 
     150        return app 
     151 
     152 
     153 
    50154debug_build = True 
    51155 
     
    65169 
    66170 
    67 env = Environment() 
    68 env.CacheDir( "scons_cache" ) 
    69  
    70171download_3rdparty_libs() 
    71172 
     173libhyd = get_hydrogen_lib() 
     174app = get_hydrogen_gui( libhyd ) 
     175 
  • trunk/configure

    r143 r162  
    9696# include SVN revision number in Version 
    9797SVNREV=`svnversion -n` 
     98 
     99echo "#ifndef HYD_CONFIG_H" >> config.h 
     100echo "#define HYD_CONFIG_H" >> config.h 
    98101echo "#include <string>" >> config.h 
    99102echo "static const std::string REVISION = \"$SVNREV\";" >> config.h 
    100103echo "static const std::string VERSION = \"0.9.4-svn\" + REVISION;" >> config.h 
     104 
     105echo "#ifndef QT_BEGIN_NAMESPACE" >> config.h 
     106echo "#    define QT_BEGIN_NAMESPACE" >> config.h 
     107echo "#endif" >> config.h 
     108echo "#ifndef QT_END_NAMESPACE" >> config.h 
     109echo "#    define QT_END_NAMESPACE" >> config.h 
     110echo "#endif" >> config.h 
     111echo "#endif" >> config.h 
     112 
    101113 
    102114 
  • trunk/gui/gui.pro

    r150 r162  
    33TARGET = hydrogen 
    44INCLUDEPATH += ../ ../libs/hydrogen/include 
     5INCLUDEPATH += ./gui/src/ 
    56DESTDIR = .. 
    67 
     
    133134 
    134135FORMS    = \ 
    135         src/UI/AboutDialog_UI.ui \ 
     136        src/UI/about_dialog.ui \ 
    136137        src/UI/AudioEngineInfoForm_UI.ui \ 
    137138        src/UI/DrumkitManager_UI.ui \ 
  • trunk/gui/src/AboutDialog.cpp

    r127 r162  
    2626 
    2727#include <hydrogen/globals.h> 
    28  
    29 #include <QtGui> 
    3028 
    3129#include <vector> 
  • trunk/gui/src/AboutDialog.h

    r73 r162  
    2424#define ABOUT__DIALOG_H 
    2525 
    26 //#include "config.h" 
     26#include "config.h" 
    2727 
    28 #include <QDialog> 
    29 #include <QTextBrowser> 
     28#include <QtGui> 
    3029 
    31 #include "ui_AboutDialog_UI.h" 
     30#include "ui_about_dialog.h" 
    3231 
    3332class AboutDialog : public QDialog, public Ui_AboutDialog_UI 
  • trunk/gui/src/AudioEngineInfoForm.h

    r73 r162  
    2525#define AUDIO_ENGINE_INFO_FORM_H 
    2626 
     27#include "config.h" 
    2728#include <hydrogen/Object.h> 
    2829 
  • trunk/gui/src/DrumkitManager.h

    r73 r162  
    2424#ifndef DRUMKIT_MANAGER_H 
    2525#define DRUMKIT_MANAGER_H 
     26 
     27#include "config.h" 
     28 
    2629#include <QTimer> 
    2730#include <QWidget> 
  • trunk/gui/src/ExportSongDialog.h

    r73 r162  
    2525#define EXPORT_SONG_DIALOG_H 
    2626 
    27  
    28 #include "qlineedit.h" 
    29 #include "qmessagebox.h" 
    30  
    31 #include <QDialog> 
     27#include "config.h" 
    3228 
    3329#include "ui_ExportSongDialog_UI.h" 
  • trunk/gui/src/FilePreview.cpp

    r63 r162  
    2020 * 
    2121 */ 
    22  
     22/* 
    2323#include "FilePreview.h" 
    2424#include <hydrogen/sample.h> 
     
    119119} 
    120120 
     121*/ 
  • trunk/gui/src/FilePreview.h

    r10 r162  
    2424#ifndef FILE_PREVIEW_H 
    2525#define FILE_PREVIEW_H 
    26  
     26/* 
    2727#include <hydrogen/Object.h> 
    2828 
     
    5555}; 
    5656 
     57*/ 
     58 
    5759#endif 
  • trunk/gui/src/HelpBrowser.h

    r127 r162  
    2525#define HELPBROWSER_H 
    2626 
     27#include "config.h" 
     28 
    2729#include <iostream> 
    2830 
     
    3032#include <string> 
    3133 
    32 #include <QShowEvent> 
    33 #include <QResizeEvent> 
    34 #include <QDialog> 
    35 #include <QFile> 
    36 #include <QPushButton> 
    37 #include <QTextBrowser> 
     34#include <QtGui> 
    3835 
    3936#include <hydrogen/Object.h> 
  • trunk/gui/src/HydrogenApp.h

    r73 r162  
    2323#ifndef HYDROGEN_APP_H 
    2424#define HYDROGEN_APP_H 
     25 
     26#include "config.h" 
    2527 
    2628#include <iostream> 
  • trunk/gui/src/InstrumentEditor/InstrumentEditor.h

    r73 r162  
    2424#define INSTRUMENT_EDITOR_DIALOG_H 
    2525 
     26#include "config.h" 
     27 
     28#include <QtGui> 
     29 
     30#include <hydrogen/instrument.h> 
    2631#include <hydrogen/Object.h> 
    2732 
     
    3843class LayerPreview; 
    3944 
    40 #include <hydrogen/instrument.h> 
    41 #include <QtGui> 
    4245 
    4346/// 
  • trunk/gui/src/InstrumentEditor/LayerPreview.h

    r73 r162  
    2323#define LAYER_PREVIEW_H 
    2424 
     25#include "config.h" 
    2526#include <QtGui> 
    2627 
  • trunk/gui/src/InstrumentEditor/WaveDisplay.h

    r127 r162  
    2323#ifndef WAVE_DISPLAY 
    2424#define WAVE_DISPLAY 
     25 
     26#include "config.h" 
    2527 
    2628#include <QtGui> 
  • trunk/gui/src/LadspaFXSelector.h

    r127 r162  
    2424#define LADSPA_FX_SELECTOR_H 
    2525 
     26#include "config.h" 
     27 
     28#include "ui_LadspaFXSelector_UI.h" 
     29 
    2630#include <hydrogen/Object.h> 
    27 #include "ui_LadspaFXSelector_UI.h" 
     31#include <hydrogen/fx/LadspaFX.h> 
    2832 
    2933#include <string> 
    3034#include <vector> 
    3135 
    32 #include <QDialog> 
    33  
    34 #include <hydrogen/fx/LadspaFX.h> 
    3536 
    3637class LadspaFXSelector : public QDialog, public Ui_LadspaFXSelector_UI, public Object 
  • trunk/gui/src/Mixer/Mixer.h

    r73 r162  
    2424#ifndef MIXER_H 
    2525#define MIXER_H 
     26 
     27#include "config.h" 
    2628 
    2729#include <QtGui> 
  • trunk/gui/src/Mixer/MixerLine.h

    r73 r162  
    2222#ifndef MIXERLINE_H 
    2323#define MIXERLINE_H 
     24 
     25#include "config.h" 
    2426 
    2527#include <QtGui> 
  • trunk/gui/src/PatternEditor/DrumPatternEditor.h

    r115 r162  
    2525#define DRUM_PATTERN_EDITOR_H 
    2626 
     27#include "config.h" 
    2728#include "../EventListener.h" 
    2829 
     
    3132#include <hydrogen/Pattern.h> 
    3233 
    33 #include <QWidget> 
    34 #include <QPixmap> 
    35 #include <QMenu> 
     34#include <QtGui> 
    3635 
    3736class PatternEditorInstrumentList; 
  • trunk/gui/src/PatternEditor/NotePropertiesRuler.cpp

    r95 r162  
    2121 */ 
    2222 
    23 #include <QtGui> 
    24  
    2523#include <hydrogen/Preferences.h> 
    2624#include <hydrogen/hydrogen.h> 
     
    2826using namespace H2Core; 
    2927 
     28#include <cassert> 
    3029 
    3130#include "../HydrogenApp.h" 
  • trunk/gui/src/PatternEditor/NotePropertiesRuler.h

    r73 r162  
    2525 
    2626#include "../EventListener.h" 
    27 #include <QWidget> 
    28  #include <QTimer> 
     27 
     28#include <QtGui> 
    2929 
    3030#include <hydrogen/Object.h> 
  • trunk/gui/src/PatternEditor/PatternEditorInstrumentList.h

    r98 r162  
    2525#define PATTERN_EDITOR_INSTRUMENT_LIST_H 
    2626 
    27 #include <QWidget> 
    28 #include <QMenu> 
     27#include "config.h" 
     28 
     29#include <QtGui> 
    2930 
    3031#include <hydrogen/Object.h> 
  • trunk/gui/src/PatternEditor/PianoRollEditor.cpp

    r73 r162  
    2424 
    2525#include <QtGui> 
     26#include <cassert> 
    2627 
    2728#include <hydrogen/Preferences.h> 
  • trunk/gui/src/PatternFillDialog.h

    r73 r162  
    2424#define PATTERN_FILL_DIALOG_H 
    2525 
    26 //#include "config.h" 
    27  
    28 #include <QDialog> 
     26#include "config.h" 
    2927 
    3028#include "ui_PatternFillDialog_UI.h" 
  • trunk/gui/src/PatternPropertiesDialog.h

    r73 r162  
    2424#define PATTERN_PROPERTIES_DIALOG_H 
    2525 
    26 #include <QDialog> 
     26#include "config.h" 
     27 
     28#include <QtGui> 
    2729#include "ui_PatternPropertiesDialog_UI.h" 
    2830#include <hydrogen/Song.h> 
  • trunk/gui/src/PlaylistEditor/PlaylistDialog.h

    r140 r162  
    2323#ifndef PLAYLIST_DIALOG_H 
    2424#define PLAYLIST_DIALOG_H 
     25 
     26#include "config.h" 
    2527 
    2628#include <QDialog> 
  • trunk/gui/src/PreferencesDialog.h

    r152 r162  
    2424#define PREFERENCES_DIALOG_H 
    2525 
     26#include "config.h" 
     27 
    2628#include "ui_PreferencesDialog_UI.h" 
    27  
    28 #include <QDialog> 
    2929 
    3030#include <hydrogen/Object.h> 
  • trunk/gui/src/SongPropertiesDialog.h

    r73 r162  
    2424#define SONG_PROPERTIES_DIALOG_H 
    2525 
    26 //#include "config.h" 
    27  
    28 #include <QDialog> 
     26#include "config.h" 
    2927 
    3028#include "ui_SongPropertiesDialog_UI.h" 
  • trunk/gui/src/SoundLibrary/FileBrowser.h

    r73 r162  
    2424#define FILE_BROWSER_H 
    2525 
     26#include "config.h" 
     27 
    2628#include <hydrogen/Object.h> 
    2729 
    28 #include <QWidget> 
    29 #include <QLabel> 
    30 #include <QListWidget> 
    31 #include <QDir> 
    32 #include <QPushButton> 
     30#include <QtGui> 
    3331 
    3432class FileBrowser : public QWidget, private Object 
  • trunk/gui/src/SoundLibrary/SoundLibraryImportDialog.h

    r124 r162  
    2424#define SOUND_LIBRARY_IMPORT_DIALOG_H 
    2525 
    26 #include <QDialog> 
     26#include "config.h" 
     27 
    2728#include "ui_SoundLibraryImportDialog_UI.h" 
    2829#include <hydrogen/Object.h> 
  • trunk/gui/src/SoundLibrary/SoundLibraryPanel.h

    r119 r162  
    2323#ifndef SOUND_LIBRARY_PANEL_H 
    2424#define SOUND_LIBRARY_PANEL_H 
     25 
     26#include "config.h" 
    2527 
    2628#include <QWidget> 
  • trunk/gui/src/SoundLibrary/SoundLibraryRepositoryDialog.h

    r124 r162  
    2424#define SOUND_LIBRARY_REPOSITORY_DIALOG_H 
    2525 
    26 #include <QDialog> 
     26#include "config.h" 
    2727#include "ui_SoundLibraryRepositoryDialog_UI.h" 
    2828#include <hydrogen/Object.h> 
  • trunk/gui/src/SoundLibrary/SoundLibrarySaveDialog.h

    r73 r162  
    2424#define SOUND_LIBRARY_SAVE_DIALOG_H 
    2525 
    26 #include <QDialog> 
     26#include "config.h" 
    2727#include "ui_SoundLibrarySaveDialog_UI.h" 
    2828#include <hydrogen/Object.h> 
  • trunk/gui/src/SoundLibrary/SoundLibraryTree.h

    r73 r162  
    2424#define SOUND_LIBRARY_TREE_H 
    2525 
    26 #include <QTreeWidget> 
    27 #include <QMouseEvent> 
    28 #include <QMenu> 
     26#include "config.h" 
     27 
     28#include <QtGui> 
    2929 
    3030#include <hydrogen/Object.h> 
  • trunk/gui/src/widgets/Button.h

    r104 r162  
    2525#define BUTTON_H 
    2626 
     27#include "config.h" 
     28 
    2729#include <hydrogen/Object.h> 
    2830#include "PixmapWidget.h" 
    2931 
    30 #include <QMouseEvent> 
    31 #include <QEvent> 
    32 #include <QPixmap> 
    33 #include <QWidget> 
    34  
     32#include <QtGui> 
    3533 
    3634/** 
  • trunk/gui/src/widgets/ClickableLabel.h

    r73 r162  
    2424#define CLICKABLE_LABEL_H 
    2525 
    26 #include <QLabel> 
    27 #include <QMouseEvent> 
     26#include "config.h" 
     27#include <QtGui> 
     28 
    2829 
    2930class ClickableLabel : public QLabel 
  • trunk/gui/src/widgets/CpuLoadWidget.h

    r73 r162  
    2424#define CPU_LOAD_WIDGET_H 
    2525 
     26#include "config.h" 
     27 
    2628#include <string> 
    2729#include <iostream> 
    28  
    29 //#include "config.h" 
    3030 
    3131#include "../EventListener.h" 
  • trunk/gui/src/widgets/DownloadWidget.cpp

    r127 r162  
    2323#include "DownloadWidget.h" 
    2424 
    25 #include <QtGui> 
     25#include <cmath> 
    2626 
    2727#include <hydrogen/globals.h> 
  • trunk/gui/src/widgets/DownloadWidget.h

    r73 r162  
    2424#define DOWNLOAD_WIDGET_H 
    2525 
    26 #include <QString> 
    27 #include <QDialog> 
     26#include "config.h" 
     27 
     28#include <QtGui> 
    2829#include <QtNetwork> 
    29 #include <QTimer> 
    30 #include <QLabel> 
    31 #include <QProgressBar> 
    32 #include <QFile> 
    3330 
    3431#include <hydrogen/Object.h> 
  • trunk/gui/src/widgets/Fader.h

    r73 r162  
    2525#define FADER_H 
    2626 
     27#include "config.h" 
     28 
    2729#include <string> 
    2830#include <iostream> 
    2931 
    30 #include <QWidget> 
    31 #include <QPixmap> 
    32 #include <QMouseEvent> 
    33 #include <QWheelEvent> 
    34 #include <QPaintEvent> 
     32#include <QtGui> 
    3533 
    3634#include <hydrogen/Object.h> 
  • trunk/gui/src/widgets/LCD.h

    r73 r162  
    2424#define LCD_H 
    2525 
    26 #include <QWidget> 
    27 #include <QPixmap> 
    28 #include <QMouseEvent> 
    29 #include <QWheelEvent> 
    30 #include <QPaintEvent> 
     26#include "config.h" 
     27 
     28#include <QtGui> 
    3129 
    3230#include <hydrogen/Object.h> 
  • trunk/gui/src/widgets/LCDCombo.h

    r73 r162  
    2424#define LCDCOMBO_H 
    2525 
     26#include "config.h" 
     27 
    2628#include <string> 
    2729#include <iostream> 
     
    3335#include "Button.h" 
    3436 
    35 #include <QWidget> 
    36 #include <QPixmap> 
    37 #include <QMouseEvent> 
    38 #include <QWheelEvent> 
    39 #include <QPaintEvent> 
    40 #include <QPainter> 
    41 #include <QMenu> 
    42 #include <QString> 
     37#include <QtGui> 
    4338 
    4439#include <hydrogen/Object.h> 
  • trunk/gui/src/widgets/MidiActivityWidget.h

    r127 r162  
    2525#define MIDI_ACTIVITY_WIDGET_H 
    2626 
    27 #include <QMouseEvent> 
    28 #include <QPaintEvent> 
    29 #include <QWidget> 
    30 #include <QPixmap> 
     27#include "config.h" 
     28 
     29#include <QtGui> 
    3130 
    3231#include "../EventListener.h" 
  • trunk/gui/src/widgets/PixmapWidget.h

    r127 r162  
    2424#define PIXMAP_WIDGET_H 
    2525 
    26 #include <QWidget> 
    27 #include <QPixmap> 
    28 #include <QPaintEvent> 
    29 #include <QColor> 
     26#include "config.h" 
     27#include <QtGui> 
    3028 
    3129#include <hydrogen/Object.h> 
  • trunk/gui/src/widgets/Rotary.h

    r73 r162  
    2424#define ROTARY_H 
    2525 
    26 #include <QWidget> 
    27 #include <QPixmap> 
    28 #include <QMouseEvent> 
    29 #include <QWheelEvent> 
    30 #include <QPaintEvent> 
     26#include "config.h" 
     27#include <QtGui> 
    3128 
    3229#include "LCD.h" 
  • trunk/libs/hydrogen/include/hydrogen/data_path.h

    r127 r162  
    2929#define DATA_PATH_H 
    3030 
    31 #include <string> 
     31#include <QtCore> 
    3232 
    3333namespace H2Core