lots of mods getting windows to build under cygwin without visual studio.
authorChris Koeritz <fred@gruntose.com>
Thu, 22 Sep 2016 21:47:27 +0000 (17:47 -0400)
committerChris Koeritz <fred@gruntose.com>
Thu, 22 Sep 2016 21:47:27 +0000 (17:47 -0400)
not quite there yet, but have made it to filesystem tests.

28 files changed:
nucleus/library/application/command_line.cpp
nucleus/library/application/hoople_main.h
nucleus/library/application/hoople_service.cpp
nucleus/library/application/registry_config.cpp
nucleus/library/application/windoze_helper.h
nucleus/library/basis/astring.cpp
nucleus/library/basis/environment.cpp
nucleus/library/basis/mutex.cpp
nucleus/library/configuration/application_configuration.cpp
nucleus/library/configuration/application_configuration.h
nucleus/library/configuration/ini_configurator.cpp
nucleus/library/configuration/ini_configurator.h
nucleus/library/filesystem/directory.cpp
nucleus/library/filesystem/filename.cpp
nucleus/library/filesystem/filename.h
nucleus/library/loggers/file_logger.cpp
nucleus/library/processes/ethread.cpp
nucleus/library/processes/ethread.h
nucleus/library/processes/launch_process.cpp
nucleus/library/processes/launch_process.h
nucleus/library/processes/process_control.cpp
nucleus/library/processes/process_control.h
nucleus/library/tests_basis/test_string.cpp
nucleus/library/textual/string_convert.h
nucleus/library/timely/timer_driver.cpp
nucleus/library/timely/timer_driver.h
scripts/clam/cpp/rules.def
scripts/clam/cpp/variables.def

index de6d611092a0a53c1397920f8e5cbf48e794b1ef..f132867f8e500d9005b539fe564c5f575fd706e0 100644 (file)
@@ -74,7 +74,7 @@ command_parameter &command_parameter::operator =
 // the default is a dash (-), while for DOS most programs use forward-slash
 // (/).  Adding more characters is trivial; just add a character to the list
 // before the sentinel of '\0'.
-#if defined(_MSC_VER) || defined(__MINGW32__)
+#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__WIN32__)
   static char option_prefixes[] = { '-', '/', '\0' };
 #elif defined(__UNIX__)
   static char option_prefixes[] = { '-', '\0' };
@@ -244,7 +244,7 @@ string_array command_line::get_command_line()
   // the temporary string below can be given a flat formatting of the commands
   // and it will be popped out into a list of arguments.
   astring temporary;
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   if (!_global_argc || !_global_argv) {
     // our global parameters have not been set, so we must calculate them.
     temporary = application_configuration::get_cmdline_from_proc();
@@ -257,7 +257,7 @@ string_array command_line::get_command_line()
     // we don't need a long string to be parsed; the list is ready.
     return listo_cmds;
   }
