Skip to content

Commit

Permalink
First attempt to use CMake to build.
Browse files Browse the repository at this point in the history
  • Loading branch information
FormerLurker committed May 12, 2020
1 parent 9abd4af commit 3f28fa1
Show file tree
Hide file tree
Showing 24 changed files with 287 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,10 @@ ipch/
# Visual Studio Trace Files
*.e2e

# CMake Builds
/Builds
/out

# TFS 2012 Local Workspace
$tf/

Expand Down
6 changes: 6 additions & 0 deletions ArcWelder/ArcWelder.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,12 @@
<ClCompile Include="segmented_arc.cpp" />
<ClCompile Include="segmented_shape.cpp" />
</ItemGroup>
<ItemGroup>
<Text Include="CMakeLists.txt" />
</ItemGroup>
<ItemGroup>
<None Include="sourcelist.cmake" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
Expand Down
6 changes: 6 additions & 0 deletions ArcWelder/ArcWelder.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,10 @@
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Text Include="CMakeLists.txt" />
</ItemGroup>
<ItemGroup>
<None Include="sourcelist.cmake" />
</ItemGroup>
</Project>
28 changes: 28 additions & 0 deletions ArcWelder/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
cmake_minimum_required (VERSION "3.16")

project(ArcWelder C CXX)

# add definitions from the GcodeProcessorLib project
add_definitions(${GcodeProcessorLib_DEFINITIONS})

# Include the GcodeProcessorLib's directories
include_directories(${GcodeProcessorLib_INCLUDE_DIRS})

# include sourcelist.cmake, which contains our source list and exposes it as the
# ArcWelderSources variable
include(sourcelist.cmake)

# Add a library using our ArcWelderSources variable from our sourcelist file
add_library(${PROJECT_NAME} STATIC ${ArcWelderSources})

# Link the GcodeProcessorLib
target_link_libraries(${PROJECT_NAME} GcodeProcessorLib)

# Expose the GcodeProcessorLib's Definitions
set(${PROJECT_NAME}_DEFINITIONS ${GcodeProcessorLib_DEFINITIONS}
CACHE INTERNAL "${PROJECT_NAME}: Definitions" FORCE)

# Expose both the ArcWelder and GcodeProcessorLib's public includes
set(${PROJECT_NAME}_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/
${GcodeProcessorLib_INCLUDE_DIRS}
CACHE INTERNAL "${PROJECT_NAME}: Include Directories" FORCE)
5 changes: 5 additions & 0 deletions ArcWelder/sourcelist.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
set(ArcWelderSources ${ArcWelderSources}
arc_welder.cpp
segmented_arc.cpp
segmented_shape.cpp
)
6 changes: 6 additions & 0 deletions ArcWelderConsole/ArcWelderConsole.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,12 @@
<Project>{31478bae-104b-4cc3-9876-42fa90cbd5fe}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Text Include="CMakeLists.txt" />
</ItemGroup>
<ItemGroup>
<None Include="sourcelist.cmake" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
Expand Down
6 changes: 6 additions & 0 deletions ArcWelderConsole/ArcWelderConsole.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,10 @@
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Text Include="CMakeLists.txt" />
</ItemGroup>
<ItemGroup>
<None Include="sourcelist.cmake" />
</ItemGroup>
</Project>
19 changes: 19 additions & 0 deletions ArcWelderConsole/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
cmake_minimum_required (VERSION "3.16")

project(ArcWelderConsole C CXX)

# add definitions from the GcodeProcessorLib and ArcWelder libraries
add_definitions(${GcodeProcessorLib_DEFINITIONS} ${ArcWelder_DEFINITIONS})

# Include the GcodeProcessorLib and ArcWelder's directories
include_directories(${GcodeProcessorLib_INCLUDE_DIRS} ${ArcWelder_INCLUDE_DIRS})

# include sourcelist.cmake, which contains our source list and exposes it as the
# ArcWelderConsoleSources variable
include(sourcelist.cmake)

# Add an executable our ArcWelderConsoleSources variable from our sourcelist file
add_executable(${PROJECT_NAME} ${ArcWelderConsoleSources})

