mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-01-11 18:00:34 +00:00
Merge pull request #105 from Quuxplusone/mymake
Make "mymake" work on OSX, and add it to Travis
This commit is contained in:
commit
4d54057108
44
.travis.yml
44
.travis.yml
@ -85,6 +85,41 @@ matrix:
|
||||
TRAVIS_OS_NAME=linux
|
||||
TRAVIS_COMPILER_NAME=emscripten
|
||||
TRAVIS_BUILD_SYSTEM=emscripten
|
||||
- os: osx
|
||||
compiler: clang
|
||||
env: >-
|
||||
TRAVIS_OS_NAME=osx
|
||||
TRAVIS_COMPILER_NAME=clang
|
||||
TRAVIS_BUILD_SYSTEM=mymake
|
||||
HYPERROGUE_USE_GLEW=1
|
||||
HYPERROGUE_USE_PNG=1
|
||||
- os: osx
|
||||
compiler: clang
|
||||
env: >-
|
||||
TRAVIS_OS_NAME=osx
|
||||
TRAVIS_COMPILER_NAME=clang
|
||||
TRAVIS_BUILD_SYSTEM=mymake
|
||||
HYPERROGUE_USE_GLEW=1
|
||||
HYPERROGUE_USE_PNG=1
|
||||
HYPERROGUE_USE_ROGUEVIZ=1
|
||||
- os: linux
|
||||
compiler: gcc
|
||||
env: >-
|
||||
TRAVIS_OS_NAME=linux
|
||||
TRAVIS_COMPILER_NAME=gcc
|
||||
TRAVIS_BUILD_SYSTEM=mymake
|
||||
HYPERROGUE_USE_GLEW=1
|
||||
HYPERROGUE_USE_PNG=1
|
||||
- os: linux
|
||||
dist: bionic
|
||||
compiler: gcc
|
||||
env: >-
|
||||
TRAVIS_OS_NAME=linux
|
||||
TRAVIS_COMPILER_NAME=gcc
|
||||
TRAVIS_BUILD_SYSTEM=mymake
|
||||
HYPERROGUE_USE_GLEW=1
|
||||
HYPERROGUE_USE_PNG=1
|
||||
HYPERROGUE_USE_ROGUEVIZ=1
|
||||
|
||||
before_install:
|
||||
- |-
|
||||
@ -143,6 +178,13 @@ script:
|
||||
make
|
||||
elif [[ "$TRAVIS_BUILD_SYSTEM" == "Makefile" ]]; then
|
||||
make -f Makefile.simple
|
||||
elif [[ "$TRAVIS_BUILD_SYSTEM" == "mymake" ]]; then
|
||||
make -f Makefile.simple mymake
|
||||
if [[ "$HYPERROGUE_USE_ROGUEVIZ" == "1" ]]; then
|
||||
./mymake -rv
|
||||
else
|
||||
./mymake
|
||||
fi
|
||||
elif [[ "$TRAVIS_BUILD_SYSTEM" == "emscripten" ]]; then
|
||||
docker run --rm -v $(pwd):/src trzeci/emscripten make -f Makefile.simple emscripten
|
||||
else
|
||||
@ -152,6 +194,8 @@ script:
|
||||
# Test hyperrogue.
|
||||
if [[ "$TRAVIS_BUILD_SYSTEM" == "emscripten" ]]; then
|
||||
ls -lAF hyper.html hyper.js hyper.wasm
|
||||
elif [[ "$TRAVIS_BUILD_SYSTEM" == "mymake" ]]; then
|
||||
./hyper --help
|
||||
else
|
||||
./hyperrogue --help
|
||||
fi
|
||||
|
@ -150,7 +150,7 @@ langen$(EXE_EXTENSION): langen.cpp language-??.cpp language-ptbr.cpp
|
||||
$(CXX) -O0 $(CXXFLAGS) $(langen_CXXFLAGS) langen.cpp $(LDFLAGS) -o $@
|
||||
|
||||
makeh$(EXE_EXTENSION): makeh.cpp
|
||||
$(CXX) makeh.cpp -o $@
|
||||
$(CXX) -O2 makeh.cpp -o $@
|
||||
|
||||
autohdr.h: makeh$(EXE_EXTENSION) *.cpp
|
||||
./makeh classes.cpp locations.cpp hyperpoint.cpp geometry.cpp goldberg.cpp init.cpp floorshapes.cpp cell.cpp multi.cpp shmup.cpp pattern2.cpp mapeditor.cpp graph.cpp textures.cpp hprint.cpp language.cpp util.cpp complex.cpp *.cpp > autohdr.h
|
||||
@ -161,6 +161,9 @@ language-data.cpp: langen$(EXE_EXTENSION)
|
||||
savepng$(OBJ_EXTENSION): savepng.cpp
|
||||
$(CXX) -O2 $(CXXFLAGS) -c savepng.cpp -o $@
|
||||
|
||||
mymake$(EXE_EXTENSION): mymake.cpp
|
||||
$(CXX) -O2 $(CXXFLAGS) mymake.cpp -o $@
|
||||
|
||||
emscripten: hyper.html
|
||||
|
||||
%.html %.js %.wasm: %.emscripten-sources
|
||||
@ -173,5 +176,6 @@ hyper.emscripten-sources: *.cpp autohdr.h
|
||||
clean:
|
||||
rm -f langen$(EXE_EXTENSION) language-data.cpp
|
||||
rm -f makeh$(EXE_EXTENSION) autohdr.h
|
||||
rm -rf mymake$(EXE_EXTENSION) mymake_files/
|
||||
rm -f hyperrogue$(EXE_EXTENSION) hyper$(OBJ_EXTENSION) $(hyper_RES) savepng$(OBJ_EXTENSION)
|
||||
rm -f hyper.html hyper.js hyper.wasm
|
||||
|
@ -3,6 +3,7 @@
|
||||
<a href="https://travis-ci.org/zenorogue/hyperrogue/builds">
|
||||
<img align="right" src="https://badges.herokuapp.com/travis/zenorogue/hyperrogue?branch=master&env=TRAVIS_BUILD_SYSTEM=autotools&label=autotools" alt="TravisCI badge">
|
||||
<img align="right" src="https://badges.herokuapp.com/travis/zenorogue/hyperrogue?branch=master&env=TRAVIS_BUILD_SYSTEM=Makefile&label=make" alt="TravisCI badge">
|
||||
<img align="right" src="https://badges.herokuapp.com/travis/zenorogue/hyperrogue?branch=master&env=TRAVIS_BUILD_SYSTEM=mymake&label=mymake" alt="TravisCI badge">
|
||||
<img align="right" src="https://badges.herokuapp.com/travis/zenorogue/hyperrogue?branch=master&env=TRAVIS_BUILD_SYSTEM=emscripten&label=web" alt="TravisCI badge">
|
||||
</a>
|
||||
</p>
|
||||
|
6
hyper.h
6
hyper.h
@ -572,12 +572,6 @@ void IMAGESAVE(SDL_Surface *s, const char *fname);
|
||||
|
||||
#endif
|
||||
|
||||
// for some reason I need this to compile under OSX
|
||||
|
||||
#if ISMAC
|
||||
extern "C" { void *_Unwind_Resume = 0; }
|
||||
#endif
|
||||
|
||||
template<class T> struct dynamicval {
|
||||
T& where;
|
||||
T backup;
|
||||
|
425
mymake.cpp
425
mymake.cpp
@ -1,193 +1,232 @@
|
||||
// HyperRogue: alternative build system
|
||||
// This reads the file 'hyper.cpp' and compiles the cpp files it includes into separate object files, and then links them.
|
||||
// Tested in Linux, should work in other systems with some changes.
|
||||
|
||||
// Options:
|
||||
// -O2 -- optimize
|
||||
// -O3 -- optimize
|
||||
// -D... -- change compilation flags
|
||||
// [file.cpp] -- add a module to the build (e.g. ./mymake rogueviz)
|
||||
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
string opts = "-DFHS -DLINUX -DWHATEVER -DMYMAKE -I/usr/include/SDL";
|
||||
|
||||
string default_standard = " -std=c++11";
|
||||
string standard = default_standard;
|
||||
|
||||
string preprocessor =
|
||||
"g++ -E";
|
||||
|
||||
string compiler =
|
||||
"g++ -Wall -Wextra -Wno-maybe-uninitialized -Wno-unused-parameter -Wno-implicit-fallthrough -rdynamic -fdiagnostics-color=always -c";
|
||||
|
||||
string linker =
|
||||
"g++ -rdynamic -o hyper";
|
||||
|
||||
string libs = " savepng.o -lSDL -lSDL_ttf -lSDL_mixer -lSDL_gfx -lGLEW -lGL -lpng -rdynamic -lpthread -lz";
|
||||
|
||||
vector<string> modules;
|
||||
|
||||
time_t get_file_time(const string s) {
|
||||
struct stat attr;
|
||||
if(stat(s.c_str(), &attr)) return 0;
|
||||
return attr.st_mtime;
|
||||
}
|
||||
|
||||
int optimized = 0;
|
||||
|
||||
string obj_dir = "mymake_files";
|
||||
string setdir = "../";
|
||||
|
||||
int system(string cmdline) {
|
||||
return system(cmdline.c_str());
|
||||
}
|
||||
|
||||
bool file_exists(string fname) {
|
||||
return access(fname.c_str(), F_OK) != -1;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
for(string fname: {"Makefile.loc", "Makefile.simple", "Makefile"})
|
||||
if(file_exists(fname))
|
||||
system("make -f " + fname + " language-data.cpp autohdr.h savepng.o");
|
||||
for(int i=1; i<argc; i++) {
|
||||
string s = argv[i];
|
||||
if(s.substr(0, 2) == "-D") {
|
||||
opts += " " + s;
|
||||
obj_dir += "/";
|
||||
setdir += "../";
|
||||
for(char c: s)
|
||||
if(c == '=' || c == '-' || c == '/') obj_dir += "_";
|
||||
else obj_dir += c;
|
||||
}
|
||||
else if(s.substr(0, 2) == "-f") {
|
||||
opts += " " + s;
|
||||
obj_dir += "/";
|
||||
setdir += "../";
|
||||
for(char c: s)
|
||||
if(c == '=' || c == '-' || c == '/') obj_dir += "_";
|
||||
else obj_dir += c;
|
||||
linker += " " + s;
|
||||
}
|
||||
else if(s == "-win")
|
||||
compiler = "runbat bwin-g.bat -c", obj_dir += "/win", setdir += "../", standard = "",
|
||||
linker = "runbat bwin-linker.bat", libs = "";
|
||||
|
||||
else if(s == "-O2")
|
||||
optimized = 2, compiler += " -O2", obj_dir += "/O2", setdir += "../";
|
||||
else if(s == "-O3")
|
||||
optimized = 3, compiler += " -O3", obj_dir += "/O3", setdir += "../";
|
||||
else if(s.substr(0, 4) == "-std")
|
||||
standard = s;
|
||||
else if(s.substr(0, 2) == "-l")
|
||||
linker += " " + s;
|
||||
else if(s == "-I") {
|
||||
opts += " " + s + " " + argv[i+1];
|
||||
i++;
|
||||
}
|
||||
else if(s.substr(0, 2) == "-I")
|
||||
opts += " " + s;
|
||||
else if(s == "-rv") {
|
||||
|
||||
if(standard == default_standard) {
|
||||
standard = "-std=c++17";
|
||||
}
|
||||
ifstream ifs("rogueviz/rogueviz-all.cpp");
|
||||
string s;
|
||||
while(getline(ifs, s)) {
|
||||
if(s.substr(0, 10) == "#include \"") {
|
||||
string t = s.substr(10);
|
||||
t = t.substr(0, t.find(".cpp\""));
|
||||
modules.push_back("rogueviz/" + t);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(s.size() >= 5 && s.substr(s.size() - 4) == ".cpp")
|
||||
s = s.substr(0, s.size() - 4);
|
||||
modules.push_back(s);
|
||||
}
|
||||
}
|
||||
if(!optimized)
|
||||
compiler += " -g3";
|
||||
compiler += " " + standard;
|
||||
ifstream fs("hyper.cpp");
|
||||
|
||||
system("mkdir -p " + obj_dir);
|
||||
|
||||
ofstream fsm(obj_dir + "/hyper.cpp");
|
||||
fsm << "#if REM\n#define INCLUDE(x)\n#endif\n";
|
||||
string s;
|
||||
while(getline(fs, s)) {
|
||||
if(s.substr(0, 8) == "#include") {
|
||||
string t;
|
||||
bool in = false;
|
||||
bool ext = false;
|
||||
string iext = "";
|
||||
for(char c: s) if(c == '"') in = !in; else if(!in) ; else if(c == '.') ext = !ext; else if(!ext) t += c; else iext += c;
|
||||
if(iext == "h") { fsm << "#include \"" + setdir + "hyper.h\"\n"; continue; }
|
||||
if(iext != "cpp") printf("unknown extension: %s\n", iext);
|
||||
fsm << "INCLUDE(___" << t << ")\n";
|
||||
continue;
|
||||
}
|
||||
fsm << s << "\n";
|
||||
}
|
||||
fsm.close();
|
||||
|
||||
printf("preprocessing...\n");
|
||||
if(system(preprocessor + " " + opts + " "+obj_dir+"/hyper.cpp -o "+obj_dir+"/hyper.E")) { printf("preprocessing error\n"); exit(1); }
|
||||
|
||||
if(true) {
|
||||
ifstream fs2(obj_dir+"/hyper.E");
|
||||
while(getline(fs2, s)) {
|
||||
if(s.substr(0, 7) == "INCLUDE") {
|
||||
s = s.substr(11);
|
||||
s = s.substr(0,s.size() - 1);
|
||||
modules.push_back(s);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(get_file_time(obj_dir + "/hyper.o") < get_file_time("hyper.cpp")) {
|
||||
printf("compiling hyper...\n");
|
||||
if(system(compiler + " -DREM " + opts + " " + obj_dir + "/hyper.cpp -c -o " + obj_dir + "/hyper.o")) { printf("error\n"); exit(1); }
|
||||
}
|
||||
|
||||
string allobj = " " + obj_dir + "/hyper.o";
|
||||
|
||||
int id = 0;
|
||||
for(string m: modules) {
|
||||
id++;
|
||||
string src = m + ".cpp";
|
||||
string m2 = m;
|
||||
for(char& c: m2) if(c == '/') c = '_';
|
||||
string obj = obj_dir + "/" + m2 + ".o";
|
||||
time_t src_time = get_file_time(src);
|
||||
if(!src_time) {
|
||||
printf("file not found: %s\n", src.c_str());
|
||||
exit(1);
|
||||
}
|
||||
time_t obj_time = get_file_time(obj);
|
||||
if(src_time > obj_time) {
|
||||
printf("compiling %s... [%d/%d]\n", m.c_str(), id, int(modules.size()));
|
||||
if(system(compiler + " " + opts + " " + src + " -o " + obj)) { printf("error\n"); exit(1); }
|
||||
}
|
||||
else {
|
||||
printf("ok: %s\n", m.c_str());
|
||||
}
|
||||
allobj += " ";
|
||||
allobj += obj;
|
||||
}
|
||||
|
||||
printf("linking...\n");
|
||||
system(linker + allobj + libs);
|
||||
return 0;
|
||||
}
|
||||
// HyperRogue: alternative build system
|
||||
// This reads the file 'hyper.cpp' and compiles the cpp files it includes into separate object files, and then links them.
|
||||
// Tested in Linux, should work in other systems with some changes.
|
||||
|
||||
// Options:
|
||||
// -O2 -- optimize
|
||||
// -O3 -- optimize
|
||||
// -D... -- change compilation flags
|
||||
// [file.cpp] -- add a module to the build (e.g. ./mymake rogueviz)
|
||||
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
string opts;
|
||||
|
||||
string default_standard = " -std=c++11";
|
||||
string standard = default_standard;
|
||||
|
||||
string preprocessor;
|
||||
string compiler;
|
||||
string linker;
|
||||
string libs;
|
||||
|
||||
void set_linux() {
|
||||
preprocessor = "g++ -E";
|
||||
compiler = "g++ -Wall -Wextra -Wno-maybe-uninitialized -Wno-unused-parameter -Wno-implicit-fallthrough -rdynamic -fdiagnostics-color=always -c";
|
||||
linker = "g++ -rdynamic -o hyper";
|
||||
opts = "-DFHS -DLINUX -I/usr/include/SDL";
|
||||
libs = " savepng.o -lSDL -lSDL_ttf -lSDL_mixer -lSDL_gfx -lGLEW -lGL -lpng -rdynamic -lpthread -lz";
|
||||
}
|
||||
|
||||
void set_mac() {
|
||||
preprocessor = "g++ -E";
|
||||
compiler = "g++ -march=native -W -Wall -Wextra -pedantic -Wno-unused-parameter -Wno-implicit-fallthrough -c";
|
||||
linker = "g++ -o hyper";
|
||||
opts = "-DMAC -I/usr/local/include";
|
||||
libs = " savepng.o -L/usr/local/lib -framework AppKit -framework OpenGL -lSDL -lSDLMain -lSDL_gfx -lSDL_mixer -lSDL_ttf -lpng -lpthread -lz";
|
||||
}
|
||||
|
||||
void set_win() {
|
||||
preprocessor = "g++ -E";
|
||||
compiler = "runbat bwin-g.bat -c";
|
||||
linker = "runbat bwin-linker.bat";
|
||||
opts = "-DFHS -DLINUX -I/usr/include/SDL";
|
||||
libs = "";
|
||||
|
||||
standard = "";
|
||||
}
|
||||
|
||||
vector<string> modules;
|
||||
|
||||
time_t get_file_time(const string s) {
|
||||
struct stat attr;
|
||||
if(stat(s.c_str(), &attr)) return 0;
|
||||
return attr.st_mtime;
|
||||
}
|
||||
|
||||
int optimized = 0;
|
||||
|
||||
string obj_dir = "mymake_files";
|
||||
string setdir = "../";
|
||||
|
||||
int system(string cmdline) {
|
||||
return system(cmdline.c_str());
|
||||
}
|
||||
|
||||
bool file_exists(string fname) {
|
||||
return access(fname.c_str(), F_OK) != -1;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
#if defined(MAC)
|
||||
set_mac();
|
||||
#elif defined(WINDOWS)
|
||||
set_win();
|
||||
#else
|
||||
set_linux();
|
||||
#endif
|
||||
for(string fname: {"Makefile.loc", "Makefile.simple", "Makefile"})
|
||||
if(file_exists(fname))
|
||||
system("make -f " + fname + " language-data.cpp autohdr.h savepng.o");
|
||||
for(int i=1; i<argc; i++) {
|
||||
string s = argv[i];
|
||||
if(s.substr(0, 2) == "-D") {
|
||||
opts += " " + s;
|
||||
obj_dir += "/";
|
||||
setdir += "../";
|
||||
for(char c: s)
|
||||
if(c == '=' || c == '-' || c == '/') obj_dir += "_";
|
||||
else obj_dir += c;
|
||||
}
|
||||
else if(s == "-win") {
|
||||
set_win();
|
||||
obj_dir += "/win";
|
||||
setdir += "../";
|
||||
}
|
||||
else if(s == "-mac") {
|
||||
set_mac();
|
||||
obj_dir += "/mac";
|
||||
setdir += "../";
|
||||
}
|
||||
else if(s == "-linux") {
|
||||
set_linux();
|
||||
obj_dir += "/linux";
|
||||
setdir += "../";
|
||||
}
|
||||
else if(s.substr(0, 2) == "-f") {
|
||||
opts += " " + s;
|
||||
obj_dir += "/";
|
||||
setdir += "../";
|
||||
for(char c: s)
|
||||
if(c == '=' || c == '-' || c == '/') obj_dir += "_";
|
||||
else obj_dir += c;
|
||||
linker += " " + s;
|
||||
}
|
||||
else if(s == "-O2")
|
||||
optimized = 2, compiler += " -O2", obj_dir += "/O2", setdir += "../";
|
||||
else if(s == "-O3")
|
||||
optimized = 3, compiler += " -O3", obj_dir += "/O3", setdir += "../";
|
||||
else if(s.substr(0, 4) == "-std")
|
||||
standard = s;
|
||||
else if(s.substr(0, 2) == "-l")
|
||||
linker += " " + s;
|
||||
else if(s == "-I") {
|
||||
opts += " " + s + " " + argv[i+1];
|
||||
i++;
|
||||
}
|
||||
else if(s.substr(0, 2) == "-I")
|
||||
opts += " " + s;
|
||||
else if(s == "-rv") {
|
||||
|
||||
if(standard == default_standard) {
|
||||
standard = "-std=c++17";
|
||||
}
|
||||
ifstream ifs("rogueviz/rogueviz-all.cpp");
|
||||
string s;
|
||||
while(getline(ifs, s)) {
|
||||
if(s.substr(0, 10) == "#include \"") {
|
||||
string t = s.substr(10);
|
||||
t = t.substr(0, t.find(".cpp\""));
|
||||
modules.push_back("rogueviz/" + t);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(s.size() >= 5 && s.substr(s.size() - 4) == ".cpp")
|
||||
s = s.substr(0, s.size() - 4);
|
||||
modules.push_back(s);
|
||||
}
|
||||
}
|
||||
if(!optimized)
|
||||
compiler += " -g3";
|
||||
preprocessor += " " + standard;
|
||||
compiler += " " + standard;
|
||||
ifstream fs("hyper.cpp");
|
||||
|
||||
system("mkdir -p " + obj_dir);
|
||||
|
||||
ofstream fsm(obj_dir + "/hyper.cpp");
|
||||
fsm << "#if REM\n#define INCLUDE(x)\n#endif\n";
|
||||
string s;
|
||||
while(getline(fs, s)) {
|
||||
if(s.substr(0, 8) == "#include") {
|
||||
string t;
|
||||
bool in = false;
|
||||
bool ext = false;
|
||||
string iext = "";
|
||||
for(char c: s) if(c == '"') in = !in; else if(!in) ; else if(c == '.') ext = !ext; else if(!ext) t += c; else iext += c;
|
||||
if(iext == "h") { fsm << "#include \"" + setdir + "hyper.h\"\n"; continue; }
|
||||
if(iext != "cpp") printf("unknown extension: %s\n", iext.c_str());
|
||||
fsm << "INCLUDE(\"" << t << "\")\n";
|
||||
continue;
|
||||
}
|
||||
fsm << s << "\n";
|
||||
}
|
||||
fsm.close();
|
||||
|
||||
printf("preprocessing...\n");
|
||||
if(system(preprocessor + " " + opts + " "+obj_dir+"/hyper.cpp -o "+obj_dir+"/hyper.E")) { printf("preprocessing error\n"); exit(1); }
|
||||
|
||||
if(true) {
|
||||
ifstream fs2(obj_dir+"/hyper.E");
|
||||
while(getline(fs2, s)) {
|
||||
if(s.substr(0, 7) == "INCLUDE") {
|
||||
s = s.substr(9);
|
||||
s = s.substr(0,s.size() - 2);
|
||||
modules.push_back(s);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(get_file_time(obj_dir + "/hyper.o") < get_file_time("hyper.cpp")) {
|
||||
printf("compiling hyper...\n");
|
||||
if(system(compiler + " -DREM " + opts + " " + obj_dir + "/hyper.cpp -c -o " + obj_dir + "/hyper.o")) { printf("error\n"); exit(1); }
|
||||
}
|
||||
|
||||
string allobj = " " + obj_dir + "/hyper.o";
|
||||
|
||||
int id = 0;
|
||||
for(string m: modules) {
|
||||
id++;
|
||||
string src = m + ".cpp";
|
||||
string m2 = m;
|
||||
for(char& c: m2) if(c == '/') c = '_';
|
||||
string obj = obj_dir + "/" + m2 + ".o";
|
||||
time_t src_time = get_file_time(src);
|
||||
if(!src_time) {
|
||||
printf("file not found: %s\n", src.c_str());
|
||||
exit(1);
|
||||
}
|
||||
time_t obj_time = get_file_time(obj);
|
||||
if(src_time > obj_time) {
|
||||
printf("compiling %s... [%d/%d]\n", m.c_str(), id, int(modules.size()));
|
||||
if(system(compiler + " " + opts + " " + src + " -o " + obj)) { printf("error\n"); exit(1); }
|
||||
}
|
||||
else {
|
||||
printf("ok: %s\n", m.c_str());
|
||||
}
|
||||
allobj += " ";
|
||||
allobj += obj;
|
||||
}
|
||||
|
||||
printf("linking...\n");
|
||||
system(linker + allobj + libs);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user