-#elif defined(__WIN32__)
+#elif defined(_MSC_VER)
   // we have easy access to the original list of commands.
   for (int i = 0; i < _global_argc; i++) {
     // add a string entry for each argument.
index aac5a74e42ad99ad21d6ea208286472f96efc28a..51875c2cbd940788fb5f096ab89bd9fb3e8ab682 100644 (file)
@@ -56,7 +56,7 @@ namespace application {
 
 //////////////
 
-#elif defined(__UNIX__)
+#elif defined(__UNIX__) || defined(__GNU_WINDOWS__)
   //! options that should work for most unix and linux apps.
   #define HOOPLE_MAIN(obj_name, obj_args) \
     HOOPLE_STARTUP_CODE; \
@@ -69,7 +69,7 @@ namespace application {
 
 //////////////
 
-#elif defined(__WIN32__)
+#elif defined(_MSC_VER)
   // for win32 we need to support four different environments--console mode,
   // borland compilation, MFC programs and regular windows programs.
   #ifdef _CONSOLE
index 969a2c27e719d5688b86fc7a083b272e9fa5d942..317ada2465dac2cd1817ef7f4f3da8e4227404d8 100644 (file)
@@ -113,10 +113,9 @@ bool hoople_service::close_application(const astring &app_name)
   // zap all of them using our signal.
   for (int i = 0; i < pids.length(); i++) {
 //would linux be better served with sigterm also?
-#ifdef __UNIX__
+#ifndef _MSC_VER
     kill(pids[i], SIGHUP);
-#endif
-#ifdef __WIN32__
+#else
 //lame--goes to whole program.
     raise(SIGTERM);
 #endif
@@ -151,13 +150,13 @@ bool hoople_service::setup(const astring &app_name, int timer_period)
 
   // setup signal handler for HUP signal.  this is the one used to tell us
   // to leave.
-#ifdef __UNIX__
+#ifndef _MSC_VER
   signal(SIGHUP, handle_OS_signal);
 #endif
 
   // setup a handler for interrupt (e.g. ctrl-C) also.
   signal(SIGINT, handle_OS_signal);
-#ifdef __WIN32__
+#ifdef _MSC_VER
   signal(SIGBREAK, handle_OS_signal);
 #endif
 
index 96f9fc929f3a64180a2927d60f99d7eaa2935b66..0fcbb01b3272bd2ec028368af3fe3f96f75879ab 100644 (file)
@@ -23,7 +23,7 @@ using namespace basis;
 using namespace filesystem;
 using namespace structures;
 
-#ifdef __WIN32__
+#ifdef _MSC_VER
 
   // this implementation only works on windows currently.
 //hmmm: i suppose we could fake it with an ini file.
@@ -106,7 +106,7 @@ bool registry_configurator::put(const astring &section_in, const astring &entry,
   if (!to_store.length()) return delete_entry(section, entry);
   else if (!section.length()) return false;
 
-#ifdef __WIN32__
+#ifdef _MSC_VER
   HKEY key;
   long ret = RegOpenKeyEx((HKEY)translate_hive(_hive),
       to_unicode_temp(section), 0, KEY_WRITE, &key);
@@ -145,7 +145,7 @@ bool registry_configurator::get(const astring &section_in, const astring &entry,
   if (!section_in) return false;
   if (!entry) {}  // not a problem.
   astring section = fix_section(section_in);
-#ifdef __WIN32__
+#ifdef _MSC_VER
   HKEY key;
   long ret = RegOpenKeyEx((HKEY)translate_hive(_hive),
       to_unicode_temp(section), 0, KEY_QUERY_VALUE, &key);
@@ -190,7 +190,7 @@ bool registry_configurator::get_section(const astring &section_in,
   info.reset();
   if (!section_in.length()) return false;
   astring section = fix_section(section_in);
-#ifdef __WIN32__
+#ifdef _MSC_VER
   HKEY key;
   long ret = RegOpenKeyEx((HKEY)translate_hive(_hive),
       to_unicode_temp(section), 0, KEY_QUERY_VALUE, &key);
@@ -233,7 +233,7 @@ bool registry_configurator::section_exists(const astring &section_in)
   FUNCDEF("section_exists");
   if (!section_in.length()) return false;
   astring section = fix_section(section_in);
-#ifdef __WIN32__
+#ifdef _MSC_VER
   HKEY key;
   long ret = RegOpenKeyEx((HKEY)translate_hive(_hive),
       to_unicode_temp(section), 0, KEY_QUERY_VALUE, &key);
@@ -254,7 +254,7 @@ bool registry_configurator::delete_section(const astring &section_in)
   if (!section_in.length()) return false;
   astring section = fix_section(section_in);
 //if the key doesn't exist, should that be a failure?
-#ifdef __WIN32__
+#ifdef _MSC_VER
   long ret = SHDeleteKey((HKEY)translate_hive(_hive),
       to_unicode_temp(section));
   if (ret != ERROR_SUCCESS) {
@@ -275,7 +275,7 @@ bool registry_configurator::delete_entry(const astring &section_in,
   astring section = fix_section(section_in);
   if (!entry) {}  // no problem.
 
-#ifdef __WIN32__
+#ifdef _MSC_VER
   HKEY key;
   long ret = RegOpenKeyEx((HKEY)translate_hive(_hive),
       to_unicode_temp(section), 0, KEY_SET_VALUE, &key);
index a02b29653f8782bf96ffa20f34abff536cee86b0..3da874538d22c3ca89f5b4442d54cd7313e15854 100644 (file)
 // gnarly headers that are needed for certain types of compilation...
 
 //unix headers not needed in here for new purpose of file.
-#ifdef __UNIX__
+#ifndef _MSC_VER
   #include <unistd.h>
+  #ifdef __GNU_WINDOWS__
+    #include <sys/unistd.h>
+  #endif
 #endif
 #ifndef NO_XWINDOWS
   #ifdef __XWINDOWS__
   #ifndef STRICT
     #define STRICT
   #endif
+  // winsock support...
+  #undef FD_SETSIZE
+  #define FD_SETSIZE 1000
+    // if you don't set this, you can only select on a default of 64 sockets.
+  #include <winsock2.h>
   // windows headers...
   #define _WINSOCKAPI_  // make windows.h happy about winsock.
   #ifndef _AFXDLL
     #include <afx.h>
     #include <afxwin.h>
   #endif
-  // winsock support...
-  #undef FD_SETSIZE
-  #define FD_SETSIZE 1000
-    // if you don't set this, you can only select on a default of 64 sockets.
-  #include <winsock2.h>
 #endif
 
 // forward.
index 55b9daf85c7867ae3fa3d2888e12265b539acc2f..3c09fce8f1c30efac4565011823bc03923d810ee 100644 (file)
 #include <stdlib.h>
 #include <string.h>
 
-#ifdef __WIN32__
-  #undef strcasecmp 
-  #undef strncasecmp 
-  #define strcasecmp strcmpi
-  #define strncasecmp strnicmp
-#endif
+//#ifdef __WIN32__
+//  #undef strcasecmp 
+//  #undef strncasecmp 
+//  #define strcasecmp strcmpi
+//  #define strncasecmp strnicmp
+//#endif
 
 //#define DEBUG_STRING
   // uncomment for debugging version.
index 520b7791c11f4739cd763022c6e3e0be9fde0022..6ce8b06c4bc87a3371b7a7b524dabab0c1a9cd00 100644 (file)
 
 #include <stdlib.h>
 #include <sys/types.h>
-#ifdef __UNIX__
+#ifndef _MSC_VER
   #include <unistd.h>
   #include <sys/times.h>
 #endif
-#ifdef __WIN32__
+#ifdef _MSC_VER
   #define _WINSOCKAPI_  // make windows.h happy about winsock.
+  // winsock support...
+  #undef FD_SETSIZE
+  #define FD_SETSIZE 1000
+    // if you don't set this, you can only select on a default of 64 sockets.
+  #include <winsock2.h>
   #include <windows.h>
   #include <mmsystem.h>
 #endif
@@ -49,7 +54,7 @@ astring environment::TMP()
 
 astring environment::get(const astring &variable_name)
 {
-#ifdef __WIN32__
+#ifdef _MSC_VER
   char *value = getenv(variable_name.upper().observe());
     // dos & os/2 require upper case for the name, so we just do it that way.
 #else
@@ -65,7 +70,7 @@ astring environment::get(const astring &variable_name)
 bool environment::set(const astring &variable_name, const astring &value)
 {
   int ret = 0;
-#ifdef __WIN32__
+#ifdef _MSC_VER
   astring assignment = variable_name + "=" + value;
   ret = _putenv(assignment.s());
 #else
@@ -76,7 +81,7 @@ bool environment::set(const astring &variable_name, const astring &value)
 
 basis::un_int environment::system_uptime()
 {
-#ifdef __WIN32__
+#ifdef _MSC_VER
   return timeGetTime();
 #else
   static clock_t __ctps = sysconf(_SC_CLK_TCK);  // clock ticks per second.
index 6a9af775879059f5e4730c69ea3d874f26ccd1e3..1857e1064780ca018e0b37b73d1aa64135d1439f 100644 (file)
 #endif
 #ifdef __WIN32__
   #define _WINSOCKAPI_  // make windows.h happy about winsock.
+  // winsock support...
+  #undef FD_SETSIZE
+  #define FD_SETSIZE 1000
+    // if you don't set this, you can only select on a default of 64 sockets.
+  #include <winsock2.h>
   #include <windows.h>
 #endif
 
index 9f01391f8c61ebd1fdab010d5a0f7655c409941f..af502e780c402b042a5aaf19eff9be2f472cdf17 100644 (file)
   #include <mach-o/dyld.h>
   #include <limits.h>
 #endif
-#ifdef __WIN32__
+#ifdef _MSC_VER
   #include <direct.h>
   #include <process.h>
 #else
   #include <dirent.h>
-#endif
-#ifdef __UNIX__
   #include <sys/utsname.h>
   #include <unistd.h>
 #endif
@@ -58,7 +56,7 @@ namespace configuration {
 const int MAXIMUM_COMMAND_LINE = 32 * KILOBYTE;
   // maximum command line that we'll deal with here.
 
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
 astring application_configuration::get_cmdline_from_proc()
 {
   FUNCDEF("get_cmdline_from_proc");
@@ -205,9 +203,9 @@ astring application_configuration::application_name()
   uint32_t buffsize = MAX_ABS_PATH - 1;
   _NSGetExecutablePath(buffer, &buffsize);
   to_return = (char *)buffer;
-#elif __UNIX__
+#elif defined(__UNIX__) || defined(__GNU_WINDOWS__)
   to_return = get_cmdline_from_proc();
-#elif defined(__WIN32__)
+#elif defined(_MSC_VER)
   flexichar low_buff[MAX_ABS_PATH + 1];
   GetModuleFileName(NIL, low_buff, MAX_ABS_PATH - 1);
   astring buff = from_unicode_temp(low_buff);
@@ -220,7 +218,7 @@ astring application_configuration::application_name()
   return to_return;
 }
 
-#if defined(__UNIX__) || defined(__WIN32__)
+#if defined(__UNIX__) || defined(_MSC_VER) || defined(__GNU_WINDOWS__)
   basis::un_int application_configuration::process_id() { return getpid(); }
 #else
   #pragma error("hmmm: need process id implementation for this OS!")
@@ -234,7 +232,7 @@ astring application_configuration::current_directory()
   char buff[MAX_ABS_PATH];
   getcwd(buff, MAX_ABS_PATH - 1);
   to_return = buff;
-#elif defined(__WIN32__)
+#elif defined(_MSC_VER)
   flexichar low_buff[MAX_ABS_PATH + 1];
   GetCurrentDirectory(MAX_ABS_PATH, low_buff);
   to_return = from_unicode_temp(low_buff);
@@ -265,7 +263,7 @@ structures::version application_configuration::get_OS_version()
   utsname kernel_parms;
   uname(&kernel_parms);
   to_return = version(kernel_parms.release);
-#elif defined(__WIN32__)
+#elif defined(_MSC_VER)
   OSVERSIONINFO info;
   info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
   ::GetVersionEx(&info);
index 52ddb86443aa19dc774b32d9bf87f7f451e1f32a..bb829304df71db201e8547c51298d1643f17242a 100644 (file)
@@ -113,7 +113,7 @@ public:
     need a filename.  an empty string is returned on failure to create the
     directory. */
 
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   #ifdef __APPLE__
     static basis::astring get_cmdline_for_apple();
   #endif
index 8f66f01a2f128a3b41ee4cd0b59c4f5ff9618b20..67436f835333441ea4de92b025881d6bda3906ad 100644 (file)
@@ -51,7 +51,7 @@ ini_configurator::ini_configurator(const astring &ini_filename,
       treatment_of_defaults behavior, file_location_default where)
 : configurator(behavior),
   _ini_name(new filename),
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   _parser(new ini_parser("", behavior)),
 #endif
   _where(where),
@@ -63,7 +63,7 @@ ini_configurator::ini_configurator(const astring &ini_filename,
 ini_configurator::~ini_configurator()
 {
   WHACK(_ini_name);
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   WHACK(_parser);
 #endif
 }
@@ -72,7 +72,7 @@ astring ini_configurator::name() const { return _ini_name->raw(); }
 
 void ini_configurator::refresh()
 {
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   write_ini_file();
   WHACK(_parser);
   _parser = new ini_parser("", behavior());
@@ -88,7 +88,7 @@ void ini_configurator::name(const astring &name)
     // that don't include a directory name.
   if (_where == OS_DIRECTORY) use_appdir = false;
   if (_where == ALL_USERS_DIRECTORY) use_appdir = false;
-#ifndef __WIN32__
+#ifdef _MSC_VER
   use_appdir = true;
 #endif
   // we must create the filename if they specified no directory at all.
@@ -108,7 +108,7 @@ void ini_configurator::name(const astring &name)
           _ini_name->basename());
     }
   }
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   // read in the file's contents.
   read_ini_file();
 #endif
@@ -139,7 +139,7 @@ void ini_configurator::sections(string_array &list)
 //hmmm: refactor section_exists to use the sections call, if it's faser?
 bool ini_configurator::section_exists(const astring &section)
 {
-#ifdef __WIN32__
+#ifdef _MSC_VER
   string_table infos;
   // heavy-weight call here...
   return get_section(section, infos);
@@ -148,7 +148,7 @@ bool ini_configurator::section_exists(const astring &section)
 #endif
 }
 
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
 void ini_configurator::read_ini_file()
 {
 #ifdef DEBUG_INI_CONFIGURATOR
@@ -200,7 +200,7 @@ void ini_configurator::write_ini_file()
 
 bool ini_configurator::delete_section(const astring &section)
 {
-#ifdef __WIN32__
+#ifdef _MSC_VER
   return put_profile_string(section, "", ""); 
 #else
   // zap the section.
@@ -213,7 +213,7 @@ bool ini_configurator::delete_section(const astring &section)
 
 bool ini_configurator::delete_entry(const astring &section, const astring &ent)
 {
-#ifdef __WIN32__
+#ifdef _MSC_VER
   return put_profile_string(section, ent, "");
 #else
   // zap the entry.
@@ -231,7 +231,7 @@ bool ini_configurator::put(const astring &section, const astring &entry,
   if (!to_store.length()) return delete_entry(section, entry);
   else if (!entry.length()) return delete_section(section);
   else if (!section.length()) return false;
-#ifdef __WIN32__
+#ifdef _MSC_VER
   return put_profile_string(section, entry, to_store);
 #else
   // write the entry.
@@ -245,7 +245,7 @@ bool ini_configurator::put(const astring &section, const astring &entry,
 bool ini_configurator::get(const astring &section, const astring &entry,
     astring &found)
 {
-#ifndef __WIN32__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   return _parser->get(section, entry, found);
 #else
   flexichar temp_buffer[MAXIMUM_LINE_INI_CONFIG];
@@ -260,7 +260,7 @@ bool ini_configurator::get(const astring &section, const astring &entry,
 bool ini_configurator::get_section(const astring &section, string_table &info)
 {
   FUNCDEF("get_section");
-#ifndef __WIN32__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   return _parser->get_section(section, info);
 #else
   info.reset();
@@ -302,7 +302,7 @@ bool ini_configurator::get_section(const astring &section, string_table &info)
 bool ini_configurator::put_section(const astring &section,
     const string_table &info)
 {
-#ifdef __WIN32__
+#ifdef _MSC_VER
   variable_tokenizer parser("\1", "=");
   parser.table() = info;
   astring flat = parser.text_form();
@@ -330,7 +330,7 @@ bool ini_configurator::put_section(const astring &section,
 #endif
 }
 
-#ifdef __WIN32__
+#ifdef _MSC_VER
 bool ini_configurator::put_profile_string(const astring &section,
     const astring &entry, const astring &to_store)
 {
index ad99906dd151302c9c90ba64d0a24574dc535623..cb58ccdbfe90b72e2b969e50129086129a5e2921 100644 (file)
@@ -16,7 +16,7 @@
 \*****************************************************************************/
 
 #include "configurator.h"
-#ifndef __WIN32__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   #include "ini_parser.h"
   #include <basis/utf_conversion.h>
 #endif
@@ -110,13 +110,13 @@ public:
 
 private:
   filesystem::filename *_ini_name;  //!< the file we're manipulating.
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   ini_parser *_parser;  //!< used for real storage and parsing.
 #endif
   file_location_default _where;  //!< where to find and store the file.
   bool _add_spaces;  //!< tracks whether we're adding spaces around equals.
 
-#ifdef __WIN32__
+#ifdef _MSC_VER
   bool put_profile_string(const basis::astring &section, const basis::astring &entry,
           const basis::astring &to_store);
     //!< encapsulates windows' ini storage method.
@@ -124,8 +124,7 @@ private:
           const basis::astring &default_value, basis::flexichar *return_buffer,
           int buffer_size);
     //!< encapsulates windows' ini retrieval method.
-#endif
-#ifdef __UNIX__
+#else
   void read_ini_file();
     //!< reads the INI file's contents into memory.
   void write_ini_file();
index 052c10bf994486a7148dc1fdc9ec5dad5671d5bb..c9ce8e9995ad7d30f7971e7f7ef426a1751a60b6 100644 (file)
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/stat.h>
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   #include <dirent.h>
   #include <fnmatch.h>
   #include <string.h>
   #include <unistd.h>
 #endif
-#ifdef __WIN32__
+#ifdef _MSC_VER
   #include <direct.h>
 #endif
 
@@ -101,7 +101,7 @@ astring directory::absolute_path(const astring &rel_path)
 {
   char abs_path[MAX_ABS_PATH + 1];
   abs_path[0] = '\0';
-#ifdef __WIN32__
+#ifdef _MSC_VER
   if (!_fullpath(abs_path, rel_path.s(), MAX_ABS_PATH)) return "";
   return abs_path;
 #else
@@ -113,7 +113,7 @@ astring directory::absolute_path(const astring &rel_path)
 astring directory::current()
 {
   astring to_return(".");  // failure result.
-#ifdef __WIN32__
+#ifdef _MSC_VER
   flexichar buffer[MAX_ABS_PATH + 1] = { '\0' };
   GetCurrentDirectory(MAX_ABS_PATH, buffer);
   to_return = from_unicode_temp(buffer);
@@ -151,7 +151,7 @@ bool directory::rescan()
   _folders->reset();
   astring cur_dir = ".";
   astring par_dir = "..";
-#ifdef __WIN32__
+#ifdef _MSC_VER
   // start reading the directory.
   WIN32_FIND_DATA wfd;
   astring real_path_spec = *_path + "/" + *_pattern;
@@ -194,8 +194,7 @@ bool directory::rescan()
        }
   } while (FindNextFile(search_handle, &wfd));
   FindClose(search_handle);
-#endif
-#ifdef __UNIX__
+#else
   DIR *dir = opendir(_path->s());
 //hmmm: could check errno to determine what caused the problem.
   if (!dir) return false;
@@ -234,10 +233,9 @@ bool directory::rescan()
 
 bool directory::make_directory(const astring &path)
 {
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   int mk_ret = mkdir(path.s(), 0777);
-#endif
-#ifdef __WIN32__
+#else
   int mk_ret = mkdir(path.s());
 #endif
   return !mk_ret;
@@ -245,10 +243,9 @@ bool directory::make_directory(const astring &path)
 
 bool directory::remove_directory(const astring &path)
 {
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   int rm_ret = rmdir(path.s());
-#endif
-#ifdef __WIN32__
+#else
   int rm_ret = rmdir(path.s());
 #endif
   return !rm_ret;
@@ -283,3 +280,4 @@ bool directory::recursive_create(const astring &directory_name)
 }
 
 } // namespace.
+
index 664a9970c2e0caf91b1102e63007cc4845b09ef0..5ce3886e9affe0ec1a99cba71046403a778b41ff 100644 (file)
 #include <stdio.h>
 #include <sys/stat.h>
 #include <sys/types.h>
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   #include <unistd.h>
-#endif
-#ifdef __WIN32__
+#else
   #include <io.h>
 #endif
 
index c1710c13e9328f66623abb911dfac745858468e6..d1f2fb4233253af5ccab6207da3853e46c2ac851 100644 (file)
@@ -27,6 +27,11 @@ class status_info;
 // define useful constant for filesystem path length.
 #ifndef MAX_ABS_PATH 
   #ifdef __WIN32__
+  // winsock support...
+  #undef FD_SETSIZE
+  #define FD_SETSIZE 1000
+    // if you don't set this, you can only select on a default of 64 sockets.
+  #include <winsock2.h>
     #include <windows.h>
     #define MAX_ABS_PATH MAX_PATH
   #else
index a18caa14b38e0f545fe2fd96cb05a8c53cad7cea..bd8c22a62e8f4c1ac51a4b337e19b24df3a71512 100644 (file)
 #include <structures/static_memory_gremlin.h>
 #include <textual/byte_formatter.h>
 
-#ifdef __WIN32__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
+  #include <unistd.h>
+#else
   #include <io.h>
 #endif
 #include <stdio.h>
-#ifdef __UNIX__
-  #include <unistd.h>
-#endif
 
 using namespace basis;
 using namespace configuration;
index 84e15498fec69c221b3df70b5bb513ad92d20cba..15b39564d72121b56d7cdcc3108f4aa8bafae840 100644 (file)
@@ -23,9 +23,9 @@
 #include <structures/static_memory_gremlin.h>
 #include <timely/time_control.h>
 
-#ifdef __WIN32__
+#ifdef _MSC_VER
   #include <process.h>
-#elif defined(__UNIX__)
+#elif defined(__UNIX__) || defined(__GNU_WINDOWS__)
   #include <pthread.h>
 #else
   #error unknown OS for thread support.
@@ -89,10 +89,10 @@ ethread::ethread()
   _thread_active(false),
   _stop_thread(false),
   _data(NIL),
-#ifdef __UNIX__
-  _handle(new pthread_t),
-#elif defined(__WIN32__)
+#ifdef _MSC_VER
   _handle(0),
+#else
+  _handle(new pthread_t),
 #endif
   _sleep_time(0),
   _periodic(false),
@@ -107,10 +107,10 @@ ethread::ethread(int sleep_timer, timed_thread_types how)
   _thread_active(false),
   _stop_thread(false),
   _data(NIL),
-#ifdef __UNIX__
-  _handle(new pthread_t),
-#elif defined(__WIN32__)
+#ifdef _MSC_VER
   _handle(0),
+#else
+  _handle(new pthread_t),
 #endif
   _sleep_time(sleep_timer),
   _periodic(true),
@@ -127,7 +127,7 @@ ethread::~ethread()
 {
   stop();
   WHACK(_next_activation);
-#ifdef __UNIX__
+#ifndef _MSC_VER
   WHACK(_handle);
 #endif
 }
@@ -155,7 +155,7 @@ bool ethread::start(void *thread_data)
   int error = 0;
   int attempts = 0;
   while (attempts++ < MAXIMUM_CREATE_ATTEMPTS) {
-#ifdef __UNIX__
+#ifndef _MSC_VER
     pthread_attr_t attribs;  // special flags for creation of thread.
     int aret = pthread_attr_init(&attribs);
     if (aret) LOG("failed to init attribs.");
@@ -170,7 +170,7 @@ bool ethread::start(void *thread_data)
           (void *)this);
     if (!ret) success = true;
     else error = ret;
-#elif defined(__WIN32__)
+#else
     if (_periodic)
       _handle = _beginthread(periodic_thread_driver, 0, (void *)this);
     else
@@ -197,7 +197,7 @@ void ethread::stop()
   cancel();  // tell thread to leave.
   if (!thread_started()) return;  // not running.
   while (!thread_finished()) {
-#ifdef __WIN32__
+#ifdef _MSC_VER
     int result = 0;
     if (!GetExitCodeThread((HANDLE)_handle, (LPDWORD)&result)
         || (result != STILL_ACTIVE)) {
@@ -213,14 +213,14 @@ void ethread::exempt_stop()
 {
   _thread_active = false;
   _thread_ready = false;
-#ifdef __WIN32__
+#ifdef _MSC_VER
   _handle = 0;
 #endif
 }
 
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
 void *ethread::one_shot_thread_driver(void *hidden_pointer)
-#elif defined(__WIN32__)
+#elif defined(_MSC_VER)
 void ethread::one_shot_thread_driver(void *hidden_pointer)
 #else
 #error unknown thread signature.
@@ -228,7 +228,7 @@ void ethread::one_shot_thread_driver(void *hidden_pointer)
 {
   FUNCDEF("one_shot_thread_driver");
   ethread *manager = (ethread *)hidden_pointer;
-#ifdef __UNIX__
+#ifndef _MSC_VER
   if (!manager) return NIL;
 #else
   if (!manager) return;
@@ -244,7 +244,7 @@ void ethread::one_shot_thread_driver(void *hidden_pointer)
 #ifdef COUNT_THREADS
   _current_threads().decrement();
 #endif
-#ifdef __UNIX__
+#ifndef _MSC_VER
   pthread_exit(NIL);
   return NIL;
 #else
@@ -252,9 +252,9 @@ void ethread::one_shot_thread_driver(void *hidden_pointer)
 #endif
 }
 
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
 void *ethread::periodic_thread_driver(void *hidden_pointer)
-#elif defined(__WIN32__)
+#elif defined(_MSC_VER)
 void ethread::periodic_thread_driver(void *hidden_pointer)
 #else
 #error unknown thread signature.
@@ -262,9 +262,9 @@ void ethread::periodic_thread_driver(void *hidden_pointer)
 {
   FUNCDEF("periodic_thread_driver");
   ethread *manager = (ethread *)hidden_pointer;
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   if (!manager) return NIL;
-#elif defined(__WIN32__)
+#elif defined(_MSC_VER)
   if (!manager) return;
 #endif
 #ifdef COUNT_THREADS
@@ -316,10 +316,10 @@ void ethread::periodic_thread_driver(void *hidden_pointer)
 #ifdef COUNT_THREADS
   _current_threads().decrement();
 #endif
-#ifdef __UNIX__
+#ifndef _MSC_VER
   pthread_exit(NIL);
   return NIL;
-#elif defined(__WIN32__)
+#else
   _endthread();
 #endif
 }
index 9adab46514ce7a940a405f3a540a612485e3570a..ddc11f8419a47a89bdaae421cc093762d499afa5 100644 (file)
 
 #include <signal.h>
 
-#ifndef __APPLE__
-#ifdef __UNIX__
-//  typedef long unsigned int pthread_t;
-#endif
-#endif
-
 namespace processes {
 
 //! Provides a platform-independent object for adding threads to a program.
@@ -154,9 +148,9 @@ private:
   bool _thread_active;  //!< is the thread currently performing?
   bool _stop_thread;  //!< true if the thread should stop now.
   void *_data;  //!< holds the thread's link back to whatever.
-#ifdef __UNIX__
+#ifndef _MSC_VER
   pthread_t *_handle;  //!< thread structure for our thread.
-#elif defined(__WIN32__)
+#else
   uintptr_t _handle;  //!< thread handle for the active thread, or zero.
 #endif
   int _sleep_time;  //!< threads perform at roughly this interval.
@@ -165,10 +159,10 @@ private:
   timed_thread_types _how;  //!< how is the period evaluated?
 
   // the OS level thread functions.
-#ifdef __UNIX__
+#ifndef _MSC_VER
   static void *periodic_thread_driver(void *hidden_pointer);
   static void *one_shot_thread_driver(void *hidden_pointer);
-#elif defined(__WIN32__)
+#else
   static void periodic_thread_driver(void *hidden_pointer);
   static void one_shot_thread_driver(void *hidden_pointer);
 #endif
index bb8d7ada002cb60c7028d862f37ae772f8388ac5..20e10fda18ef9c4b6e0bcd8f72c1d78cc965fde0 100644 (file)
 #include <timely/time_control.h>
 
 #include <stdlib.h>
-#ifdef __UNIX__
+#ifndef _MSC_VER
   #include <signal.h>
   #include <sys/types.h>
   #include <sys/wait.h>
   #include <unistd.h>
-#endif
-#ifdef __WIN32__
+#else
   #include <process.h>
   #include <shellapi.h>
   #include <shlobj.h>
@@ -60,7 +59,7 @@ int_set __our_kids() {
   return __hidden_kids;
 }
 
-#ifdef __WIN32__
+#ifdef _MSC_VER
 bool launch_process::event_poll(MSG &message)
 {
   message.hwnd = 0;
@@ -87,7 +86,7 @@ bool launch_process::event_poll(MSG &message)
 //const int MAXIMUM_COMMAND_LINE = 32 * KILOBYTE;
   // maximum command line that we'll deal with here.
 
-#ifdef __UNIX__
+#ifndef _MSC_VER
 void launch_process::exiting_child_signal_handler(int sig_num)
 {
   FUNCDEF("exiting_child_signal_handler");
@@ -172,7 +171,7 @@ basis::un_int launch_process::run(const astring &app_name_in, const astring &com
     app_name.insert(0, "\"");
   if (app_name[app_name.end()] != '"')
     app_name += "\"";
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   // unix / linux implementation.
   if (flag & RETURN_IMMEDIATELY) {
     // they want to get back right away.
@@ -230,7 +229,7 @@ basis::un_int launch_process::run(const astring &app_name_in, const astring &com
     // assume they want to wait.
     return system((app_name + " " + command_line).s());
   }
-#elif defined(__WIN32__)
+#elif defined(_MSC_VER)
 
 //checking on whether we have admin rights for the launch.
 //if (IsUserAnAdmin()) {
index a988c4c59bb5b1597b27fac9d1dcd17a0324289b..44ce4857d57898fe3cb6d503e84b1142b5620d1a 100644 (file)
@@ -81,11 +81,10 @@ public:
     function. */
 
 private:
-#ifdef __UNIX__
+#ifndef _MSC_VER
   static void exiting_child_signal_handler(int sig_num);
     //!< awaits the child processes rather than leaving process handles willy nilly.
-#endif
-#ifdef __WIN32__
+#else
   static bool event_poll(tagMSG &message);
     //!< tries to process one win32 event and retrieve the "message" from it.
     /*!< this is a very general poll and will retrieve any message that's
index c4025bdafcfebd1216c18e2f36d2ce3c41d37a56..bfc49ccab3dab19dc45b769d8e1b6d3364513e8a 100644 (file)
@@ -41,7 +41,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#ifdef __UNIX__
+#ifndef _MSC_VER
   #include <unistd.h>
 #endif
 
@@ -54,15 +54,14 @@ using namespace structures;
 
 namespace processes {
 
-#ifdef __WIN32__
+#ifdef _MSC_VER
   #include <tlhelp32.h>
   const astring NTVDM_NAME = "ntvdm.exe";
     // the umbrella process that hangs onto 16 bit tasks for NT.
-  #ifdef _MSCVER
-    #include <vdmdbg.h>
-  #endif
-#endif
-#ifdef __UNIX__
+//  #ifdef _MSCVER
+//    #include <vdmdbg.h>
+//  #endif
+#else
   #include <signal.h>
   #include <stdio.h>
 #endif
@@ -78,16 +77,16 @@ namespace processes {
 class process_implementation_hider
 {
 public:
-#ifdef __WIN32__
+#ifdef _MSC_VER
   // psapi members:
   application_instance psapi_dll;
   application_instance vdm_dll;
   BOOL (WINAPI *enumerate_processes)(basis::un_int *, basis::un_int cb, basis::un_int *);
   BOOL (WINAPI *enumerate_modules)(HANDLE, HMODULE *, basis::un_int, basis::un_int *);
   basis::un_int (WINAPI *get_module_name)(HANDLE, HMODULE, LPTSTR, basis::un_int);
-#ifdef _MSCVER
-  INT (WINAPI *tasker_16bit)(basis::un_int, TASKENUMPROCEX  fp, LPARAM);
-#endif
+//#ifdef _MSCVER
+//  INT (WINAPI *tasker_16bit)(basis::un_int, TASKENUMPROCEX  fp, LPARAM);
+//#endif
 
   // toolhelp members:
   application_instance kernel32_dll;
@@ -101,9 +100,9 @@ public:
   process_implementation_hider()
     : psapi_dll(NIL), vdm_dll(NIL), enumerate_processes(NIL),
       enumerate_modules(NIL), get_module_name(NIL),
-#ifdef _MSCVER
-      tasker_16bit(NIL),
-#endif
+//#ifdef _MSCVER
+//      tasker_16bit(NIL),
+//#endif
       kernel32_dll(NIL), create_snapshot(NIL), first_process(NIL),
       next_process(NIL) {}
 
@@ -136,10 +135,9 @@ public:
 
 process_control::process_control()
 : _ptrs(new process_implementation_hider),
-#ifdef __WIN32__
+#ifdef _MSC_VER
   _use_psapi(true),
-#endif
-#ifdef __UNIX__
+#else
   _rando(new chaos),
 #endif
   _healthy(false)
@@ -147,7 +145,7 @@ process_control::process_control()
   // Check to see if were running under Windows95 or Windows NT.
   version osver = application_configuration::get_OS_version();
 
-#ifdef __WIN32__
+#ifdef _MSC_VER
   if (osver.v_revision() == VER_PLATFORM_WIN32_WINDOWS) {
     // we're on Windows 95, so use the toolhelp API for the processes.
     _use_psapi = false;
@@ -159,8 +157,7 @@ process_control::process_control()
     _healthy = initialize_psapi_support();
   else
     _healthy = initialize_toolhelp_support();
-#endif
-#ifdef __UNIX__
+#else
   _healthy = true;
 #endif
 }
@@ -168,7 +165,7 @@ process_control::process_control()
 process_control::~process_control()
 {
   WHACK(_ptrs);
-#ifdef __UNIX__
+#ifndef _MSC_VER
   WHACK(_rando);
 #endif
 }
@@ -198,7 +195,7 @@ void process_control::sort_by_pid(process_entry_array &v)
 bool process_control::query_processes(process_entry_array &to_fill)
 {
   if (!_healthy) return false;
-#ifdef __WIN32__
+#ifdef _MSC_VER
   if (!_use_psapi) {
     // we're on Windows 95 or something, so use the toolhelp API for the
     // processes.
@@ -207,13 +204,12 @@ bool process_control::query_processes(process_entry_array &to_fill)
     // we're on Windows NT and so on; use the process API (PSAPI) to get info.
     return get_processes_with_psapi(to_fill);
   }
-#endif
-#ifdef __UNIX__
+#else
   return get_processes_with_ps(to_fill);
 #endif
 }
 
-#ifdef __WIN32__
+#ifdef _MSC_VER
 bool process_control::initialize_psapi_support()
 {
   // create an instance of the PSAPI dll for querying 32-bit processes and
@@ -233,15 +229,15 @@ bool process_control::initialize_psapi_support()
   _ptrs->get_module_name
       = (basis::un_int (WINAPI *)(HANDLE, HMODULE, LPTSTR, basis::un_int))
         GetProcAddress(_ptrs->psapi_dll, "GetModuleFileNameExA");
-#ifdef _MSCVER
-  _ptrs->tasker_16bit = (INT(WINAPI *)(basis::un_int, TASKENUMPROCEX, LPARAM))
-        GetProcAddress(_ptrs->vdm_dll, "VDMEnumTaskWOWEx");
-#endif
+//#ifdef _MSCVER
+//  _ptrs->tasker_16bit = (INT(WINAPI *)(basis::un_int, TASKENUMPROCEX, LPARAM))
+//        GetProcAddress(_ptrs->vdm_dll, "VDMEnumTaskWOWEx");
+//#endif
   if (!_ptrs->enumerate_processes || !_ptrs->enumerate_modules
       || !_ptrs->get_module_name
-#ifdef _MSCVER
-      || !_ptrs->tasker_16bit
-#endif
+//#ifdef _MSCVER
+//      || !_ptrs->tasker_16bit
+//#endif
       ) return false;
 
   return true;
@@ -273,12 +269,11 @@ bool process_control::zap_process(basis::un_int to_zap)
   FUNCDEF("zap_process");
 #endif
   if (!_healthy) return false;
-#ifdef __UNIX__
+#ifndef _MSC_VER
   int ret = kill(to_zap, 9);
     // send the serious take-down signal to the process.
   return !ret;
-#endif
-#ifdef __WIN32__
+#else
   HANDLE h = OpenProcess(PROCESS_TERMINATE, false, to_zap);
   if (!h) {
 #ifdef DEBUG_PROCESS_CONTROL
@@ -310,10 +305,9 @@ process_entry process_control::query_process(basis::un_int to_query)
   }
 
 //hmmm: implement more specifically.
-#ifdef __UNIX__
+#ifndef _MSC_VER
 //put in the single process grabber deal.
-#endif
-#ifdef __WIN32__
+#else
 //grab the entry from the list.
 #endif
 
@@ -358,7 +352,7 @@ bool process_control::find_process_in_list(const process_entry_array &processes,
 
 //////////////
 
-#ifdef __WIN32__
+#ifdef _MSC_VER
 // this section is the PSAPI version of the query.
 
 // called back on each 16 bit task.
@@ -450,15 +444,15 @@ bool process_control::get_processes_with_psapi(process_entry_array &to_fill)
           (new_entry.path().end() - NTVDM_NAME.length() + 1,
           new_entry.path().end());
       temp.to_lower();
-#ifdef _MSCVER
-//hmmm: pull this back in for mingw when it seems to be supported, if ever.
-      if (temp == NTVDM_NAME) {
-        // set up a callback stampede on the 16 bit processes.
-        process_info_clump info(pid_list[i], to_fill);
-        _ptrs->tasker_16bit(pid_list[i], (TASKENUMPROCEX)process_16bit,
-             (LPARAM)&info);
-      }
-#endif
+//#ifdef _MSCVER
+////hmmm: pull this back in for mingw when it seems to be supported, if ever.
+//      if (temp == NTVDM_NAME) {
+//        // set up a callback stampede on the 16 bit processes.
+//        process_info_clump info(pid_list[i], to_fill);
+//        _ptrs->tasker_16bit(pid_list[i], (TASKENUMPROCEX)process_16bit,
+//             (LPARAM)&info);
+//      }
+//#endif
     }
   }
 
@@ -505,7 +499,7 @@ bool process_control::get_processes_with_toolhelp(process_entry_array &to_fill)
 }
 #endif  // __WIN32__
 
-#ifdef __UNIX__
+#ifndef _MSC_VER
 
 #define CLOSE_TEMPORARY_FILE { \
 /*  continuable_error("process_control", "get_processes_with_ps", error); */ \
index c6d2586176cd0a10c84f449d7b082d80e262c20e..350da8c653f63936c843053f922f197ea3b2a8f6 100644 (file)
@@ -74,19 +74,17 @@ public:
 
 private:
   process_implementation_hider *_ptrs;  //!< our OS baggage.
-#ifdef __UNIX__
+#ifndef _MSC_VER
   mathematics::chaos *_rando;  //!< used for process list.
-#endif
-#ifdef __WIN32__
+#else
   bool _use_psapi;  //!< true if we should be using the PSAPI on NT and family.
 #endif
   bool _healthy;  //!< true if construction succeeded.
 
-#ifdef __UNIX__
+#ifndef _MSC_VER
   bool get_processes_with_ps(process_entry_array &to_fill);
     //!< asks the ps program what processes exist.
-#endif
-#ifdef __WIN32__
+#else
   // fill in our function pointers to access the kernel functions appropriate
   // for either NT (psapi) or 9x (toolhelp).
   bool initialize_psapi_support();
index a4263ba4073efb712020d87d850fafa1053161e3..a8eb15e5855ffcb5b671bb60171e976b60787adb 100644 (file)
@@ -33,7 +33,7 @@
 #include <timely/time_stamp.h>
 #include <unit_test/unit_base.h>
 
-#ifdef __WIN32__
+#ifdef _MSC_VER
   #include <comdef.h>
 #endif
 #include <stdio.h>
@@ -775,6 +775,7 @@ void test_string::run_test_23()
 void test_string::run_test_24()
 {
   FUNCDEF("run_test_24");
+#ifndef __GNU_WINDOWS__
 #ifdef __WIN32__
   // 24th test group tests _bstr_t conversions.
   _bstr_t beast("abcdefgh");
@@ -793,6 +794,7 @@ void test_string::run_test_24()
   _bstr_t pork = string_convert::to_bstr_t(jethro);
   ASSERT_FALSE(strcmp(pork.operator char *(), jethro.s()), "second test failed comparison");
 #endif
+#endif
 }
 
 void test_string::run_test_25()
index 697439e7a1951957ad0c4d4a3e578d6fcff18ab4..a0544728ffca1277f6ba3ee54cd6ac663e916911 100644 (file)
 
 #ifdef __WIN32__
   #ifndef _MANAGED
-    #ifndef __MINGW32__
       #define _WINSOCKAPI_  // the dance of the windows headers.
-      #include <windows.h>
-      #include <comdef.h>
-    #endif
+  // winsock support...
+  #undef FD_SETSIZE
+  #define FD_SETSIZE 1000
+    // if you don't set this, you can only select on a default of 64 sockets.
+  #include <winsock2.h>
+  #include <windows.h>
+  #ifndef __GNU_WINDOWS__
+    #include <comdef.h>
+  #endif
   #endif
 #endif
 
@@ -48,7 +53,7 @@ namespace string_convert
 
 #ifdef WIN32
  #ifndef _MANAGED
-   #ifndef __MINGW32__
+  #ifndef __GNU_WINDOWS__
     //! conversion from ATL's _bstr_t object to astring.
     inline basis::astring to_astring(const _bstr_t &original) {
        return basis::astring(basis::astring::UNTERMINATED, (const char *)original,
@@ -58,7 +63,7 @@ namespace string_convert
     //! conversion from astring to the ATL _bstr_t object.
     inline _bstr_t to_bstr_t(const basis::astring &original)
     { return _bstr_t(original.s()); }
-   #endif
+  #endif
  #endif
 #endif
 
index 9be8aba0214f532a0458a36d0b370f226c6d5276..c8186c726d6faf5afbe3006cd0a7838b9d37e2c0 100644 (file)
@@ -62,7 +62,7 @@ SAFE_STATIC(timer_driver, timer_driver::global_timer_driver, )
 
 //////////////
 
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
 const int OUR_SIGNAL = SIGUSR2;
 
 class signalling_thread : public ethread
@@ -78,7 +78,7 @@ private:
 };
 #endif
 
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
 void timer_driver_private_handler(int signal_seen)
 #elif defined(__WIN32__)
 void __stdcall timer_driver_private_handler(window_handle hwnd, basis::un_int msg,
@@ -92,7 +92,7 @@ void __stdcall timer_driver_private_handler(window_handle hwnd, basis::un_int ms
   #define static_class_name() "timer_driver"
   FUNCDEF("timer_driver_private_handler");
 #endif
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   int seen = signal_seen;
   if (seen != OUR_SIGNAL) {
 #elif defined(__WIN32__)
@@ -147,10 +147,9 @@ public:
 timer_driver::timer_driver()
 : _timers(new driven_objects_list),
   _lock(new mutex),
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   _prompter(new signalling_thread(INITIAL_TIMER_GRANULARITY)),
-#endif
-#ifdef __WIN32__
+#else
   _real_timer_id(NIL),
 #endif
   _in_timer(false)
@@ -215,7 +214,7 @@ timer_driver::~timer_driver()
 #endif
 }
 
-#ifdef __WIN32__
+#ifdef _MSC_VER
 basis::un_int *timer_driver::real_timer_id() { return _real_timer_id; }
 #endif
 
@@ -405,10 +404,10 @@ void timer_driver::hookup_OS_timer(int duration)
 #ifdef DEBUG_TIMER_DRIVER
   LOG(a_sprintf("hooking next OS timer in %d ms.", duration));
 #endif
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   // just make our thread hit after the duration specified.
   _prompter->reschedule(duration);
-#elif defined(__WIN32__)
+#elif defined(_MSC_VER)
   int max_tries_left = 100;
   while (max_tries_left-- >= 0) {
     _real_timer_id = (basis::un_int *)SetTimer(NIL, 0, duration,
@@ -429,10 +428,10 @@ void timer_driver::unhook_OS_timer()
 #ifdef DEBUG_TIMER_DRIVER
   FUNCDEF("unhook_OS_timer");
 #endif
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   // postpone the thread for quite a while so we can take care of business.
   _prompter->reschedule(LONG_TIME);
-#elif defined(__WIN32__)
+#elif defined(_MSC_VER)
   if (_real_timer_id) KillTimer(NIL, (UINT_PTR)_real_timer_id);
 #endif
 #ifdef DEBUG_TIMER_DRIVER
index ae2b9735c36dc7d73871caa99ef751777f3efb7b..1cf2932fdd20f5d632988b57c9d91c0c6300063d 100644 (file)
@@ -69,7 +69,7 @@ public:
 
   // internal methods.
 
-#ifdef __WIN32__
+#if defined(_MSC_VER)
   basis::un_int *real_timer_id();
     //!< provides the timer id for comparison on windows platforms.
 #endif
@@ -83,10 +83,9 @@ public:
 private:
   driven_objects_list *_timers;  //!< timer hooked objects.
   basis::mutex *_lock;  //!< protects list of timers.
-#ifdef __UNIX__
+#if defined(__UNIX__) || defined(__GNU_WINDOWS__)
   signalling_thread *_prompter;  //!< drives our timers.
-#endif
-#ifdef __WIN32__
+#else
   basis::un_int *_real_timer_id;  //!< used for storing window timer handle.
 #endif
   bool _in_timer;  //!< true if we're handling the timer right now.
index 65b9c38991053b6584a8b1fbaab7b5e542bfe603..9183ab87bc86f6e7d10de81ffcc51d0d1970b5a0 100644 (file)
@@ -27,16 +27,47 @@ endif
 # implement special bits for gnu on unix.
 ifeq "$(COMPILER)" "GNU_LINUX"
   ifneq "$(USE_XWIN)" ""
-    ifneq "$(OP_SYSTEM)" "WIN32"
-      DEFINITIONS += __XWINDOWS__ __X__
-      LIBS_USED += Xm Xt X11 Xft Xp 
+    DEFINITIONS += __XWINDOWS__ __X__
+    LIBS_USED += Xm Xt X11 Xft Xp 
 #need to separate out with a USE_MOTIF kind of thing.
 LIBS_USED += Xmu
-      HEADER_SEARCH_PATH += /usr/include/X11 /usr/X11R6/include /usr/include/g++
-      LIBRARY_SEARCH_PATH += /usr/X11R6/lib 
+    HEADER_SEARCH_PATH += /usr/include/X11 /usr/X11R6/include /usr/include/g++
+    LIBRARY_SEARCH_PATH += /usr/X11R6/lib 
+  endif
+
+  ifneq "$(USE_SSL)" ""
+    LIBS_USED += ssl crypto
+  endif
+  
+  ifneq "$(USE_WXWIDGETS)" ""
+    DEFINITIONS += __WXWIDGETS__ 
+    use_unicode =
+    ifneq "$(findstring UNICODE, $(DEFINITIONS))" ""
+      use_unicode = true
+    endif
+
+    # decide whether to turn on the unicode flag or not.
+    ifneq "$(use_unicode)" ""
+      DEFINITIONS += wxUSE_UNICODE
+      UNICODE_FLAG_ADD = --unicode=yes
+    else
+      UNICODE_FLAG_ADD = --unicode=no
     endif
+    # could add for debugging: --debug=yes 
+    COMPILER_FLAGS += $(shell wx-config --cxxflags $(UNICODE_FLAG_ADD) )
+
+    LOAD_FLAG_PREFIX += $(shell wx-config --libs $(UNICODE_FLAG_ADD) )
   endif
 
+  ifneq "$(USE_CURL)" ""
+    COMPILER_FLAGS += `curl-config --cflags`
+    LOAD_FLAG_SUFFIX += `curl-config --libs`
+  endif
+endif
+
+# some special code for gnu compiler on windows.
+ifeq "$(COMPILER)" "GNU_WINDOWS"
+
   ifneq "$(USE_SSL)" ""
     LIBS_USED += ssl crypto
   endif
@@ -45,9 +76,7 @@ LIBS_USED += Xmu
     DEFINITIONS += __WXWIDGETS__ 
     use_unicode =
     ifneq "$(findstring UNICODE, $(DEFINITIONS))" ""
-#      ifeq "$(OP_SYSTEM)" "WIN32"
-        use_unicode = true
-#      endif
+      use_unicode = true
     endif
 
     # decide whether to turn on the unicode flag or not.
@@ -91,9 +120,7 @@ ifeq "$(COMPILER)" "GNU_DARWIN"
     DEFINITIONS += __WXWIDGETS__ 
     use_unicode =
     ifneq "$(findstring UNICODE, $(DEFINITIONS))" ""
-#      ifeq "$(OP_SYSTEM)" "WIN32"
         use_unicode = true
-#      endif
     endif
 
     # decide whether to turn on the unicode flag or not.
@@ -137,6 +164,7 @@ endif
 
 # win32 compiler additions.
 ifeq "$(OP_SYSTEM)" "WIN32"
+#ifeq "$(COMPILER)" "VISUAL_CPP"
   # processes the def file for linkage, if one has been specified.
   ifneq "$(DEF_FILE)" ""
     LOAD_FLAG_PREFIX += -def:$(DEF_FILE)
@@ -328,12 +356,12 @@ ACTUAL_FIRST_TARGETS = check_requirements $(EXTRA_FIRST_TARGETS) $(VERSION_TARGE
 
 # Adds the primary targets to the list of products to create.
 ifeq "$(NO_COMPILE)" ""
-  ifeq "$(OP_SYSTEM)" "UNIX"
+  ifneq "$(COMPILER)" "VISUAL_CPP"
     ACTUAL_TARGETS1 = $(TARGETS:%.exe=$(EXECUTABLE_DIR)/%)
   else
     ACTUAL_TARGETS1 = $(TARGETS:%.exe=$(EXECUTABLE_DIR)/%.exe)
   endif
-  ifeq "$(OP_SYSTEM)" "UNIX"
+  ifneq "$(COMPILER)" "VISUAL_CPP"
     ACTUAL_TARGETS2 = $(ACTUAL_TARGETS1:%.dll=%.so)
     ACTUAL_TARGETS3 = $(ACTUAL_TARGETS2:%.so=$(DYNAMIC_LIBRARY_DIR)/%$(TRIPART_VERSION).so)
   else
@@ -532,7 +560,7 @@ endif #no_compile
 
 # creates "exe" executables using all of the appropriate objects.
 
-ifeq "$(OP_SYSTEM)" "WIN32"
+ifeq "$(COMPILER)" "VISUAL_CPP"
   ifneq "$(NO_COMPILE)" ""
 $(EXECUTABLE_DIR)/%.exe:
   endif
@@ -556,9 +584,9 @@ $(EXECUTABLE_DIR)/%.exe: $(OBJECT_DIR)/%.obj $(ACTUAL_OBJECTS:%=$(OBJECT_DIR)/%)
        $(HIDER)ReplaceVistaIcon "$@" "$(VCPP_VISTA_ICON)"
     endif
   endif #no_compile
-endif #win32
+endif #visual studio
 
-ifeq "$(OP_SYSTEM)" "UNIX"
+ifneq "$(COMPILER)" "VISUAL_CPP"
   ifneq "$(NO_COMPILE)" ""
 $(EXECUTABLE_DIR)/%:
   endif
index 03f2ab65b9d541d36a1743141096759574ea3308..8dda91725dcb50aa7ef0c4bab2eb85fbd62008ce 100644 (file)
@@ -60,7 +60,7 @@ endif
 # code.  It is mainly used within CLAM itself for determining the proper
 # compiler flags.
 export COMPILER
-#COMPILER := GNU_LINUX | GNU_ARM_LINUX | GNU_DARWIN | GNU_WIN32 | VISUAL_CPP
+#COMPILER := GNU_LINUX | GNU_ARM_LINUX | GNU_DARWIN | GNU_WINDOWS | VISUAL_CPP
 
 # choose a default compiler if none was specified.
 ifeq "$(COMPILER)" ""
@@ -72,8 +72,8 @@ ifeq "$(COMPILER)" ""
     endif
   endif
   ifeq "$(OP_SYSTEM)" "WIN32"
-#    COMPILER := GNU_WIN32
-    COMPILER := VISUAL_CPP
+    COMPILER := GNU_WINDOWS
+#    COMPILER := VISUAL_CPP
   endif
   ifeq "$(COMPILER)" ""
     # if we get into this case, we have no idea how to set the default
@@ -421,8 +421,13 @@ ifeq "$(OP_SYSTEM)" "UNIX"
   DYNLIB_ENDING = .so
 endif
 ifeq "$(OP_SYSTEM)" "WIN32"
-  LIB_ENDING = .lib
-  DYNLIB_ENDING = .dll
+  ifeq "$(COMPILER)" "VISUAL_CPP"
+    LIB_ENDING = .lib
+    DYNLIB_ENDING = .dll
+  else
+    LIB_ENDING = .a
+    DYNLIB_ENDING = .so
+  endif
 endif
 
 ###############################################################################
@@ -577,11 +582,11 @@ ifeq "$(COMPILER)" "GNU_ARM_LINUX"
 
 endif
 
-ifeq "$(COMPILER)" "GNU_WIN32"
+ifeq "$(COMPILER)" "GNU_WINDOWS"
   # GNU compiler for MS Windoze...
   CC = g++
   ifeq "$(COMPILER_ROOT_DIR)" ""
-    COMPILER_ROOT_DIR = c:/system/mingw
+    COMPILER_ROOT_DIR = $(CYGROOT)
   endif
 
   export COMPILER_VERSION = $(shell $(SHELL) $(CLAM_DIR)/cpp/get_version.sh $(COMPILER) $(COMPILER_ROOT_DIR) )
@@ -589,14 +594,17 @@ ifeq "$(COMPILER)" "GNU_WIN32"
   RC := $(COMPILER_ROOT_DIR)/bin/windres
   PLATFORM_ADD_IN = w32_
 
-  COMPILER_HEADER_DIR = $(COMPILER_ROOT_DIR)/include $(COMPILER_ROOT_DIR)/include/c++/3.4.2 $(COMPILER_ROOT_DIR)/lib/gcc/mingw32/3.4.2/include 
+  COMPILER_HEADER_DIR = $(COMPILER_ROOT_DIR)/include $(COMPILER_ROOT_DIR)/include/c++/3.4.2 
+#$(COMPILER_ROOT_DIR)/lib/gcc/mingw32/3.4.2/include 
 ###$(COMPILER_ROOT_DIR)/usr/include/mingw $(COMPILER_ROOT_DIR)/usr/include $(COMPILER_ROOT_DIR)/usr/include/w32api $(COMPILER_ROOT_DIR)/usr/include/extras
 
   COMPILER_LIBRARY_DIR = $(COMPILER_ROOT_DIR)/lib
-  DEFINITIONS += _Windows _WINDOWS WIN32 __WIN32__ __FLAT__ VC_EXTRALEAN WIN32_LEAN_AND_MEAN ATL_NO_LEAN_AND_MEAN _WIN32 __cplusplus 
+  DEFINITIONS += __GNU_WINDOWS__ _Windows _WINDOWS WIN32 __WIN32__ __FLAT__ VC_EXTRALEAN WIN32_LEAN_AND_MEAN ATL_NO_LEAN_AND_MEAN _WIN32 __cplusplus __USE_W32_SOCKETS
 #__USE_GNU 
 
   LIBRARY_TOOL = ar
+  LIBRARY_PATH_FLAG = -L 
+  LIB_PREFIX = lib
 #  LOAD_FLAG_PREFIX += -lpthread
   LOAD_FLAG_PREFIX += -mwindows
   CREATE_LIBRARY_FLAG += -r