# specify linking to the GcodeProcessorLib and ArcWelder libraries
target_link_libraries(${PROJECT_NAME} GcodeProcessorLib ArcWelder)
3 changes: 3 additions & 0 deletions ArcWelderConsole/sourcelist.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
set(ArcWelderConsoleSources ${ArcWelderConsoleSources}
ArcWelderConsole.cpp
)
6 changes: 6 additions & 0 deletions ArcWelderInverseProcessor/ArcWelderInverseProcessor.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,12 @@
<Project>{31478bae-104b-4cc3-9876-42fa90cbd5fe}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Text Include="CMakeLists.txt" />
</ItemGroup>
<ItemGroup>
<None Include="sourcelist.cmake" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,10 @@
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Text Include="CMakeLists.txt" />
</ItemGroup>
<ItemGroup>
<None Include="sourcelist.cmake" />
</ItemGroup>
</Project>
19 changes: 19 additions & 0 deletions ArcWelderInverseProcessor/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
cmake_minimum_required (VERSION "3.16")

project(ArcWelderInverseProcessor C CXX)

# add definitions from the GcodeProcessorLib and ArcWelder libraries
add_definitions(${GcodeProcessorLib_DEFINITIONS} ${ArcWelder_DEFINITIONS})

# Include the GcodeProcessorLib and ArcWelder's directories
include_directories(${GcodeProcessorLib_INCLUDE_DIRS} ${ArcWelder_INCLUDE_DIRS})

# include sourcelist.cmake, which contains our source list and exposes it as the
# ArcWelderConsoleSources variable
include(sourcelist.cmake)

# Add an executable our ArcWelderConsoleSources variable from our sourcelist file
add_executable(${PROJECT_NAME} ${ArcWelderInverseProcessorSources})

# specify linking to the GcodeProcessorLib and ArcWelder libraries
target_link_libraries(${PROJECT_NAME} GcodeProcessorLib ArcWelder)
4 changes: 4 additions & 0 deletions ArcWelderInverseProcessor/sourcelist.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
set(ArcWelderInverseProcessorSources ${ArcWelderInverseProcessorSources}
ArcWelderInverseProcessor.cpp
inverse_processor.cpp
)
8 changes: 8 additions & 0 deletions ArcWelderLib.sln
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,14 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ArcWelderInverseProcessor",
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ArcWelderTest", "ArcWelderTest\ArcWelderTest.vcxproj", "{18D7E538-6ACE-44E4-B83E-31C3E44D4227}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{4B744529-B248-475D-AE0D-0B5E1617837F}"
ProjectSection(SolutionItems) = preProject
.gitattributes = .gitattributes
.gitignore = .gitignore
CMakeLists.txt = CMakeLists.txt
sourcelist.cmake = sourcelist.cmake
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Expand Down
28 changes: 28 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
cmake_minimum_required (VERSION "3.16")
# You can tweak some common (for all subprojects) stuff here. For example:
project(Build C CXX)

set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
set(CMAKE_DISABLE_SOURCE_CHANGES ON)

if ("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
message(SEND_ERROR "In-source builds are not allowed.")
endif ()

set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_COLOR_MAKEFILE ON)

# Remove 'lib' prefix for shared libraries on Windows
if (WIN32)
set(CMAKE_SHARED_LIBRARY_PREFIX "")
endif ()

# add subdirectories to compile in order of inheritance
add_subdirectory(${CMAKE_SOURCE_DIR}/GcodeProcessorLib)
add_subdirectory(${CMAKE_SOURCE_DIR}/ArcWelder)
add_subdirectory(${CMAKE_SOURCE_DIR}/ArcWelderConsole)
add_subdirectory(${CMAKE_SOURCE_DIR}/ArcWelderInverseProcessor)
add_subdirectory(${CMAKE_SOURCE_DIR}/PyArcWelder)



21 changes: 21 additions & 0 deletions GcodeProcessorLib/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
cmake_minimum_required (VERSION "3.16")

project(GcodeProcessorLib C CXX)

# include sourcelist.cmake, which contains our source list and exposes it as the
# GcodeProcessorLibSources variable
include(sourcelist.cmake)

# Add a library using our GcodeProcessorLibSources variable from our sourcelist file
add_library(${PROJECT_NAME} STATIC ${GcodeProcessorLibSources})

# Required on Unix OS family to be able to be linked into shared libraries.
set_target_properties(${PROJECT_NAME}
PROPERTIES POSITION_INDEPENDENT_CODE ON)

target_link_libraries(${PROJECT_NAME})

# Expose the public includes via a cache variable
set(${PROJECT_NAME}_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}
CACHE INTERNAL "${PROJECT_NAME}: Include Directories" FORCE)

