I routinely work on several different computers and several different operating systems, which are Mac OS X, Linux, or Solaris. For the project I'm working on, I pull my code from a remote git repository.
I like to be able to work on my projects regardless of which terminal I'm at. So far, I've found ways to get around the OS changes by changing the makefile every time I switch computers. However, this is tedious and causes a bunch of headaches.
How can I modify my makefile so that it detects which OS I'm using and modifies syntax accordingly?
Here is the makefile:
cc = gcc -g
CC = g++ -g
yacc=$(YACC)
lex=$(FLEX)
all: assembler
assembler: y.tab.o lex.yy.o
        $(CC) -o assembler y.tab.o lex.yy.o -ll -l y
assembler.o: assembler.c
        $(cc) -o assembler.o assembler.c
y.tab.o: assem.y
        $(yacc) -d assem.y
        $(CC) -c y.tab.c
lex.yy.o: assem.l
        $(lex) assem.l
        $(cc) -c lex.yy.c
clean:
        rm -f lex.yy.c y.tab.c y.tab.h assembler *.o *.tmp *.debug *.acts
				
                        
There are many good answers here already, but I wanted to share a more complete example that both:
unameexists on WindowsThe
CCFLAGSdefined here aren't necessarily recommended or ideal; they're just what the project to which I was adding OS/CPU auto-detection happened to be using.