From 55f9d46b472423375cdf486a9ee8473e25f1ba37 Mon Sep 17 00:00:00 2001 From: 1vanK <1vanK@users.noreply.github.com> Date: Fri, 14 Jun 2024 22:29:14 +0300 Subject: [PATCH] CMake support --- CMakeLists.txt | 33 +++++++++++++++++++ src/CMakeLists.txt | 40 ++++++++++++++++++++++++ src/bled/CMakeLists.txt | 11 +++++++ src/ext2fs/CMakeLists.txt | 5 +++ src/getopt/CMakeLists.txt | 4 +++ src/libcdio/CMakeLists.txt | 1 + src/libcdio/driver/CMakeLists.txt | 16 ++++++++++ src/libcdio/iso9660/CMakeLists.txt | 17 ++++++++++ src/libcdio/udf/CMakeLists.txt | 17 ++++++++++ src/ms-sys/CMakeLists.txt | 5 +++ src/syslinux/CMakeLists.txt | 1 + src/syslinux/libfat/CMakeLists.txt | 11 +++++++ src/syslinux/libinstaller/CMakeLists.txt | 11 +++++++ src/syslinux/win/CMakeLists.txt | 11 +++++++ 14 files changed, 183 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 src/CMakeLists.txt create mode 100644 src/bled/CMakeLists.txt create mode 100644 src/ext2fs/CMakeLists.txt create mode 100644 src/getopt/CMakeLists.txt create mode 100644 src/libcdio/CMakeLists.txt create mode 100644 src/libcdio/driver/CMakeLists.txt create mode 100644 src/libcdio/iso9660/CMakeLists.txt create mode 100644 src/libcdio/udf/CMakeLists.txt create mode 100644 src/ms-sys/CMakeLists.txt create mode 100644 src/syslinux/CMakeLists.txt create mode 100644 src/syslinux/libfat/CMakeLists.txt create mode 100644 src/syslinux/libinstaller/CMakeLists.txt create mode 100644 src/syslinux/win/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..276a11fb --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,33 @@ +cmake_minimum_required(VERSION 3.16) + +project(rufus C) + +if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() + +if(CMAKE_BINARY_DIR MATCHES "^${CMAKE_SOURCE_DIR}") + message(WARNING "In-source build detected") +endif() + +if(MSVC) + add_compile_options(/utf-8) +endif() + +function(add_all_subdirs) + file(GLOB children RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *) + + foreach(child ${children}) + if(NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${child}) + continue() + endif() + + if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${child}/CMakeLists.txt) + continue() + endif() + + add_subdirectory(${child} ${ARGN}) + endforeach() +endfunction() + +add_all_subdirs() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..ea3d87a8 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,40 @@ +add_all_subdirs() +set(target_name rufus) +file(GLOB source_files *.c *.h rufus.rc) +add_executable(${target_name} WIN32 ${source_files}) + +target_include_directories(${target_name} PRIVATE + . + msvc-missing + ms-sys/inc + syslinux/libinstaller + syslinux/libfat + syslinux/win + libcdio + getopt) + +target_compile_definitions(${target_name} PRIVATE + _OFF_T_DEFINED + _off_t=__int64 + off_t=_off_t + COBJMACROS + _CRTDBG_MAP_ALLOC) + +target_link_libraries(${target_name} PRIVATE + bled + ext2fs + getopt + libcdio-driver + libcdio-iso9660 + libcdio-udf + ms-sys + syslinux-libfat + syslinux-libinstaller + syslinux-win + comctl32 + crypt32 + dwmapi + setupapi + shlwapi + version + wintrust) diff --git a/src/bled/CMakeLists.txt b/src/bled/CMakeLists.txt new file mode 100644 index 00000000..1d887a59 --- /dev/null +++ b/src/bled/CMakeLists.txt @@ -0,0 +1,11 @@ +set(target_name bled) +file(GLOB source_files *.c *.h) +add_library(${target_name} STATIC ${source_files}) +target_include_directories(${target_name} PRIVATE ..) + +target_compile_definitions(${target_name} PRIVATE + _OFF_T_DEFINED + _off_t=__int64 + off_t=_off_t + _FILE_OFFSET_BITS=64 + _CRTDBG_MAP_ALLOC) diff --git a/src/ext2fs/CMakeLists.txt b/src/ext2fs/CMakeLists.txt new file mode 100644 index 00000000..6e45d084 --- /dev/null +++ b/src/ext2fs/CMakeLists.txt @@ -0,0 +1,5 @@ +set(target_name ext2fs) +file(GLOB source_files *.c *.h) +add_library(${target_name} STATIC ${source_files}) +target_include_directories(${target_name} PRIVATE .. ../msvc-missing) +target_compile_definitions(${target_name} PRIVATE _CRT_SECURE_NO_WARNINGS _CRTDBG_MAP_ALLOC) diff --git a/src/getopt/CMakeLists.txt b/src/getopt/CMakeLists.txt new file mode 100644 index 00000000..aa73ecc9 --- /dev/null +++ b/src/getopt/CMakeLists.txt @@ -0,0 +1,4 @@ +set(target_name getopt) +file(GLOB source_files *.c *.h) +add_library(${target_name} STATIC ${source_files}) +target_compile_definitions(${target_name} PRIVATE HAVE_STRING_H) diff --git a/src/libcdio/CMakeLists.txt b/src/libcdio/CMakeLists.txt new file mode 100644 index 00000000..c41f9449 --- /dev/null +++ b/src/libcdio/CMakeLists.txt @@ -0,0 +1 @@ +add_all_subdirs() diff --git a/src/libcdio/driver/CMakeLists.txt b/src/libcdio/driver/CMakeLists.txt new file mode 100644 index 00000000..278dbe90 --- /dev/null +++ b/src/libcdio/driver/CMakeLists.txt @@ -0,0 +1,16 @@ +set(target_name libcdio-driver) +file(GLOB source_files *.c *.h) +add_library(${target_name} STATIC ${source_files}) + +target_include_directories(${target_name} PRIVATE + ${CMAKE_SOURCE_DIR}/src + ${CMAKE_SOURCE_DIR}/src/libcdio + ${CMAKE_SOURCE_DIR}/src/msvc-missing) + +target_compile_definitions(${target_name} PRIVATE + HAVE_CONFIG_H + _OFF_T_DEFINED + _off_t=__int64 + off_t=_off_t + _FILE_OFFSET_BITS=64 + _CRTDBG_MAP_ALLOC) diff --git a/src/libcdio/iso9660/CMakeLists.txt b/src/libcdio/iso9660/CMakeLists.txt new file mode 100644 index 00000000..1c0e8ed4 --- /dev/null +++ b/src/libcdio/iso9660/CMakeLists.txt @@ -0,0 +1,17 @@ +set(target_name libcdio-iso9660) +file(GLOB source_files *.c *.h) +add_library(${target_name} STATIC ${source_files}) + +target_include_directories(${target_name} PRIVATE + ${CMAKE_SOURCE_DIR}/src + ${CMAKE_SOURCE_DIR}/src/libcdio + ${CMAKE_SOURCE_DIR}/src/libcdio/driver + ${CMAKE_SOURCE_DIR}/src/msvc-missing) + +target_compile_definitions(${target_name} PRIVATE + HAVE_CONFIG_H + _OFF_T_DEFINED + _off_t=__int64 + off_t=_off_t + _FILE_OFFSET_BITS=64 + _CRTDBG_MAP_ALLOC) diff --git a/src/libcdio/udf/CMakeLists.txt b/src/libcdio/udf/CMakeLists.txt new file mode 100644 index 00000000..ecbf8c84 --- /dev/null +++ b/src/libcdio/udf/CMakeLists.txt @@ -0,0 +1,17 @@ +set(target_name libcdio-udf) +file(GLOB_RECURSE source_files *.c *.h) +add_library(${target_name} STATIC ${source_files}) + +target_include_directories(${target_name} PRIVATE + ${CMAKE_SOURCE_DIR}/src + ${CMAKE_SOURCE_DIR}/src/libcdio + ${CMAKE_SOURCE_DIR}/src/libcdio/driver + ${CMAKE_SOURCE_DIR}/src/msvc-missing) + +target_compile_definitions(${target_name} PRIVATE + HAVE_CONFIG_H + _OFF_T_DEFINED + _off_t=__int64 + off_t=_off_t + _FILE_OFFSET_BITS=64 + _CRTDBG_MAP_ALLOC) diff --git a/src/ms-sys/CMakeLists.txt b/src/ms-sys/CMakeLists.txt new file mode 100644 index 00000000..e8dfd2bc --- /dev/null +++ b/src/ms-sys/CMakeLists.txt @@ -0,0 +1,5 @@ +set(target_name ms-sys) +file(GLOB source_files *.c *.h) +add_library(${target_name} STATIC ${source_files}) +target_include_directories(${target_name} PRIVATE inc) +target_compile_definitions(${target_name} PRIVATE _CRTDBG_MAP_ALLOC) diff --git a/src/syslinux/CMakeLists.txt b/src/syslinux/CMakeLists.txt new file mode 100644 index 00000000..c41f9449 --- /dev/null +++ b/src/syslinux/CMakeLists.txt @@ -0,0 +1 @@ +add_all_subdirs() diff --git a/src/syslinux/libfat/CMakeLists.txt b/src/syslinux/libfat/CMakeLists.txt new file mode 100644 index 00000000..7926a4c4 --- /dev/null +++ b/src/syslinux/libfat/CMakeLists.txt @@ -0,0 +1,11 @@ +set(target_name syslinux-libfat) +file(GLOB source_files *.c *.h) +add_library(${target_name} STATIC ${source_files}) + +target_include_directories(${target_name} PRIVATE + ${CMAKE_SOURCE_DIR}/src + ${CMAKE_SOURCE_DIR}/src/msvc-missing) + +target_compile_definitions(${target_name} PRIVATE + inline=__inline + _CRTDBG_MAP_ALLOC) diff --git a/src/syslinux/libinstaller/CMakeLists.txt b/src/syslinux/libinstaller/CMakeLists.txt new file mode 100644 index 00000000..296e5cec --- /dev/null +++ b/src/syslinux/libinstaller/CMakeLists.txt @@ -0,0 +1,11 @@ +set(target_name syslinux-libinstaller) +file(GLOB source_files *.c *.h) +add_library(${target_name} STATIC ${source_files}) + +target_include_directories(${target_name} PRIVATE + ${CMAKE_SOURCE_DIR}/src + ${CMAKE_SOURCE_DIR}/src/msvc-missing) + +target_compile_definitions(${target_name} PRIVATE + inline=__inline + _CRTDBG_MAP_ALLOC) diff --git a/src/syslinux/win/CMakeLists.txt b/src/syslinux/win/CMakeLists.txt new file mode 100644 index 00000000..2e3f91b6 --- /dev/null +++ b/src/syslinux/win/CMakeLists.txt @@ -0,0 +1,11 @@ +set(target_name syslinux-win) +file(GLOB source_files *.c *.h) +add_library(${target_name} STATIC ${source_files}) + +target_include_directories(${target_name} PRIVATE + ${CMAKE_SOURCE_DIR}/src + ${CMAKE_SOURCE_DIR}/src/msvc-missing) + +target_compile_definitions(${target_name} PRIVATE + inline=__inline + _CRTDBG_MAP_ALLOC)