168 lines
4.1 KiB
Makefile
168 lines
4.1 KiB
Makefile
CC=gcc
|
|
CFLAGS=-g -DWDL_FFT_REALSIZE=8 -Wall -Wno-unused-function -Wno-multichar -Wno-unused-result -Wshadow -Wtype-limits
|
|
LFLAGS=
|
|
CXX=g++
|
|
|
|
ifdef DEBUG
|
|
CFLAGS += -D_DEBUG -O0 -DWDL_CHECK_FOR_NON_UTF8_FOPEN
|
|
else
|
|
CFLAGS += -DNDEBUG -O
|
|
endif
|
|
|
|
CFLAGS += -D_FILE_OFFSET_BITS=64
|
|
|
|
OBJS=nseel-caltab.o nseel-compiler.o nseel-eval.o nseel-lextab.o nseel-ram.o nseel-yylex.o nseel-cfunc.o fft.o
|
|
|
|
SWELL_OBJS=
|
|
LICE_OBJS=
|
|
|
|
OBJS2=
|
|
|
|
UNAME_S := $(shell uname -s)
|
|
ARCH := $(shell uname -m)
|
|
|
|
ifeq ($(ARCH), aarch64)
|
|
ifeq ($(shell $(CC) -dumpmachine | cut -f 1 -d -), arm)
|
|
# helper for armv7l userspace on aarch64 cpu
|
|
ARCH := armv7l
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(UNAME_S),Darwin)
|
|
CC=clang
|
|
CXX=clang++
|
|
CFLAGS += -arch $(ARCH)
|
|
endif
|
|
|
|
ifeq ($(ARCH),arm64)
|
|
CFLAGS += -fsigned-char
|
|
else
|
|
ifneq ($(filter arm%,$(ARCH)),)
|
|
CFLAGS += -fsigned-char -mfpu=vfp -march=armv6t2 -marm
|
|
endif
|
|
ifeq ($(ARCH),aarch64)
|
|
CFLAGS += -fsigned-char
|
|
endif
|
|
endif
|
|
|
|
ifndef ALLOW_WARNINGS
|
|
ifneq ($(UNAME_S),Darwin)
|
|
CFLAGS += -Werror
|
|
endif
|
|
endif
|
|
ifndef DEPRECATED_WARNINGS
|
|
CFLAGS += -Wno-deprecated-declarations
|
|
endif
|
|
|
|
|
|
default: loose_eel eel_pp
|
|
|
|
nseel-compiler.o: glue*.h ns-eel*.h
|
|
nseel-cfunc.o: asm*.c ns-eel*.h
|
|
loose_eel.o: eel*.h ns-eel*.h
|
|
nseel-*.o: ns-eel*.h
|
|
|
|
vpath %.cpp ../lice ../swell
|
|
vpath %.mm ../swell
|
|
vpath %.c ../
|
|
|
|
ifdef MAXLOOP
|
|
CFLAGS += -DNSEEL_LOOPFUNC_SUPPORT_MAXLEN=$(MAXLOOP)
|
|
else
|
|
CFLAGS += -DNSEEL_LOOPFUNC_SUPPORT_MAXLEN=0
|
|
endif
|
|
|
|
ifdef DISASSEMBLE
|
|
CFLAGS += -DEELSCRIPT_DO_DISASSEMBLE
|
|
endif
|
|
|
|
ifndef NO_GFX
|
|
LICE_OBJS += lice.o lice_image.o lice_line.o lice_ico.o lice_bmp.o lice_textnew.o lice_text.o lice_arc.o
|
|
CFLAGS += -DEEL_LICE_WANT_STANDALONE
|
|
|
|
ifeq ($(UNAME_S),Darwin)
|
|
CLANG_VER := $(shell clang --version|head -n 1| sed 's/.*version \([0-9][0-9]*\).*/\1/' )
|
|
CLANG_GT_9 := $(shell [ $(CLANG_VER) -gt 9 ] && echo true )
|
|
ifeq ($(CLANG_GT_9),true)
|
|
CFLAGS += -mmacosx-version-min=10.7 -stdlib=libc++
|
|
else
|
|
CFLAGS += -mmacosx-version-min=10.5
|
|
endif
|
|
SWELL_OBJS += swell-wnd.o swell-gdi.o swell.o swell-misc.o swell-dlg.o swell-menu.o swell-kb.o
|
|
LFLAGS += -lobjc -framework Cocoa -framework Carbon
|
|
else
|
|
|
|
CFLAGS += -DSWELL_LICE_GDI -DSWELL_EXTRA_MINIMAL
|
|
ifdef GDK2
|
|
CFLAGS += -DSWELL_TARGET_GDK=2 $(shell pkg-config --cflags gdk-2.0)
|
|
LFLAGS += $(shell pkg-config --libs gdk-2.0) -lX11 -lXi
|
|
else
|
|
CFLAGS += -DSWELL_TARGET_GDK=3 $(shell pkg-config --cflags gdk-3.0)
|
|
LFLAGS += $(shell pkg-config --libs gdk-3.0) -lX11 -lXi
|
|
endif
|
|
ifndef NOFREETYPE
|
|
CFLAGS += -DSWELL_FREETYPE $(shell pkg-config --cflags freetype2)
|
|
LFLAGS += $(shell pkg-config --libs freetype2)
|
|
endif
|
|
|
|
SWELL_OBJS += swell-wnd-generic.o swell-gdi-lice.o swell.o swell-misc-generic.o \
|
|
swell-dlg-generic.o swell-menu-generic.o swell-kb-generic.o \
|
|
swell-gdi-generic.o swell-ini.o swell-generic-gdk.o
|
|
|
|
LFLAGS += -ldl -lGL
|
|
endif
|
|
|
|
endif
|
|
|
|
ifdef PORTABLE
|
|
CFLAGS += -DEEL_TARGET_PORTABLE
|
|
else
|
|
ifeq ($(UNAME_S),Darwin)
|
|
ifeq ($(ARCH),x86_64)
|
|
ASM_FMT = macho64
|
|
NASM_OPTS = --prefix _
|
|
OBJS2 += asm-nseel-x64-sse.o
|
|
endif
|
|
endif
|
|
ifeq ($(UNAME_S),Linux)
|
|
ifeq ($(ARCH),x86_64)
|
|
ASM_FMT = elf64
|
|
NASM_OPTS =
|
|
OBJS2 += asm-nseel-x64-sse.o
|
|
endif
|
|
endif
|
|
|
|
asm-nseel-x64-sse.o: asm-nseel-x64-sse.asm
|
|
nasm -D AMD64ABI -f $(ASM_FMT) $(NASM_OPTS) asm-nseel-x64-sse.asm
|
|
|
|
endif
|
|
CXXFLAGS=$(CFLAGS)
|
|
|
|
ifeq ($(CXX),g++)
|
|
GCC_VER := $(shell $(CXX) --version|head -n 1| sed 's/.* \([0-9][0-9]*\)[.][0-9.]*/\1/' )
|
|
GCC_GT_10 := $(shell [ "$(GCC_VER)" -gt 10 ] && echo true )
|
|
ifeq ($(GCC_GT_10),true)
|
|
CXXFLAGS += -std=c++03
|
|
endif
|
|
endif
|
|
|
|
gen-yacc:
|
|
yacc -v -d eel2.y
|
|
|
|
gen-lex: # the output of this, lex.nseel.c, is unused because we have a handwritten parser instead
|
|
flex eel2.l
|
|
|
|
%.o : %.mm
|
|
$(CXX) $(CXXFLAGS) -c -o $@ $^
|
|
|
|
loose_eel: loose_eel.o $(OBJS) $(OBJS2) $(SWELL_OBJS) $(LICE_OBJS)
|
|
g++ -o $@ $^ $(CXXFLAGS) $(LFLAGS)
|
|
|
|
eel_pp: eel_pp.o $(OBJS) $(OBJS2)
|
|
g++ -o $@ $^ $(CXXFLAGS) $(LFLAGS)
|
|
|
|
clean:
|
|
-rm -f -- loose_eel loose_eel.o eel_pp.o eel_pp $(OBJS) $(SWELL_OBJS) $(LICE_OBJS)
|
|
|
|
.PHONY: clean gen-lex gen-yacc
|