diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index 77cf24d8e9a0a38c826e48e42d357d22dee1feb6..c1974f90e8911c0e7b44b6bf0ba472a1c186eac1 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -291,8 +291,8 @@ function main() {
       lte_exec=lte-softmodem
   fi
 
-
-  if [ "$eNB" = "1" -o "$UE" = "1" ] ; then
+  # first generate the CMakefile in the right directory
+  if [ "$eNB" = "1" -o "$UE" = "1" -o "$HW" = "EXMIMO" ] ; then
 
     # LTE softmodem compilation
     [ "$CLEAN" = "1" ] && rm -rf $DIR/$lte_build_dir/build
@@ -310,6 +310,9 @@ function main() {
     echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
     cd  $DIR/$lte_build_dir/build
     cmake ..
+  fi
+
+  if [ "$eNB" = "1" ] ; then
     echo_info "Compiling $lte_exec"
     compilations \
 	  $lte_build_dir $lte_exec \
@@ -330,7 +333,7 @@ function main() {
     # ue_ip driver compilation
     echo_info "Compiling UE specific part"
     compilations \
-      lte_build_oai ue_ip \
+      $lte_build_dir ue_ip \
       CMakeFiles/ue_ip/ue_ip.ko $dbin/ue_ip.ko
       
 #    mkdir -p $DIR/at_commands/build
@@ -398,10 +401,6 @@ function main() {
   if [ "$HW" = "EXMIMO" -a "$EPC" = "0" ] ; then
     
     echo_info "Compiling Express MIMO 2 board drivers"
-    [ "$CLEAN" = "1" ] && rm -rf $DIR/$lte_build_dir/build
-    mkdir -p $DIR/$lte_build_dir/build
-    cd $DIR/$lte_build_dir/build
-    cmake ..
     compilations \
         $lte_build_dir openair_rf \
         CMakeFiles/openair_rf/openair_rf.ko $dbin/openair_rf.ko