handle cygwin/mingw for makefile

This commit is contained in:
Dale Weiler 2012-12-20 00:22:22 +00:00
parent 2bf2991ecb
commit 0648835061
2 changed files with 53 additions and 28 deletions

View file

@ -1,12 +1,17 @@
DESTDIR := DESTDIR :=
PREFIX := /usr/local PREFIX := /usr/local
BINDIR := $(PREFIX)/bin BINDIR := $(PREFIX)/bin
DATADIR := $(PREFIX)/share DATADIR := $(PREFIX)/share
MANDIR := $(DATADIR)/man MANDIR := $(DATADIR)/man
UNAME = $(shell uname)
CYGWIN = $(findstring CYGWIN, $(UNAME))
MINGW = $(findstring MINGW32, $(UNAME))
CC ?= clang CC ?= clang
CFLAGS += -Wall -Wextra -I. -pedantic-errors CFLAGS += -Wall -Wextra -I. -pedantic-errors
#turn on tons of warnings if clang is present #turn on tons of warnings if clang is present
# but also turn off the STUPID ONES
ifeq ($(CC), clang) ifeq ($(CC), clang)
CFLAGS += \ CFLAGS += \
-Weverything \ -Weverything \
@ -15,26 +20,45 @@ ifeq ($(CC), clang)
-Wno-disabled-macro-expansion \ -Wno-disabled-macro-expansion \
-Wno-conversion \ -Wno-conversion \
-Wno-missing-prototypes -Wno-missing-prototypes
endif endif
ifeq ($(track), no) ifeq ($(track), no)
CFLAGS += -DNOTRACK CFLAGS += -DNOTRACK
endif endif
OBJ = \ OBJ_D = util.o code.o ast.o ir.o con.o ftepp.o opts.o
util.o \
code.o \
ast.o \
ir.o \
con.o \
ftepp.o \
opts.o
OBJ_T = test.o util.o con.o OBJ_T = test.o util.o con.o
OBJ_C = main.o lexer.o parser.o OBJ_C = main.o lexer.o parser.o
OBJ_X = exec-standalone.o util.o con.o OBJ_X = exec-standalone.o util.o con.o
ifneq ("$(CYGWIN)", "")
#nullify the common variables that
#most *nix systems have (for windows)
PREFIX :=
BINDIR :=
DATADIR :=
MANDIR :=
QCVM = qcvm.exe
GMQCC = gmqcc.exe
TESTSUITE = testsuite.exe
else
ifneq ("$(MINGW32)", "")
#nullify the common variables that
#most *nix systems have (for windows)
PREFIX :=
BINDIR :=
DATADIR :=
MANDIR :=
QCVM = qcvm.exe
GMQCC = gmqcc.exe
TESTSUITE = testsuite.exe
else
QCVM = qcvm
GMQCC = gmqcc
TESTSUITE = testsuite
endif
endif
#standard rules
default: all default: all
%.o: %.c %.o: %.c
$(CC) -c $< -o $@ $(CFLAGS) $(CC) -c $< -o $@ $(CFLAGS)
@ -42,37 +66,38 @@ default: all
exec-standalone.o: exec.c exec-standalone.o: exec.c
$(CC) -c $< -o $@ $(CFLAGS) -DQCVM_EXECUTOR=1 $(CC) -c $< -o $@ $(CFLAGS) -DQCVM_EXECUTOR=1
qcvm: $(OBJ_X) $(QCVM): $(OBJ_X)
$(CC) -o $@ $^ $(CFLAGS) -lm $(CC) -o $@ $^ $(CFLAGS) -lm
gmqcc: $(OBJ_C) $(OBJ) $(GMQCC): $(OBJ_C) $(OBJ_D)
$(CC) -o $@ $^ $(CFLAGS) $(CC) -o $@ $^ $(CFLAGS)
testsuite: $(OBJ_T) $(TESTSUITE): $(OBJ_T)
$(CC) -o $@ $^ $(CFLAGS) $(CC) -o $@ $^ $(CFLAGS)
all: gmqcc qcvm testsuite all: $(GMQCC) $(QCVM) $(TESTSUITE)
check: all check: all
@ ./testsuite @ ./$(TESTSUITE)
clean: clean:
rm -f *.o gmqcc qcvm testsuite *.dat rm -f *.o $(GMQCC) $(QCVM) $(TESTSUITE) *.dat
# deps
$(OBJ) $(OBJ_C) $(OBJ_X): gmqcc.h opts.def $(OBJ) $(OBJ_C) $(OBJ_X): gmqcc.h opts.def
main.o: lexer.h main.o: lexer.h
parser.o: ast.h lexer.h parser.o: ast.h lexer.h
ast.o: ast.h ir.h ast.o: ast.h ir.h
ir.o: ir.h ir.o: ir.h
#install rules
install: install-gmqcc install-qcvm install-doc install: install-gmqcc install-qcvm install-doc
install-gmqcc: gmqcc install-gmqcc: $(GMQCC)
install -d -m755 $(DESTDIR)$(BINDIR) install -d -m755 $(DESTDIR)$(BINDIR)
install -m755 gmqcc $(DESTDIR)$(BINDIR)/gmqcc install -m755 $(GMQCC) $(DESTDIR)$(BINDIR)/gmqcc
install-qcvm: qcvm install-qcvm: $(QCVM)
install -d -m755 $(DESTDIR)$(BINDIR) install -d -m755 $(DESTDIR)$(BINDIR)
install -m755 qcvm $(DESTDIR)$(BINDIR)/qcvm install -m755 $(QCVM) $(DESTDIR)$(BINDIR)/qcvm
install-doc: install-doc:
install -d -m755 $(DESTDIR)$(MANDIR)/man1 install -d -m755 $(DESTDIR)$(MANDIR)/man1
install -m755 doc/gmqcc.1 $(DESTDIR)$(MANDIR)/man1/ install -m755 doc/gmqcc.1 $(DESTDIR)$(MANDIR)/man1/

2
ir.c
View file

@ -3543,7 +3543,7 @@ bool ir_builder_generate(ir_builder *self, const char *filename)
#define IND_BUFSZ 1024 #define IND_BUFSZ 1024
#ifdef _MSC_VER #ifdef _MSC_VER
# define strncat(dst, src, sz) strncat_s(dst, sz, src, _TRUNCATE) # define strncat(dst, src, sz) strncat_s(dst, sz, src, _TRUNCATE)
#endif #endif
const char *qc_opname(int op) const char *qc_opname(int op)