From 7210f5849e4d9e56d55adcc4b7af67067f0ecde9 Mon Sep 17 00:00:00 2001 From: Matthew Ellison Date: Mon, 30 Apr 2018 13:32:24 -0400 Subject: [PATCH] Added macros to help simplify adding ciphers in future --- makefile | 77 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 33 deletions(-) diff --git a/makefile b/makefile index d6b6323..79ce048 100644 --- a/makefile +++ b/makefile @@ -1,62 +1,73 @@ +#Macros that are corss platform +LIBFLAGS = -shared -std=c++11 -O3 -fPIC +EXEFLAGS = -std=c++11 -O3 +TESTFLAGS = $(EXEFLAGS) -DTEST_VERSION +DEBUGFLAGS = $(TESTFLAGS) -g +LIBDIR = ./lib +CIPHERS = Caesar Playfair Vigenere Atbash +LIBFILES = $(patsubst %,SourceFiles/%.cpp,$(CIPHERS)) + #For Linux -LinuxAll: libCaesar.a libPlayfair.a libVigenere.a libAtbash.a Ciphers -LinuxTest: libCaesar.a libPlayfair.a libVigenere.a libAtbash.a CiphersTest -LinuxDebug: CiphersDBG +allLinux: libsLinux Ciphers +testLinux: libsLinux CiphersTest +debugLinux: CiphersDBG +libsLinux: directory $(patsubst %, $(LIBDIR)/lib%.a,$(CIPHERS)) +LINUXLIBS = $(patsubst %, -l%,$(CIPHERS)) #For Windows -WindowsAll: libCaesar.lib libPlayfair.lib libVigenere.lib libAtbash.lib Ciphers.exe -WindowsTest: libCaesar.lib libPlayfair.lib libVigenere.lib libAtbash.lib CiphersTest.exe -WindowsDebug: CipherDBG.exe +allWindows: libsWindows Ciphers.exe +testWindows: libsWindows CiphersTest.exe +debugWindows: CipherDBG.exe +#Keeping the old one for now, until I can test it to make sure it works +#WindowsLibs: libCaesar.lib libPlayfair.lib libVigenere.lib libAtbash.lib +#WINDOWSLIBS = -llibCaesar -llibPlayfair -llibVigenere -llibAtbash +libsWindows: directory $(patsubst %, $(LIBDIR)/lib%.lib,$(CIPHERS)) +WINDOWSLIBS = $(patsubst %, -llib%,$(CIPHERS)) directory: - mkdir -p lib + mkdir -p $(LIBDIR) #Linux -libCaesar.a: SourceFiles/Caesar.cpp directory - $(CXX) -shared -std=c++11 -O3 -fPIC -o lib/$@ SourceFiles/Caesar.cpp -libPlayfair.a: SourceFiles/Playfair.cpp directory - $(CXX) -shared -std=c++11 -O3 -fPIC -o lib/$@ SourceFiles/Playfair.cpp - -libVigenere.a: SourceFiles/Vigenere.cpp directory - $(CXX) -shared -std=c++11 -O3 -fPIC -o lib/$@ SourceFiles/Vigenere.cpp - -libAtbash.a: SourceFiles/Atbash.cpp directory - $(CXX) -shared -std=c++11 -O3 -fPIC -o lib/$@ SourceFiles/Atbash.cpp +$(LIBDIR)/lib%.a: SourceFiles/%.cpp + $(CXX) $(LIBFLAGS) -o $@ $< Ciphers: main.cpp helperFunctions.hpp - $(CXX) -O3 -std=c++11 -o $@ main.cpp -L ./lib -lCaesar -lPlayfair -lVigenere -lAtbash + $(CXX) $(EXEFLAGS) -o $@ main.cpp -L $(LIBDIR) $(LINUXLIBS) CiphersTest: main.cpp - $(CXX) -O3 -std=c++11 -DTEST_VERSION -o Ciphers $< -L ./lib -lCaesar -lPlayfair -lVigenere -lAtbash + $(CXX) $(TESTFLAGS) -o Ciphers $< -L $(LIBDIR) $(LINUXLIBS) -CiphersDBG: main.cpp SourceFiles/Caesar.cpp SourceFiles/Playfair.cpp SourceFiles/Vigenere.cpp SourceFiles/Atbash.cpp - $(CXX) -O3 -std=c++11 -g -DTEST_VERSION -o $@ $< +CiphersDBG: main.cpp $(LIBFILES) + $(CXX) $(DEBUGFLAGS) -o $@ $< #Windows -libCaesar.lib: SourceFiles/Caesar.cpp directory - g++ -shared -std=c++11 -O3 -fPIC -o lib/$@ SourceFiles/Caesar.cpp +#libCaesar.lib: SourceFiles/Caesar.cpp directory +# g++ $(LIBFLAGS) -o lib/$@ SourceFiles/Caesar.cpp -libPlayfair.lib: SourceFiles/Playfair.cpp directory - g++ -shared -std=c++11 -O3 -fPIC -o lib/$@ SourceFiles/Playfair.cpp +#libPlayfair.lib: SourceFiles/Playfair.cpp directory +# g++ -shared -std=c++11 -O3 -fPIC -o lib/$@ SourceFiles/Playfair.cpp -libVigenere.lib: SourceFiles/Vigenere.cpp directory - g++ -shared -std=c++11 -O3 -fPIC -o lib/$@ SourceFiles/Vigenere.cpp +#libVigenere.lib: SourceFiles/Vigenere.cpp directory +# g++ -shared -std=c++11 -O3 -fPIC -o lib/$@ SourceFiles/Vigenere.cpp -libAtbash.lib: SourceFiles/Atbash.cpp directory - g++ -shared -std=c++11 -O3 -fPIC -o lib/$@ SourceFiles/Vigenere.cpp +#libAtbash.lib: SourceFiles/Atbash.cpp directory +# g++ -shared -std=c++11 -O3 -fPIC -o lib/$@ SourceFiles/Atbash.cpp + +$(LIBDIR)/lib%.lib: SourceFiles/%.cpp + g++ $(LIBFLAGS) -o $@ $< Ciphers.exe: main.cpp helperFunctions.hpp - g++ -std=c++11 -O3 -o $@ main.cpp -L ./lib -llibCaesar -llibPlayfair -llibVigenere -llibAtbash + g++ $(EXEFLAGS) -o $@ main.cpp -L $(LIBDIR) $(WINDOWSLIBS) CiphersTest.exe: main.cpp - g++ -std=c++11 -O3 -DTEST_VERSION -o Ciphers.exe $< -L ./lib -llibCaesar -llibPlayfair -llibVigenere -llibAtbash + g++ $(TESTFLAGS) -o Ciphers.exe $< -L $(LIBDIR) $(WINDOWSLIBS) -CiphersDBG.exe: main.cpp SourceFiles/Caesar.cpp SourceFiles/Playfair.cpp SourceFiles/Vigenere.cpp SourceFiles/Vigenere.cpp SourceFiles/Atbash.cpp - g++ -std=c++11 -O3 -g -DTEST_VERSION -o $@ $< +CiphersDBG.exe: main.cpp $(LIBFILES) + g++ $(DEBUGFLAGS) -o $@ $< #Cleaning Shop