Please find below a diff containing more fixes for Mac OS X: * Fix shared lib extension (.dylib) for all drivers * GPSMap60CSx driver: - Fix big endian issues. I tested track and waypoint upload and download, route download, live log mode and screen shot. No idea how to create new routes, so I didn't test upload. Map up-/download is also untested. Icon upload should work, but is apparently not supported by QLandkarteGT. - Introduce screen[hv]flip properties for proper screen shot treatment. - Fix a few typos (thanks to Eclipse's spell checker).
BTW, two suggestions for QLandkarteGT: There should be a possibility to create new tracks and routes, like new waypoints. And the custom icons should be uploaded together with the waypoints if any of them uses one. Best, Albrecht.
Index: src/EtrexH/CMakeLists.txt =================================================================== --- src/EtrexH/CMakeLists.txt (Revision 1840) +++ src/EtrexH/CMakeLists.txt (Arbeitskopie) @@ -24,7 +24,7 @@ foreach(var ${ALIASES}) message(" ${var}") add_custom_command( TARGET EtrexH POST_BUILD - COMMAND ln ARGS -sf libEtrexH.so lib${var}.so + COMMAND ln ARGS -sf libEtrexH${SHARED_LIB_EXT} lib${var}${SHARED_LIB_EXT} WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH} ) endforeach(var) Index: src/GPSMap76/CMakeLists.txt =================================================================== --- src/GPSMap76/CMakeLists.txt (Revision 1840) +++ src/GPSMap76/CMakeLists.txt (Arbeitskopie) @@ -24,7 +24,7 @@ foreach(var ${ALIASES}) message(" ${var}") add_custom_command( TARGET GPSMap76 POST_BUILD - COMMAND ln ARGS -sf libGPSMap76.so lib${var}.so + COMMAND ln ARGS -sf libGPSMap76${SHARED_LIB_EXT} lib${var}${SHARED_LIB_EXT} WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH} ) endforeach(var) Index: src/EtrexLegend/CMakeLists.txt =================================================================== --- src/EtrexLegend/CMakeLists.txt (Revision 1840) +++ src/EtrexLegend/CMakeLists.txt (Arbeitskopie) @@ -24,7 +24,7 @@ foreach(var ${ALIASES}) message(" ${var}") add_custom_command( TARGET EtrexLegend POST_BUILD - COMMAND ln ARGS -sf libEtrexLegend.so lib${var}.so + COMMAND ln ARGS -sf libEtrexLegend${SHARED_LIB_EXT} lib${var}${SHARED_LIB_EXT} WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH} ) endforeach(var) Index: src/EtrexLegendC/CMakeLists.txt =================================================================== --- src/EtrexLegendC/CMakeLists.txt (Revision 1840) +++ src/EtrexLegendC/CMakeLists.txt (Arbeitskopie) @@ -24,7 +24,7 @@ foreach(var ${ALIASES}) message(" ${var}") add_custom_command( TARGET EtrexLegendC POST_BUILD - COMMAND ln ARGS -sf libEtrexLegendC.so lib${var}.so + COMMAND ln ARGS -sf libEtrexLegendC${SHARED_LIB_EXT} lib${var}${SHARED_LIB_EXT} WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH} ) endforeach(var) Index: src/GPSMap60CSx/CDevice.cpp =================================================================== --- src/GPSMap60CSx/CDevice.cpp (Revision 1840) +++ src/GPSMap60CSx/CDevice.cpp (Arbeitskopie) @@ -33,6 +33,13 @@ using namespace GPSMap60CSx; using namespace Garmin; using namespace std; +#if defined(HAVE_BIGENDIAN) || !defined(CAN_UNALIGNED) +# define DBG_SHOW_WAYPOINT +# define UNTESTED throw exce_t(errSync, "This function has not yet been tested on your platform.") +#else +# define UNTESTED +#endif + namespace GPSMap60CSx { @@ -122,7 +129,7 @@ namespace GPSMap60CSx command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Command_Data; command.size = 2; - *(uint16_t*)command.payload = Cmnd_Start_Pvt_Data; + *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Start_Pvt_Data); dev->usb->write(command); while(dev->doRealtimeThread) { @@ -143,7 +150,7 @@ namespace GPSMap60CSx command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Command_Data; command.size = 2; - *(uint16_t*)command.payload = Cmnd_Stop_Pvt_Data; + *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Stop_Pvt_Data); dev->usb->write(command); dev->_release(); @@ -164,6 +171,8 @@ namespace GPSMap60CSx CDevice::CDevice() : devid(0) +, screenhflip(false) +, screenvflip(false) , usb(0) , doRealtimeThread(false) , pScreen(0) @@ -194,9 +203,6 @@ const string& CDevice::getCopyright() void CDevice::_acquire() { -#if defined(HAVE_BIGENDIAN) || !defined(CAN_UNALIGNED) - throw exce_t(errSync, "This device has not yet been ported to your platform."); -#endif usb = new CUSB(); usb->open(); if(devid == 0x01a5) { @@ -220,6 +226,7 @@ void CDevice::_acquire() void CDevice::_uploadMap(const uint8_t * mapdata, uint32_t size, const char * key) { if(usb == 0) return; + UNTESTED; Packet_t command; Packet_t response; int cancel = 0; @@ -235,16 +242,16 @@ void CDevice::_uploadMap(const uint8_t * mapdata, command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Command_Data; command.size = 2; - *(uint16_t*)command.payload = Cmnd_Transfer_Mem; + *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Mem); usb->write(command); while(usb->read(response)) { if(response.id == Pid_Capacity_Data) { - cout << "free memory: " << dec << (((uint32_t*)response.payload)[1] / (1024*1024)) << " MB" << endl; - uint32_t memory = ((uint32_t*)response.payload)[1]; + uint32_t memory = gar_ptr_load(uint32_t, response.payload + 4); + cout << "free memory: " << dec << memory / (1024*1024) << " MB" << endl; if(memory < size) { stringstream msg; - msg << "Failed to send map: Unit has not enought memory (available/needed): " << memory << "/" << size << " bytes"; + msg << "Failed to send map: Unit has not enough memory (available/needed): " << memory << "/" << size << " bytes"; throw exce_t(errRuntime,msg.str()); } } @@ -271,7 +278,7 @@ void CDevice::_uploadMap(const uint8_t * mapdata, command.type = GUSB_APPLICATION_LAYER; command.id = 75; command.size = 2; - *(uint16_t*)command.payload = 0x000A; + *(uint16_t*)command.payload = gar_endian(uint16_t, 0x000A); usb->write(command); while(usb->read(response)) { @@ -291,7 +298,7 @@ void CDevice::_uploadMap(const uint8_t * mapdata, chunkSize = (size < (GUSB_PAYLOAD_SIZE - sizeof(offset))) ? size : (GUSB_PAYLOAD_SIZE - sizeof(offset)); command.size = chunkSize + sizeof(offset); - *(uint32_t*)command.payload = offset; + *(uint32_t*)command.payload = gar_endian(uint32_t, offset); memcpy(command.payload + sizeof(offset),mapdata,chunkSize); size -= chunkSize; mapdata += chunkSize; @@ -300,7 +307,7 @@ void CDevice::_uploadMap(const uint8_t * mapdata, usb->write(command); double progress = ((total - size) * 100.0) / total; - callback(progress,0,&cancel,0,"Transfering map data."); + callback(progress,0,&cancel,0,"Transferring map data."); } callback(100,0,&cancel,0,"done"); @@ -309,7 +316,7 @@ void CDevice::_uploadMap(const uint8_t * mapdata, command.type = GUSB_APPLICATION_LAYER; command.id = 45; command.size = 2; - *(uint16_t*)command.payload = 0x000A; + *(uint16_t*)command.payload = gar_endian(uint16_t, 0x000A); usb->write(command); } @@ -317,6 +324,7 @@ void CDevice::_uploadMap(const uint8_t * mapdata, void CDevice::_uploadMap(const char * filename, uint32_t size, const char * key) { if(usb == 0) return; + UNTESTED; Packet_t command; Packet_t response; int cancel = 0; @@ -332,16 +340,16 @@ void CDevice::_uploadMap(const char * filename, ui command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Command_Data; command.size = 2; - *(uint16_t*)command.payload = Cmnd_Transfer_Mem; + *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Mem); usb->write(command); while(usb->read(response)) { if(response.id == Pid_Capacity_Data) { - cout << "free memory: " << dec << (((uint32_t*)response.payload)[1] / (1024*1024)) << " MB" << endl; - uint32_t memory = ((uint32_t*)response.payload)[1]; + uint32_t memory = gar_ptr_load(uint32_t, response.payload + 4); + cout << "free memory: " << dec << memory / (1024*1024) << " MB" << endl; if(memory < size) { stringstream msg; - msg << "Failed to send map: Unit has not enought memory (available/needed): " << memory << "/" << size << " bytes"; + msg << "Failed to send map: Unit has not enough memory (available/needed): " << memory << "/" << size << " bytes"; throw exce_t(errRuntime,msg.str()); } } @@ -368,7 +376,7 @@ void CDevice::_uploadMap(const char * filename, ui command.type = GUSB_APPLICATION_LAYER; command.id = 75; command.size = 2; - *(uint16_t*)command.payload = 0x000A; + *(uint16_t*)command.payload = gar_endian(uint16_t, 0x000A); usb->write(command); while(usb->read(response)) { @@ -399,7 +407,7 @@ void CDevice::_uploadMap(const char * filename, ui fread(buffer, chunkSize, 1, fid); - *(uint32_t*)command.payload = offset; + *(uint32_t*)command.payload = gar_endian(uint32_t, offset); memcpy(command.payload + sizeof(offset),buffer,chunkSize); size -= chunkSize; offset += chunkSize; @@ -407,7 +415,7 @@ void CDevice::_uploadMap(const char * filename, ui usb->write(command); double progress = ((total - size) * 100.0) / total; - callback(progress,0,&cancel,0,"Transfering map data."); + callback(progress,0,&cancel,0,"Transferring map data."); } callback(100,0,&cancel,0,"done"); @@ -416,7 +424,7 @@ void CDevice::_uploadMap(const char * filename, ui command.type = GUSB_APPLICATION_LAYER; command.id = 45; command.size = 2; - *(uint16_t*)command.payload = 0x000A; + *(uint16_t*)command.payload = gar_endian(uint16_t, 0x000A); usb->write(command); } @@ -425,6 +433,7 @@ void CDevice::_queryMap(std::list<Map_t>& maps) { maps.clear(); if(usb == 0) return; + UNTESTED; Packet_t command; Packet_t response; @@ -509,7 +518,7 @@ void CDevice::_downloadWaypoints(list<Garmin::Wpt_ command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Command_Data; command.size = 2; - *(uint16_t*)command.payload = Cmnd_Transfer_Wpt; + *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Wpt); usb->write(command); while(1) { @@ -517,7 +526,7 @@ void CDevice::_downloadWaypoints(list<Garmin::Wpt_ if(response.id == Pid_Records) { #ifdef DBG_SHOW_WAYPOINT - cout << "number of waypoints:" << *(int16_t*)response.payload << endl; + cout << "number of waypoints:" << gar_ptr_load(uint16_t, response.payload) << endl; #endif } @@ -539,7 +548,7 @@ void CDevice::_downloadWaypoints(list<Garmin::Wpt_ command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Command_Data; command.size = 2; - *(uint16_t*)command.payload = Cmnd_Transfer_Prx; + *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Prx); usb->write(command); while(1) { @@ -549,7 +558,7 @@ void CDevice::_downloadWaypoints(list<Garmin::Wpt_ if(response.id == Pid_Records) { //TODO read data #ifdef DBG_SHOW_WAYPOINT - cout << "number of proximity waypoints:" << *(int16_t*)response.payload << endl; + cout << "number of proximity waypoints:" << gar_ptr_load(uint16_t, response.payload) << endl; #endif } @@ -627,7 +636,7 @@ void CDevice::_uploadWaypoints(std::list<Garmin::W command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Records; command.size = 2; - *(uint16_t*)command.payload = prx_wpt_cnt; + *(uint16_t*)command.payload = gar_endian(uint16_t, prx_wpt_cnt); usb->write(command); wpt = waypoints.begin(); @@ -649,7 +658,7 @@ void CDevice::_uploadWaypoints(std::list<Garmin::W command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Xfer_Cmplt; command.size = 2; - *(uint16_t*)command.payload = Cmnd_Transfer_Prx; + *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Prx); usb->write(command); } @@ -659,7 +668,7 @@ void CDevice::_uploadWaypoints(std::list<Garmin::W command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Records; command.size = 2; - *(uint16_t*)command.payload = waypoints.size(); + *(uint16_t*)command.payload = gar_endian(uint16_t, waypoints.size()); usb->write(command); wpt = waypoints.begin(); @@ -680,7 +689,7 @@ void CDevice::_uploadWaypoints(std::list<Garmin::W command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Xfer_Cmplt; command.size = 2; - *(uint16_t*)command.payload = Cmnd_Transfer_Wpt; + *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Wpt); usb->write(command); } @@ -704,7 +713,7 @@ void CDevice::_downloadTracks(std::list<Garmin::Tr command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Command_Data; command.size = 2; - *(uint16_t*)command.payload = Cmnd_Transfer_Trk; + *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Trk); usb->write(command); int trackidx = 0; @@ -731,7 +740,7 @@ void CDevice::_downloadTracks(std::list<Garmin::Tr } if(response.id == Pid_Records) { - ntotal = *(uint16_t *)response.payload; + ntotal = gar_ptr_load(uint16_t, response.payload); } if(response.id == Pid_Trk_Data) { @@ -758,7 +767,7 @@ void CDevice::_downloadTracks(std::list<Garmin::Tr if (++npts % 100 == 0) { double progress = (npts * 100.0) / ntotal; - callback(progress,0,&cancel,0,"Transfering track data."); + callback(progress,0,&cancel,0,"Transferring track data."); } } @@ -770,7 +779,7 @@ void CDevice::_downloadTracks(std::list<Garmin::Tr command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Command_Data; command.size = 2; - *(uint16_t*)command.payload = Cmnd_Abort_Transfer; + *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Abort_Transfer); usb->write(command); } @@ -802,7 +811,7 @@ void CDevice::_uploadTracks(std::list<Garmin::Trac command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Records; command.size = 2; - *(uint16_t*)command.payload = nrec; + *(uint16_t*)command.payload = gar_endian(uint16_t, nrec); usb->write(command); // write track header @@ -844,7 +853,7 @@ void CDevice::_uploadTracks(std::list<Garmin::Trac command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Xfer_Cmplt; command.size = 2; - *(uint16_t*)command.payload = Cmnd_Transfer_Trk; + *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Trk); usb->write(command); ++track; } @@ -870,7 +879,7 @@ void CDevice::_downloadRoutes(std::list<Garmin::Ro command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Command_Data; command.size = 2; - *(uint16_t*)command.payload = Cmnd_Transfer_Rte; + *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Rte); usb->write(command); int routeidx = 0; @@ -896,7 +905,7 @@ void CDevice::_downloadRoutes(std::list<Garmin::Ro } if(response.id == Pid_Records) { - ntotal = *(uint16_t *)response.payload; + ntotal = gar_ptr_load(uint16_t, response.payload); } if(response.id == Pid_Rte_Wpt_Data) { @@ -907,7 +916,7 @@ void CDevice::_downloadRoutes(std::list<Garmin::Ro if (++npts % 50 == 0) { double progress = (npts * 100.0) / ntotal; - callback(progress,0,&cancel,0,"Transfering route data."); + callback(progress,0,&cancel,0,"Transferring route data."); } } @@ -925,7 +934,7 @@ void CDevice::_downloadRoutes(std::list<Garmin::Ro command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Command_Data; command.size = 2; - *(uint16_t*)command.payload = Cmnd_Abort_Transfer; + *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Abort_Transfer); usb->write(command); } @@ -936,6 +945,7 @@ void CDevice::_downloadRoutes(std::list<Garmin::Ro void CDevice::_uploadRoutes(list<Garmin::Route_t>& routes) { if(usb == 0) return; + UNTESTED; if(devid == 0x0231) return IDeviceDefault::_uploadRoutes(routes); @@ -959,7 +969,7 @@ void CDevice::_uploadRoutes(list<Garmin::Route_t>& command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Records; command.size = 2; - *(uint16_t*)command.payload = nrec; + *(uint16_t*)command.payload = gar_endian(uint16_t, nrec); usb->write(command); // write route header @@ -1000,7 +1010,7 @@ void CDevice::_uploadRoutes(list<Garmin::Route_t>& command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Xfer_Cmplt; command.size = 2; - *(uint16_t*)command.payload = Cmnd_Transfer_Rte; + *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Rte); usb->write(command); ++route; } @@ -1010,8 +1020,10 @@ void CDevice::_uploadRoutes(list<Garmin::Route_t>& void CDevice::_uploadCustomIcons(list<Garmin::Icon_t>& icons) { - if(usb == 0) return; + cout << "running uploadCustomIcons for device " << hex << devid << endl; + if(usb == 0) return; + if(devid == 0x0231) return IDeviceDefault::_uploadCustomIcons(icons); Packet_t command; @@ -1032,7 +1044,7 @@ void CDevice::_uploadCustomIcons(list<Garmin::Icon command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Req_Icon_Id; command.size = 2; - *(uint16_t*)command.payload = icon->idx + 1; + *(uint16_t*)command.payload = gar_endian(uint16_t, icon->idx + 1); usb->write(command); while(usb->read(response)) { @@ -1173,19 +1185,38 @@ void CDevice::_screenshot(char *& clrtbl, char *& *(uint32_t*)command.payload = tan; usb->write(command); - if(devid == 0x0312 || devid == 0x02b6) { - for(int r = 0; r < screenheight; ++r) { - for(int c = 0; c < screenwidth; ++c) { - pScreen[r * screenwidth + c] = buffer[(r + 1) * screenwidth - c - 1]; + cout << "device " << devname << " hor " << screenhflip << " vert " << screenvflip << endl; + + if(screenhflip) { + // screen shot is horizontally flipped + if(screenvflip) { + // screen shot is also vertically flipped + for(int r = 0; r < screenheight; ++r) { + for(int c = 0; c < screenwidth; ++c) { + pScreen[r * screenwidth + c] = buffer[(screenheight - r) * screenwidth - c - 1]; + } } - } - } - else { - for(int r = 0; r < screenheight; ++r) { - for(int c = 0; c < screenwidth; ++c) { - pScreen[r * screenwidth + c] = buffer[(screenheight - 1 - r) * screenwidth + c]; + } else { + // vertical organisation of the screen shot is fine + for(int r = 0; r < screenheight; ++r) { + for(int c = 0; c < screenwidth; ++c) { + pScreen[r * screenwidth + c] = buffer[(r + 1) * screenwidth - c - 1]; + } } - } + } + } else { + // horizontal organisation of the screen shot is fine + if(screenvflip) { + // screen shot is vertically flipped + for(int r = 0; r < screenheight; ++r) { + memcpy(pScreen + r * screenwidth, + buffer + (screenheight - 1 - r) * screenwidth, + screenwidth); + } + } else { + // vertical organisation of the screen shot is fine + memcpy(pScreen, buffer, screenheight * screenwidth); + } } clrtbl = aClrtbl; @@ -1239,7 +1270,7 @@ void CDevice::_getDevProperties(Garmin::DevPropert command.type = GUSB_APPLICATION_LAYER; command.id = Pid_Command_Data; command.size = 2; - *(uint16_t*)command.payload = Cmnd_Transfer_Mem; + *(uint16_t*)command.payload = gar_endian(uint16_t, Cmnd_Transfer_Mem); usb->write(command); // try to read SD Ram capacity @@ -1247,8 +1278,8 @@ void CDevice::_getDevProperties(Garmin::DevPropert uint16_t tile_limit = 0; while(usb->read(response)) { if(response.id == Pid_Capacity_Data) { - tile_limit = ((uint16_t*)response.payload)[1]; - memory = ((uint32_t*)response.payload)[1]; + tile_limit = gar_ptr_load(uint16_t, response.payload + 2); + memory = gar_ptr_load(uint32_t, response.payload + 4); } } if(tile_limit == 0) { Index: src/GPSMap60CSx/loader.cpp =================================================================== --- src/GPSMap60CSx/loader.cpp (Revision 1840) +++ src/GPSMap60CSx/loader.cpp (Arbeitskopie) @@ -177,6 +177,7 @@ extern "C" WIN_EXPORT Garmin::IDevice * initEtrexV // GPSMap60CSx::device->devid = 0x0312; GPSMap60CSx::device->screenwidth = 176; GPSMap60CSx::device->screenheight = 220; + GPSMap60CSx::device->screenhflip = true; return GPSMap60CSx::device; } @@ -194,6 +195,7 @@ extern "C" WIN_EXPORT Garmin::IDevice * initEtrexV GPSMap60CSx::device->devid = 0x02b6; GPSMap60CSx::device->screenwidth = 176; GPSMap60CSx::device->screenheight = 220; + GPSMap60CSx::device->screenhflip = true; return GPSMap60CSx::device; } @@ -211,6 +213,7 @@ extern "C" WIN_EXPORT Garmin::IDevice * initEtrexL GPSMap60CSx::device->devid = 0x0694; GPSMap60CSx::device->screenwidth = 176; GPSMap60CSx::device->screenheight = 220; + GPSMap60CSx::device->screenhflip = true; return GPSMap60CSx::device; } Index: src/GPSMap60CSx/CDevice.h =================================================================== --- src/GPSMap60CSx/CDevice.h (Revision 1840) +++ src/GPSMap60CSx/CDevice.h (Arbeitskopie) @@ -38,6 +38,8 @@ namespace GPSMap60CSx uint32_t devid; uint16_t screenwidth; uint16_t screenheight; + bool screenvflip; + bool screenhflip; const std::string& getCopyright(); Index: src/GPSMap60CSx/CMakeLists.txt =================================================================== --- src/GPSMap60CSx/CMakeLists.txt (Revision 1840) +++ src/GPSMap60CSx/CMakeLists.txt (Arbeitskopie) @@ -32,7 +32,7 @@ foreach(var ${ALIASES}) message(" ${var}") add_custom_command( TARGET GPSMap60CSx POST_BUILD - COMMAND ln ARGS -sf libGPSMap60CSx.so lib${var}.so + COMMAND ln ARGS -sf libGPSMap60CSx${SHARED_LIB_EXT} lib${var}${SHARED_LIB_EXT} WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH} ) endforeach(var) Index: CMakeLists.txt =================================================================== --- CMakeLists.txt (Revision 1840) +++ CMakeLists.txt (Arbeitskopie) @@ -43,6 +43,12 @@ include_directories( ${CMAKE_CURRENT_BINARY_DIR} ) +if(APPLE) + set(SHARED_LIB_EXT ".dylib") +elseif(UNIX) + set(SHARED_LIB_EXT ".so") +endif (APPLE) + find_package(USB REQUIRED) add_subdirectory(./src)
pgpNfcTkT9qZS.pgp
Description: PGP signature
------------------------------------------------------------------------------ This SF.Net email is sponsored by the Verizon Developer Community Take advantage of Verizon's best-in-class app development support A streamlined, 14 day to market process makes app distribution fast and easy Join now and get one step closer to millions of Verizon customers http://p.sf.net/sfu/verizon-dev2dev
_______________________________________________ QLandkarte-users mailing list QLandkarte-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/qlandkarte-users