Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
#basic makefile for nsm
objects=nsm.o ConsoleColor.o DateTimeInfo.o Directory.o Expr.o ExprtkFns.o Filename.o FileSystem.o Getline.o GitInfo.o HashTk.o Lolcat.o LuaFns.o Lua.o NumFns.o Pagination.o Parser.o Path.o ProjectInfo.o Quoted.o StrFns.o SystemInfo.o Title.o TrackedInfo.o Variables.o WatchList.o
cppfiles=nsm.cpp ConsoleColor.cpp DateTimeInfo.cpp Directory.cpp Expr.cpp ExprtkFns.cpp Filename.cpp FileSystem.cpp Getline.cpp GitInfo.cpp hashtk/HashTk.cpp Lolcat.cpp LuaFns.cpp Lua.cpp NumFns.cpp Pagination.cpp Parser.cpp Path.cpp ProjectInfo.cpp Quoted.cpp StrFns.cpp SystemInfo.cpp Title.cpp TrackedInfo.cpp Variables.cpp WatchList.cpp
DESTDIR?=
PREFIX?=/usr/local
BINDIR=${DESTDIR}${PREFIX}/bin
LIBDIR=${DESTDIR}${PREFIX}/lib
CXX?=g++
CXXFLAGS+=-std=c++11 -Wall -Wextra -pedantic -O3 -Dexprtk_disable_caseinsensitivity
#CXXFLAGS=-std=c++11 -Wall -Wextra -Werror -pedantic -O3
LDFLAGS+=-pthread
ifeq ($(OS),Windows_NT)
detected_OS := Windows
else
detected_OS := $(shell sh -c 'uname 2>/dev/null || echo Unknown')
endif
ifeq ($(CXX),clang)
ifeq ($(OS),FreeBSD)
else
CXXFLAGS+= -Qunused-arguments -lstdc++
LDFLAGS+= -lm
endif
endif
ifeq ($(detected_OS),Darwin) # Mac OSX
CXXFLAGS+= -pagezero_size 10000 -image_base 10000000 -Qunused-arguments
else ifeq ($(detected_OS),Windows) # Windows
#use these flags for a smaller binary
CXXFLAGS+= -s -Wa,-mbig-obj -Wno-cast-function-type -Wno-error=cast-function-type
#flags to use when compiling for Chocolatey & Releases
#this likely causes problems with lua throwing errors
#CXXFLAGS+= -s -Wa,-mbig-obj -static-libgcc -static-libstdc++ -Wno-cast-function-type -Wno-error=cast-function-type
else ifeq ($(detected_OS),FreeBSD) # FreeBSD
CXX=clang
CXXFLAGS+= -s -Qunused-arguments -lstdc++
else # *nix
#use these flags for a smaller binary
CXXFLAGS+= -s
#flags to use when compiling for Netlify & Releases
#this does not work well with lua throwing errors!
#CXXFLAGS+= -s -static-libgcc -static-libstdc++
#CXXFLAGS+= -s -unwind-tables -funwind-tables -fexceptions -static-libgcc -static-libstdc++
endif
ifeq ($(VERCEL),1)
CXXFLAGS+= -D__NO_CLEAR_LINES__ -D__NO_COLOUR__ -D__NO_PROGRESS__
else
ifeq ($(NO_CLEAR_LINES),1)
CXXFLAGS+= -D__NO_CLEAR_LINES__
endif
ifeq ($(NO_COLOR),1)
CXXFLAGS+= -D__NO_COLOUR__
else ifeq ($(NO_COLOUR),1)
CXXFLAGS+= -D__NO_COLOUR__
endif
ifeq ($(NO_PROGRESS),1)
CXXFLAGS+= -D__NO_PROGRESS__
endif
endif
ifeq ($(BUNDLED),0)
_BUNDLED_=0
ifeq ($(detected_OS),Windows) # Windows
_BUNDLED_=1
WAS_UNBUNDLED=1
ifneq ($(LUA_VERSION),)
CXXFLAGS+= -D__BUNDLED__ -D__LUA_VERSION_5_3__
LDFLAGS+= -LLua-5.3/src -llua
else
CXXFLAGS+= -D__BUNDLED__ -D__LUAJIT_VERSION_2_1__
LDFLAGS+= -LLuaJIT/src -llua51
endif
else ifeq ($(LUA_VERSION),x)
ifeq ($(detected_OS),FreeBSD) # FreeBSD
CXXFLAGS+= -D__LUA_VERSION_x__
LDFLAGS+= -L/usr/local/lib -llua -lm -ldl
else # *nix
CXXFLAGS+= -D__LUA_VERSION_x__
LDFLAGS+= -L/usr/local/lib -llua -ldl
endif
else ifeq ($(LUA_VERSION),5.4)
ifeq ($(detected_OS),FreeBSD) # FreeBSD
CXXFLAGS+= -D__LUA_VERSION_5_4__
LDFLAGS+= -L/usr/local/lib -llua-5.4 -lm -ldl
else # *nix
CXXFLAGS+= -D__LUA_VERSION_5_4__
LDFLAGS+= -L/usr/local/lib -llua-5.4 -ldl
endif
else ifeq ($(LUA_VERSION),5.3)
ifeq ($(detected_OS),FreeBSD) # FreeBSD
CXXFLAGS+= -D__LUA_VERSION_5_3__
LDFLAGS+= -L/usr/local/lib -llua-5.3 -lm -ldl
else # *nix
CXXFLAGS+= -D__LUA_VERSION_5_3__
LDFLAGS+= -L/usr/local/lib -llua-5.3 -ldl
endif
else ifeq ($(LUA_VERSION),5.2)
ifeq ($(detected_OS),FreeBSD) # FreeBSD
CXXFLAGS+= -D__LUA_VERSION_5_2__
LDFLAGS+= -L/usr/local/lib -llua-5.2 -lm -ldl
else # *nix
CXXFLAGS+= -D__LUA_VERSION_5_2__
LDFLAGS+= -L/usr/local/lib -llua-5.2 -ldl
endif
else ifeq ($(LUA_VERSION),5.1)
ifeq ($(detected_OS),FreeBSD) # FreeBSD
CXXFLAGS+= -D__LUA_VERSION_5_1__
LDFLAGS+= -L/usr/local/lib -llua-5.1 -lm -ldl
else # *nix
CXXFLAGS+= -D__LUA_VERSION_5_1__
LDFLAGS+= -L/usr/local/lib -llua-5.1 -ldl
endif
else ifeq ($(LUAJIT_VERSION),2.0)
ifeq ($(detected_OS),FreeBSD) # FreeBSD
CXXFLAGS+= -D__LUAJIT_VERSION_2_0__
LDFLAGS+= -ldl -lm -L/usr/local/lib -lluajit-5.1
else # *nix
CXXFLAGS+= -D__LUAJIT_VERSION_2_0__
LDFLAGS+= -ldl -L/usr/local/lib -lluajit-5.1
endif
else
ifeq ($(detected_OS),FreeBSD) # FreeBSD
CXXFLAGS+= -D__LUAJIT_VERSION_2_1__
LDFLAGS+= -ldl -lm -L/usr/local/lib -lluajit-5.1
else # *nix
CXXFLAGS+= -D__LUAJIT_VERSION_2_1__
LDFLAGS+= -ldl -L/usr/local/lib -lluajit-5.1
endif
endif
else
_BUNDLED_=1
ifeq ($(LUA_VERSION),5.3)
CXXFLAGS+= -D__BUNDLED__ -D__LUA_VERSION_5_3__
ifeq ($(detected_OS),Windows) # Windows
LDFLAGS+= -LLua-5.3/src -llua
#LDFLAGS+= -LLua-5.3/src -llua
else ifeq ($(detected_OS),FreeBSD) # FreeBSD
LDFLAGS+= -LLua-5.3/src -llua -ldl -lm
else # *nix/Vercel
LDFLAGS+= -LLua-5.3/src -llua -ldl
endif
else
CXXFLAGS+= -D__BUNDLED__ -D__LUAJIT_VERSION_2_1__
ifeq ($(detected_OS),Windows) # Windows
LDFLAGS+= -LLuaJIT/src -llua51
#LDFLAGS+= -L. -llua51
else ifeq ($(detected_OS),FreeBSD) # FreeBSD
LDFLAGS+= ./LuaJIT/src/libluajit.a -ldl -lm
#LDFLAGS+= -ldl -lm -LLuaJIT/src -lluajit
else # *nix/Vercel
LDFLAGS+= ./LuaJIT/src/libluajit.a -ldl
#LDFLAGS+= -ldl -LLuaJIT/src -lluajit
endif
endif
endif
#ifeq ($(detected_OS),Linux) # Linux
#else ifeq ($(detected_OS),GNU) # Debian GNU Hurd
#else ifeq ($(detected_OS),GNU/kFreeBSD) # Debian kFreeBSD
#else ifeq ($(detected_OS),FreeBSD) # FreeBSD
#else ifeq ($(detected_OS),NetBSD) # NetBSD
#else ifeq ($(detected_OS),DragonFly) # DragonFly
#else ifeq ($(detected_OS),Haiku) # Haiku
#endif
###
all: bundled-msg make-lua nsm
###
bundled-msg:
ifeq ($(WAS_UNBUNDLED) $(LUA_VERSION),1 5.3)
@echo "only bundled option is available on Windows"
@echo "compiling with bundled Lua 5.3"
else ifeq ($(WAS_UNBUNDLED),1)
@echo "only bundled option is available on Windows"
@echo "compiling with bundled LuaJIT"
endif
###
make-lua:
ifeq ($(_BUNDLED_),0)
else ifeq ($(LUA_VERSION) $(detected_OS),5.3 FreeBSD) # FreeBSD
cd Lua-5.3 && $(MAKE) freebsd
else ifeq ($(LUA_VERSION) $(detected_OS),5.3 Linux) # Linux
cd Lua-5.3 && $(MAKE) linux
else ifeq ($(LUA_VERSION) $(detected_OS),5.3 Darwin) # Mac OSX
cd Lua-5.3 && $(MAKE) macosx
else ifeq ($(LUA_VERSION) $(detected_OS),5.3 Windows) # Windows
cd Lua-5.3 && $(MAKE) mingw
copy Lua-5.3\src\lua53.dll .
else ifeq ($(LUA_VERSION) $(POSIX),5.3 1) # Posix
cd Lua-5.3 && $(MAKE) posix
else ifeq ($(LUA_VERSION),5.3) # Generic
cd Lua-5.3 && $(MAKE) generic
else ifeq ($(detected_OS),Darwin) # Mac OSX
cd LuaJIT && $(MAKE) MACOSX_DEPLOYMENT_TARGET=10.9
else ifeq ($(detected_OS),Windows) # Windows
cd LuaJIT && $(MAKE)
copy LuaJIT\src\lua51.dll .
else # FreeBSD/Linux/Posix/Unix
cd LuaJIT && $(MAKE)
endif
###
HashTk.o: hashtk/HashTk.cpp hashtk/HashTk.h
$(CXX) $(CXXFLAGS) -c -o $@ $<
###
nsm: $(objects)
ifeq ($(detected_OS),Windows) # Windows
$(CXX) $(CXXFLAGS) $(objects) -o nsm $(LDFLAGS)
copy nsm.exe nift.exe
else
$(CXX) $(CXXFLAGS) $(objects) -o nsm $(LDFLAGS)
cp nsm nift
endif
nsm.o: nsm.cpp GitInfo.o ProjectInfo.o
$(CXX) $(CXXFLAGS) -c -o $@ $<
ProjectInfo.o: ProjectInfo.cpp ProjectInfo.h GitInfo.o Parser.o WatchList.o Timer.h
$(CXX) $(CXXFLAGS) -c -o $@ $<
GitInfo.o: GitInfo.cpp GitInfo.h ConsoleColor.o FileSystem.o
$(CXX) $(CXXFLAGS) -c -o $@ $<
Parser.o: Parser.cpp Parser.h DateTimeInfo.o Expr.o ExprtkFns.o Getline.o HashTk.o LuaFns.o Lua.o Pagination.o SystemInfo.o TrackedInfo.o Variables.o
$(CXX) $(CXXFLAGS) -c -o $@ $<
WatchList.o: WatchList.cpp WatchList.h FileSystem.o
$(CXX) $(CXXFLAGS) -c -o $@ $<
Getline.o: Getline.cpp Getline.h ConsoleColor.o FileSystem.o Lolcat.o StrFns.o Consts.h
$(CXX) $(CXXFLAGS) -c -o $@ $<
Lolcat.o: Lolcat.cpp Lolcat.h FileSystem.o
$(CXX) $(CXXFLAGS) -c -o $@ $<
LuaFns.o: LuaFns.cpp LuaFns.h Lua.o ConsoleColor.o ExprtkFns.o FileSystem.o Path.o Quoted.o Variables.o Consts.h
$(CXX) $(CXXFLAGS) -c -o $@ $<
Lua.o: Lua.cpp Lua.h StrFns.o LuaJIT/src/lua.hpp Lua-5.3/src/lua.hpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
ExprtkFns.o: ExprtkFns.cpp ExprtkFns.h Expr.o FileSystem.o Quoted.o Variables.o Consts.h
$(CXX) $(CXXFLAGS) -c -o $@ $<
Expr.o: Expr.cpp Expr.h exprtk/exprtk.h
$(CXX) $(CXXFLAGS) -c -o $@ $<
FileSystem.o: FileSystem.cpp FileSystem.h Path.o SystemInfo.o
$(CXX) $(CXXFLAGS) -c -o $@ $<
Pagination.o: Pagination.cpp Pagination.h Path.o
$(CXX) $(CXXFLAGS) -c -o $@ $<
DateTimeInfo.o: DateTimeInfo.cpp DateTimeInfo.h
$(CXX) $(CXXFLAGS) -c -o $@ $<
TrackedInfo.o: TrackedInfo.cpp TrackedInfo.h Path.o Title.o
$(CXX) $(CXXFLAGS) -c -o $@ $<
Variables.o: Variables.cpp Variables.h NumFns.o Path.o StrFns.o
$(CXX) $(CXXFLAGS) -c -o $@ $<
NumFns.o: NumFns.cpp NumFns.h
$(CXX) $(CXXFLAGS) -c -o $@ $<
Path.o: Path.cpp Path.h ConsoleColor.o Directory.o Filename.o SystemInfo.o
$(CXX) $(CXXFLAGS) -c -o $@ $<
StrFns.o: StrFns.cpp StrFns.h
$(CXX) $(CXXFLAGS) -c -o $@ $<
Directory.o: Directory.cpp Directory.h Quoted.h
$(CXX) $(CXXFLAGS) -c -o $@ $<
Filename.o: Filename.cpp Filename.h Quoted.h
$(CXX) $(CXXFLAGS) -c -o $@ $<
SystemInfo.o: SystemInfo.cpp SystemInfo.h
$(CXX) $(CXXFLAGS) -c -o $@ $<
Title.o: Title.cpp Title.h ConsoleColor.o Quoted.o
$(CXX) $(CXXFLAGS) -c -o $@ $<
ConsoleColor.o: ConsoleColor.cpp ConsoleColor.h
$(CXX) $(CXXFLAGS) -c -o $@ $<
Quoted.o: Quoted.cpp Quoted.h
$(CXX) $(CXXFLAGS) -c -o $@ $<
###
install:
ifeq ($(detected_OS) $(LUA_VERSION),Windows 5.3) # Windows with Lua 5.3
@echo "Will need to manually copy/move 'lua53.dll', 'nsm.exe' "
@echo "and 'nift.exe' to a location searched by your path "
@echo "variable, for example try 'C:\Windows\System32'"
else ifeq ($(detected_OS),Windows) # Windows with LuaJIT
@echo "Will need to manually copy/move 'lua51.dll', 'nsm.exe' "
@echo "and 'nift.exe' to a location searched by your path "
@echo "variable, for example try 'C:\Windows\System32'"
else # FreeBSD/Linux/OSX/Posix/Unix
mkdir -p ${BINDIR}
chmod 755 nsm
mv nift ${BINDIR}
mv nsm ${BINDIR}
endif
uninstall:
ifeq ($(detected_OS) $(LUA_VERSION),Windows 5.3) # Windows with Lua 5.3
@echo "Will need to manually remove 'lua53.dll', 'nsm.exe' "
@echo "and 'nift.exe' from install location, typically "
@echo "'C:\Windows\System32'"
else ifeq ($(detected_OS),Windows) # Windows
@echo "Will need to manually remove 'lua51.dll', 'nsm.exe' "
@echo "and 'nift.exe' from install location, typically "
@echo "'C:\Windows\System32'"
else # FreeBSD/Linux/OSX/Posix/Unix
rm ${BINDIR}/nift
rm ${BINDIR}/nsm
endif
git-bash-install:
chmod 755 nsm
mv nift ~/bin
mv nsm ~/bin
git-bash-uninstall:
rm ~/bin/nift
rm ~/bin/nsm
clean:
ifeq ($(detected_OS),Windows) # Windows
del $(objects)
cd Lua-5.3 && $(MAKE) clean
#cd LuaJIT && $(MAKE) clean #has been fixed in development version, soon!
else # FreeBSD/Linux/OSX/Posix/Unix
rm -f $(objects)
cd Lua-5.3 && $(MAKE) clean
cd LuaJIT && $(MAKE) clean
endif
clean-all: clean
ifeq ($(detected_OS),Windows) # Windows
del nsm.exe nift.exe lua51.dll
else # *nix
rm -f nsm nift
endif