Skip to content

Commit d6dabc4

Browse files
committed
builds with mingw64/msys
1 parent f2d36c4 commit d6dabc4

5 files changed

Lines changed: 32 additions & 20 deletions

File tree

Makefile

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ ifneq (,$(findstring mingw,$(shell ${CXX} -dumpmachine)))
3838
endif
3939

4040
# Misc. system commands
41-
ifdef WINDOWS
42-
RM = del /Q
43-
else
44-
RM = rm -f
45-
endif
41+
#ifdef WINDOWS ##<-- use MSYS
42+
# RM = del /Q
43+
#else
44+
RM = rm -f
45+
#endif
4646

4747
# File endings
4848
ifdef WINDOWS
@@ -151,7 +151,7 @@ tmerge.o : rlink.h tmerge.h
151151
tablemaker.o : tablemaker.h rlink.h
152152
${BAM}/libbam.a:
153153
cd ${BAM} && make lib
154-
stringtie: ${BAM}/libbam.a $(OBJS) stringtie.o
154+
stringtie${EXE}: ${BAM}/libbam.a $(OBJS) stringtie.o
155155
${LINKER} ${LDFLAGS} -o $@ ${filter-out %.a %.so, $^} ${LIBS}
156156
@echo
157157
${DBG_WARN}

gclib/GBase.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ int G_mkdir(const char* path, int perms = (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH
157157
//int perms=(S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) ) {
158158
#ifdef _WIN32
159159
//return _mkdir(path);
160-
return CreateDirectoryA(path, NULL);
160+
return !CreateDirectoryA(path, NULL);
161161
#else
162162
return mkdir(path, perms);
163163
#endif
@@ -167,8 +167,16 @@ int G_mkdir(const char* path, int perms = (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH
167167
void Gmktempdir(char* templ) {
168168
#ifdef _WIN32
169169
int blen=strlen(templ);
170-
if (_mktemp_s(templ, blen)!=0)
171-
GError("Error creating temp dir %s!\n", templ);
170+
char* pt=templ+blen-1;
171+
//on Windows this needs a plain file name template, without directory prefix
172+
blen=1;
173+
while (pt!=templ) {
174+
if (*pt=='/' || *pt=='\\') { pt++; break;}
175+
--pt; blen++;
176+
}
177+
if (_mktemp_s(pt, blen)!=0)
178+
GError("Error creating template file name %s!\n", pt);
179+
Gmkdir(templ, true);
172180
#else
173181
char* cdir=mkdtemp(templ);
174182
if (cdir==NULL)

gclib/GThreads.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,8 +445,8 @@ void current_thread::yield() {
445445
// Example usage:
446446
// // Sleep for 100 milliseconds:
447447
// current_thread::sleep_for(100);
448-
void current_thread::sleep_for(const int32_t mstime) {
449-
#if defined(_GTHREADS_WIN32_)
448+
void current_thread::sleep_for(const int mstime) {
449+
#if defined(_GTHREADS_WIN32_) || defined(__CYGWIN__)
450450
Sleep(mstime);
451451
#else
452452
usleep((useconds_t)(mstime*1000));

gclib/GThreads.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -772,6 +772,7 @@ class GThread {
772772
int r=tcounter;
773773
return r;
774774
}
775+
#ifdef _GTHREADS_POSIX_
775776
static size_t defaultStackSize() {
776777
pthread_attr_t attr;
777778
size_t stacksize;
@@ -780,6 +781,7 @@ class GThread {
780781
pthread_attr_destroy(&attr);
781782
return stacksize;
782783
}
784+
#endif
783785
static int liveCount() {
784786
//return number of running (live) threads
785787
return num_running();
@@ -821,7 +823,7 @@ namespace current_thread {
821823
// Example usage:
822824
// // Sleep for 100 milliseconds:
823825
// current_thread::sleep_for(100);
824-
void sleep_for(const int32_t mstime);
826+
void sleep_for(const int mstime);
825827
}
826828

827829
// Define/macro cleanup

stringtie.cpp

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -429,16 +429,18 @@ if (ballgown)
429429
#ifndef NOTHREADS
430430
//model: one producer, multiple consumers
431431
#define DEF_TSTACK_SIZE 8388608
432+
size_t defStackSize=DEF_TSTACK_SIZE;
433+
#ifdef _GTHREADS_POSIX_
432434
int tstackSize=GThread::defaultStackSize();
433-
size_t defStackSize=0;
434-
if (tstackSize<DEF_TSTACK_SIZE) defStackSize=DEF_TSTACK_SIZE;
435+
if (tstackSize<DEF_TSTACK_SIZE) defStackSize=DEF_TSTACK_SIZE;
435436
if (verbose) {
436-
if (defStackSize>0){
437-
int ssize=defStackSize;
438-
GMessage("Default stack size for threads: %d (increased to %d)\n", tstackSize, ssize);
439-
}
440-
else GMessage("Default stack size for threads: %d\n", tstackSize);
437+
if (defStackSize>0){
438+
int ssize=defStackSize;
439+
GMessage("Default stack size for threads: %d (increased to %d)\n", tstackSize, ssize);
440+
}
441+
else GMessage("Default stack size for threads: %d\n", tstackSize);
441442
}
443+
#endif
442444
GThread* threads=new GThread[num_cpus]; //bundle processing threads
443445

444446
GPVec<BundleData> bundleQueue(false); //queue of loaded bundles
@@ -1258,7 +1260,7 @@ void processOptions(GArgs& args) {
12581260
{ //prepare temp path
12591261
GStr stempl(out_dir);
12601262
stempl.chomp('/');
1261-
stempl+="/tmp.XXXXXXXX";
1263+
stempl+="/tmp_XXXXXX";
12621264
char* ctempl=Gstrdup(stempl.chars());
12631265
Gmktempdir(ctempl);
12641266
tmp_path=ctempl;

0 commit comments

Comments
 (0)