diff options
Diffstat (limited to 'ldmicro/CMakeLists.txt')
-rw-r--r-- | ldmicro/CMakeLists.txt | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/ldmicro/CMakeLists.txt b/ldmicro/CMakeLists.txt new file mode 100644 index 0000000..42ec750 --- /dev/null +++ b/ldmicro/CMakeLists.txt @@ -0,0 +1,178 @@ +cmake_minimum_required(VERSION 2.6) + +project(LDMicro) + +macro(use_cxx11) + +if (CMAKE_VERSION VERSION_LESS "3.1") + if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") + endif () +else () + set (CMAKE_CXX_STANDARD 11) +endif () + +endmacro(use_cxx11) + +IF(WIN32) + MESSAGE( FATAL_ERROR "Cannot build for windows, exiting" ) + add_definitions(-D__WIN32__) +ENDIF(WIN32) + +IF (MSVC) + MESSAGE( FATAL_ERROR "Cannot build for MacOS, exiting" ) + add_definitions(-D__MSVC__) +ENDIF (MSVC) + +IF(UNIX) + MESSAGE( STATUS "Initializing.." ) + add_definitions ("-w") + add_definitions ("-g") + add_definitions(-D__UNIX__) + add_definitions(-DLDLANG_EN) + use_cxx11() + + # set_property(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_CURRENT_SOURCE_DIR}/build/") + + MESSAGE( STATUS "Performing system check.." ) + MESSAGE( STATUS "Identifing bitness of the platform.." ) + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + add_definitions(-D__UNIX64) + MESSAGE( STATUS "Bitness of the platform: " 64) + else() + add_definitions(-D__UNIX32) + MESSAGE( STATUS "Bitness of the platform: " 36) + endif() + MESSAGE( STATUS "Performing system check - done" ) + + MESSAGE ( STATUS "Searching for GTK+3.0..." ) + find_package (PkgConfig REQUIRED) + pkg_check_modules (GTK3 REQUIRED gtk+-3.0) + + ## Set object dir + set(OBJDIR ${CMAKE_CURRENT_SOURCE_DIR}/obj) + + ## Set perl scripts to be run before build to generate files needed + MESSAGE( STATUS "Adding perl scripts to build.." ) + + add_custom_command( + OUTPUT ${OBJDIR}/lang-tables.h + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND perl lang-tables.pl > ${OBJDIR}/lang-tables.h + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/lang-*.txt") + + add_custom_command( + OUTPUT ${OBJDIR}/helptext.cpp + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND perl txt2c.pl > ${OBJDIR}/helptext.cpp + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/manual*.txt") + + set(SCRIPT_GENERATED_FILES ${OBJDIR}/helptext.cpp + ${OBJDIR}/lang-tables.h) + + add_custom_target(LDMicro_SCRIPT_GENERATED_FILES DEPENDS ${SCRIPT_GENERATED_FILES}) + + ## Version control + set (LDMicro_VERSION_MAJOR 1) + set (LDMicro_VERSION_MINOR 0) + + ## configure a header file to pass some of the CMake settings + ## to the source code + include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/linuxUI") + include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/freezeLD") + include_directories("${CMAKE_CURRENT_SOURCE_DIR}/includes") + # include_directories("${OBJDIR}") + set(PROJECT_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/includes") + CONFIGURE_FILE ( + "${PROJECT_INCLUDE_DIR}/ldmicroVC.h.in" + "${PROJECT_INCLUDE_DIR}/ldmicroVC.h" + ) + # MESSAGE ( STATUS " PROJECT_INCLUDE_DIR: " ${PROJECT_INCLUDE_DIR} ) + + ## Add GTK3 include files if GTK3 is found + IF ( GTK3_FOUND ) + include_directories (${GTK3_INCLUDE_DIRS}) + link_directories (${GTK3_LIBRARY_DIRS}) + add_definitions (${GTK3_CFLAGS_OTHER}) + link_libraries (${GTK3_LIBRARIES}) + # MESSAGE( STATUS " GTK3_INCLUDE_DIR: " ${GTK3_INCLUDE_DIRS} ) + # MESSAGE( STATUS " GTK3_LIBRARIES: " ${GTK3_LIBRARIES} ) + ENDIF ( GTK3_FOUND ) + + set(CMAKE_AUTOMOC ON) + set(CMAKE_AUTOUIC ON) + set(CMAKE_INCLUDE_CURRENT_DIR ON) + find_package(Qt5Widgets CONFIG REQUIRED) + find_package(Qt5Core CONFIG REQUIRED) + get_target_property(Qt5Widgets_INCLUDES Qt5::Widgets INTERFACE_INCLUDE_DIRECTORIES) + get_target_property(Qt5Core_INCLUDES Qt5::Core INTERFACE_INCLUDE_DIRECTORIES) + include_directories(${Qt5Widgets_INCLUDES}) + include_directories(${Qt5Core_INCLUDES}) + add_definitions(${Qt5Widgets_DEFINITIONS}) + add_definitions(${Qt5Core_DEFINITIONS}) + set(CMAKE_CXX_FLAGS "${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}") + #get_target_property(CMAKE_CXX_FLAGS Qt5::Core LINK_FLAGS) + MESSAGE ( STATUS " Qt INCLUDEs: " ${Qt5Core_INCLUDES} ) + + MESSAGE ( STATUS " Qt CXX FLAGS: " ${CMAKE_CXX_FLAGS} ) + + if (Qt5_POSITION_INDEPENDENT_CODE) + SET(CMAKE_POSITION_INDEPENDENT_CODE ON) +endif() + + add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/lib/linuxUI") + add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/lib/freezeLD") + + ## Dummy compile and install to test linuxUI + ## to compile LDmicro uncomment the below 2 line2 + set (COMPILE_CPP_SOURCES arduino.cpp + avr.cpp + pic16.cpp + interpreted.cpp + ansic.cpp + compilecommon.cpp + intcode.cpp + lang.cpp + miscutil.cpp + iolist.cpp + #confdialog.cpp + #lutdialog.cpp + #resetdialog.cpp + #simpledialog.cpp + #coildialog.cpp + #contactsdialog.cpp + #commentdialog.cpp + # simulate.cpp + loadsave.cpp + undoredo.cpp + circuit.cpp + draw_outputdev.cpp + draw.cpp + schematic.cpp + #${OBJDIR}/helptext.cpp + #helpdialog.cpp + maincontrols.cpp + ldmicro.cpp) + + ## Build *.int interpreter + add_executable (ldinterpret ldinterpret.c) + target_link_libraries (ldinterpret LinuxUI) + + ## Build main LDMicro executable + add_executable (LDMicro ${COMPILE_CPP_SOURCES}) + add_dependencies(LDMicro LDMicro_SCRIPT_GENERATED_FILES) + install (TARGETS LDMicro DESTINATION bin) + target_link_libraries (LDMicro LinuxUI) + target_link_libraries (LDMicro FreezeLD) + target_link_libraries(LDMicro ${Qt5Widgets_LIBRARIES}) + target_link_libraries(LDMicro ${Qt5Core_LIBRARIES}) + + ## Add tests + MESSAGE( STATUS "Adding tests.." ) + add_custom_command( + TARGET LDMicro + POST_BUILD + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/reg + COMMAND perl run-tests.pl) + +ENDIF(UNIX) |