From 4e8d4a80a7b8d469e928805b3ecee96b088aa9f3 Mon Sep 17 00:00:00 2001 From: Thomas Beutlich Date: Wed, 17 Jan 2024 20:39:16 +0100 Subject: [PATCH] Add target specific definitions, options and header files --- .../BuildProjects/CMake/CMakeLists.txt | 137 +++++++++++++----- 1 file changed, 103 insertions(+), 34 deletions(-) diff --git a/Modelica/Resources/BuildProjects/CMake/CMakeLists.txt b/Modelica/Resources/BuildProjects/CMake/CMakeLists.txt index 636d243012d..9614a8b36d7 100644 --- a/Modelica/Resources/BuildProjects/CMake/CMakeLists.txt +++ b/Modelica/Resources/BuildProjects/CMake/CMakeLists.txt @@ -11,24 +11,65 @@ endif() project(Modelica_Standard_Library_Tables C) -# Check for include files and functions +option(MODELICA_DEBUG_TIME_EVENTS "Trace time events of CombiTimeTable" OFF) +option(MODELICA_SHARE_TABLE_DATA "Store shared table arrays (read from file) in a global hash table" ON) +option(MODELICA_COPY_TABLE_DATA "Deep-copy table arrays (passed as array)" ON) +option(MODELICA_DUMMY_FUNCTION_USERTAB "Add a dummy usertab function" OFF) + +# Check for include attributes, files, functions +include(CheckCSourceCompiles) include(CheckIncludeFile) -include(CheckFunctionExists) +include(CheckSymbolExists) +check_include_file("locale.h" HAVE_LOCALE_H) +if (NOT HAVE_LOCALE_H) + add_definitions(-DNO_LOCALE) +endif() +check_include_file("pthread.h" HAVE_PTHREAD_H) +if (NOT HAVE_PTHREAD_H AND NOT WIN32) + add_definitions(-DNO_MUTEX) +endif() check_include_file("stdarg.h" HAVE_STDARG_H) if (HAVE_STDARG_H) add_definitions(-DHAVE_STDARG_H) endif() - +check_include_file("dirent.h" HAVE_DIRENT_H) +if (NOT HAVE_DIRENT_H AND NOT WIN32) + add_definitions(-DNO_FILE_SYSTEM) +endif() +check_include_file("time.h" HAVE_TIME_H) +if (NOT HAVE_TIME_H) + add_definitions(-DNO_TIME) +endif() check_include_file("unistd.h" HAVE_UNISTD_H) if (HAVE_UNISTD_H) add_definitions(-DHAVE_UNISTD_H) + check_c_source_compiles( + " + #include + int main(void) {getpid(); return 0;} + " + HAVE_GETPID + ) + if (NOT HAVE_GETPID) + add_definitions(-DNO_PID) + endif() endif() - -check_function_exists(memcpy HAVE_MEMCPY) +check_symbol_exists(memcpy "string.h" HAVE_MEMCPY) if (HAVE_MEMCPY) add_definitions(-DHAVE_MEMCPY) endif() +check_c_source_compiles( + " + #include + static void f(void) __attribute__ ((visibility(\"hidden\"))); + int main(void) {return 0;} + " + HAVE_ATTRIBUTE_VISIBILITY_HIDDEN +) +if (HAVE_ATTRIBUTE_VISIBILITY_HIDDEN) + add_definitions(-DHAVE_HIDDEN) +endif() # UNIX configurations... if (UNIX) @@ -36,12 +77,12 @@ if (UNIX) endif() # Set installation prefix -set(MSL_RESOURCES_DIR "${PROJECT_SOURCE_DIR}/../..") -get_filename_component(ABSOLUTE_MSL_RESOURCES_DIR "${MSL_RESOURCES_DIR}" ABSOLUTE) -set(CMAKE_INSTALL_PREFIX "${ABSOLUTE_MSL_RESOURCES_DIR}" CACHE PATH "Library installation prefix path (don't change)" FORCE) +set(MODELICA_RESOURCES_DIR "${PROJECT_SOURCE_DIR}/../..") +get_filename_component(ABSOLUTE_MODELICA_RESOURCES_DIR "${MODELICA_RESOURCES_DIR}" ABSOLUTE) +set(CMAKE_INSTALL_PREFIX "${ABSOLUTE_MODELICA_RESOURCES_DIR}" CACHE PATH "Library installation prefix path (don't change)" FORCE) # Include directories... -include_directories("${ABSOLUTE_MSL_RESOURCES_DIR}/C-Sources/zlib") +include_directories("${ABSOLUTE_MODELICA_RESOURCES_DIR}/C-Sources/zlib") # ModelicaUtilities.h include... if (DEFINED MODELICA_UTILITIES_INCLUDE) @@ -117,42 +158,56 @@ endif() # Source files... set(EXTC_SOURCES - "${MSL_RESOURCES_DIR}/C-Sources/ModelicaFFT.c" - "${MSL_RESOURCES_DIR}/C-Sources/ModelicaInternal.c" - "${MSL_RESOURCES_DIR}/C-Sources/ModelicaRandom.c" - "${MSL_RESOURCES_DIR}/C-Sources/ModelicaStrings.c" + "${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaFFT.c" + "${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaFFT.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaInternal.c" + "${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaInternal.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaRandom.c" + "${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaRandom.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaStrings.c" + "${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaStrings.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/gconstructor.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/stdint_msvc.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/stdint_wrap.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/uthash.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/win32_dirent.c" + "${MODELICA_RESOURCES_DIR}/C-Sources/win32_dirent.h" + "${MODELICA_UTILITIES_INCLUDE}/ModelicaUtilities.h" ) set(TABLES_SOURCES - "${MSL_RESOURCES_DIR}/C-Sources/ModelicaStandardTables.c" - "${MSL_RESOURCES_DIR}/C-Sources/ModelicaStandardTablesUsertab.c" + "${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaStandardTables.c" + "${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaStandardTables.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaStandardTablesUsertab.c" + "${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaMatIO.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/gconstructor.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/stdint_msvc.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/stdint_wrap.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/uthash.h" + "${MODELICA_UTILITIES_INCLUDE}/ModelicaUtilities.h" ) set(MATIO_SOURCES - "${MSL_RESOURCES_DIR}/C-Sources/ModelicaMatIO.c" - "${MSL_RESOURCES_DIR}/C-Sources/snprintf.c" + "${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaMatIO.c" + "${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaMatIO.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/read_data_impl.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/safe-math.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/snprintf.c" + "${MODELICA_RESOURCES_DIR}/C-Sources/stdint_msvc.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/zlib/zlib.h" + "${MODELICA_UTILITIES_INCLUDE}/ModelicaUtilities.h" ) set(IO_SOURCES - "${MSL_RESOURCES_DIR}/C-Sources/ModelicaIO.c" + "${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaIO.c" + "${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaIO.h" + "${MODELICA_RESOURCES_DIR}/C-Sources/ModelicaMatIO.h" + "${MODELICA_UTILITIES_INCLUDE}/ModelicaUtilities.h" ) -set(ZLIB_SOURCES - "${MSL_RESOURCES_DIR}/C-Sources/zlib/adler32.c" - "${MSL_RESOURCES_DIR}/C-Sources/zlib/compress.c" - "${MSL_RESOURCES_DIR}/C-Sources/zlib/crc32.c" - "${MSL_RESOURCES_DIR}/C-Sources/zlib/deflate.c" - "${MSL_RESOURCES_DIR}/C-Sources/zlib/gzclose.c" - "${MSL_RESOURCES_DIR}/C-Sources/zlib/gzlib.c" - "${MSL_RESOURCES_DIR}/C-Sources/zlib/gzread.c" - "${MSL_RESOURCES_DIR}/C-Sources/zlib/gzwrite.c" - "${MSL_RESOURCES_DIR}/C-Sources/zlib/infback.c" - "${MSL_RESOURCES_DIR}/C-Sources/zlib/inffast.c" - "${MSL_RESOURCES_DIR}/C-Sources/zlib/inflate.c" - "${MSL_RESOURCES_DIR}/C-Sources/zlib/inftrees.c" - "${MSL_RESOURCES_DIR}/C-Sources/zlib/trees.c" - "${MSL_RESOURCES_DIR}/C-Sources/zlib/uncompr.c" - "${MSL_RESOURCES_DIR}/C-Sources/zlib/zutil.c" +file(GLOB ZLIB_SOURCES + "${MODELICA_RESOURCES_DIR}/C-Sources/zlib/*.c" + "${MODELICA_RESOURCES_DIR}/C-Sources/zlib/*.h" ) # Libraries... @@ -162,6 +217,20 @@ add_library(ModelicaMatIO STATIC ${MATIO_SOURCES}) add_library(ModelicaIO STATIC ${IO_SOURCES}) add_library(zlib STATIC ${ZLIB_SOURCES}) +if (MODELICA_DEBUG_TIME_EVENTS) + target_compile_definitions(ModelicaStandardTables PUBLIC -DDEBUG_TIME_EVENTS=1) +endif() +if (MODELICA_SHARE_TABLE_DATA) + target_compile_definitions(ModelicaStandardTables PUBLIC -DTABLE_SHARE=1) +endif() +if (NOT MODELICA_COPY_TABLE_DATA) + target_compile_definitions(ModelicaStandardTables PUBLIC -DNO_TABLE_COPY=1) +endif() +if (MODELICA_DUMMY_FUNCTION_USERTAB) + target_compile_definitions(ModelicaStandardTables PUBLIC -DDUMMY_FUNCTION_USERTAB=1) +endif() +target_compile_definitions(ModelicaMatIO PUBLIC -DHAVE_ZLIB=1) + # Installation... install(TARGETS ModelicaStandardTables ModelicaMatIO ModelicaIO zlib LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}