A lot of makefile tweaks

This commit is contained in:
Timothy Warren 2015-04-22 21:06:35 -04:00
parent a6c99dfba1
commit 57cafd1fe1
7 changed files with 44 additions and 35 deletions

View File

@ -1,14 +1,8 @@
#Try using clang, if it's installed CXX += -I include
ifneq (`command -v clang`,)
CC = clang
CXX = clang++
endif
CXX += -Iinclude SOURCES = $(wildcard include/**/*.cpp include/*.cpp src/settings/*.cpp)
SOURCES = $(wildcard include/**/*.cpp src/network/*.cpp src/settings/*.cpp include/*.cpp)
OBJECTS = $(patsubst %.cpp,%.o, $(SOURCES)) OBJECTS = $(patsubst %.cpp,%.o, $(SOURCES))
TARGET = build/Tyro.a TYRO_LIB = build/Tyro.a
JSON_FILES = $(patsubst config/%.json,%.json, $(wildcard config/*.json)) JSON_FILES = $(patsubst config/%.json,%.json, $(wildcard config/*.json))
@ -16,12 +10,10 @@ PROGRAM_SRC = $(wildcard src/*.cpp src/widgets/*.cpp)
PROGRAM = build/Tyro PROGRAM = build/Tyro
PROGRAM_OBJECTS = $(patsubst %.cpp,%.o, $(PROGRAM_SRC)) PROGRAM_OBJECTS = $(patsubst %.cpp,%.o, $(PROGRAM_SRC))
WX_LDLIBS = $(shell wx-config --libs base core aui stc adv) -lssh2 WX_LDLIBS = $(shell wx-config --libs base core aui stc adv)
WX_CXXFLAGS = $(shell wx-config --cxxflags) WX_CXXFLAGS = $(shell wx-config --cxxflags)
WX_RES = $(shell wx-config --rescomp) WX_RES = $(shell wx-config --rescomp)
LDLIBS = $(TARGET)
DEV_CXXFLAGS = -g -Wall -Wextra -DDEBUG DEV_CXXFLAGS = -g -Wall -Wextra -DDEBUG
CXXFLAGS = -Os -DNDEBUG CXXFLAGS = -Os -DNDEBUG
@ -30,17 +22,22 @@ TESTS = $(patsubst %.cpp,%,$(TEST_SRC))
OS ?= $(shell uname -s) OS ?= $(shell uname -s)
LDLIBS =
ifeq ($(OS),Darwin) ifeq ($(OS),Darwin)
CXX += -std=c++98 -mmacosx-version-min=10.5 CXX += -std=c++98 -mmacosx-version-min=10.5
else endif
ifeq ($(OS),Linux)
CXX += -std=c++11 CXX += -std=c++11
endif endif
ifeq ($(OS),Windows_NT) ifeq ($(OS),Windows_NT)
LDLIBS += -L/lib CXX += -I/include -DWIN32
LDLIBS += -L/lib -lwsock32
endif endif
all: build json_wrapper $(TARGET) $(PROGRAM) LDLIBS += -lssh2
all: build json_wrapper $(TYRO_LIB) $(PROGRAM)
dev: CXXFLAGS= $(DEV_CXXFLAGS) dev: CXXFLAGS= $(DEV_CXXFLAGS)
dev: all dev: all
@ -54,14 +51,19 @@ json_wrapper_build:
build: build:
@mkdir -p build @mkdir -p build
$(TARGET): $(OBJECTS) sftp_o:
$(CXX) $(CXXFLAGS) $(LDLIBS) -c -o src/network/SFTP.o src/network/SFTP.cpp
$(TYRO_LIB): build sftp_o
$(TYRO_LIB): OBJECTS += src/network/SFTP.o
$(TYRO_LIB): $(OBJECTS)
ar rcs $@ $(OBJECTS) ar rcs $@ $(OBJECTS)
ranlib $@ ranlib $@
$(PROGRAM): CXXFLAGS += $(WX_CXXFLAGS) $(TARGET) $(PROGRAM): CXXFLAGS += $(WX_CXXFLAGS) $(TYRO_LIB)
$(PROGRAM): $(PROGRAM):
$(CXX) $(WX_CXXFLAGS) $(PROGRAM_SRC) $(LDLIBS) $(WX_LDLIBS) -o $(PROGRAM) $(CXX) $(CXXFLAGS) $(PROGRAM_SRC) $(TYRO_LIB) $(WX_LDLIBS) -o $(PROGRAM)
run: run:
@ -91,7 +93,7 @@ exe: msw_resource all
# OS X application bundle # OS X application bundle
Tyro.app: all resources/platform/osx/Info.plist Tyro.app: all resources/platform/osx/Info.plist
SetFile -t APPL $(TARGET) SetFile -t APPL $(TYRO_LIB)
-mkdir Tyro.app -mkdir Tyro.app
-mkdir Tyro.app/Contents -mkdir Tyro.app/Contents
-mkdir Tyro.app/Contents/MacOS -mkdir Tyro.app/Contents/MacOS
@ -102,8 +104,10 @@ Tyro.app: all resources/platform/osx/Info.plist
cp build/Tyro Tyro.app/Contents/MacOS/Tyro cp build/Tyro Tyro.app/Contents/MacOS/Tyro
cp resources/platform/osx/tyro.icns Tyro.app/Contents/Resources/ cp resources/platform/osx/tyro.icns Tyro.app/Contents/Resources/
$(TESTS): $(TYRO_LIB)
$(foreach var, $(TEST_SRC), $(CXX) $(CXXFLAGS) $(var) $(TYRO_LIB) -o $(patsubst %.cpp,%, $(var));)
.PHONY: tests .PHONY: tests
tests: LDLIBS = $(TARGET) -lssh2
tests: $(TESTS) tests: $(TESTS)
sh ./tests/runtests.sh sh ./tests/runtests.sh
@ -114,6 +118,6 @@ clean:
rm -f config/*_json.h rm -f config/*_json.h
rm -rf *.o rm -rf *.o
rm -rf Tyro.app rm -rf Tyro.app
rm -rf build $(OBJECTS) $(PROGRAM) $(TARGET) $(TESTS) rm -rf build $(OBJECTS) $(PROGRAM) $(TYRO_LIB) $(TESTS)
find . -name "*.gc*" -exec rm {} \; find . -name "*.gc*" -exec rm {} \;
rm -rf `find . -name "*.dSYM" -print` rm -rf `find . -name "*.dSYM" -print`

View File

@ -23,12 +23,12 @@
}, },
"foreground": { "foreground": {
"default": [101, 123, 131], "default": [101, 123, 131],
"keyword1": [133, 153, 0], "keyword1": [220, 50, 47],
"keyword2": [42, 161, 152], "keyword2": [203, 75, 22],
"keyword3": [181, 137, 0], "keyword3": [181, 137, 0],
"keyword4": [181, 137, 0], "keyword4": [133, 153, 0],
"keyword5": [181, 137, 0], "keyword5": [42, 161, 152],
"keyword6": [181, 137, 0], "keyword6": [38, 139, 210],
"comment": [147, 161, 161], "comment": [147, 161, 161],
"comment_line": [147, 161, 161], "comment_line": [147, 161, 161],
"comment_doc": [131, 148, 150], "comment_doc": [131, 148, 150],
@ -55,6 +55,7 @@
"error": [220, 50, 47] "error": [220, 50, 47]
}, },
"bold": { "bold": {
"keyword1": true,
"keyword2": true, "keyword2": true,
"operator": true, "operator": true,
"label": true, "label": true,
@ -71,4 +72,4 @@
"background": [238, 232, 213] "background": [238, 232, 213]
} }
} }
} }

View File

@ -73,7 +73,7 @@ license you like.
#include "json/json.h" #include <json/json.h>
#ifndef JSON_IS_AMALGAMATION #ifndef JSON_IS_AMALGAMATION
#error "Compile with -I PATH_TO_JSON_DIRECTORY" #error "Compile with -I PATH_TO_JSON_DIRECTORY"

View File

@ -4,6 +4,7 @@
#ifndef TYRO_COMMON_H #ifndef TYRO_COMMON_H
#define TYRO_COMMON_H #define TYRO_COMMON_H
// C++ Standard Lib includes
#include <iostream> #include <iostream>
#include <iomanip> #include <iomanip>
#include <fstream> #include <fstream>
@ -14,5 +15,12 @@
using namespace std; using namespace std;
// JSON
#include <json/json.h>
typedef Json::Value JsonValue;
typedef Json::Reader JsonReader;
typedef Json::Writer JsonWriter;
#endif // TYRO_COMMON_H #endif // TYRO_COMMON_H

View File

@ -15,6 +15,7 @@
#ifdef WIN32 #ifdef WIN32
// Define this so I actually get functions out of the windows header file // Define this so I actually get functions out of the windows header file
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0501 #define _WIN32_WINNT 0x0501
#include <Ws2tcpip.h> #include <Ws2tcpip.h>
#else #else

View File

@ -2,11 +2,6 @@
#define TYRO_CONFIG_H #define TYRO_CONFIG_H
#include "../common.h" #include "../common.h"
#include <json/json.h>
typedef Json::Value JsonValue;
typedef Json::Reader JsonReader;
typedef Json::Writer JsonWriter;
class TyroConfig { class TyroConfig {
public: public:

View File

@ -134,7 +134,7 @@ void EditPane::ApplyTheme(string lang, string theme)
JsonValue keywords_array = this->GetKeywordList(lang); JsonValue keywords_array = this->GetKeywordList(lang);
if (keywords_array.isArray()) if (keywords_array.isArray())
{ {
for(int i = 0; i < keywords_array.size(); i++) for(unsigned int i = 0; i < keywords_array.size(); i++)
{ {
this->SetKeyWords(i, keywords_array[i].asString()); this->SetKeyWords(i, keywords_array[i].asString());
} }