From ebafcc53ce6b9fb7bc7fbf7cef6525759b66ba66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Muhammet=20=C5=9E=C3=BCkr=C3=BC=20Demir?= <41967334+dsm@users.noreply.github.com> Date: Mon, 6 May 2024 17:55:26 +0000 Subject: [PATCH 1/3] fixed macos build. -fixed VERSION file problem because of macos fs is case sensitive. -added macos github action. -some cmake error fixes. --- .github/workflows/macos.yml | 54 ++++++++++++++++++++++ CMakeLists.txt | 59 ++++++++++++++++-------- src/CMakeLists.txt | 3 +- src/components/CMakeLists.txt | 2 +- src/components/devices/CMakeLists.txt | 2 +- src/components/digital/CMakeLists.txt | 2 +- src/components/microstrip/CMakeLists.txt | 3 +- src/components/verilog/CMakeLists.txt | 1 - src/converter/CMakeLists.txt | 4 +- src/interface/CMakeLists.txt | 1 - src/math/CMakeLists.txt | 2 +- 11 files changed, 101 insertions(+), 32 deletions(-) create mode 100644 .github/workflows/macos.yml diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml new file mode 100644 index 00000000..32b0e2d4 --- /dev/null +++ b/.github/workflows/macos.yml @@ -0,0 +1,54 @@ +name: macos + +on: + push: + branches: [ "develop", "release/*" ] + pull_request: + branches: [ "develop", "release/*" ] + +env: + # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) + BUILD_TYPE: Release + +jobs: + + + + build: + # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. + # You can convert this to a matrix build if you need cross-platform coverage. + # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + runs-on: macos-latest + + steps: + - uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: latest + + - uses: actions/checkout@v4 + + - name: InstallDependencies + shell: bash + run: | + brew install gperf dos2unix bison flex + echo 'export PATH="/opt/homebrew/opt/bison/bin:$PATH"' >> /Users/runner/.bashrc + export LDFLAGS="-L/opt/homebrew/opt/bison/lib" + source ~/.bashrc + brew link bison --force + + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: cmake -B ${{github.workspace}}/build -G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + + - name: Build + # Build your program with the given configuration + run: cmake --build ${{github.workspace}}/build -j16 --config ${{env.BUILD_TYPE}} + + #- name: Test + # working-directory: ${{github.workspace}}/build + # Execute tests defined by the CMake configuration. + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail + # run: ctest -C ${{env.BUILD_TYPE}} + \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 99cdb8a4..9b71f43f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,9 +28,8 @@ # # ~~~ - +cmake_minimum_required(VERSION 3.10) project(qucs-core CXX) -cmake_minimum_required(VERSION 3.0) # ignore the project() managed VERSION (new in CMake 3.0) if(POLICY CMP0048) @@ -155,18 +154,27 @@ endif() if(WIN32) find_package(BISON 2.4 REQUIRED) else() # Linux, OSX - # use -DBISON_DIR=/path/ to provide the path to bison - find_program( - BISON_EXECUTABLE bison - PATHS /usr/local/bin/ /opt/local/bin/ /usr/bin ${BISON_DIR} - DOC "bison path" - NO_DEFAULT_PATH) - if(BISON_EXECUTABLE) - message(STATUS "Found bison: " ${BISON_EXECUTABLE}) - else() - message( - FATAL_ERROR "Unable to find bison. Try to provide -DBISON_DIR=[path]") + if(APPLE) + find_package( + BISON 3.0.0 REQUIRED + # homebrew_bison + PATH "/opt/homebrew/opt/bison/bin/" + ) + else(APPLE) + # use -DBISON_DIR=/path/ to provide the path to bison + find_program( + BISON_EXECUTABLE bison + PATHS /usr/local/bin/ /opt/local/bin/ /usr/bin ${BISON_DIR} + DOC "bison path" + NO_DEFAULT_PATH) + if(BISON_EXECUTABLE) + message(STATUS "Found bison: " ${BISON_EXECUTABLE}) + else() + message( + FATAL_ERROR "Unable to find bison. Try to provide -DBISON_DIR=[path]") endif() + endif(APPLE) + endif() # @@ -247,18 +255,29 @@ endif() # warnings * problem with non-starndart _stricmp using -stdr=c++0x set g++ into # strict ANSY, relax that with -U__STRICT_ANSI__. Could use -std=gnu++0x # ~~~ -if(WIN32) - set(CMAKE_CXX_FLAGS "-Wall -std=c++0x -fpermissive -U__STRICT_ANSI__") -else() - set(CMAKE_CXX_FLAGS "-Wall -std=c++11") -endif() +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS ON) + +if (WIN32) + if(MSVC) + add_compile_options(/Zc:__cplusplus /permissive- /MP /Zc:preprocessor) + else(MSVC) + set(CMAKE_CXX_FLAGS "-Wall -Wextra -std=c++11 -fpermissive -U__STRICT_ANSI__") + endif(MSVC) +else(WIN32) + # additional warnings + add_compile_options(-Wall -Wextra) +endif(WIN32) + + # indiscriminate copy/paste from: # http://stackoverflow.com/questions/10984442/how-to-detect-c11-support-of-a- # compiler-with-cmake/20165220#20165220 set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG") -set(CMAKE_CXX_FLAGS_RELEASE "-O4 -DNDEBUG") +set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g") # Compiler-specific C++11 activation. @@ -310,4 +329,4 @@ set(CPACK_GENERATOR "TGZ") # (InstallRequiredSystemLibraries) set(CPACK_PACKAGE_VERSION_MAJOR 0) set(CPACK_PACKAGE_VERSION_MINOR 18) -include(CPack) +include(CPack) \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4d70604b..fa38cb65 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,5 @@ +cmake_minimum_required(VERSION 3.10) project(qucsator_rf CXX C) -cmake_policy(VERSION 2.6) # # Checks for libraries. @@ -410,7 +410,6 @@ set(PUBLIC_HEADERS operatingpoint.h) include_directories( - ${qucs-core_SOURCE_DIR} # generated config.h ${qucs-core_SOURCE_DIR}/src/math # precision.h ${qucs-core_SOURCE_DIR}/src/ # compat.h ${qucs-core_SOURCE_DIR}/src/components # microstrip/substrate.h diff --git a/src/components/CMakeLists.txt b/src/components/CMakeLists.txt index 3137a634..ef51ab18 100644 --- a/src/components/CMakeLists.txt +++ b/src/components/CMakeLists.txt @@ -1,4 +1,4 @@ -include_directories(${qucs-core_SOURCE_DIR} ${qucs-core_CURRENT_SOURCE_DIR} +include_directories(${qucs-core_CURRENT_SOURCE_DIR} ${qucs-core_SOURCE_DIR}/src/math) set(COMPONENTS_SRC diff --git a/src/components/devices/CMakeLists.txt b/src/components/devices/CMakeLists.txt index 67f07cd0..d21a3e25 100644 --- a/src/components/devices/CMakeLists.txt +++ b/src/components/devices/CMakeLists.txt @@ -1,5 +1,5 @@ include_directories( - ${qucs-core_SOURCE_DIR} ${qucs-core_CURRENT_SOURCE_DIR} + ${qucs-core_CURRENT_SOURCE_DIR} ${qucs-core_SOURCE_DIR}/src/math ${qucs-core_SOURCE_DIR}/src/components )# component.h diff --git a/src/components/digital/CMakeLists.txt b/src/components/digital/CMakeLists.txt index 69f545ca..998567fd 100644 --- a/src/components/digital/CMakeLists.txt +++ b/src/components/digital/CMakeLists.txt @@ -1,5 +1,5 @@ include_directories( - ${qucs-core_SOURCE_DIR} ${qucs-core_CURRENT_SOURCE_DIR} + ${qucs-core_CURRENT_SOURCE_DIR} ${qucs-core_SOURCE_DIR}/src/math ${qucs-core_SOURCE_DIR}/src/components )# component.h diff --git a/src/components/microstrip/CMakeLists.txt b/src/components/microstrip/CMakeLists.txt index dc4b0dfd..37e60694 100644 --- a/src/components/microstrip/CMakeLists.txt +++ b/src/components/microstrip/CMakeLists.txt @@ -1,5 +1,4 @@ include_directories( - ${qucs-core_SOURCE_DIR} ${qucs-core_CURRENT_SOURCE_DIR} ${qucs-core_SOURCE_DIR}/src/math ${qucs-core_SOURCE_DIR}/src/components # component.h @@ -28,4 +27,4 @@ set(MICROSTRIP_SRC spiralinductor.cpp substrate.cpp) -add_library(coreMicrostrip OBJECT ${MICROSTRIP_SRC}) +add_library(coreMicrostrip OBJECT ${MICROSTRIP_SRC}) \ No newline at end of file diff --git a/src/components/verilog/CMakeLists.txt b/src/components/verilog/CMakeLists.txt index 4013d3eb..0f5a8358 100644 --- a/src/components/verilog/CMakeLists.txt +++ b/src/components/verilog/CMakeLists.txt @@ -1,5 +1,4 @@ include_directories( - ${qucs-core_SOURCE_DIR} ${qucs-core_CURRENT_SOURCE_DIR} ${qucs-core_SOURCE_DIR}/src/math ${qucs-core_SOURCE_DIR}/src/components # component.h diff --git a/src/converter/CMakeLists.txt b/src/converter/CMakeLists.txt index edb2e52b..61e15fc0 100644 --- a/src/converter/CMakeLists.txt +++ b/src/converter/CMakeLists.txt @@ -1,5 +1,5 @@ include_directories( - ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/src/math + ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/src/math ${CMAKE_CURRENT_BINARY_DIR}) # qucdefs.h set(QUCSCONV_SRC @@ -60,4 +60,4 @@ target_link_libraries(qucsconv_rf libqucsator ${CMAKE_DL_LIBS}) # # Handle installation # -install(TARGETS qucsconv_rf DESTINATION bin) +install(TARGETS qucsconv_rf DESTINATION bin) \ No newline at end of file diff --git a/src/interface/CMakeLists.txt b/src/interface/CMakeLists.txt index 5fa9c196..1872b453 100644 --- a/src/interface/CMakeLists.txt +++ b/src/interface/CMakeLists.txt @@ -1,5 +1,4 @@ include_directories( - ${qucs-core_SOURCE_DIR} ${qucs-core_CURRENT_SOURCE_DIR} ${qucs-core_SOURCE_DIR}/src/math ${qucs-core_SOURCE_DIR}/src/components # component.h diff --git a/src/math/CMakeLists.txt b/src/math/CMakeLists.txt index 94543ff2..1520b359 100644 --- a/src/math/CMakeLists.txt +++ b/src/math/CMakeLists.txt @@ -1,4 +1,4 @@ -include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) +include_directories( ${CMAKE_CURRENT_SOURCE_DIR}) set(MATH_SRC # cbesselj.cpp complex.cpp fspecial.cpp matrix.cpp real.cpp) From 9fcc3eb94f12763d5adaa94b3ba216a98a009af3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Muhammet=20=C5=9E=C3=BCkr=C3=BC=20Demir?= <41967334+dsm@users.noreply.github.com> Date: Tue, 7 May 2024 15:07:17 +0300 Subject: [PATCH 2/3] Create windows.yml --- .github/workflows/windows.yml | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 .github/workflows/windows.yml diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml new file mode 100644 index 00000000..f45695f2 --- /dev/null +++ b/.github/workflows/windows.yml @@ -0,0 +1,43 @@ +name: windows + +on: + push: + branches: [ "master", "current", "release/*" ] + pull_request: + branches: [ "master", "current", "release/*" ] + +env: + BUILD_TYPE: Release + +jobs: + build: + runs-on: windows-latest + + defaults: + run: + shell: msys2 {0} + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Set up MSYS2 + uses: msys2/setup-msys2@v2 + with: + msys2-root: ${{ runner.workspace }}/msys2 + update: true + + - name: Install required packages + shell: msys2 {0} + run: | + pacman -Syu --noconfirm mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-qt6-base mingw-w64-ucrt-x86_64-qt6-tools mingw-w64-ucrt-x86_64-qt6-svg mingw-w64-ucrt-x86_64-make mingw-w64-ucrt-x86_64-python bison flex dos2unix mingw-w64-ucrt-x86_64-gperf -v + + + - name: Build CMake project + if: ${{ env.ENABLE_BUILD == 'true' }} + run: | + cmake -B ${{github.workspace}}/build -G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + cmake --build ${{github.workspace}}/build -j`nproc` --config ${{env.BUILD_TYPE}} + + + From 681050e6bb1c0a2ba1bd1dcccdde4e01cbbdb132 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Muhammet=20=C5=9E=C3=BCkr=C3=BC=20Demir?= <41967334+dsm@users.noreply.github.com> Date: Tue, 7 May 2024 16:17:14 +0300 Subject: [PATCH 3/3] added windows.yml --- .github/workflows/windows.yml | 37 +++++++++++++++++++++++------------ src/CMakeLists.txt | 7 +++++-- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index f45695f2..5eb6a0ad 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -2,9 +2,9 @@ name: windows on: push: - branches: [ "master", "current", "release/*" ] + branches: [ "develop", "release/*" ] pull_request: - branches: [ "master", "current", "release/*" ] + branches: [ "develop", "release/*" ] env: BUILD_TYPE: Release @@ -19,25 +19,36 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Set up MSYS2 uses: msys2/setup-msys2@v2 with: msys2-root: ${{ runner.workspace }}/msys2 + msystem: UCRT64 + cache: true update: true - - - name: Install required packages - shell: msys2 {0} + install: >- + git + mingw-w64-ucrt-x86_64-cmake + mingw-w64-ucrt-x86_64-gcc + mingw-w64-ucrt-x86_64-qt6-base + mingw-w64-ucrt-x86_64-qt6-tools + mingw-w64-ucrt-x86_64-qt6-svg + mingw-w64-ucrt-x86_64-make + mingw-w64-ucrt-x86_64-ninja + mingw-w64-ucrt-x86_64-python + bison + flex + dos2unix + mingw-w64-ucrt-x86_64-gperf + + - name: Build with cmake run: | - pacman -Syu --noconfirm mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-qt6-base mingw-w64-ucrt-x86_64-qt6-tools mingw-w64-ucrt-x86_64-qt6-svg mingw-w64-ucrt-x86_64-make mingw-w64-ucrt-x86_64-python bison flex dos2unix mingw-w64-ucrt-x86_64-gperf -v - + ls -la + cmake.exe -B build/ -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + cmake.exe --build build/ -j`nproc` --config ${{env.BUILD_TYPE}} - - name: Build CMake project - if: ${{ env.ENABLE_BUILD == 'true' }} - run: | - cmake -B ${{github.workspace}}/build -G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} - cmake --build ${{github.workspace}}/build -j`nproc` --config ${{env.BUILD_TYPE}} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index fa38cb65..b2ad4ee6 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -438,8 +438,11 @@ add_custom_command( # set(gperf_SRC gperfappgen.cpp gperfappgen.h) -add_executable(gperfappgen ${gperf_SRC}) - +IF(WIN32) + add_executable(gperfappgen.exe ${gperf_SRC}) +ELSE() # Unix + add_executable(gperfappgen ${gperf_SRC}) +ENDIF() # # Run gperfappgen, pipe to gperf input to gperfapphash.gph #