Git Product home page Git Product logo

godag's Introduction

------------------------------------------------------------
About:
------------------------------------------------------------

This program will hopefully make it easier to compile
source code written in the go programming language.

A dependency graph is constructed from imports, this
is sorted with a topological sort to figure out if a legal
compile order is possible (loop check). The dependency
graph itself is used to compile packages, i.e. each
packages sits in its own go-routine and waits for its
dependencies to finish before it starts.



------------------------------------------------------------
Install:  [Linux/Unix/Mac/Windows]
------------------------------------------------------------

> go run mk.go install

This will compile + link the binary (gd) and move it
to $HOME/bin if it is present, if not it falls back to
$GOBIN.


> go run mk.go -help  to see all available targets/options



------------------------------------------------------------
Try it Out:
------------------------------------------------------------

You can try to compile the same source using the generated
executable: gd


$ gd src          # will compile source inside src
$ gd -p src       # will print dependency info gathered
$ gd -s src       # will print legal compile order
$ gd src -test    # will run unit-tests
$ gd src -fmt     # will format (gofmt) the source-code
$ gd src -o gd    # will compile and link executable



------------------------------------------------------------
Contributors
------------------------------------------------------------

Hans Stimer
Markus Martin
Robert Hencke
Hunter Freyer
Michael Henke
Remo Hertig



------------------------------------------------------------
Philosophy (Babble?)
------------------------------------------------------------

Without a tool to figure out which order the source should
be compiled, Makefiles are usually the result. Makefiles
are static in nature, which make them a poor choice to handle
a dynamic problem like a changing source tree. They also make
flat structures quite common, since this usually simplifies
the Makefiles, but makes organisation far less intuitive than
a directory-tree package-structure.



------------------------------------------------------------
Completion
------------------------------------------------------------

Bash completion script for gd is placed inside util/




------------------------------------------------------------
Logo
------------------------------------------------------------

The logo was made with LaTeX and tikz, it's basically just
an upside down g filled with yellow..

=start LaTeX

\documentclass[12pt]{article}
\usepackage{tikz}
\usepackage{nopageno}


\begin{document}
\begin{tikzpicture}[remember picture,overlay]
  \node [scale=75,fill=black!100,opacity=.8, rounded corners]
   at (current page.center) {}; 
  \node [rotate=180,scale=63,text opacity=0.9,yellow]
   at (current page.center) {g};
\end{tikzpicture}
\end{document}


=end LaTeX



-bjarneh

godag's People

Contributors

bjarneh avatar

Stargazers

боцман avatar Kicool Zhang avatar newblue avatar  avatar Jean-Sébastien Ney avatar

Watchers

 avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.