6 changes: 6 additions & 0 deletions GcodeProcessorLib/GcodeProcessorLib.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,12 @@
<ClCompile Include="position.cpp" />
<ClCompile Include="utilities.cpp" />
</ItemGroup>
<ItemGroup>
<Text Include="CMakeLists.txt" />
</ItemGroup>
<ItemGroup>
<None Include="sourcelist.cmake" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
Expand Down
6 changes: 6 additions & 0 deletions GcodeProcessorLib/GcodeProcessorLib.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,10 @@
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Text Include="CMakeLists.txt" />
</ItemGroup>
<ItemGroup>
<None Include="sourcelist.cmake" />
</ItemGroup>
</Project>
24 changes: 24 additions & 0 deletions GcodeProcessorLib/sourcelist.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
set(GcodeProcessorLibSources ${GcodeProcessorLibSources}
array_list.cpp
array_list.h
circular_buffer.cpp
circular_buffer.h
extruder.cpp
extruder.h
gcode_comment_processor.cpp
gcode_comment_processor.h
gcode_parser.cpp
gcode_parser.h
gcode_position.cpp
gcode_position.h
logger.cpp
logger.h
parsed_command.cpp
parsed_command.h
parsed_command_parameter.cpp
parsed_command_parameter.h
position.cpp
position.h
utilities.cpp
utilities.h
)
54 changes: 54 additions & 0 deletions PyArcWelder/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
cmake_minimum_required (VERSION "3.16")

project(PyArcWelder C CXX)

# PythonLibs is required to build a python extension
find_package(PythonLibs REQUIRED)

# Add definitions from ArcWelder and GcodeProcessorLib
add_definitions(${ArcWelder_DEFINITIONS} ${GcodeProcessorLib_DEFINITIONS})

# Include Python, ArcWelder and GcodeProcessorLib
include_directories(${PYTHON_INCLUDE_DIRS} ${ArcWelder_INCLUDE_DIRS} ${GcodeProcessorLib_INCLUDE_DIRS})

# include sourcelist.cmake, which contains our source list and exposes it as the
# PyArcWelderSources variable
include(sourcelist.cmake)

# Create our library
add_library(${PROJECT_NAME} SHARED ${PyArcWelderSources})

set_target_properties(
${PROJECT_NAME}
PROPERTIES
PREFIX ""
OUTPUT_NAME ${PROJECT_NAME}
LINKER_LANGUAGE C
)

if(WIN32)
set_target_properties(
${PROJECT_NAME}
PROPERTIES
SUFFIX ".pyd"
)
endif()

# Link to ArcWelder, GcodeProcessorLib and the Python Libraries
target_link_libraries(${PROJECT_NAME} ArcWelder GcodeProcessorLib)

# On Windows, it is required to link to the Python libraries
if(WIN32)
target_link_libraries(${PROJECT_NAME} ArcWelder GcodeProcessorLib ${PYTHON_LIBRARIES})
endif()

# Expose the GcodeProcessorLib, and ArcWelder's Definitions.
set(${PROJECT_NAME}_DEFINITIONS ${GcodeProcessorLib_DEFINITIONS}
${ArcWelder_DEFINITIONS}
CACHE INTERNAL "${PROJECT_NAME}: Definitions" FORCE)

# Expose the GcodeProcessorLib, ArcWelder and PyArcWelder's Definitions.
set(${PROJECT_NAME}_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/
${ArcWelder_INCLUDE_DIRS}
${GcodeProcessorLib_INCLUDE_DIRS}
CACHE INTERNAL "${PROJECT_NAME}: Include Directories" FORCE)
6 changes: 6 additions & 0 deletions PyArcWelder/PyArcWelder.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,12 @@
<Project>{31478bae-104b-4cc3-9876-42fa90cbd5fe}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Text Include="CMakeLists.txt" />
</ItemGroup>
<ItemGroup>
<None Include="sourcelist.cmake" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
Expand Down
6 changes: 6 additions & 0 deletions PyArcWelder/PyArcWelder.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,10 @@
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Text Include="CMakeLists.txt" />
</ItemGroup>
<ItemGroup>
<None Include="sourcelist.cmake" />
</ItemGroup>
</Project>
6 changes: 6 additions & 0 deletions PyArcWelder/sourcelist.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
set(PyArcWelderSources ${PyArcWelderSources}
py_arc_welder.cpp
py_arc_welder_extension.cpp
py_logger.cpp
python_helpers.cpp
)
4 changes: 4 additions & 0 deletions sourcelist.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@




0 comments on commit 3f28fa1

Please sign in to comment.