#if 0/* if [ "cppbuild" -ot "$0" ] then echo "Rebuilding cppbuild" g++ -s -O3 -std=c++17 -pthread $0 libcppbuild.a -o cppbuild [ $? != 0 ] && exit 1 fi echo "Launching cppbuild" ./cppbuild $* exit $? */ #endif #include #include #include #include "libcppbuild.h" /* Nested build configurations for for example unit-tests in a test folder #include "test/cppbuild.cc" */ /* Glob convenience methods std::string glob = getFilesInDir(...); */ /* Compilation database https://clang.llvm.org/docs/JSONCompilationDatabase.html */ /* En feature mere kunne være: pre-post build hooks De vil kunne udtrykkes som intra-build dependencies Og så selvfølgelig med conditions */ /* Target som er "shell script" eller sådan noget så kan man kalde f.eks. imageconvert */ /* Compiler selection per-target (for arm cross-compilation) */ namespace { BuildConfigurations myConfigs() { return { { .target = "plugingui", .sources = { "drumgizmo/zita-resampler/libs/cresampler.cc", "drumgizmo/zita-resampler/libs/resampler-table.cc", "drumgizmo/zita-resampler/libs/resampler.cc", "drumgizmo/zita-resampler/libs/vresampler.cc", "drumgizmo/hugin/hugin.c", "drumgizmo/pugixml/src/pugixml.cpp", }, .depends = { "libplugingui.so", }, .cxxflags = { "-DUI_X11", "-O3", "-g", "-Wall", "-Werror", "-std=c++11", "-Idrumgizmo/getoptpp", "-Idrumgizmo/", "-Idrumgizmo/hugin", "-Idrumgizmo/plugingui/", "-Idrumgizmo/src/", "-Idrumgizmo/zita-resampler/libs", "-Idrumgizmo/pugixml/src", }, .cflags = { "-g", //"-O3", "-Wall", "-Werror", }, .ldflags = { "-lm", "-lX11", "-lXext", "-lsndfile", "-pthread", } }, }; } BuildConfigurations myConfigs2() { return { { .target = "libplugingui.so", .sources = { "drumgizmo/plugingui/abouttab.cc", "drumgizmo/plugingui/bleedcontrolframecontent.cc", "drumgizmo/plugingui/button.cc", "drumgizmo/plugingui/button_base.cc", "drumgizmo/plugingui/checkbox.cc", "drumgizmo/plugingui/colour.cc", "drumgizmo/plugingui/combobox.cc", "drumgizmo/plugingui/dialog.cc", "drumgizmo/plugingui/diskstreamingframecontent.cc", "drumgizmo/plugingui/drumkitframecontent.cc", "drumgizmo/plugingui/drumkittab.cc", "drumgizmo/plugingui/eventhandler.cc", "drumgizmo/plugingui/filebrowser.cc", "drumgizmo/plugingui/font.cc", "drumgizmo/plugingui/frame.cc", "drumgizmo/plugingui/helpbutton.cc", "drumgizmo/plugingui/humaniservisualiser.cc", "drumgizmo/plugingui/humanizerframecontent.cc", "drumgizmo/plugingui/image.cc", "drumgizmo/plugingui/imagecache.cc", "drumgizmo/plugingui/knob.cc", "drumgizmo/plugingui/label.cc", "drumgizmo/plugingui/layout.cc", "drumgizmo/plugingui/led.cc", "drumgizmo/plugingui/lineedit.cc", "drumgizmo/plugingui/listbox.cc", "drumgizmo/plugingui/listboxbasic.cc", "drumgizmo/plugingui/listboxthin.cc", "drumgizmo/plugingui/maintab.cc", "drumgizmo/plugingui/mainwindow.cc", "drumgizmo/plugingui/nativewindow_x11.cc", "drumgizmo/plugingui/painter.cc", "drumgizmo/plugingui/pixelbuffer.cc", "drumgizmo/plugingui/pluginconfig.cc", "drumgizmo/plugingui/powerbutton.cc", "drumgizmo/plugingui/powerwidget.cc", "drumgizmo/plugingui/progressbar.cc", "drumgizmo/plugingui/resamplingframecontent.cc", "drumgizmo/plugingui/resource.cc", "drumgizmo/plugingui/resource_data.cc", "drumgizmo/plugingui/sampleselectionframecontent.cc", "drumgizmo/plugingui/scrollbar.cc", "drumgizmo/plugingui/slider.cc", "drumgizmo/plugingui/stackedwidget.cc", "drumgizmo/plugingui/statusframecontent.cc", "drumgizmo/plugingui/tabbutton.cc", "drumgizmo/plugingui/tabwidget.cc", "drumgizmo/plugingui/testmain.cc", "drumgizmo/plugingui/textedit.cc", "drumgizmo/plugingui/texture.cc", "drumgizmo/plugingui/texturedbox.cc", "drumgizmo/plugingui/timingframecontent.cc", "drumgizmo/plugingui/toggle.cc", "drumgizmo/plugingui/tooltip.cc", "drumgizmo/plugingui/uitranslation.cc", "drumgizmo/plugingui/utf8.cc", "drumgizmo/plugingui/verticalline.cc", "drumgizmo/plugingui/visualizerframecontent.cc", "drumgizmo/plugingui/voicelimitframecontent.cc", "drumgizmo/plugingui/widget.cc", "drumgizmo/plugingui/window.cc", "drumgizmo/plugingui/lodepng/lodepng.cpp", }, .depends = { "src.a", }, .cxxflags = { "-DUI_X11", "-O3", "-g", "-Wall", "-Werror", "-std=c++11", "-Idrumgizmo/getoptpp", "-Idrumgizmo/", "-Idrumgizmo/hugin", "-Idrumgizmo/plugingui/", "-Idrumgizmo/src/", "-Idrumgizmo/zita-resampler/libs", "-Idrumgizmo/pugixml/src", }, .cflags = {}, .ldflags = {} } }; } int a = reg(__FILE__, myConfigs); int b = reg(__FILE__, myConfigs2); }