Skip to content

Commit

Permalink
Merged windows support and mac os x updates
Browse files Browse the repository at this point in the history
  • Loading branch information
bmcdorman committed Jan 11, 2013
2 parents 1305ae2 + 76a327a commit 82e938e
Show file tree
Hide file tree
Showing 32 changed files with 345 additions and 243 deletions.
30 changes: 24 additions & 6 deletions CMakeLists.txt
Expand Up @@ -9,6 +9,7 @@ SET(RC ${KISS_SOURCE_DIR}/rc)
SET(SRC ${KISS_SOURCE_DIR}/src)
SET(UI ${KISS_SOURCE_DIR}/ui)
SET(TRADEMARKS ${KISS_SOURCE_DIR}/trademarks)
SET(COMPAT ${KISS_SOURCE_DIR}/compat)

SET(KISS_INCLUDE_DIRS ${INCLUDE}
${INCLUDE}/dialogs
Expand Down Expand Up @@ -50,7 +51,16 @@ FILE(GLOB INCLUDES ${INCLUDE}/*.hpp
${INCLUDE}/compiler/*
${INCLUDE}/interface/*)

FILE(GLOB SOURCES ${SRC}/* ${SRC}/lexer/* ${SRC}/dialogs/* ${SRC}/widgets/* ${SRC}/menus/* ${SRC}/js/* ${SRC}/project/* ${SRC}/compiler/* ${SRC}/interface/*)
FILE(GLOB SOURCES ${SRC}/*
${SRC}/lexer/*
${SRC}/dialogs/*
${SRC}/widgets/*
${SRC}/menus/*
${SRC}/js/*
${SRC}/project/*
${SRC}/compiler/*
${SRC}/interface/*)

FILE(GLOB UIS ${UI}/*)

SET(KISS_SRCS_CXX ${SOURCES})
Expand Down Expand Up @@ -79,17 +89,25 @@ ELSEIF(UNIX)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
ADD_EXECUTABLE(KISS ${KISS_SRCS_CXX})
ELSEIF(WIN32)
SET(CMAKE_CXX_FLAGS "-Wl,--enable-auto-import")
ADD_EXECUTABLE(KISS WIN32 ${KISS_SRCS_CXX} rc/logos/kiss.rc)
SET(COMPAT_SRCS ${COMPAT}/mingw.c)
SET(CMAKE_CXX_FLAGS "-Wl,--enable-auto-import")
ADD_EXECUTABLE(KISS ${KISS_SRCS_CXX} ${COMPAT_SRCS} ${CMAKE_SOURCE_DIR}/rc/logos/kiss.rc)
ENDIF()



ADD_LIBRARY(kisside STATIC ${KISS_SRCS_CXX})

SET(EXECUTABLE_OUTPUT_PATH ${KISS_SOURCE_DIR}/deploy)
IF(WIN32)
SET(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/../prefix/lib)
ELSE(WIN32)
SET(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/lib)
TARGET_LINK_LIBRARIES(KISS ${QT_LIBRARIES} qscintilla2 pcompiler kar)
ENDIF(WIN32)

TARGET_LINK_LIBRARIES(KISS ${QT_LIBRARIES} qscintilla2 pcompiler kar libkovanserial)

IF(WIN32)
TARGET_LINK_LIBRARIES(KISS ws2_32)
ENDIF(WIN32)

IF(APPLE)
ADD_CUSTOM_TARGET(MacDeployQt ALL
Expand Down
20 changes: 20 additions & 0 deletions compat/mingw.c
@@ -0,0 +1,20 @@
#include <winsock.h>
#include <windows.h>
#include <stdio.h>

// Derived from: https://github.com/jamescoxon/dl-fldigi/blob/master/src/compat/mingw.c
__attribute__((constructor))
static void wsa_init(void)
{
static int s_init = 0;
if (s_init) return;

WSADATA wsa;
if (WSAStartup(MAKEWORD(2, 2), &wsa)) {
fprintf(stderr, "ERROR: WSAStartup failed. Code: %d\n", WSAGetLastError());
fprintf(stderr, "ERROR: Network communication will not work.\n");
}

atexit((void(*)(void)) WSACleanup);
s_init = 1;
}
5 changes: 5 additions & 0 deletions include/interface/interface_manager.hpp
Expand Up @@ -35,5 +35,10 @@ namespace Kiss
}
}

#define REGISTER_INTERFACE(x) __attribute__((constructor)) \
static void __##x##_register() \
{ \
InterfaceManager::ref().addInterface(new x()); \
}

#endif
4 changes: 2 additions & 2 deletions include/lexer/lexer_factory.hpp
Expand Up @@ -49,6 +49,7 @@ namespace Kiss
virtual Base *construct(const QString& apis) const = 0;

virtual Base *_new() const = 0;
virtual void _delete(Base *base) const = 0;

virtual QStringList extensions() const = 0;

Expand All @@ -62,8 +63,7 @@ namespace Kiss
: m_lexer(lexer),
m_constructor(constructor),
m_apis(lexer)
{

{
}

const Constructor *constructor() const
Expand Down
3 changes: 3 additions & 0 deletions include/source_file.hpp
Expand Up @@ -58,6 +58,7 @@ namespace Kiss
namespace Lexer
{
class Constructor;
class Base;
}

namespace Widget
Expand Down Expand Up @@ -187,6 +188,8 @@ namespace Kiss
void updateLexer();

bool actionPreconditions();

Kiss::Lexer::Base *m_currentLexer;
};
}
}
Expand Down
57 changes: 0 additions & 57 deletions plugins/interfaces/computer/CMakeLists.txt

This file was deleted.

57 changes: 0 additions & 57 deletions plugins/interfaces/computer/computer_interface.cpp

This file was deleted.

26 changes: 0 additions & 26 deletions plugins/interfaces/computer/computer_interface.hpp

This file was deleted.

11 changes: 5 additions & 6 deletions plugins/interfaces/kovan/CMakeLists.txt
Expand Up @@ -28,7 +28,7 @@ ADD_DEFINITIONS(-DQT_DLL)
ADD_LIBRARY(${PLUGIN_NAME} SHARED ${LOCAL_SOURCES} ${INCLUDES_MOC})
LINK_DIRECTORIES(${LIBRARY_OUTPUT_PATH})

TARGET_LINK_LIBRARIES(${PLUGIN_NAME} ${QT_LIBRARIES} kisside pcompiler kovanserial kar)
TARGET_LINK_LIBRARIES(${PLUGIN_NAME} kisside pcompiler kovanserial kar ${QT_LIBRARIES})

IF(APPLE)
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -headerpad_max_install_names")
Expand All @@ -51,8 +51,7 @@ ADD_CUSTOM_TARGET(${PLUGIN_NAME}_osx_install_names ALL
WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH}
DEPENDS ${PLUGIN_NAME})
INSTALL(TARGETS ${PLUGIN_NAME} LIBRARY DESTINATION ${EXECUTABLE_OUTPUT_PATH}/KISS.app/Contents/interfaces)
ENDIF(APPLE)

IF(UNIX)
INSTALL(TARGETS ${PLUGIN_NAME} LIBRARY DESTINATION ${EXECUTABLE_OUTPUT_PATH}/interfaces)
ENDIF(UNIX)
ELSE(APPLE)
INSTALL(TARGETS ${PLUGIN_NAME} LIBRARY DESTINATION ${EXECUTABLE_OUTPUT_PATH}/interfaces
RUNTIME DESTINATION ${EXECUTABLE_OUTPUT_PATH}/interfaces)
ENDIF(APPLE)
12 changes: 11 additions & 1 deletion plugins/interfaces/kovan/kovan_interface.cpp
Expand Up @@ -30,19 +30,23 @@ AdvertSampler::~AdvertSampler()
void AdvertSampler::run()
{
for(quint16 i = 0; i < m_samples; ++i) {
fprintf(stderr, "Sampling...\n");
std::list<IncomingAdvert> adverts = m_advertiser->sample(m_sampleTime);
fprintf(stderr, "Sampled!\n");
std::list<IncomingAdvert>::const_iterator it = adverts.begin();
for(; it != adverts.end(); ++it) {
QHostAddress addr((sockaddr *)&(*it).sender);
if(m_found.contains(addr)) continue;
m_found.push_back(addr);
fprintf(stderr, "Emitting found\n");
emit found((*it).ad, (*it).sender);
}
}
fprintf(stderr, "AdvertSampler::run finished\n");
}

KovanInterface::KovanInterface()
: Interface("Kovan (Networked)"),
: Interface("Network"),
m_advertiser(new UdpAdvertiser(false)),
m_responder(0)
{
Expand All @@ -55,6 +59,7 @@ KovanInterface::~KovanInterface()

Kiss::Target::TargetPtr KovanInterface::createTarget(const QString &address)
{
fprintf(stderr, "createTarget\n");
// TODO: Add input verification
TcpSerial *serial = new TcpSerial(address.toAscii(), KOVAN_SERIAL_PORT);
KovanProtoTarget *device = new Kiss::Target::KovanProtoTarget(serial, this);
Expand All @@ -63,9 +68,11 @@ Kiss::Target::TargetPtr KovanInterface::createTarget(const QString &address)

const bool KovanInterface::scan(InterfaceResponder *responder)
{
fprintf(stderr, "scan\n");
m_responder = responder;
m_advertiser->reset();
AdvertSampler *sampler = new AdvertSampler(m_advertiser, 100, 100);
sampler->setAutoDelete(true);
qRegisterMetaType<Advert>("Advert");
qRegisterMetaType<sockaddr_in>("sockaddr_in");
connect(sampler, SIGNAL(found(Advert, sockaddr_in)), SLOT(found(Advert, sockaddr_in)));
Expand All @@ -75,17 +82,20 @@ const bool KovanInterface::scan(InterfaceResponder *responder)

void KovanInterface::invalidateResponder()
{
fprintf(stderr, "invalidateResponder\n");
m_responder = 0;
}

void KovanInterface::scanStarted()
{
fprintf(stderr, "scanStarted\n");
if(!m_responder) return;
m_responder->targetScanStarted(this);
}

void KovanInterface::found(const Advert &ad, const sockaddr_in& addr)
{
fprintf(stderr, "found\n");
if(!m_responder) return;
QHostAddress ha((sockaddr *)&addr);

Expand Down
11 changes: 5 additions & 6 deletions plugins/interfaces/kovan_serial/CMakeLists.txt
Expand Up @@ -28,7 +28,7 @@ ADD_DEFINITIONS(-DQT_DLL)
ADD_LIBRARY(${PLUGIN_NAME} SHARED ${LOCAL_SOURCES} ${INCLUDES_MOC})
LINK_DIRECTORIES(${LIBRARY_OUTPUT_PATH})

TARGET_LINK_LIBRARIES(${PLUGIN_NAME} ${QT_LIBRARIES} kisside pcompiler kovanserial kar)
TARGET_LINK_LIBRARIES(${PLUGIN_NAME} kisside pcompiler kovanserial kar ${QT_LIBRARIES})

IF(APPLE)
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -headerpad_max_install_names")
Expand All @@ -51,8 +51,7 @@ ADD_CUSTOM_TARGET(${PLUGIN_NAME}_osx_install_names ALL
WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH}
DEPENDS ${PLUGIN_NAME})
INSTALL(TARGETS ${PLUGIN_NAME} LIBRARY DESTINATION ${EXECUTABLE_OUTPUT_PATH}/KISS.app/Contents/interfaces)
ENDIF(APPLE)

IF(UNIX)
INSTALL(TARGETS ${PLUGIN_NAME} LIBRARY DESTINATION ${EXECUTABLE_OUTPUT_PATH}/interfaces)
ENDIF(UNIX)
ELSE(APPLE)
INSTALL(TARGETS ${PLUGIN_NAME} LIBRARY DESTINATION ${EXECUTABLE_OUTPUT_PATH}/interfaces
RUNTIME DESTINATION ${EXECUTABLE_OUTPUT_PATH}/interfaces)
ENDIF(APPLE)
2 changes: 1 addition & 1 deletion plugins/interfaces/kovan_serial/kovan_serial_interface.cpp
Expand Up @@ -53,7 +53,7 @@ void PortSampler::run()
}

KovanSerialInterface::KovanSerialInterface()
: Interface("Kovan (Serial)"),
: Interface("USB Serial"),
m_responder(0)
{
}
Expand Down

0 comments on commit 82e938e

Please sign in to comment.