CMake support for the c source

This commit is contained in:
Markus Gustavsson 2016-02-17 08:23:10 +01:00
parent bf9c58f1f9
commit 6dd2fd882f
4 changed files with 79 additions and 0 deletions

3
.gitignore vendored
View File

@ -7,3 +7,6 @@
/src/*.o
/out/exe
a.out
/bin/Debug/
/bin/Release/
/build/

28
CMakeLists.txt Normal file
View File

@ -0,0 +1,28 @@
cmake_minimum_required(VERSION 3.0)
project(carp-repl)
set(VERSION_MAJOR "0")
set(VERSION_MINOR "0")
set(VERSION_PATCH "1")
set(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
set(SOURCE_DIR src)
include(globfiles.cmake)
# list(APPEND SOURCE_FILES src/main.c src/obj.c src/gc.c src/obj_string.c src/reader.c src/eval.c src/env.c src/primops.c src/repl.c)
# ${SOURCE_FILES}
include_directories(/usr/local/opt/libffi/lib/libffi-3.0.13/include)
link_directories(/usr/local/opt/libffi/lib/)
add_executable(${PROJECT_NAME} ${${PROJECT_NAME}_h} ${${PROJECT_NAME}_c})
target_link_libraries(${PROJECT_NAME} ffi)
set_target_properties(${PROJECT_NAME}
PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/bin"
)

48
globfiles.cmake Normal file
View File

@ -0,0 +1,48 @@
file(GLOB ${PROJECT_NAME}_mac_c "${SOURCE_DIR}/*_MacOSX.c")
file(GLOB ${PROJECT_NAME}_mac_cpp "${SOURCE_DIR}/*_MacOSX.cpp")
file(GLOB ${PROJECT_NAME}_mac_m "${SOURCE_DIR}/*_MacOSX.m")
file(GLOB ${PROJECT_NAME}_mac_mm "${SOURCE_DIR}/*_MacOSX.mm")
file(GLOB ${PROJECT_NAME}_mac_h "${SOURCE_DIR}/*_MacOSX.h")
list(APPEND ${PROJECT_NAME}_mac_c ${${PROJECT_NAME}_mac_cpp} ${${PROJECT_NAME}_mac_m} ${${PROJECT_NAME}_mac_mm})
file(GLOB ${PROJECT_NAME}_win_c "${SOURCE_DIR}/*_MSWIN.c")
file(GLOB ${PROJECT_NAME}_win_cpp "${SOURCE_DIR}/*_MSWIN.cpp")
file(GLOB ${PROJECT_NAME}_win_h "${SOURCE_DIR}/*_MSWIN.h")
list(APPEND ${PROJECT_NAME}_win_c ${${PROJECT_NAME}_win_cpp})
file(GLOB ${PROJECT_NAME}_linux_c "${SOURCE_DIR}/*_Linux.c")
file(GLOB ${PROJECT_NAME}_linux_cpp "${SOURCE_DIR}/*_Linux.cpp")
file(GLOB ${PROJECT_NAME}_linux_h "${SOURCE_DIR}/*_Linux.h")
list(APPEND ${PROJECT_NAME}_mac_c ${${PROJECT_NAME}_linux_cpp})
file(GLOB ${PROJECT_NAME}_c "${SOURCE_DIR}/*.c")
file(GLOB ${PROJECT_NAME}_cpp "${SOURCE_DIR}/*.cpp")
file(GLOB ${PROJECT_NAME}_h "${SOURCE_DIR}/*.h")
list(APPEND ${PROJECT_NAME}_c ${${PROJECT_NAME}_cpp})
if(${PROJECT_NAME}_mac_c OR ${PROJECT_NAME}_win_c OR ${PROJECT_NAME}_linux_c)
list(REMOVE_ITEM ${PROJECT_NAME}_c ${${PROJECT_NAME}_mac_c} ${${PROJECT_NAME}_win_c} ${${PROJECT_NAME}_linux_c})
if(WIN32)
list(APPEND ${PROJECT_NAME}_c ${${PROJECT_NAME}_win_c})
elseif(APPLE)
list(APPEND ${PROJECT_NAME}_c ${${PROJECT_NAME}_mac_c})
else()
list(APPEND ${PROJECT_NAME}_c ${${PROJECT_NAME}_linux_c})
endif()
endif()
if(${PROJECT_NAME}_mac_h OR ${PROJECT_NAME}_win_h OR ${PROJECT_NAME}_linux_h)
list(REMOVE_ITEM ${PROJECT_NAME}_h ${${PROJECT_NAME}_mac_h} ${${PROJECT_NAME}_win_h} ${${PROJECT_NAME}_linux_h})
if(WIN32)
list(APPEND ${PROJECT_NAME}_h ${${PROJECT_NAME}_win_h})
elseif(APPLE)
list(APPEND ${PROJECT_NAME}_h ${${PROJECT_NAME}_mac_h})
else()
list(APPEND ${PROJECT_NAME}_h ${${PROJECT_NAME}_linux_h})
endif()
endif()